diff --git a/APP/main.c b/APP/main.c index 4945f5d..d06ae50 100644 --- a/APP/main.c +++ b/APP/main.c @@ -1,6 +1,6 @@ #include "stm32f10x.h" #include "iic.h" - +#include "flash.h" @@ -23,6 +23,7 @@ int main(){ test(); + flash_Test(); while(1); diff --git a/DEV/flash.c b/DEV/flash.c new file mode 100644 index 0000000..3e18c3b --- /dev/null +++ b/DEV/flash.c @@ -0,0 +1,90 @@ +#include "flash.h" + +#include "stm32f10x.h" +#include + + + +typedef struct { + uint32_t version; // 序号/标志位 + uint32_t write_count; + uint32_t error_count; + float temperature; + uint32_t crc32; // 最后一个成员:CRC校验 +} FlashData_t; + + + +// 最后一页页号(从0开始) +#define FLASH_PAGE_NUM 63 + +// 每页大小 +#define FLASH_PAGE_SIZE 1024 + +// Flash起始地址 +#define FLASH_BASE_ADDR 0x08000000 + +// 最后一页的地址 +#define FLASH_LAST_PAGE_ADDR (FLASH_BASE_ADDR + FLASH_PAGE_NUM * FLASH_PAGE_SIZE) +// 即:0x08000000 + 63 * 1024 = 0x0800FC00 + + +#define FLASH_TARGET_ADDR ((uint32_t)FLASH_LAST_PAGE_ADDR) // 最后1KB起始地址 + + + +// 擦除对应页(1KB) +void Flash_ErasePage(uint32_t page_addr) { + FLASH_Unlock(); + FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); + FLASH_ErasePage(page_addr); + FLASH_Lock(); +} + +// 写入结构体到 Flash(页擦除+按字写入) +void Flash_WriteStruct(uint32_t addr, void* data, uint16_t size) { + uint16_t i; + uint32_t* pData = (uint32_t*)data; + + FLASH_Unlock(); + FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); + FLASH_ErasePage(addr); // 注意:必须按页擦除 + + for (i = 0; i < (size + 3) / 4; i++) { // 以 4 字节为单位写入 + FLASH_ProgramWord(addr + i * 4, pData[i]); + } + + FLASH_Lock(); +} + +// 从 Flash 读取结构体 +void Flash_ReadStruct(uint32_t addr, void* data, uint16_t size) { + memcpy(data, (void*)addr, size); +} +FlashData_t readData; + + + + +void flash_Test(){ + + FlashData_t myData = { + .write_count = 123, + .error_count = 456, + .temperature = 36.5f + }; + + FlashData_t readData; + + // 写入结构体 + Flash_WriteStruct(FLASH_TARGET_ADDR, &myData, sizeof(FlashData_t)); + + // 读取结构体 + Flash_ReadStruct(FLASH_TARGET_ADDR, &readData,sizeof(FlashData_t)); + + + + + + +} diff --git a/DEV/flash.h b/DEV/flash.h new file mode 100644 index 0000000..d563a06 --- /dev/null +++ b/DEV/flash.h @@ -0,0 +1,10 @@ +#ifndef _FLASH_H_ +#define _FLASH_H_ + + + + +void flash_Test(); + + +#endif \ No newline at end of file diff --git a/DEV/iic.c b/DEV/iic.c index 377fc63..25ca4f4 100644 --- a/DEV/iic.c +++ b/DEV/iic.c @@ -443,17 +443,7 @@ void test(){ OLED_Refresh(); - while(1){ - - //OLED_Fill(0xFF); // 清屏 - //delay_ms_simple(1000); - - //OLED_Fill(0x00); - //delay_ms_simple(1000); - - - } } diff --git a/Listings/example.map b/Listings/example.map index 9c9b181..7a4b05c 100644 --- a/Listings/example.map +++ b/Listings/example.map @@ -8,6 +8,7 @@ Section Cross References main.o(.text.main) refers to stm32f10x_gpio.o(.text.GPIO_Init) for GPIO_Init main.o(.text.main) refers to stm32f10x_gpio.o(.text.GPIO_ResetBits) for GPIO_ResetBits main.o(.text.main) refers to iic.o(.text.test) for test + main.o(.text.main) refers to flash.o(.text.flash_Test) for flash_Test main.o(.ARM.exidx.text.main) refers to main.o(.text.main) for [Anonymous Symbol] iic.o(.ARM.exidx.text.delay) refers to iic.o(.text.delay) for [Anonymous Symbol] iic.o(.ARM.exidx.text.delay_us_simple) refers to iic.o(.text.delay_us_simple) for [Anonymous Symbol] @@ -82,6 +83,23 @@ Section Cross References iic.o(.text.test) refers to iic.o(.text.lcd_show_all_ascii_lowercase) for lcd_show_all_ascii_lowercase iic.o(.text.test) refers to iic.o(.text.OLED_Refresh) for OLED_Refresh iic.o(.ARM.exidx.text.test) refers to iic.o(.text.test) for [Anonymous Symbol] + flash.o(.text.Flash_ErasePage) refers to stm32f10x_flash.o(.text.FLASH_Unlock) for FLASH_Unlock + flash.o(.text.Flash_ErasePage) refers to stm32f10x_flash.o(.text.FLASH_ClearFlag) for FLASH_ClearFlag + flash.o(.text.Flash_ErasePage) refers to stm32f10x_flash.o(.text.FLASH_ErasePage) for FLASH_ErasePage + flash.o(.text.Flash_ErasePage) refers to stm32f10x_flash.o(.text.FLASH_Lock) for FLASH_Lock + flash.o(.ARM.exidx.text.Flash_ErasePage) refers to flash.o(.text.Flash_ErasePage) for [Anonymous Symbol] + flash.o(.text.Flash_WriteStruct) refers to stm32f10x_flash.o(.text.FLASH_Unlock) for FLASH_Unlock + flash.o(.text.Flash_WriteStruct) refers to stm32f10x_flash.o(.text.FLASH_ClearFlag) for FLASH_ClearFlag + flash.o(.text.Flash_WriteStruct) refers to stm32f10x_flash.o(.text.FLASH_ErasePage) for FLASH_ErasePage + flash.o(.text.Flash_WriteStruct) refers to stm32f10x_flash.o(.text.FLASH_ProgramWord) for FLASH_ProgramWord + flash.o(.text.Flash_WriteStruct) refers to stm32f10x_flash.o(.text.FLASH_Lock) for FLASH_Lock + flash.o(.ARM.exidx.text.Flash_WriteStruct) refers to flash.o(.text.Flash_WriteStruct) for [Anonymous Symbol] + flash.o(.text.Flash_ReadStruct) refers to rt_memcpy_v6.o(.text) for __aeabi_memcpy + flash.o(.ARM.exidx.text.Flash_ReadStruct) refers to flash.o(.text.Flash_ReadStruct) for [Anonymous Symbol] + flash.o(.text.flash_Test) refers to flash.o(.rodata..L__const.flash_Test.myData) for .L__const.flash_Test.myData + flash.o(.text.flash_Test) refers to flash.o(.text.Flash_WriteStruct) for Flash_WriteStruct + flash.o(.text.flash_Test) refers to flash.o(.text.Flash_ReadStruct) for Flash_ReadStruct + flash.o(.ARM.exidx.text.flash_Test) refers to flash.o(.text.flash_Test) for [Anonymous Symbol] misc.o(.ARM.exidx.text.NVIC_PriorityGroupConfig) refers to misc.o(.text.NVIC_PriorityGroupConfig) for [Anonymous Symbol] misc.o(.ARM.exidx.text.NVIC_Init) refers to misc.o(.text.NVIC_Init) for [Anonymous Symbol] misc.o(.ARM.exidx.text.NVIC_SetVectorTable) refers to misc.o(.text.NVIC_SetVectorTable) for [Anonymous Symbol] @@ -411,6 +429,7 @@ Section Cross References system_stm32f10x.o(.text.SystemCoreClockUpdate) refers to system_stm32f10x.o(.rodata.AHBPrescTable) for AHBPrescTable system_stm32f10x.o(.ARM.exidx.text.SystemCoreClockUpdate) refers to system_stm32f10x.o(.text.SystemCoreClockUpdate) for [Anonymous Symbol] system_stm32f10x.o(.ARM.exidx.text.SetSysClockTo72) refers to system_stm32f10x.o(.text.SetSysClockTo72) for [Anonymous Symbol] + rt_memcpy_v6.o(.text) refers to rt_memcpy_w.o(.text) for __aeabi_memcpy4 __main.o(!!!main) refers to __rtentry.o(.ARM.Collect$$rtentry$$00000000) for __rt_entry __rtentry.o(.ARM.Collect$$rtentry$$00000000) refers (Special) to __rtentry2.o(.ARM.Collect$$rtentry$$0000000A) for __rt_entry_li __rtentry.o(.ARM.Collect$$rtentry$$00000000) refers (Special) to __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) for __rt_entry_main @@ -552,6 +571,13 @@ Removing Unused input sections from the image. Removing iic.o(.ARM.exidx.text.OLED_ShowChar), (8 bytes). Removing iic.o(.ARM.exidx.text.lcd_show_all_ascii_lowercase), (8 bytes). Removing iic.o(.ARM.exidx.text.test), (8 bytes). + Removing flash.o(.text), (0 bytes). + Removing flash.o(.text.Flash_ErasePage), (30 bytes). + Removing flash.o(.ARM.exidx.text.Flash_ErasePage), (8 bytes). + Removing flash.o(.ARM.exidx.text.Flash_WriteStruct), (8 bytes). + Removing flash.o(.ARM.exidx.text.Flash_ReadStruct), (8 bytes). + Removing flash.o(.ARM.exidx.text.flash_Test), (8 bytes). + Removing flash.o(.bss.readData), (20 bytes). Removing misc.o(.text), (0 bytes). Removing misc.o(.text.NVIC_PriorityGroupConfig), (28 bytes). Removing misc.o(.ARM.exidx.text.NVIC_PriorityGroupConfig), (8 bytes). @@ -570,17 +596,13 @@ Removing Unused input sections from the image. Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_HalfCycleAccessCmd), (8 bytes). Removing stm32f10x_flash.o(.text.FLASH_PrefetchBufferCmd), (32 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_PrefetchBufferCmd), (8 bytes). - Removing stm32f10x_flash.o(.text.FLASH_Unlock), (30 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_Unlock), (8 bytes). Removing stm32f10x_flash.o(.text.FLASH_UnlockBank1), (30 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_UnlockBank1), (8 bytes). - Removing stm32f10x_flash.o(.text.FLASH_Lock), (18 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_Lock), (8 bytes). Removing stm32f10x_flash.o(.text.FLASH_LockBank1), (18 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_LockBank1), (8 bytes). - Removing stm32f10x_flash.o(.text.FLASH_ErasePage), (106 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_ErasePage), (8 bytes). - Removing stm32f10x_flash.o(.text.FLASH_WaitForLastOperation), (94 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_WaitForLastOperation), (8 bytes). Removing stm32f10x_flash.o(.text.FLASH_EraseAllPages), (92 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_EraseAllPages), (8 bytes). @@ -592,7 +614,6 @@ Removing Unused input sections from the image. Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_EraseOptionBytes), (8 bytes). Removing stm32f10x_flash.o(.text.FLASH_GetReadOutProtectionStatus), (50 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_GetReadOutProtectionStatus), (8 bytes). - Removing stm32f10x_flash.o(.text.FLASH_ProgramWord), (160 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_ProgramWord), (8 bytes). Removing stm32f10x_flash.o(.text.FLASH_ProgramHalfWord), (98 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_ProgramHalfWord), (8 bytes). @@ -614,11 +635,9 @@ Removing Unused input sections from the image. Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_ITConfig), (8 bytes). Removing stm32f10x_flash.o(.text.FLASH_GetFlagStatus), (96 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_GetFlagStatus), (8 bytes). - Removing stm32f10x_flash.o(.text.FLASH_ClearFlag), (20 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_ClearFlag), (8 bytes). Removing stm32f10x_flash.o(.text.FLASH_GetStatus), (104 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_GetStatus), (8 bytes). - Removing stm32f10x_flash.o(.text.FLASH_GetBank1Status), (104 bytes). Removing stm32f10x_flash.o(.ARM.exidx.text.FLASH_GetBank1Status), (8 bytes). Removing stm32f10x_gpio.o(.text), (0 bytes). Removing stm32f10x_gpio.o(.text.GPIO_DeInit), (276 bytes). @@ -1093,7 +1112,7 @@ Removing Unused input sections from the image. Removing system_stm32f10x.o(.data.SystemCoreClock), (4 bytes). Removing system_stm32f10x.o(.rodata.AHBPrescTable), (16 bytes). -570 unused section(s) (total 23036 bytes) removed from the image. +570 unused section(s) (total 22586 bytes) removed from the image. ============================================================================== @@ -1136,6 +1155,8 @@ Image Symbol Table ../clib/libinit.s 0x00000000 Number 0 libinit2.o ABSOLUTE ../clib/libinit.s 0x00000000 Number 0 libshutdown.o ABSOLUTE ../clib/libinit.s 0x00000000 Number 0 libshutdown2.o ABSOLUTE + ../clib/memcpset.s 0x00000000 Number 0 rt_memcpy_v6.o ABSOLUTE + ../clib/memcpset.s 0x00000000 Number 0 rt_memcpy_w.o ABSOLUTE ../clib/signal.c 0x00000000 Number 0 defsig_rtmem_outer.o ABSOLUTE ../clib/signal.c 0x00000000 Number 0 defsig_rtmem_formal.o ABSOLUTE ../clib/signal.c 0x00000000 Number 0 defsig_exit.o ABSOLUTE @@ -1157,6 +1178,7 @@ Image Symbol Table GPIO_STM32F10x.c 0x00000000 Number 0 gpio_stm32f10x.o ABSOLUTE RTE/Device/STM32F103C8/startup_stm32f10x_md.s 0x00000000 Number 0 startup_stm32f10x_md.o ABSOLUTE dc.s 0x00000000 Number 0 dc.o ABSOLUTE + flash.c 0x00000000 Number 0 flash.o ABSOLUTE iic.c 0x00000000 Number 0 iic.o ABSOLUTE main.c 0x00000000 Number 0 main.o ABSOLUTE misc.c 0x00000000 Number 0 misc.o ABSOLUTE @@ -1216,40 +1238,53 @@ Image Symbol Table .ARM.Collect$$rtexit$$00000003 0x0800018c Section 4 rtexit2.o(.ARM.Collect$$rtexit$$00000003) .ARM.Collect$$rtexit$$00000004 0x08000190 Section 6 rtexit2.o(.ARM.Collect$$rtexit$$00000004) .text 0x08000198 Section 64 startup_stm32f10x_md.o(.text) - .text 0x080001d8 Section 0 heapauxi.o(.text) - .text 0x080001de Section 74 sys_stackheap_outer.o(.text) - .text 0x08000228 Section 0 exit.o(.text) - .text 0x0800023c Section 8 libspace.o(.text) - .text 0x08000244 Section 0 sys_exit.o(.text) - .text 0x08000250 Section 2 use_no_semi.o(.text) - .text 0x08000252 Section 0 indicate_semi.o(.text) - [Anonymous Symbol] 0x08000254 Section 0 stm32f10x_gpio.o(.text.GPIO_Init) - [Anonymous Symbol] 0x080003dc Section 0 stm32f10x_gpio.o(.text.GPIO_ReadInputDataBit) - [Anonymous Symbol] 0x08000410 Section 0 stm32f10x_gpio.o(.text.GPIO_ResetBits) - [Anonymous Symbol] 0x08000424 Section 0 stm32f10x_gpio.o(.text.GPIO_SetBits) - [Anonymous Symbol] 0x08000438 Section 0 iic.o(.text.IIC_Delay) - [Anonymous Symbol] 0x0800043c Section 0 iic.o(.text.IIC_GPIO_Init) - [Anonymous Symbol] 0x08000484 Section 0 iic.o(.text.IIC_Send_Byte) - [Anonymous Symbol] 0x0800050c Section 0 iic.o(.text.IIC_Start) - [Anonymous Symbol] 0x08000550 Section 0 iic.o(.text.IIC_Stop) - [Anonymous Symbol] 0x08000588 Section 0 iic.o(.text.IIC_Wait_Ack) - [Anonymous Symbol] 0x08000610 Section 0 iic.o(.text.OLED_Fill) - [Anonymous Symbol] 0x08000680 Section 0 iic.o(.text.OLED_Init) - [Anonymous Symbol] 0x08000744 Section 0 iic.o(.text.OLED_Refresh) - [Anonymous Symbol] 0x080007c0 Section 0 iic.o(.text.OLED_ShowChar) - [Anonymous Symbol] 0x08000844 Section 0 iic.o(.text.OLED_WriteCommand) - [Anonymous Symbol] 0x08000878 Section 0 iic.o(.text.OLED_WriteData) - [Anonymous Symbol] 0x080008ac Section 0 stm32f10x_rcc.o(.text.RCC_APB2PeriphClockCmd) - SetSysClock 0x080008e5 Thumb Code 8 system_stm32f10x.o(.text.SetSysClock) - [Anonymous Symbol] 0x080008e4 Section 0 system_stm32f10x.o(.text.SetSysClock) - SetSysClockTo72 0x080008ed Thumb Code 290 system_stm32f10x.o(.text.SetSysClockTo72) - [Anonymous Symbol] 0x080008ec Section 0 system_stm32f10x.o(.text.SetSysClockTo72) - [Anonymous Symbol] 0x08000a10 Section 0 system_stm32f10x.o(.text.SystemInit) - [Anonymous Symbol] 0x08000a78 Section 0 iic.o(.text.delay_ms_simple) - [Anonymous Symbol] 0x08000a98 Section 0 iic.o(.text.delay_us_simple) - [Anonymous Symbol] 0x08000ac8 Section 0 iic.o(.text.lcd_show_all_ascii_lowercase) - [Anonymous Symbol] 0x08000b54 Section 0 main.o(.text.main) - [Anonymous Symbol] 0x08000b9c Section 0 iic.o(.text.test) + .text 0x080001d8 Section 138 rt_memcpy_v6.o(.text) + .text 0x08000262 Section 0 heapauxi.o(.text) + .text 0x08000268 Section 100 rt_memcpy_w.o(.text) + .text 0x080002cc Section 74 sys_stackheap_outer.o(.text) + .text 0x08000316 Section 0 exit.o(.text) + .text 0x08000328 Section 8 libspace.o(.text) + .text 0x08000330 Section 0 sys_exit.o(.text) + .text 0x0800033c Section 2 use_no_semi.o(.text) + .text 0x0800033e Section 0 indicate_semi.o(.text) + [Anonymous Symbol] 0x08000340 Section 0 stm32f10x_flash.o(.text.FLASH_ClearFlag) + [Anonymous Symbol] 0x08000354 Section 0 stm32f10x_flash.o(.text.FLASH_ErasePage) + [Anonymous Symbol] 0x080003c0 Section 0 stm32f10x_flash.o(.text.FLASH_GetBank1Status) + [Anonymous Symbol] 0x08000428 Section 0 stm32f10x_flash.o(.text.FLASH_Lock) + [Anonymous Symbol] 0x0800043c Section 0 stm32f10x_flash.o(.text.FLASH_ProgramWord) + [Anonymous Symbol] 0x080004dc Section 0 stm32f10x_flash.o(.text.FLASH_Unlock) + [Anonymous Symbol] 0x080004fc Section 0 stm32f10x_flash.o(.text.FLASH_WaitForLastOperation) + [Anonymous Symbol] 0x0800055c Section 0 flash.o(.text.Flash_ReadStruct) + [Anonymous Symbol] 0x08000578 Section 0 flash.o(.text.Flash_WriteStruct) + [Anonymous Symbol] 0x080005dc Section 0 stm32f10x_gpio.o(.text.GPIO_Init) + [Anonymous Symbol] 0x08000764 Section 0 stm32f10x_gpio.o(.text.GPIO_ReadInputDataBit) + [Anonymous Symbol] 0x08000798 Section 0 stm32f10x_gpio.o(.text.GPIO_ResetBits) + [Anonymous Symbol] 0x080007ac Section 0 stm32f10x_gpio.o(.text.GPIO_SetBits) + [Anonymous Symbol] 0x080007c0 Section 0 iic.o(.text.IIC_Delay) + [Anonymous Symbol] 0x080007c4 Section 0 iic.o(.text.IIC_GPIO_Init) + [Anonymous Symbol] 0x0800080c Section 0 iic.o(.text.IIC_Send_Byte) + [Anonymous Symbol] 0x08000894 Section 0 iic.o(.text.IIC_Start) + [Anonymous Symbol] 0x080008d8 Section 0 iic.o(.text.IIC_Stop) + [Anonymous Symbol] 0x08000910 Section 0 iic.o(.text.IIC_Wait_Ack) + [Anonymous Symbol] 0x08000998 Section 0 iic.o(.text.OLED_Fill) + [Anonymous Symbol] 0x08000a08 Section 0 iic.o(.text.OLED_Init) + [Anonymous Symbol] 0x08000acc Section 0 iic.o(.text.OLED_Refresh) + [Anonymous Symbol] 0x08000b48 Section 0 iic.o(.text.OLED_ShowChar) + [Anonymous Symbol] 0x08000bcc Section 0 iic.o(.text.OLED_WriteCommand) + [Anonymous Symbol] 0x08000c00 Section 0 iic.o(.text.OLED_WriteData) + [Anonymous Symbol] 0x08000c34 Section 0 stm32f10x_rcc.o(.text.RCC_APB2PeriphClockCmd) + SetSysClock 0x08000c6d Thumb Code 8 system_stm32f10x.o(.text.SetSysClock) + [Anonymous Symbol] 0x08000c6c Section 0 system_stm32f10x.o(.text.SetSysClock) + SetSysClockTo72 0x08000c75 Thumb Code 290 system_stm32f10x.o(.text.SetSysClockTo72) + [Anonymous Symbol] 0x08000c74 Section 0 system_stm32f10x.o(.text.SetSysClockTo72) + [Anonymous Symbol] 0x08000d98 Section 0 system_stm32f10x.o(.text.SystemInit) + [Anonymous Symbol] 0x08000e00 Section 0 iic.o(.text.delay_ms_simple) + [Anonymous Symbol] 0x08000e20 Section 0 iic.o(.text.delay_us_simple) + [Anonymous Symbol] 0x08000e50 Section 0 flash.o(.text.flash_Test) + [Anonymous Symbol] 0x08000ea0 Section 0 iic.o(.text.lcd_show_all_ascii_lowercase) + [Anonymous Symbol] 0x08000f2c Section 0 main.o(.text.main) + [Anonymous Symbol] 0x08000f78 Section 0 iic.o(.text.test) + .L__const.flash_Test.myData 0x08000f8c Data 20 flash.o(.rodata..L__const.flash_Test.myData) .bss 0x20000000 Section 96 libspace.o(.bss) Heap_Mem 0x20000460 Data 512 startup_stm32f10x_md.o(HEAP) HEAP 0x20000460 Section 512 startup_stm32f10x_md.o(HEAP) @@ -1398,44 +1433,61 @@ Image Symbol Table USB_LP_CAN1_RX0_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) WWDG_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) __user_initial_stackheap 0x080001b5 Thumb Code 0 startup_stm32f10x_md.o(.text) - __use_two_region_memory 0x080001d9 Thumb Code 2 heapauxi.o(.text) - __rt_heap_escrow$2region 0x080001db Thumb Code 2 heapauxi.o(.text) - __rt_heap_expand$2region 0x080001dd Thumb Code 2 heapauxi.o(.text) - __user_setup_stackheap 0x080001df Thumb Code 74 sys_stackheap_outer.o(.text) - exit 0x08000229 Thumb Code 18 exit.o(.text) - __user_libspace 0x0800023d Thumb Code 8 libspace.o(.text) - __user_perproc_libspace 0x0800023d Thumb Code 0 libspace.o(.text) - __user_perthread_libspace 0x0800023d Thumb Code 0 libspace.o(.text) - _sys_exit 0x08000245 Thumb Code 8 sys_exit.o(.text) - __I$use$semihosting 0x08000251 Thumb Code 0 use_no_semi.o(.text) - __use_no_semihosting_swi 0x08000251 Thumb Code 2 use_no_semi.o(.text) - __semihosting_library_function 0x08000253 Thumb Code 0 indicate_semi.o(.text) - GPIO_Init 0x08000255 Thumb Code 390 stm32f10x_gpio.o(.text.GPIO_Init) - GPIO_ReadInputDataBit 0x080003dd Thumb Code 52 stm32f10x_gpio.o(.text.GPIO_ReadInputDataBit) - GPIO_ResetBits 0x08000411 Thumb Code 20 stm32f10x_gpio.o(.text.GPIO_ResetBits) - GPIO_SetBits 0x08000425 Thumb Code 20 stm32f10x_gpio.o(.text.GPIO_SetBits) - IIC_Delay 0x08000439 Thumb Code 2 iic.o(.text.IIC_Delay) - IIC_GPIO_Init 0x0800043d Thumb Code 72 iic.o(.text.IIC_GPIO_Init) - IIC_Send_Byte 0x08000485 Thumb Code 134 iic.o(.text.IIC_Send_Byte) - IIC_Start 0x0800050d Thumb Code 68 iic.o(.text.IIC_Start) - IIC_Stop 0x08000551 Thumb Code 54 iic.o(.text.IIC_Stop) - IIC_Wait_Ack 0x08000589 Thumb Code 134 iic.o(.text.IIC_Wait_Ack) - OLED_Fill 0x08000611 Thumb Code 110 iic.o(.text.OLED_Fill) - OLED_Init 0x08000681 Thumb Code 196 iic.o(.text.OLED_Init) - OLED_Refresh 0x08000745 Thumb Code 124 iic.o(.text.OLED_Refresh) - OLED_ShowChar 0x080007c1 Thumb Code 132 iic.o(.text.OLED_ShowChar) - OLED_WriteCommand 0x08000845 Thumb Code 52 iic.o(.text.OLED_WriteCommand) - OLED_WriteData 0x08000879 Thumb Code 52 iic.o(.text.OLED_WriteData) - RCC_APB2PeriphClockCmd 0x080008ad Thumb Code 56 stm32f10x_rcc.o(.text.RCC_APB2PeriphClockCmd) - SystemInit 0x08000a11 Thumb Code 102 system_stm32f10x.o(.text.SystemInit) - delay_ms_simple 0x08000a79 Thumb Code 32 iic.o(.text.delay_ms_simple) - delay_us_simple 0x08000a99 Thumb Code 46 iic.o(.text.delay_us_simple) - lcd_show_all_ascii_lowercase 0x08000ac9 Thumb Code 140 iic.o(.text.lcd_show_all_ascii_lowercase) - main 0x08000b55 Thumb Code 72 main.o(.text.main) - test 0x08000b9d Thumb Code 22 iic.o(.text.test) - Font6x8 0x08000bb2 Data 570 iic.o(.rodata.Font6x8) - Region$$Table$$Base 0x08000dec Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08000dfc Number 0 anon$$obj.o(Region$$Table) + __aeabi_memcpy 0x080001d9 Thumb Code 0 rt_memcpy_v6.o(.text) + __rt_memcpy 0x080001d9 Thumb Code 138 rt_memcpy_v6.o(.text) + _memcpy_lastbytes 0x0800023f Thumb Code 0 rt_memcpy_v6.o(.text) + __use_two_region_memory 0x08000263 Thumb Code 2 heapauxi.o(.text) + __rt_heap_escrow$2region 0x08000265 Thumb Code 2 heapauxi.o(.text) + __rt_heap_expand$2region 0x08000267 Thumb Code 2 heapauxi.o(.text) + __aeabi_memcpy4 0x08000269 Thumb Code 0 rt_memcpy_w.o(.text) + __aeabi_memcpy8 0x08000269 Thumb Code 0 rt_memcpy_w.o(.text) + __rt_memcpy_w 0x08000269 Thumb Code 100 rt_memcpy_w.o(.text) + _memcpy_lastbytes_aligned 0x080002b1 Thumb Code 0 rt_memcpy_w.o(.text) + __user_setup_stackheap 0x080002cd Thumb Code 74 sys_stackheap_outer.o(.text) + exit 0x08000317 Thumb Code 18 exit.o(.text) + __user_libspace 0x08000329 Thumb Code 8 libspace.o(.text) + __user_perproc_libspace 0x08000329 Thumb Code 0 libspace.o(.text) + __user_perthread_libspace 0x08000329 Thumb Code 0 libspace.o(.text) + _sys_exit 0x08000331 Thumb Code 8 sys_exit.o(.text) + __I$use$semihosting 0x0800033d Thumb Code 0 use_no_semi.o(.text) + __use_no_semihosting_swi 0x0800033d Thumb Code 2 use_no_semi.o(.text) + __semihosting_library_function 0x0800033f Thumb Code 0 indicate_semi.o(.text) + FLASH_ClearFlag 0x08000341 Thumb Code 20 stm32f10x_flash.o(.text.FLASH_ClearFlag) + FLASH_ErasePage 0x08000355 Thumb Code 106 stm32f10x_flash.o(.text.FLASH_ErasePage) + FLASH_GetBank1Status 0x080003c1 Thumb Code 104 stm32f10x_flash.o(.text.FLASH_GetBank1Status) + FLASH_Lock 0x08000429 Thumb Code 18 stm32f10x_flash.o(.text.FLASH_Lock) + FLASH_ProgramWord 0x0800043d Thumb Code 160 stm32f10x_flash.o(.text.FLASH_ProgramWord) + FLASH_Unlock 0x080004dd Thumb Code 30 stm32f10x_flash.o(.text.FLASH_Unlock) + FLASH_WaitForLastOperation 0x080004fd Thumb Code 94 stm32f10x_flash.o(.text.FLASH_WaitForLastOperation) + Flash_ReadStruct 0x0800055d Thumb Code 28 flash.o(.text.Flash_ReadStruct) + Flash_WriteStruct 0x08000579 Thumb Code 100 flash.o(.text.Flash_WriteStruct) + GPIO_Init 0x080005dd Thumb Code 390 stm32f10x_gpio.o(.text.GPIO_Init) + GPIO_ReadInputDataBit 0x08000765 Thumb Code 52 stm32f10x_gpio.o(.text.GPIO_ReadInputDataBit) + GPIO_ResetBits 0x08000799 Thumb Code 20 stm32f10x_gpio.o(.text.GPIO_ResetBits) + GPIO_SetBits 0x080007ad Thumb Code 20 stm32f10x_gpio.o(.text.GPIO_SetBits) + IIC_Delay 0x080007c1 Thumb Code 2 iic.o(.text.IIC_Delay) + IIC_GPIO_Init 0x080007c5 Thumb Code 72 iic.o(.text.IIC_GPIO_Init) + IIC_Send_Byte 0x0800080d Thumb Code 134 iic.o(.text.IIC_Send_Byte) + IIC_Start 0x08000895 Thumb Code 68 iic.o(.text.IIC_Start) + IIC_Stop 0x080008d9 Thumb Code 54 iic.o(.text.IIC_Stop) + IIC_Wait_Ack 0x08000911 Thumb Code 134 iic.o(.text.IIC_Wait_Ack) + OLED_Fill 0x08000999 Thumb Code 110 iic.o(.text.OLED_Fill) + OLED_Init 0x08000a09 Thumb Code 196 iic.o(.text.OLED_Init) + OLED_Refresh 0x08000acd Thumb Code 124 iic.o(.text.OLED_Refresh) + OLED_ShowChar 0x08000b49 Thumb Code 132 iic.o(.text.OLED_ShowChar) + OLED_WriteCommand 0x08000bcd Thumb Code 52 iic.o(.text.OLED_WriteCommand) + OLED_WriteData 0x08000c01 Thumb Code 52 iic.o(.text.OLED_WriteData) + RCC_APB2PeriphClockCmd 0x08000c35 Thumb Code 56 stm32f10x_rcc.o(.text.RCC_APB2PeriphClockCmd) + SystemInit 0x08000d99 Thumb Code 102 system_stm32f10x.o(.text.SystemInit) + delay_ms_simple 0x08000e01 Thumb Code 32 iic.o(.text.delay_ms_simple) + delay_us_simple 0x08000e21 Thumb Code 46 iic.o(.text.delay_us_simple) + flash_Test 0x08000e51 Thumb Code 78 flash.o(.text.flash_Test) + lcd_show_all_ascii_lowercase 0x08000ea1 Thumb Code 140 iic.o(.text.lcd_show_all_ascii_lowercase) + main 0x08000f2d Thumb Code 76 main.o(.text.main) + test 0x08000f79 Thumb Code 20 iic.o(.text.test) + Font6x8 0x08000fa0 Data 570 iic.o(.rodata.Font6x8) + Region$$Table$$Base 0x080011dc Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x080011ec Number 0 anon$$obj.o(Region$$Table) __libspace_start 0x20000000 Data 96 libspace.o(.bss) OLED_GRAM 0x20000060 Data 1024 iic.o(.bss.OLED_GRAM) __temporary_stack_top$libspace 0x20000060 Data 0 libspace.o(.bss) @@ -1448,117 +1500,135 @@ Memory Map of the image Image Entry point : 0x080000ed - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00000dfc, Max: 0x00010000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000011ec, Max: 0x00010000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00000dfc, Max: 0x00010000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000011ec, Max: 0x00010000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x08000000 0x08000000 0x000000ec Data RO 654 RESET startup_stm32f10x_md.o - 0x080000ec 0x080000ec 0x00000008 Code RO 682 * !!!main c_w.l(__main.o) - 0x080000f4 0x080000f4 0x0000005c Code RO 847 !!!scatter c_w.l(__scatter.o) - 0x08000150 0x08000150 0x00000002 Code RO 848 !!handler_null c_w.l(__scatter.o) + 0x08000000 0x08000000 0x000000ec Data RO 671 RESET startup_stm32f10x_md.o + 0x080000ec 0x080000ec 0x00000008 Code RO 701 * !!!main c_w.l(__main.o) + 0x080000f4 0x080000f4 0x0000005c Code RO 868 !!!scatter c_w.l(__scatter.o) + 0x08000150 0x08000150 0x00000002 Code RO 869 !!handler_null c_w.l(__scatter.o) 0x08000152 0x08000152 0x00000002 PAD - 0x08000154 0x08000154 0x0000001c Code RO 851 !!handler_zi c_w.l(__scatter_zi.o) - 0x08000170 0x08000170 0x00000002 Code RO 709 .ARM.Collect$$libinit$$00000000 c_w.l(libinit.o) - 0x08000172 0x08000172 0x00000000 Code RO 716 .ARM.Collect$$libinit$$00000002 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 718 .ARM.Collect$$libinit$$00000004 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 720 .ARM.Collect$$libinit$$00000006 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 723 .ARM.Collect$$libinit$$0000000C c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 725 .ARM.Collect$$libinit$$0000000E c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 727 .ARM.Collect$$libinit$$00000010 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 730 .ARM.Collect$$libinit$$00000013 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 732 .ARM.Collect$$libinit$$00000015 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 734 .ARM.Collect$$libinit$$00000017 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 736 .ARM.Collect$$libinit$$00000019 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 738 .ARM.Collect$$libinit$$0000001B c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 740 .ARM.Collect$$libinit$$0000001D c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 742 .ARM.Collect$$libinit$$0000001F c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 744 .ARM.Collect$$libinit$$00000021 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 746 .ARM.Collect$$libinit$$00000023 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 748 .ARM.Collect$$libinit$$00000025 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 750 .ARM.Collect$$libinit$$00000027 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 754 .ARM.Collect$$libinit$$0000002E c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 756 .ARM.Collect$$libinit$$00000030 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 758 .ARM.Collect$$libinit$$00000032 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000000 Code RO 760 .ARM.Collect$$libinit$$00000034 c_w.l(libinit2.o) - 0x08000172 0x08000172 0x00000002 Code RO 761 .ARM.Collect$$libinit$$00000035 c_w.l(libinit2.o) - 0x08000174 0x08000174 0x00000002 Code RO 783 .ARM.Collect$$libshutdown$$00000000 c_w.l(libshutdown.o) - 0x08000176 0x08000176 0x00000000 Code RO 798 .ARM.Collect$$libshutdown$$00000002 c_w.l(libshutdown2.o) - 0x08000176 0x08000176 0x00000000 Code RO 800 .ARM.Collect$$libshutdown$$00000004 c_w.l(libshutdown2.o) - 0x08000176 0x08000176 0x00000000 Code RO 803 .ARM.Collect$$libshutdown$$00000007 c_w.l(libshutdown2.o) - 0x08000176 0x08000176 0x00000000 Code RO 806 .ARM.Collect$$libshutdown$$0000000A c_w.l(libshutdown2.o) - 0x08000176 0x08000176 0x00000000 Code RO 808 .ARM.Collect$$libshutdown$$0000000C c_w.l(libshutdown2.o) - 0x08000176 0x08000176 0x00000000 Code RO 811 .ARM.Collect$$libshutdown$$0000000F c_w.l(libshutdown2.o) - 0x08000176 0x08000176 0x00000002 Code RO 812 .ARM.Collect$$libshutdown$$00000010 c_w.l(libshutdown2.o) - 0x08000178 0x08000178 0x00000000 Code RO 684 .ARM.Collect$$rtentry$$00000000 c_w.l(__rtentry.o) - 0x08000178 0x08000178 0x00000000 Code RO 686 .ARM.Collect$$rtentry$$00000002 c_w.l(__rtentry2.o) - 0x08000178 0x08000178 0x00000006 Code RO 698 .ARM.Collect$$rtentry$$00000004 c_w.l(__rtentry4.o) - 0x0800017e 0x0800017e 0x00000000 Code RO 688 .ARM.Collect$$rtentry$$00000009 c_w.l(__rtentry2.o) - 0x0800017e 0x0800017e 0x00000004 Code RO 689 .ARM.Collect$$rtentry$$0000000A c_w.l(__rtentry2.o) - 0x08000182 0x08000182 0x00000000 Code RO 691 .ARM.Collect$$rtentry$$0000000C c_w.l(__rtentry2.o) - 0x08000182 0x08000182 0x00000008 Code RO 692 .ARM.Collect$$rtentry$$0000000D c_w.l(__rtentry2.o) - 0x0800018a 0x0800018a 0x00000002 Code RO 713 .ARM.Collect$$rtexit$$00000000 c_w.l(rtexit.o) - 0x0800018c 0x0800018c 0x00000000 Code RO 763 .ARM.Collect$$rtexit$$00000002 c_w.l(rtexit2.o) - 0x0800018c 0x0800018c 0x00000004 Code RO 764 .ARM.Collect$$rtexit$$00000003 c_w.l(rtexit2.o) - 0x08000190 0x08000190 0x00000006 Code RO 765 .ARM.Collect$$rtexit$$00000004 c_w.l(rtexit2.o) + 0x08000154 0x08000154 0x0000001c Code RO 872 !!handler_zi c_w.l(__scatter_zi.o) + 0x08000170 0x08000170 0x00000002 Code RO 730 .ARM.Collect$$libinit$$00000000 c_w.l(libinit.o) + 0x08000172 0x08000172 0x00000000 Code RO 737 .ARM.Collect$$libinit$$00000002 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 739 .ARM.Collect$$libinit$$00000004 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 741 .ARM.Collect$$libinit$$00000006 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 744 .ARM.Collect$$libinit$$0000000C c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 746 .ARM.Collect$$libinit$$0000000E c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 748 .ARM.Collect$$libinit$$00000010 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 751 .ARM.Collect$$libinit$$00000013 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 753 .ARM.Collect$$libinit$$00000015 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 755 .ARM.Collect$$libinit$$00000017 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 757 .ARM.Collect$$libinit$$00000019 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 759 .ARM.Collect$$libinit$$0000001B c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 761 .ARM.Collect$$libinit$$0000001D c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 763 .ARM.Collect$$libinit$$0000001F c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 765 .ARM.Collect$$libinit$$00000021 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 767 .ARM.Collect$$libinit$$00000023 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 769 .ARM.Collect$$libinit$$00000025 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 771 .ARM.Collect$$libinit$$00000027 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 775 .ARM.Collect$$libinit$$0000002E c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 777 .ARM.Collect$$libinit$$00000030 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 779 .ARM.Collect$$libinit$$00000032 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 781 .ARM.Collect$$libinit$$00000034 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000002 Code RO 782 .ARM.Collect$$libinit$$00000035 c_w.l(libinit2.o) + 0x08000174 0x08000174 0x00000002 Code RO 804 .ARM.Collect$$libshutdown$$00000000 c_w.l(libshutdown.o) + 0x08000176 0x08000176 0x00000000 Code RO 819 .ARM.Collect$$libshutdown$$00000002 c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000000 Code RO 821 .ARM.Collect$$libshutdown$$00000004 c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000000 Code RO 824 .ARM.Collect$$libshutdown$$00000007 c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000000 Code RO 827 .ARM.Collect$$libshutdown$$0000000A c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000000 Code RO 829 .ARM.Collect$$libshutdown$$0000000C c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000000 Code RO 832 .ARM.Collect$$libshutdown$$0000000F c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000002 Code RO 833 .ARM.Collect$$libshutdown$$00000010 c_w.l(libshutdown2.o) + 0x08000178 0x08000178 0x00000000 Code RO 703 .ARM.Collect$$rtentry$$00000000 c_w.l(__rtentry.o) + 0x08000178 0x08000178 0x00000000 Code RO 707 .ARM.Collect$$rtentry$$00000002 c_w.l(__rtentry2.o) + 0x08000178 0x08000178 0x00000006 Code RO 719 .ARM.Collect$$rtentry$$00000004 c_w.l(__rtentry4.o) + 0x0800017e 0x0800017e 0x00000000 Code RO 709 .ARM.Collect$$rtentry$$00000009 c_w.l(__rtentry2.o) + 0x0800017e 0x0800017e 0x00000004 Code RO 710 .ARM.Collect$$rtentry$$0000000A c_w.l(__rtentry2.o) + 0x08000182 0x08000182 0x00000000 Code RO 712 .ARM.Collect$$rtentry$$0000000C c_w.l(__rtentry2.o) + 0x08000182 0x08000182 0x00000008 Code RO 713 .ARM.Collect$$rtentry$$0000000D c_w.l(__rtentry2.o) + 0x0800018a 0x0800018a 0x00000002 Code RO 734 .ARM.Collect$$rtexit$$00000000 c_w.l(rtexit.o) + 0x0800018c 0x0800018c 0x00000000 Code RO 784 .ARM.Collect$$rtexit$$00000002 c_w.l(rtexit2.o) + 0x0800018c 0x0800018c 0x00000004 Code RO 785 .ARM.Collect$$rtexit$$00000003 c_w.l(rtexit2.o) + 0x08000190 0x08000190 0x00000006 Code RO 786 .ARM.Collect$$rtexit$$00000004 c_w.l(rtexit2.o) 0x08000196 0x08000196 0x00000002 PAD - 0x08000198 0x08000198 0x00000040 Code RO 655 .text startup_stm32f10x_md.o - 0x080001d8 0x080001d8 0x00000006 Code RO 680 .text c_w.l(heapauxi.o) - 0x080001de 0x080001de 0x0000004a Code RO 700 .text c_w.l(sys_stackheap_outer.o) - 0x08000228 0x08000228 0x00000012 Code RO 702 .text c_w.l(exit.o) - 0x0800023a 0x0800023a 0x00000002 PAD - 0x0800023c 0x0800023c 0x00000008 Code RO 710 .text c_w.l(libspace.o) - 0x08000244 0x08000244 0x0000000c Code RO 773 .text c_w.l(sys_exit.o) - 0x08000250 0x08000250 0x00000002 Code RO 788 .text c_w.l(use_no_semi.o) - 0x08000252 0x08000252 0x00000000 Code RO 790 .text c_w.l(indicate_semi.o) - 0x08000252 0x08000252 0x00000002 PAD - 0x08000254 0x08000254 0x00000186 Code RO 146 .text.GPIO_Init stm32f10x_gpio.o - 0x080003da 0x080003da 0x00000002 PAD - 0x080003dc 0x080003dc 0x00000034 Code RO 150 .text.GPIO_ReadInputDataBit stm32f10x_gpio.o - 0x08000410 0x08000410 0x00000014 Code RO 160 .text.GPIO_ResetBits stm32f10x_gpio.o - 0x08000424 0x08000424 0x00000014 Code RO 158 .text.GPIO_SetBits stm32f10x_gpio.o - 0x08000438 0x08000438 0x00000002 Code RO 19 .text.IIC_Delay iic.o + 0x08000198 0x08000198 0x00000040 Code RO 672 .text startup_stm32f10x_md.o + 0x080001d8 0x080001d8 0x0000008a Code RO 697 .text c_w.l(rt_memcpy_v6.o) + 0x08000262 0x08000262 0x00000006 Code RO 699 .text c_w.l(heapauxi.o) + 0x08000268 0x08000268 0x00000064 Code RO 704 .text c_w.l(rt_memcpy_w.o) + 0x080002cc 0x080002cc 0x0000004a Code RO 721 .text c_w.l(sys_stackheap_outer.o) + 0x08000316 0x08000316 0x00000012 Code RO 723 .text c_w.l(exit.o) + 0x08000328 0x08000328 0x00000008 Code RO 731 .text c_w.l(libspace.o) + 0x08000330 0x08000330 0x0000000c Code RO 794 .text c_w.l(sys_exit.o) + 0x0800033c 0x0800033c 0x00000002 Code RO 809 .text c_w.l(use_no_semi.o) + 0x0800033e 0x0800033e 0x00000000 Code RO 811 .text c_w.l(indicate_semi.o) + 0x0800033e 0x0800033e 0x00000002 PAD + 0x08000340 0x08000340 0x00000014 Code RO 146 .text.FLASH_ClearFlag stm32f10x_flash.o + 0x08000354 0x08000354 0x0000006a Code RO 110 .text.FLASH_ErasePage stm32f10x_flash.o + 0x080003be 0x080003be 0x00000002 PAD + 0x080003c0 0x080003c0 0x00000068 Code RO 150 .text.FLASH_GetBank1Status stm32f10x_flash.o + 0x08000428 0x08000428 0x00000012 Code RO 106 .text.FLASH_Lock stm32f10x_flash.o 0x0800043a 0x0800043a 0x00000002 PAD - 0x0800043c 0x0800043c 0x00000048 Code RO 17 .text.IIC_GPIO_Init iic.o - 0x08000484 0x08000484 0x00000086 Code RO 25 .text.IIC_Send_Byte iic.o - 0x0800050a 0x0800050a 0x00000002 PAD - 0x0800050c 0x0800050c 0x00000044 Code RO 21 .text.IIC_Start iic.o - 0x08000550 0x08000550 0x00000036 Code RO 23 .text.IIC_Stop iic.o - 0x08000586 0x08000586 0x00000002 PAD - 0x08000588 0x08000588 0x00000086 Code RO 29 .text.IIC_Wait_Ack iic.o - 0x0800060e 0x0800060e 0x00000002 PAD - 0x08000610 0x08000610 0x0000006e Code RO 39 .text.OLED_Fill iic.o - 0x0800067e 0x0800067e 0x00000002 PAD - 0x08000680 0x08000680 0x000000c4 Code RO 41 .text.OLED_Init iic.o - 0x08000744 0x08000744 0x0000007c Code RO 45 .text.OLED_Refresh iic.o - 0x080007c0 0x080007c0 0x00000084 Code RO 47 .text.OLED_ShowChar iic.o - 0x08000844 0x08000844 0x00000034 Code RO 35 .text.OLED_WriteCommand iic.o - 0x08000878 0x08000878 0x00000034 Code RO 37 .text.OLED_WriteData iic.o - 0x080008ac 0x080008ac 0x00000038 Code RO 302 .text.RCC_APB2PeriphClockCmd stm32f10x_rcc.o - 0x080008e4 0x080008e4 0x00000008 Code RO 664 .text.SetSysClock system_stm32f10x.o - 0x080008ec 0x080008ec 0x00000122 Code RO 668 .text.SetSysClockTo72 system_stm32f10x.o - 0x08000a0e 0x08000a0e 0x00000002 PAD - 0x08000a10 0x08000a10 0x00000066 Code RO 662 .text.SystemInit system_stm32f10x.o - 0x08000a76 0x08000a76 0x00000002 PAD - 0x08000a78 0x08000a78 0x00000020 Code RO 15 .text.delay_ms_simple iic.o - 0x08000a98 0x08000a98 0x0000002e Code RO 13 .text.delay_us_simple iic.o - 0x08000ac6 0x08000ac6 0x00000002 PAD - 0x08000ac8 0x08000ac8 0x0000008c Code RO 49 .text.lcd_show_all_ascii_lowercase iic.o - 0x08000b54 0x08000b54 0x00000048 Code RO 2 .text.main main.o - 0x08000b9c 0x08000b9c 0x00000016 Code RO 51 .text.test iic.o - 0x08000bb2 0x08000bb2 0x0000023a Data RO 53 .rodata.Font6x8 iic.o - 0x08000dec 0x08000dec 0x00000010 Data RO 846 Region$$Table anon$$obj.o + 0x0800043c 0x0800043c 0x000000a0 Code RO 124 .text.FLASH_ProgramWord stm32f10x_flash.o + 0x080004dc 0x080004dc 0x0000001e Code RO 102 .text.FLASH_Unlock stm32f10x_flash.o + 0x080004fa 0x080004fa 0x00000002 PAD + 0x080004fc 0x080004fc 0x0000005e Code RO 112 .text.FLASH_WaitForLastOperation stm32f10x_flash.o + 0x0800055a 0x0800055a 0x00000002 PAD + 0x0800055c 0x0800055c 0x0000001c Code RO 66 .text.Flash_ReadStruct flash.o + 0x08000578 0x08000578 0x00000064 Code RO 64 .text.Flash_WriteStruct flash.o + 0x080005dc 0x080005dc 0x00000186 Code RO 163 .text.GPIO_Init stm32f10x_gpio.o + 0x08000762 0x08000762 0x00000002 PAD + 0x08000764 0x08000764 0x00000034 Code RO 167 .text.GPIO_ReadInputDataBit stm32f10x_gpio.o + 0x08000798 0x08000798 0x00000014 Code RO 177 .text.GPIO_ResetBits stm32f10x_gpio.o + 0x080007ac 0x080007ac 0x00000014 Code RO 175 .text.GPIO_SetBits stm32f10x_gpio.o + 0x080007c0 0x080007c0 0x00000002 Code RO 19 .text.IIC_Delay iic.o + 0x080007c2 0x080007c2 0x00000002 PAD + 0x080007c4 0x080007c4 0x00000048 Code RO 17 .text.IIC_GPIO_Init iic.o + 0x0800080c 0x0800080c 0x00000086 Code RO 25 .text.IIC_Send_Byte iic.o + 0x08000892 0x08000892 0x00000002 PAD + 0x08000894 0x08000894 0x00000044 Code RO 21 .text.IIC_Start iic.o + 0x080008d8 0x080008d8 0x00000036 Code RO 23 .text.IIC_Stop iic.o + 0x0800090e 0x0800090e 0x00000002 PAD + 0x08000910 0x08000910 0x00000086 Code RO 29 .text.IIC_Wait_Ack iic.o + 0x08000996 0x08000996 0x00000002 PAD + 0x08000998 0x08000998 0x0000006e Code RO 39 .text.OLED_Fill iic.o + 0x08000a06 0x08000a06 0x00000002 PAD + 0x08000a08 0x08000a08 0x000000c4 Code RO 41 .text.OLED_Init iic.o + 0x08000acc 0x08000acc 0x0000007c Code RO 45 .text.OLED_Refresh iic.o + 0x08000b48 0x08000b48 0x00000084 Code RO 47 .text.OLED_ShowChar iic.o + 0x08000bcc 0x08000bcc 0x00000034 Code RO 35 .text.OLED_WriteCommand iic.o + 0x08000c00 0x08000c00 0x00000034 Code RO 37 .text.OLED_WriteData iic.o + 0x08000c34 0x08000c34 0x00000038 Code RO 319 .text.RCC_APB2PeriphClockCmd stm32f10x_rcc.o + 0x08000c6c 0x08000c6c 0x00000008 Code RO 681 .text.SetSysClock system_stm32f10x.o + 0x08000c74 0x08000c74 0x00000122 Code RO 685 .text.SetSysClockTo72 system_stm32f10x.o + 0x08000d96 0x08000d96 0x00000002 PAD + 0x08000d98 0x08000d98 0x00000066 Code RO 679 .text.SystemInit system_stm32f10x.o + 0x08000dfe 0x08000dfe 0x00000002 PAD + 0x08000e00 0x08000e00 0x00000020 Code RO 15 .text.delay_ms_simple iic.o + 0x08000e20 0x08000e20 0x0000002e Code RO 13 .text.delay_us_simple iic.o + 0x08000e4e 0x08000e4e 0x00000002 PAD + 0x08000e50 0x08000e50 0x0000004e Code RO 68 .text.flash_Test flash.o + 0x08000e9e 0x08000e9e 0x00000002 PAD + 0x08000ea0 0x08000ea0 0x0000008c Code RO 49 .text.lcd_show_all_ascii_lowercase iic.o + 0x08000f2c 0x08000f2c 0x0000004c Code RO 2 .text.main main.o + 0x08000f78 0x08000f78 0x00000014 Code RO 51 .text.test iic.o + 0x08000f8c 0x08000f8c 0x00000014 Data RO 70 .rodata..L__const.flash_Test.myData flash.o + 0x08000fa0 0x08000fa0 0x0000023a Data RO 53 .rodata.Font6x8 iic.o + 0x080011da 0x080011da 0x00000002 PAD + 0x080011dc 0x080011dc 0x00000010 Data RO 867 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08000dfc, Size: 0x00000a60, Max: 0x00005000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080011ec, Size: 0x00000a60, Max: 0x00005000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 - 0x00000060 Zero RW 711 .bss c_w.l(libspace.o) + 0x20000000 - 0x00000060 Zero RW 732 .bss c_w.l(libspace.o) 0x20000060 - 0x00000400 Zero RW 54 .bss.OLED_GRAM iic.o - 0x20000460 - 0x00000200 Zero RW 653 HEAP startup_stm32f10x_md.o - 0x20000660 - 0x00000400 Zero RW 652 STACK startup_stm32f10x_md.o + 0x20000460 - 0x00000200 Zero RW 670 HEAP startup_stm32f10x_md.o + 0x20000660 - 0x00000400 Zero RW 669 STACK startup_stm32f10x_md.o ============================================================================== @@ -1568,17 +1638,19 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name - 1370 0 570 0 1024 5129 iic.o - 72 0 0 0 0 1547 main.o + 206 0 20 0 0 1413 flash.o + 1368 0 570 0 1024 5132 iic.o + 76 0 0 0 0 1548 main.o 64 26 236 0 1536 836 startup_stm32f10x_md.o + 532 0 0 0 0 7143 stm32f10x_flash.o 482 0 0 0 0 5730 stm32f10x_gpio.o 56 0 0 0 0 7058 stm32f10x_rcc.o 400 0 0 0 0 2988 system_stm32f10x.o ---------------------------------------------------------------------- - 2462 26 822 0 2560 23288 Object Totals + 3212 26 844 0 2560 31848 Object Totals 0 0 16 0 0 0 (incl. Generated) - 18 0 0 0 0 0 (incl. Padding) + 28 0 2 0 0 0 (incl. Padding) ---------------------------------------------------------------------- @@ -1598,6 +1670,8 @@ Image component sizes 2 0 0 0 0 0 libshutdown.o 2 0 0 0 0 0 libshutdown2.o 8 4 0 0 96 68 libspace.o + 138 0 0 0 0 68 rt_memcpy_v6.o + 100 0 0 0 0 80 rt_memcpy_w.o 2 0 0 0 0 0 rtexit.o 10 0 0 0 0 0 rtexit2.o 12 4 0 0 0 68 sys_exit.o @@ -1605,17 +1679,17 @@ Image component sizes 2 0 0 0 0 68 use_no_semi.o ---------------------------------------------------------------------- - 296 16 0 0 96 584 Library Totals - 8 0 0 0 0 0 (incl. Padding) + 532 16 0 0 96 732 Library Totals + 6 0 0 0 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name - 288 16 0 0 96 584 c_w.l + 526 16 0 0 96 732 c_w.l ---------------------------------------------------------------------- - 296 16 0 0 96 584 Library Totals + 532 16 0 0 96 732 Library Totals ---------------------------------------------------------------------- @@ -1624,15 +1698,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 2758 42 822 0 2656 23684 Grand Totals - 2758 42 822 0 2656 23684 ELF Image Totals - 2758 42 822 0 0 0 ROM Totals + 3744 42 844 0 2656 32248 Grand Totals + 3744 42 844 0 2656 32248 ELF Image Totals + 3744 42 844 0 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 3580 ( 3.50kB) + Total RO Size (Code + RO Data) 4588 ( 4.48kB) Total RW Size (RW Data + ZI Data) 2656 ( 2.59kB) - Total ROM Size (Code + RO Data + RW Data) 3580 ( 3.50kB) + Total ROM Size (Code + RO Data + RW Data) 4588 ( 4.48kB) ============================================================================== diff --git a/Objects/example.axf b/Objects/example.axf index 7fba79a..a972ac1 100644 Binary files a/Objects/example.axf and b/Objects/example.axf differ diff --git a/Objects/example.build_log.htm b/Objects/example.build_log.htm index 1ae0388..1e42dfc 100644 --- a/Objects/example.build_log.htm +++ b/Objects/example.build_log.htm @@ -22,15 +22,33 @@ Dialog DLL: TCM.DLL V1.56.6.0

