Comparing files graphicstestnw.ino.lst and GRAPHICSTEST.INO.LST
***** graphicstestnw.ino.lst
C:\Users\Merli\AppData\Local\Temp\arduino\sketches\6E5F598F2A7229BC99A0A74D12499BEA/graphicstest.ino.elf: file format elf32
-littlearm
***** GRAPHICSTEST.INO.LST
C:\Users\Merli\AppData\Local\Temp\arduino\sketches\E10A26BDED997C2D7261962E20CF77E0/graphicstest.ino.elf: file format elf32
-littlearm
*****
***** graphicstestnw.ino.lst
60001426: bf00 nop
60001428: 20004ac0 .word 0x20004ac0
6000142c: 20004f20 .word 0x20004f20
60001430 <ResetHandler2>:
***** GRAPHICSTEST.INO.LST
60001426: bf00 nop
60001428: 200052c0 .word 0x200052c0
6000142c: 20005720 .word 0x20005720
60001430 <ResetHandler2>:
*****
***** graphicstestnw.ino.lst
startup_early_hook(); // must be in FLASHMEM, as ITCM is not yet initialized!
60001442: f000 f943 bl 600016cc <startup_default_early_hook>
PMU_MISC0_SET = 1<<3; //Use bandgap-based bias currents for best performance (Page 1175)
***** GRAPHICSTEST.INO.LST
startup_early_hook(); // must be in FLASHMEM, as ITCM is not yet initialized!
60001442: f000 fd41 bl 60001ec8 <startup_default_early_hook>
PMU_MISC0_SET = 1<<3; //Use bandgap-based bias currents for best performance (Page 1175)
*****
***** graphicstestnw.ino.lst
configure_cache();
60001516: f000 f8e1 bl 600016dc <configure_cache>
_VectorsRam[14] = pendablesrvreq_isr;
***** GRAPHICSTEST.INO.LST
configure_cache();
60001516: f000 fcdf bl 60001ed8 <configure_cache>
_VectorsRam[14] = pendablesrvreq_isr;
*****
***** graphicstestnw.ino.lst
usb_pll_start();
6000154e: f000 f953 bl 600017f8 <usb_pll_start>
CCM_ANALOG_PFD_528_SET = (1 << 31) | (1 << 23) | (1 << 15) | (1 << 7);
***** GRAPHICSTEST.INO.LST
usb_pll_start();
6000154e: f000 fd51 bl 60001ff4 <usb_pll_start>
CCM_ANALOG_PFD_528_SET = (1 << 31) | (1 << 23) | (1 << 15) | (1 << 7);
*****
***** graphicstestnw.ino.lst
set_arm_clock(F_CPU);
60001564: f000 fae4 bl 60001b30 <__set_arm_clock_veneer>
CCM_CCGR1 |= CCM_CCGR1_PIT(CCM_CCGR_ON);
***** GRAPHICSTEST.INO.LST
set_arm_clock(F_CPU);
60001564: f000 fedc bl 60002320 <__set_arm_clock_veneer>
CCM_CCGR1 |= CCM_CCGR1_PIT(CCM_CCGR_ON);
*****
***** graphicstestnw.ino.lst
if(!sdram_init()) {
600015ac: f000 fad4 bl 60001b58 <__sdram_init_veneer>
600015b0: b988 cbnz r0, 600015d6 <ResetHandler2+0x1a6>
***** GRAPHICSTEST.INO.LST
if(!sdram_init()) {
600015ac: f000 fec4 bl 60002338 <__sdram_init_veneer>
600015b0: b988 cbnz r0, 600015d6 <ResetHandler2+0x1a6>
*****
***** graphicstestnw.ino.lst
600015ec: 4829 ldr r0, [pc, #164] ; (60001694 <ResetHandler2+0x264>)
600015ee: f000 fab7 bl 60001b60 <__sm_set_pool_veneer>
analog_init();
600015f2: f000 fa65 bl 60001ac0 <analog_init>
pwm_init();
600015f6: f000 faab bl 60001b50 <__pwm_init_veneer>
tempmon_init();
600015fa: f000 f92b bl 60001854 <tempmon_init>
startup_middle_hook();
600015fe: f000 f867 bl 600016d0 <startup_default_middle_hook>
// Returns the number of milliseconds since your program started running.
***** GRAPHICSTEST.INO.LST
600015ec: 4829 ldr r0, [pc, #164] ; (60001694 <ResetHandler2+0x264>)
600015ee: f000 fe9b bl 60002328 <__sm_set_pool_veneer>
analog_init();
600015f2: f000 fe63 bl 600022bc <analog_init>
pwm_init();
600015f6: f000 febf bl 60002378 <__pwm_init_veneer>
tempmon_init();
600015fa: f000 fd29 bl 60002050 <tempmon_init>
startup_middle_hook();
600015fe: f000 fc65 bl 60001ecc <startup_default_middle_hook>
// Returns the number of milliseconds since your program started running.
*****
***** graphicstestnw.ino.lst
usb_init();
60001608: f000 f9bc bl 60001984 <usb_init>
6000160c: 6823 ldr r3, [r4, #0]
***** GRAPHICSTEST.INO.LST
usb_init();
60001608: f000 fdba bl 60002180 <usb_init>
6000160c: 6823 ldr r3, [r4, #0]
*****
***** graphicstestnw.ino.lst
startup_debug_reset();
60001614: f000 f860 bl 600016d8 <startup_debug_reset>
startup_late_hook();
60001618: f000 f85c bl 600016d4 <startup_default_late_hook>
__libc_init_array();
6000161c: f000 fa94 bl 60001b48 <____libc_init_array_veneer>
main();
60001620: f000 fa7e bl 60001b20 <__main_veneer>
while (1) asm("WFI");
***** GRAPHICSTEST.INO.LST
startup_debug_reset();
60001614: f000 fc5e bl 60001ed4 <startup_debug_reset>
startup_late_hook();
60001618: f000 fc5a bl 60001ed0 <startup_default_late_hook>
__libc_init_array();
6000161c: f000 fe98 bl 60002350 <____libc_init_array_veneer>
main();
60001620: f000 fe92 bl 60002348 <__main_veneer>
while (1) asm("WFI");
*****
***** graphicstestnw.ino.lst
60001628: 400d8000 .word 0x400d8000
6000162c: 00008fb0 .word 0x00008fb0
60001630: 60001c78 .word 0x60001c78
60001634: 00000000 .word 0x00000000
60001638: 20004ac0 .word 0x20004ac0
6000163c: 6000ac2c .word 0x6000ac2c
60001640: 20000000 .word 0x20000000
60001644: 20004800 .word 0x20004800
60001648: 000072cd .word 0x000072cd
6000164c: e000e400 .word 0xe000e400
***** GRAPHICSTEST.INO.LST
60001628: 400d8000 .word 0x400d8000
6000162c: 00008fe0 .word 0x00008fe0
60001630: 60002498 .word 0x60002498
60001634: 00000000 .word 0x00000000
60001638: 200052c0 .word 0x200052c0
6000163c: 6000b47c .word 0x6000b47c
60001640: 20000000 .word 0x20000000
60001644: 20005000 .word 0x20005000
60001648: 000075e5 .word 0x000075e5
6000164c: e000e400 .word 0xe000e400
*****
***** graphicstestnw.ino.lst
60001654: 400ac000 .word 0x400ac000
60001658: 00006cc1 .word 0x00006cc1
6000165c: 20004e70 .word 0x20004e70
60001660: 00006cc5 .word 0x00006cc5
60001664: 20200000 .word 0x20200000
***** GRAPHICSTEST.INO.LST
60001654: 400ac000 .word 0x400ac000
60001658: 00006ccd .word 0x00006ccd
6000165c: 20005670 .word 0x20005670
60001660: 00006cd1 .word 0x00006cd1
60001664: 20200000 .word 0x20200000
*****
***** graphicstestnw.ino.lst
60001684: 80000000 .word 0x80000000
60001688: 2000459a .word 0x2000459a
6000168c: 80000000 .word 0x80000000
60001690: 20004e74 .word 0x20004e74
60001694: 20004dfc .word 0x20004dfc
60001698: 2018101b .word 0x2018101b
***** GRAPHICSTEST.INO.LST
60001684: 80000000 .word 0x80000000
60001688: 20004e56 .word 0x20004e56
6000168c: 80000000 .word 0x80000000
60001690: 20005674 .word 0x20005674
60001694: 200055fc .word 0x200055fc
60001698: 2018101b .word 0x2018101b
*****
Resync Failed. Files are too different.
***** graphicstestnw.ino.lst
600016c8: 20070000 .word 0x20070000
600016cc <startup_default_early_hook>:
FLASHMEM void startup_default_early_hook(void) {}
600016cc: 4770 bx lr
600016ce: bf00 nop
600016d0 <startup_default_middle_hook>:
600016d0: 4770 bx lr
600016d2: bf00 nop
600016d4 <startup_default_late_hook>:
600016d4: 4770 bx lr
600016d6: bf00 nop
600016d8 <startup_debug_reset>:
FLASHMEM void startup_debug_reset(void) { __asm__ volatile("nop"); }
600016d8: bf00 nop
600016da: 4770 bx lr
600016dc <configure_cache>:
{
600016dc: b410 push {r4}
SCB_MPU_CTRL = 0; // turn off MPU
600016de: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000
600016e2: 2100 movs r1, #0
SCB_MPU_RBAR = 0x00000000 | REGION(i++); //https://developer.arm.com/docs/146793866/10/why-does-the-cortex-m7-initiate-
axim-read-accesses-to-memory-addresses-that-do-not-fall-under-a-defined-mpu-region
600016e4: 2410 movs r4, #16
SCB_MPU_RASR = SCB_MPU_RASR_TEX(0) | NOACCESS | NOEXEC | SIZE_4G;
600016e6: 4833 ldr r0, [pc, #204] ; (600017b4 <configure_cache+0xd8>)
SCB_MPU_CTRL = 0; // turn off MPU
600016e8: f8c3 1d94 str.w r1, [r3, #3476] ; 0xd94
SCB_MPU_RBAR = 0x00000000 | REGION(i++); //https://developer.arm.com/docs/146793866/10/why-does-the-cortex-m7-initiate-
axim-read-accesses-to-memory-addresses-that-do-not-fall-under-a-defined-mpu-region
600016ec: f8c3 4d9c str.w r4, [r3, #3484] ; 0xd9c
SCB_MPU_RBAR = 0x00000000 | REGION(i++); // ITCM
600016f0: 2411 movs r4, #17
SCB_MPU_RASR = SCB_MPU_RASR_TEX(0) | NOACCESS | NOEXEC | SIZE_4G;
600016f2: f8c3 0da0 str.w r0, [r3, #3488] ; 0xda0
SCB_MPU_RASR = MEM_NOCACHE | READONLY | SIZE_512K;
600016f6: 4830 ldr r0, [pc, #192] ; (600017b8 <configure_cache+0xdc>)
SCB_MPU_RBAR = 0x00000000 | REGION(i++); // ITCM
600016f8: f8c3 4d9c str.w r4, [r3, #3484] ; 0xd9c
SCB_MPU_RBAR = 0x00000000 | REGION(i++); // trap NULL pointer deref
600016fc: 2412 movs r4, #18
SCB_MPU_RASR = MEM_NOCACHE | READONLY | SIZE_512K;
600016fe: f8c3 0da0 str.w r0, [r3, #3488] ; 0xda0
SCB_MPU_RASR = DEV_NOCACHE | NOACCESS | SIZE_32B;
60001702: 482e ldr r0, [pc, #184] ; (600017bc <configure_cache+0xe0>)
SCB_MPU_RBAR = 0x00000000 | REGION(i++); // trap NULL pointer deref
60001704: f8c3 4d9c str.w r4, [r3, #3484] ; 0xd9c
SCB_MPU_RBAR = ((uint32_t)&_ebss) | REGION(i++); // trap stack overflow
60001708: 4a2d ldr r2, [pc, #180] ; (600017c0 <configure_cache+0xe4>)
SCB_MPU_RASR = DEV_NOCACHE | NOACCESS | SIZE_32B;
6000170a: f8c3 0da0 str.w r0, [r3, #3488] ; 0xda0
SCB_MPU_RBAR = 0x00200000 | REGION(i++); // Boot ROM
6000170e: 4c2d ldr r4, [pc, #180] ; (600017c4 <configure_cache+0xe8>)
SCB_MPU_RBAR = ((uint32_t)&_ebss) | REGION(i++); // trap stack overflow
60001710: f042 0215 orr.w r2, r2, #21
SCB_MPU_RASR = MEM_CACHE_WT | READONLY | SIZE_128K;
60001714: 482c ldr r0, [pc, #176] ; (600017c8 <configure_cache+0xec>)
SCB_MPU_RBAR = 0x00200000 | REGION(i++); // Boot ROM
60001716: f8c3 4d9c str.w r4, [r3, #3484] ; 0xd9c
SCB_MPU_RASR = MEM_CACHE_WT | READONLY | SIZE_128K;
6000171a: f8c3 0da0 str.w r0, [r3, #3488] ; 0xda0
SCB_MPU_RBAR = 0x20000000 | REGION(i++); // DTCM
6000171e: 4c2b ldr r4, [pc, #172] ; (600017cc <configure_cache+0xf0>)
SCB_MPU_RASR = MEM_NOCACHE | READWRITE | NOEXEC | SIZE_512K;
60001720: 482b ldr r0, [pc, #172] ; (600017d0 <configure_cache+0xf4>)
SCB_MPU_RBAR = 0x20000000 | REGION(i++); // DTCM
60001722: f8c3 4d9c str.w r4, [r3, #3484] ; 0xd9c
SCB_MPU_RASR = MEM_NOCACHE | READWRITE | NOEXEC | SIZE_512K;
60001726: f8c3 0da0 str.w r0, [r3, #3488] ; 0xda0
SCB_MPU_RASR = SCB_MPU_RASR_TEX(0) | NOACCESS | NOEXEC | SIZE_32B;
6000172a: 4c2a ldr r4, [pc, #168] ; (600017d4 <configure_cache+0xf8>)
SCB_MPU_RBAR = ((uint32_t)&_ebss) | REGION(i++); // trap stack overflow
6000172c: f8c3 2d9c str.w r2, [r3, #3484] ; 0xd9c
SCB_MPU_RBAR = 0x20200000 | REGION(i++); // RAM (AXI bus)
60001730: 4829 ldr r0, [pc, #164] ; (600017d8 <configure_cache+0xfc>)
SCB_MPU_RASR = MEM_CACHE_WBWA | READWRITE | NOEXEC | SIZE_1M;
60001732: 4a2a ldr r2, [pc, #168] ; (600017dc <configure_cache+0x100>)
SCB_MPU_RASR = SCB_MPU_RASR_TEX(0) | NOACCESS | NOEXEC | SIZE_32B;
60001734: f8c3 4da0 str.w r4, [r3, #3488] ; 0xda0
SCB_MPU_RBAR = 0x20200000 | REGION(i++); // RAM (AXI bus)
60001738: f8c3 0d9c str.w r0, [r3, #3484] ; 0xd9c
SCB_MPU_RASR = MEM_CACHE_WBWA | READWRITE | NOEXEC | SIZE_1M;
6000173c: f8c3 2da0 str.w r2, [r3, #3488] ; 0xda0
SCB_MPU_RASR = DEV_NOCACHE | READWRITE | NOEXEC | SIZE_64M;
60001740: f502 22a0 add.w r2, r2, #327680 ; 0x50000
SCB_MPU_RBAR = 0x40000000 | REGION(i++); // Peripherals
60001744: 4c26 ldr r4, [pc, #152] ; (600017e0 <configure_cache+0x104>)
SCB_MPU_RASR = DEV_NOCACHE | READWRITE | NOEXEC | SIZE_64M;
60001746: 320c adds r2, #12
SCB_MPU_RBAR = 0x60000000 | REGION(i++); // QSPI Flash
60001748: 4826 ldr r0, [pc, #152] ; (600017e4 <configure_cache+0x108>)
SCB_MPU_RBAR = 0x40000000 | REGION(i++); // Peripherals
6000174a: f8c3 4d9c str.w r4, [r3, #3484] ; 0xd9c
SCB_MPU_RASR = DEV_NOCACHE | READWRITE | NOEXEC | SIZE_64M;
6000174e: f8c3 2da0 str.w r2, [r3, #3488] ; 0xda0
SCB_MPU_RASR = MEM_CACHE_WBWA | READONLY | SIZE_16M;
60001752: 4a25 ldr r2, [pc, #148] ; (600017e8 <configure_cache+0x10c>)
SCB_MPU_RBAR = 0x60000000 | REGION(i++); // QSPI Flash
60001754: f8c3 0d9c str.w r0, [r3, #3484] ; 0xd9c
SCB_MPU_RBAR = 0x70000000 | REGION(i++); // FlexSPI2
***** GRAPHICSTEST.INO.LST
600016c8: 20070000 .word 0x20070000
600016cc <CrashReportClass::clear()>:
}
FLASHMEM
static void cleardata(struct arm_fault_info_struct *info)
{
info->len = 0;
600016cc: 4b20 ldr r3, [pc, #128] ; (60001750 <CrashReportClass::clear()+0x84>)
600016ce: 2000 movs r0, #0
{
600016d0: b430 push {r4, r5}
info->ipsr = 0;
600016d2: e9c3 0020 strd r0, r0, [r3, #128] ; 0x80
info->cfsr = 0;
info->hfsr = 0;
600016d6: e9c3 0022 strd r0, r0, [r3, #136] ; 0x88
info->mmfar = 0;
info->bfar = 0;
600016da: e9c3 0024 strd r0, r0, [r3, #144] ; 0x90
info->ret = 0;
info->xpsr = 0;
600016de: e9c3 0026 strd r0, r0, [r3, #152] ; 0x98
info->crc = 0;
600016e2: f8c3 00a8 str.w r0, [r3, #168] ; 0xa8
static inline void arm_dcache_flush_delete(void *addr, uint32_t size)
{
uint32_t location = (uint32_t)addr & 0xFFFFFFE0;
uint32_t end_addr = (uint32_t)addr + size;
asm volatile("": : :"memory");
asm("dsb");
600016e6: f3bf 8f4f dsb sy
do {
SCB_CACHE_DCCIMVAC = location;
600016ea: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000
600016ee: 4919 ldr r1, [pc, #100] ; (60001754 <CrashReportClass::clear()+0x88>)
600016f0: 4a19 ldr r2, [pc, #100] ; (60001758 <CrashReportClass::clear()+0x8c>)
600016f2: f8c3 1f70 str.w r1, [r3, #3952] ; 0xf70
600016f6: f8c3 2f70 str.w r2, [r3, #3952] ; 0xf70
location += 32;
} while (location < end_addr);
asm("dsb");
600016fa: f3bf 8f4f dsb sy
asm("isb");
600016fe: f3bf 8f6f isb sy
arm_dcache_flush_delete(info, sizeof(*info));
SRC_SRSR = SRC_SRSR; // zeros all write-1-to-clear bits
60001702: 4b16 ldr r3, [pc, #88] ; (6000175c <CrashReportClass::clear()+0x90>)
arm_dcache_flush((void *)bc, sizeof(struct crashreport_breadcrumbs_struct));
}
}
static uint32_t checksum(volatile const void *data, int len) {
volatile const uint16_t *p = (volatile const uint16_t *)data;
uint32_t a=1, b=0; // Adler Fletcher kinda, len < 720 bytes
60001704: 4601 mov r1, r0
*(volatile uint32_t *)(&bc->bitmask) = 0;
60001706: 4c16 ldr r4, [pc, #88] ; (60001760 <CrashReportClass::clear()+0x94>)
60001708: 2201 movs r2, #1
SRC_SRSR = SRC_SRSR; // zeros all write-1-to-clear bits
6000170a: 689d ldr r5, [r3, #8]
while (len > 0) {
6000170c: f604 74dc addw r4, r4, #4060 ; 0xfdc
60001710: 609d str r5, [r3, #8]
SRC_GPR5 = 0;
60001712: 6318 str r0, [r3, #48] ; 0x30
volatile const uint16_t *p = (volatile const uint16_t *)data;
60001714: 4b13 ldr r3, [pc, #76] ; (60001764 <CrashReportClass::clear()+0x98>)
*(volatile uint32_t *)(&bc->bitmask) = 0;
60001716: f844 0c1c str.w r0, [r4, #-28]
a += *p++;
6000171a: 4618 mov r0, r3
6000171c: 3302 adds r3, #2
6000171e: 8800 ldrh r0, [r0, #0]
while (len > 0) {
60001720: 42a3 cmp r3, r4
a += *p++;
60001722: fa12 f280 uxtah r2, r2, r0
b += a;
60001726: 4411 add r1, r2
while (len > 0) {
60001728: d1f7 bne.n 6000171a <CrashReportClass::clear()+0x4e>
len -= 2;
}
a = a & 65535;
6000172a: b292 uxth r2, r2
*(volatile uint32_t *)(&bc->checksum) = checksum(bc, 28);
6000172c: 4b0c ldr r3, [pc, #48] ; (60001760 <CrashReportClass::clear()+0x94>)
b = b & 65535;
return a | (b << 16);
6000172e: ea42 4201 orr.w r2, r2, r1, lsl #16
60001732: f8c3 2fdc str.w r2, [r3, #4060] ; 0xfdc
asm("dsb");
60001736: f3bf 8f4f dsb sy
SCB_CACHE_DCCMVAC = location;
6000173a: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000
6000173e: 4a09 ldr r2, [pc, #36] ; (60001764 <CrashReportClass::clear()+0x98>)
60001740: f8c3 2f68 str.w r2, [r3, #3944] ; 0xf68
asm("dsb");
60001744: f3bf 8f4f dsb sy
asm("isb");
60001748: f3bf 8f6f isb sy
*****