- 实现深睡眠模式下的功耗优化 - 添加PB8引脚的外部中断唤醒功能 - 新增Flash区域用于睡眠状态管理 - 实现睡眠配置的自动检查和恢复逻辑 同时重构了OTA_SET函数,改进了Flash配置参数的写入机制, 解决了GD32 Flash特性导致的0到1写入问题,并添加了详细的 调试信息输出和错误处理。
217 lines
16 KiB
Plaintext
217 lines
16 KiB
Plaintext
Component: Arm Compiler for Embedded 6.24 Tool: armlink [5f371500]
|
|
|
|
==============================================================================
|
|
|
|
Memory Map of the image
|
|
|
|
Image Entry point : 0x08000165
|
|
|
|
Load Region LR_ROM0 (Base: 0x08000000, Size: 0x00004d50, Max: 0x08005000, ABSOLUTE)
|
|
|
|
Execution Region ER_ROM0 (Base: 0x08000000, Size: 0x00004c58, Max: 0x08005000, ABSOLUTE)
|
|
|
|
Base Addr Size Type Attr Idx E Section Name Object
|
|
|
|
0x08000000 0x00000150 Data RO 889 RESET startup_gd32c10x.o
|
|
0x08000150 0x00000000 Code RO 1053 * .ARM.Collect$$$$00000000 mc_w.l(entry.o)
|
|
0x08000150 0x00000004 Code RO 1480 .ARM.Collect$$$$00000003 mc_w.l(entry4.o)
|
|
0x08000154 0x00000004 Code RO 1483 .ARM.Collect$$$$00000004 mc_w.l(entry5.o)
|
|
0x08000158 0x00000000 Code RO 1485 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o)
|
|
0x08000158 0x00000000 Code RO 1487 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o)
|
|
0x08000158 0x00000008 Code RO 1488 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o)
|
|
0x08000160 0x00000000 Code RO 1490 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o)
|
|
0x08000160 0x00000000 Code RO 1492 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o)
|
|
0x08000160 0x00000004 Code RO 1481 .ARM.Collect$$$$00002714 mc_w.l(entry4.o)
|
|
0x08000164 0x0000002c Code RO 890 * .text startup_gd32c10x.o
|
|
0x08000190 0x00000024 Code RO 1062 .text mc_w.l(memcpya.o)
|
|
0x080001b4 0x00000024 Code RO 1064 .text mc_w.l(memseta.o)
|
|
0x080001d8 0x0000001a Code RO 1066 .text mc_w.l(memcmp.o)
|
|
0x080001f2 0x00000002 Code RO 1508 .text mc_w.l(abort.o)
|
|
0x080001f4 0x00000030 Code RO 1835 .text mc_w.l(init.o)
|
|
0x08000224 0x0000009c Code RO 177 .text.CAN0_RX0_IRQHandler Can.o
|
|
0x080002c0 0x0000004a Code RO 179 .text.DMA0_Channel4_IRQHandler Can.o
|
|
0x0800030a 0x00000002 PAD
|
|
0x0800030c 0x00000026 Code RO 181 .text.DMA0_Channel5_IRQHandler Can.o
|
|
0x08000332 0x00000002 PAD
|
|
0x08000334 0x0000016a Code RO 99 .text.EXTI5_9_IRQHandler initial.o
|
|
0x0800049e 0x00000002 PAD
|
|
0x080004a0 0x00000342 Code RO 896 .text.SystemInit system_gd32c10x.o
|
|
0x080007e2 0x00000002 PAD
|
|
0x080007e4 0x00000198 Code RO 29 .text._Z11mix_columnsPh aes128.o
|
|
0x0800097c 0x000000b2 Code RO 141 .text._Z13move_app_datav OTA.o
|
|
0x08000a2e 0x00000002 PAD
|
|
0x08000a30 0x00000238 Code RO 37 .text._Z14aes128_set_keyP14aes128_contextPKh aes128.o
|
|
0x08000c68 0x000008e2 Code RO 35 .text._Z15inv_mix_columnsPh aes128.o
|
|
0x0800154a 0x00000002 PAD
|
|
0x0800154c 0x000003c8 Code RO 43 .text._Z20aes128_decrypt_blockP14aes128_contextPKhPh aes128.o
|
|
0x08001914 0x000003e6 Code RO 39 .text._Z20aes128_encrypt_blockP14aes128_contextPKhPh aes128.o
|
|
0x08001cfa 0x00000002 PAD
|
|
0x08001cfc 0x00000210 Code RO 135 .text._Z24calculate_crc32_with_keyPKhS0_Ph OTA.o
|
|
0x08001f0c 0x0000002c Code RO 45 .text._Z26aes128_ecb_decrypt_48bytesP14aes128_contextPKhPh aes128.o
|
|
0x08001f38 0x00000176 Code RO 117 .text._Z7OTA_SETjj OTA.o
|
|
0x080020ae 0x00000002 PAD
|
|
0x080020b0 0x00000464 Code RO 133 .text._ZN10OTAHandler16handleOTAMessageEjPhh OTA.o
|
|
0x08002514 0x000000b0 Code RO 125 .text._ZN10OTAHandler17jumpToApplicationEv OTA.o
|
|
0x080025c4 0x00000080 Code RO 129 .text._ZN10OTAHandler20eraseApplicationAreaEv OTA.o
|
|
0x08002644 0x0000005a Code RO 131 .text._ZN10OTAHandler20writeApplicationDataEjPhj OTA.o
|
|
0x0800269e 0x00000002 PAD
|
|
0x080026a0 0x000000a0 Code RO 121 .text._ZN10OTAHandler7processEv OTA.o
|
|
0x08002740 0x00000028 Code RO 919 .text._ZN10__cxxabiv121__isOurExceptionClassEPK21_Unwind_Control_Block libcppabi_wx.l(cxa_exception.cpp.o)
|
|
0x08002768 0x00000060 Code RO 947 .text._ZN10__cxxabiv1L22__cxa_end_cleanup_implEv libcppabi_wx.l(cxa_exception.cpp.o)
|
|
0x080027c8 0x0000004c Code RO 173 .text._ZN14CAN_transmiter10sendBackupEv Can.o
|
|
0x08002814 0x0000008c Code RO 169 .text._ZN14CAN_transmiter12sendDATA_ACKEjPh Can.o
|
|
0x080028a0 0x0000014e Code RO 171 .text._ZN14CAN_transmiter15CANFD_AsyncSendEjhPh Can.o
|
|
0x080029ee 0x00000002 PAD
|
|
0x080029f0 0x0000004e Code RO 167 .text._ZN14CAN_transmiter19communication_checkEv Can.o
|
|
0x08002a3e 0x00000002 PAD
|
|
0x08002a40 0x00000038 Code RO 165 .text._ZN14CAN_transmiter4initEv Can.o
|
|
0x08002a78 0x00000086 Code RO 6 .text._ZN16BootloaderSystem3runEv main.o
|
|
0x08002afe 0x00000002 PAD
|
|
0x08002b00 0x00000074 Code RO 990 .text._ZSt11__terminatePFvvE libcppabi_wx.l(cxa_handlers.cpp.o)
|
|
0x08002b74 0x00000030 Code RO 981 .text._ZSt9terminatev libcppabi_wx.l(cxa_handlers.cpp.o)
|
|
0x08002ba4 0x0000000a Code RO 976 .text.__clang_call_terminate libcppabi_wx.l(cxa_exception.cpp.o)
|
|
0x08002bae 0x00000002 PAD
|
|
0x08002bb0 0x0000006c Code RO 924 .text.__cxa_begin_catch libcppabi_wx.l(cxa_exception.cpp.o)
|
|
0x08002c1c 0x0000000a Code RO 1347 .text.__cxa_get_globals libcppabi_wx.l(cxa_exception_storage.cpp.o)
|
|
0x08002c26 0x0000000a Code RO 1349 .text.__cxa_get_globals_fast libcppabi_wx.l(cxa_exception_storage.cpp.o)
|
|
0x08002c30 0x00000026 Code RO 230 .text.can_deinit gd32c10x_can.o
|
|
0x08002c56 0x00000002 PAD
|
|
0x08002c58 0x00000114 Code RO 236 .text.can_fd_init gd32c10x_can.o
|
|
0x08002d6c 0x000000b2 Code RO 238 .text.can_filter_init gd32c10x_can.o
|
|
0x08002e1e 0x00000002 PAD
|
|
0x08002e20 0x00000176 Code RO 234 .text.can_init gd32c10x_can.o
|
|
0x08002f96 0x00000002 PAD
|
|
0x08002f98 0x00000008 Code RO 280 .text.can_interrupt_enable gd32c10x_can.o
|
|
0x08002fa0 0x00000016 Code RO 290 .text.can_interrupt_flag_clear gd32c10x_can.o
|
|
0x08002fb6 0x00000002 PAD
|
|
0x08002fb8 0x00000066 Code RO 288 .text.can_interrupt_flag_get gd32c10x_can.o
|
|
0x0800301e 0x00000002 PAD
|
|
0x08003020 0x000001f4 Code RO 264 .text.can_message_receive gd32c10x_can.o
|
|
0x08003214 0x000001f0 Code RO 258 .text.can_message_transmit gd32c10x_can.o
|
|
0x08003404 0x00000018 Code RO 268 .text.can_receive_message_length_get gd32c10x_can.o
|
|
0x0800341c 0x00000072 Code RO 232 .text.can_struct_para_init gd32c10x_can.o
|
|
0x0800348e 0x00000002 PAD
|
|
0x08003490 0x000001b0 Code RO 163 .text.canfd_config Can.o
|
|
0x08003640 0x00000238 Code RO 101 .text.check_sleep initial.o
|
|
0x08003878 0x00000066 Code RO 316 .text.crc_block_data_calculate gd32c10x_crc.o
|
|
0x080038de 0x00000002 PAD
|
|
0x080038e0 0x00000012 Code RO 306 .text.crc_data_register_reset gd32c10x_crc.o
|
|
0x080038f2 0x00000002 PAD
|
|
0x080038f4 0x00000018 Code RO 304 .text.crc_deinit gd32c10x_crc.o
|
|
0x0800390c 0x00000024 Code RO 66 .text.delay_1ms systick.o
|
|
0x08003930 0x00000028 Code RO 64 .text.delay_1us systick.o
|
|
0x08003958 0x00000018 Code RO 68 .text.delay_decrement systick.o
|
|
0x08003970 0x00000024 Code RO 370 .text.dma_channel_disable gd32c10x_dma.o
|
|
0x08003994 0x00000024 Code RO 368 .text.dma_channel_enable gd32c10x_dma.o
|
|
0x080039b8 0x00000074 Code RO 358 .text.dma_init gd32c10x_dma.o
|
|
0x08003a2c 0x00000022 Code RO 404 .text.dma_interrupt_enable gd32c10x_dma.o
|
|
0x08003a4e 0x00000002 PAD
|
|
0x08003a50 0x0000000e Code RO 402 .text.dma_interrupt_flag_clear gd32c10x_dma.o
|
|
0x08003a5e 0x00000002 PAD
|
|
0x08003a60 0x0000003a Code RO 400 .text.dma_interrupt_flag_get gd32c10x_dma.o
|
|
0x08003a9a 0x00000002 PAD
|
|
0x08003a9c 0x0000001a Code RO 356 .text.dma_struct_para_init gd32c10x_dma.o
|
|
0x08003ab6 0x00000002 PAD
|
|
0x08003ab8 0x00000096 Code RO 95 .text.enter_deep_sleep initial.o
|
|
0x08003b4e 0x00000002 PAD
|
|
0x08003b50 0x00000090 Code RO 421 .text.exti_init gd32c10x_exti.o
|
|
0x08003be0 0x00000012 Code RO 425 .text.exti_interrupt_disable gd32c10x_exti.o
|
|
0x08003bf2 0x00000002 PAD
|
|
0x08003bf4 0x00000010 Code RO 423 .text.exti_interrupt_enable gd32c10x_exti.o
|
|
0x08003c04 0x0000000c Code RO 441 .text.exti_interrupt_flag_clear gd32c10x_exti.o
|
|
0x08003c10 0x00000012 Code RO 439 .text.exti_interrupt_flag_get gd32c10x_exti.o
|
|
0x08003c22 0x00000002 PAD
|
|
0x08003c24 0x0000000c Code RO 512 .text.fmc_flag_clear gd32c10x_fmc.o
|
|
0x08003c30 0x00000012 Code RO 474 .text.fmc_lock gd32c10x_fmc.o
|
|
0x08003c42 0x00000002 PAD
|
|
0x08003c44 0x00000166 Code RO 478 .text.fmc_page_erase gd32c10x_fmc.o
|
|
0x08003daa 0x00000002 PAD
|
|
0x08003dac 0x00000026 Code RO 472 .text.fmc_unlock gd32c10x_fmc.o
|
|
0x08003dd2 0x00000002 PAD
|
|
0x08003dd4 0x000001aa Code RO 484 .text.fmc_word_program gd32c10x_fmc.o
|
|
0x08003f7e 0x00000002 PAD
|
|
0x08003f80 0x0000002c Code RO 88 .text.fputc initial.o
|
|
0x08003fac 0x00000004 Code RO 568 .text.gpio_bit_reset gd32c10x_gpio.o
|
|
0x08003fb0 0x00000048 Code RO 584 .text.gpio_exti_source_select gd32c10x_gpio.o
|
|
0x08003ff8 0x000002c0 Code RO 564 .text.gpio_init gd32c10x_gpio.o
|
|
0x080042b8 0x00000080 Code RO 582 .text.gpio_pin_remap_config gd32c10x_gpio.o
|
|
0x08004338 0x0000001e Code RO 8 .text.main main.o
|
|
0x08004356 0x00000002 PAD
|
|
0x08004358 0x00000060 Code RO 611 .text.nvic_irq_enable gd32c10x_misc.o
|
|
0x080043b8 0x0000001c Code RO 615 .text.nvic_vector_table_set gd32c10x_misc.o
|
|
0x080043d4 0x000000c6 Code RO 644 .text.pmu_to_deepsleepmode gd32c10x_pmu.o
|
|
0x0800449a 0x00000002 PAD
|
|
0x0800449c 0x00000012 Code RO 733 .text.rcu_all_reset_flag_clear gd32c10x_rcu.o
|
|
0x080044ae 0x00000002 PAD
|
|
0x080044b0 0x00000010 Code RO 759 .text.rcu_deepsleep_voltage_set gd32c10x_rcu.o
|
|
0x080044c0 0x00000020 Code RO 681 .text.rcu_periph_clock_disable gd32c10x_rcu.o
|
|
0x080044e0 0x0000001e Code RO 679 .text.rcu_periph_clock_enable gd32c10x_rcu.o
|
|
0x080044fe 0x00000002 PAD
|
|
0x08004500 0x00000020 Code RO 689 .text.rcu_periph_reset_disable gd32c10x_rcu.o
|
|
0x08004520 0x0000001e Code RO 687 .text.rcu_periph_reset_enable gd32c10x_rcu.o
|
|
0x0800453e 0x00000002 PAD
|
|
0x08004540 0x00000014 Code RO 695 .text.rcu_system_clock_source_config gd32c10x_rcu.o
|
|
0x08004554 0x00000020 Code RO 70 .text.system_soft_reset systick.o
|
|
0x08004574 0x00000048 Code RO 62 .text.systick_config systick.o
|
|
0x080045bc 0x00000006 Code RO 1332 .text.unlikely.abort_message libcppabi_wx.l(abort_message.cpp.o)
|
|
0x080045c2 0x00000002 PAD
|
|
0x080045c4 0x00000008 Code RO 803 .text.usart_data_transmit gd32c10x_usart.o
|
|
0x080045cc 0x00000010 Code RO 865 .text.usart_flag_get gd32c10x_usart.o
|
|
0x080045dc 0x0000000e Code RO 1924 i.__scatterload_copy mc_w.l(handlers.o)
|
|
0x080045ea 0x00000002 Code RO 1925 i.__scatterload_null mc_w.l(handlers.o)
|
|
0x080045ec 0x0000000e Code RO 1926 i.__scatterload_zeroinit mc_w.l(handlers.o)
|
|
0x080045fa 0x00000002 PAD
|
|
0x080045fc 0x00000024 Code RO 1056 i.puts mc_w.l(puts.o)
|
|
0x08004620 0x00000100 Data RO 50 .rodata._ZL4sbox aes128.o
|
|
0x08004720 0x00000010 Data RO 145 .rodata._ZL8K_master OTA.o
|
|
0x08004730 0x00000400 Data RO 147 .rodata._ZZ24calculate_crc32_with_keyPKhS0_PhE9crc_table OTA.o
|
|
0x08004b30 0x00000007 Data RO 292 .rodata.g_can_fdlength_table gd32c10x_can.o
|
|
0x08004b37 0x00000100 Data RO 49 .rodata.inv_sbox aes128.o
|
|
0x08004c37 0x00000001 PAD
|
|
0x08004c38 0x00000020 Data RO 1923 Region$$Table anon$$obj.o
|
|
|
|
|
|
Execution Region RW_NOINIT (Base: 0x20000000, Size: 0x00000000, Max: 0x00007200, ABSOLUTE, UNINIT)
|
|
|
|
**** No section assigned to this execution region ****
|
|
|
|
|
|
Execution Region RW_RAM0 (Base: 0x20000000, Size: 0x00000a78, Max: 0x00007200, ABSOLUTE)
|
|
|
|
Base Addr Size Type Attr Idx E Section Name Object
|
|
|
|
0x20000000 0x00000004 Data RW 1494 .data mc_w.l(stdout.o)
|
|
0x20000004 0x000000e8 Data RW 185 .data.CAN0_transmiter Can.o
|
|
0x200000ec 0x00000004 Data RW 902 .data.SystemCoreClock system_gd32c10x.o
|
|
0x200000f0 0x00000004 Data RW 1342 .data.__cxa_terminate_handler libcppabi_wx.l(cxa_default_handlers.cpp.o)
|
|
0x200000f4 0x00000004 PAD
|
|
0x200000f8 0x00000004 Zero RW 72 .bss._ZL5delay systick.o
|
|
0x200000fc 0x0000000c Zero RW 1351 .bss._ZN10__cxxabiv1L10eh_globalsE libcppabi_wx.l(cxa_exception_storage.cpp.o)
|
|
0x20000108 0x00000001 Zero RW 144 .bss._ZZN10OTAHandler7processEvE4zero OTA.o
|
|
0x20000109 0x00000007 PAD
|
|
0x20000110 0x00000008 Zero RW 188 .bss.can_rx_buffer Can.o
|
|
0x20000118 0x00000008 Zero RW 189 .bss.can_tx_buffer Can.o
|
|
0x20000120 0x0000001c Zero RW 186 .bss.dma_rx_parameter Can.o
|
|
0x2000013c 0x0000001c Zero RW 187 .bss.dma_tx_parameter Can.o
|
|
0x20000158 0x00000110 Zero RW 143 .bss.ota OTA.o
|
|
0x20000268 0x00000004 Zero RW 660 .bss.pmu_to_deepsleepmode.reg_snap.0 gd32c10x_pmu.o
|
|
0x2000026c 0x00000004 Zero RW 661 .bss.pmu_to_deepsleepmode.reg_snap.1 gd32c10x_pmu.o
|
|
0x20000270 0x00000004 Zero RW 662 .bss.pmu_to_deepsleepmode.reg_snap.2 gd32c10x_pmu.o
|
|
0x20000274 0x00000004 Zero RW 663 .bss.pmu_to_deepsleepmode.reg_snap.3 gd32c10x_pmu.o
|
|
0x20000278 0x00000800 Zero RW 887 STACK startup_gd32c10x.o
|
|
|
|
|
|
Execution Region ARM_LIB_HEAP (Base: 0x20000a78, Size: 0x00000c00, Max: 0x00000c00, ABSOLUTE)
|
|
|
|
Base Addr Size Type Attr Idx E Section Name Object
|
|
|
|
0x20000a78 0x00000c00 Zero RW 1 ARM_LIB_HEAP.bss anon$$obj.o
|
|
|
|
|
|
Execution Region ARM_LIB_STACK (Base: 0x20007e00, Size: 0x00000200, Max: 0x00000200, ABSOLUTE)
|
|
|
|
Base Addr Size Type Attr Idx E Section Name Object
|
|
|
|
0x20007e00 0x00000200 Zero RW 2 ARM_LIB_STACK.bss anon$$obj.o
|
|
|