Project:

C:\Users\gxyos\Documents\ST30F103\Example\example.uvprojx -Project File Date: 07/23/2025 +Project File Date: 07/25/2025

Output:

*** Using Compiler 'V6.23', folder: 'C:\Users\gxyos\AppData\Local\Keil_v5\ARM\ARMCLANG\Bin' -Build target 'Target_1' +Rebuild target 'Target_1' +APP/main.c(28): warning: while loop has empty body [-Wempty-body] + 28 | while(1); + | ^ +APP/main.c(28): note: put the semicolon on a separate line to silence this warning +1 warning generated. +compiling main.c... +compiling stm32f10x_flash.c... +compiling flash.c... +compiling misc.c... compiling iic.c... +compiling stm32f10x_gpio.c... +compiling stm32f10x_i2c.c... +compiling stm32f10x_rcc.c... +compiling stm32f10x_spi.c... +compiling stm32f10x_usart.c... +compiling GPIO_STM32F10x.c... +compiling system_stm32f10x.c... +compiling stm32f10x_tim.c... +assembling startup_stm32f10x_md.s... linking... -Program Size: Code=2758 RO-data=822 RW-data=0 ZI-data=2656 -".\Objects\example.axf" - 0 Error(s), 0 Warning(s). +Program Size: Code=3744 RO-data=844 RW-data=0 ZI-data=2656 +".\Objects\example.axf" - 0 Error(s), 1 Warning(s).

Software Packages used:

@@ -82,36 +100,36 @@ Package Vendor: Keil Source file: Device/StdPeriph_Driver/src/stm32f10x_flash.c * Component: Keil::Device:StdPeriph Drivers:Framework@3.6.0 - Include file: Device/StdPeriph_Driver/templates/stm32f10x_it.h Source file: Device/StdPeriph_Driver/src/misc.c - Source file: Device/StdPeriph_Driver/templates/stm32f10x_it.c - Source file: Device/StdPeriph_Driver/templates/stm32f10x_conf.h Include file: Device/StdPeriph_Driver/inc/misc.h + Source file: Device/StdPeriph_Driver/templates/stm32f10x_conf.h + Include file: Device/StdPeriph_Driver/templates/stm32f10x_it.h + Source file: Device/StdPeriph_Driver/templates/stm32f10x_it.c * Component: Keil::Device:StdPeriph Drivers:GPIO@3.6.0 - Source file: Device/StdPeriph_Driver/src/stm32f10x_gpio.c Include file: Device/StdPeriph_Driver/inc/stm32f10x_gpio.h + Source file: Device/StdPeriph_Driver/src/stm32f10x_gpio.c * Component: Keil::Device:StdPeriph Drivers:I2C@3.6.0 Include file: Device/StdPeriph_Driver/inc/stm32f10x_i2c.h Source file: Device/StdPeriph_Driver/src/stm32f10x_i2c.c * Component: Keil::Device:StdPeriph Drivers:RCC@3.6.0 - Include file: Device/StdPeriph_Driver/inc/stm32f10x_rcc.h Source file: Device/StdPeriph_Driver/src/stm32f10x_rcc.c + Include file: Device/StdPeriph_Driver/inc/stm32f10x_rcc.h * Component: Keil::Device:StdPeriph Drivers:SPI@3.6.0 - Include file: Device/StdPeriph_Driver/inc/stm32f10x_spi.h Source file: Device/StdPeriph_Driver/src/stm32f10x_spi.c + Include file: Device/StdPeriph_Driver/inc/stm32f10x_spi.h * Component: Keil::Device:StdPeriph Drivers:TIM@3.6.0 - Include file: Device/StdPeriph_Driver/inc/stm32f10x_tim.h Source file: Device/StdPeriph_Driver/src/stm32f10x_tim.c + Include file: Device/StdPeriph_Driver/inc/stm32f10x_tim.h * Component: Keil::Device:StdPeriph Drivers:USART@3.6.0 - Include file: Device/StdPeriph_Driver/inc/stm32f10x_usart.h Source file: Device/StdPeriph_Driver/src/stm32f10x_usart.c -Build Time Elapsed: 00:00:00 + Include file: Device/StdPeriph_Driver/inc/stm32f10x_usart.h +Build Time Elapsed: 00:00:01 diff --git a/Objects/example.htm b/Objects/example.htm index 7ced7f8..26f3453 100644 --- a/Objects/example.htm +++ b/Objects/example.htm @@ -3,16 +3,16 @@ Static Call Graph - [.\Objects\example.axf]

Static Call Graph for image .\Objects\example.axf


-

#<CALLGRAPH># ARM Linker, 6230001: Last Updated: Thu Jul 24 10:30:39 2025 +

#<CALLGRAPH># ARM Linker, 6230001: Last Updated: Fri Jul 25 09:04:20 2025

-

Maximum Stack Usage = 136 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)

+

Maximum Stack Usage = 164 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

-__rt_entry_main ⇒ main ⇒ test ⇒ OLED_Init ⇒ OLED_Fill ⇒ OLED_WriteData ⇒ IIC_Wait_Ack ⇒ IIC_Stop ⇒ GPIO_SetBits +__rt_entry_main ⇒ main ⇒ flash_Test ⇒ Flash_WriteStruct ⇒ FLASH_ProgramWord ⇒ FLASH_WaitForLastOperation ⇒ FLASH_GetBank1Status

Functions with no stack information

@@ -107,86 +107,86 @@ Global Symbols

[Calls]

-

__scatterload_rt2_thumb_only (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED) +

__scatterload_rt2_thumb_only (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED) -

__scatterload_loop (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED) +

__scatterload_loop (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED) -

__scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, __scatter.o(!!handler_null), UNUSED) +

__scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, __scatter.o(!!handler_null), UNUSED) -

__scatterload_zeroinit (Thumb, 28 bytes, Stack size unknown bytes, __scatter_zi.o(!!handler_zi), UNUSED) +

__scatterload_zeroinit (Thumb, 28 bytes, Stack size unknown bytes, __scatter_zi.o(!!handler_zi), UNUSED)

__rt_lib_init (Thumb, 0 bytes, Stack size unknown bytes, libinit.o(.ARM.Collect$$libinit$$00000000))

[Called By]

-

__rt_lib_init_alloca_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000030)) +

__rt_lib_init_alloca_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000030)) -

__rt_lib_init_argv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002E)) +

__rt_lib_init_argv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002E)) -

__rt_lib_init_atexit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001D)) +

__rt_lib_init_atexit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001D)) -

__rt_lib_init_clock_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000023)) +

__rt_lib_init_clock_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000023)) -

__rt_lib_init_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000034)) +

__rt_lib_init_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000034)) -

__rt_lib_init_exceptions_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000032)) +

__rt_lib_init_exceptions_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000032)) -

__rt_lib_init_fp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000002)) +

__rt_lib_init_fp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000002)) -

__rt_lib_init_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000021)) +

__rt_lib_init_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000021)) -

__rt_lib_init_getenv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000025)) +

__rt_lib_init_getenv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000025)) -

__rt_lib_init_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000C)) +

__rt_lib_init_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000C)) -

__rt_lib_init_lc_collate_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000013)) +

__rt_lib_init_lc_collate_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000013)) -

__rt_lib_init_lc_ctype_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000015)) +

__rt_lib_init_lc_ctype_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000015)) -

__rt_lib_init_lc_monetary_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000017)) +

__rt_lib_init_lc_monetary_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000017)) -

__rt_lib_init_lc_numeric_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000019)) +

__rt_lib_init_lc_numeric_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000019)) -

__rt_lib_init_lc_time_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001B)) +

__rt_lib_init_lc_time_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001B)) -

__rt_lib_init_preinit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000006)) +

__rt_lib_init_preinit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000006)) -

__rt_lib_init_rand_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000010)) +

__rt_lib_init_rand_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000010)) -

__rt_lib_init_relocate_pie_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000004)) +

__rt_lib_init_relocate_pie_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000004)) -

__rt_lib_init_return (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000035)) +

__rt_lib_init_return (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000035)) -

__rt_lib_init_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001F)) +

__rt_lib_init_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001F)) -

__rt_lib_init_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000027)) +

__rt_lib_init_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000027)) -

__rt_lib_init_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000E)) +

__rt_lib_init_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000E))

__rt_lib_shutdown (Thumb, 0 bytes, Stack size unknown bytes, libshutdown.o(.ARM.Collect$$libshutdown$$00000000))

[Called By]

-

__rt_lib_shutdown_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000002)) +

__rt_lib_shutdown_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000002)) -

__rt_lib_shutdown_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000007)) +

__rt_lib_shutdown_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000007)) -

__rt_lib_shutdown_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F)) +

__rt_lib_shutdown_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F)) -

__rt_lib_shutdown_return (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000010)) +

__rt_lib_shutdown_return (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000010)) -

__rt_lib_shutdown_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A)) +

__rt_lib_shutdown_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A)) -

__rt_lib_shutdown_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000004)) +

__rt_lib_shutdown_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000004)) -

__rt_lib_shutdown_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C)) +

__rt_lib_shutdown_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C))

__rt_entry (Thumb, 0 bytes, Stack size unknown bytes, __rtentry.o(.ARM.Collect$$rtentry$$00000000))

[Called By]

-

__rt_entry_presh_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000002)) +

__rt_entry_presh_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000002))

__rt_entry_sh (Thumb, 0 bytes, Stack size unknown bytes, __rtentry4.o(.ARM.Collect$$rtentry$$00000004))

[Stack]