Files
GD32_BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf.map
T
cbb aefb7d4ee4 feat(ota): 修复备份APP区域恢复功能和OTA流程优化、启用BRS、减小延时
- 添加sendBackup方法用于在备份APP激活时发送确认消息
- 优化OTA跳转逻辑,在jumpToApplication中清除复位标志
- 修复move_app_data函数中数据源地址错误,从备份区域正确读取数据
- 在OTA流程中正确设置APP状态标志,确保应用验证状态管理

refactor(can): 清理调试代码和函数签名优化

- 移除调试用的printf语句和未使用的cstdio头文件
- 统一函数参数类型为u8和u32,提高代码一致性
- 优化CAN通信检查逻辑,移除冗余的调试输出

perf(ota): 优化OTA处理中的延时函数

- 将delay_1ms(1)改为delay_1us(100),提高延时精度
- 添加微秒级延时函数delay_1us实现
- 增加OTA超时时间从10秒到100秒

fix(ota): 修复OTA状态管理和错误处理

- 在各种错误情况下正确设置ota_state为OTA_STATE_IDLE
- 在eraseApplicationArea中正确初始化APP状态标志
- 添加CRC校验失败时的调试输出选项
- 修复数据包大小验证逻辑
2026-01-07 23:14:15 +08:00

208 lines
15 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: 0x00004a30, Max: 0x08005000, ABSOLUTE)
Execution Region ER_ROM0 (Base: 0x08000000, Size: 0x00004934, Max: 0x08005000, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x08000000 0x00000150 Data RO 879 RESET startup_gd32c10x.o
0x08000150 0x00000000 Code RO 1043 * .ARM.Collect$$$$00000000 mc_w.l(entry.o)
0x08000150 0x00000004 Code RO 1470 .ARM.Collect$$$$00000003 mc_w.l(entry4.o)
0x08000154 0x00000004 Code RO 1473 .ARM.Collect$$$$00000004 mc_w.l(entry5.o)
0x08000158 0x00000000 Code RO 1475 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o)
0x08000158 0x00000000 Code RO 1477 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o)
0x08000158 0x00000008 Code RO 1478 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o)
0x08000160 0x00000000 Code RO 1480 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o)
0x08000160 0x00000000 Code RO 1482 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o)
0x08000160 0x00000004 Code RO 1471 .ARM.Collect$$$$00002714 mc_w.l(entry4.o)
0x08000164 0x0000002c Code RO 880 * .text startup_gd32c10x.o
0x08000190 0x00000024 Code RO 1052 .text mc_w.l(memcpya.o)
0x080001b4 0x00000024 Code RO 1054 .text mc_w.l(memseta.o)
0x080001d8 0x0000001a Code RO 1056 .text mc_w.l(memcmp.o)
0x080001f2 0x00000002 Code RO 1498 .text mc_w.l(abort.o)
0x080001f4 0x00000030 Code RO 1825 .text mc_w.l(init.o)
0x08000224 0x0000009c Code RO 167 .text.CAN0_RX0_IRQHandler Can.o
0x080002c0 0x0000004a Code RO 169 .text.DMA0_Channel4_IRQHandler Can.o
0x0800030a 0x00000002 PAD
0x0800030c 0x00000026 Code RO 171 .text.DMA0_Channel5_IRQHandler Can.o
0x08000332 0x00000002 PAD
0x08000334 0x00000342 Code RO 886 .text.SystemInit system_gd32c10x.o
0x08000676 0x00000002 PAD
0x08000678 0x00000012 Code RO 84 .text.USART0_init initial.o
0x0800068a 0x00000002 PAD
0x0800068c 0x00000198 Code RO 29 .text._Z11mix_columnsPh aes128.o
0x08000824 0x000000b2 Code RO 131 .text._Z13move_app_datav OTA.o
0x080008d6 0x00000002 PAD
0x080008d8 0x00000238 Code RO 37 .text._Z14aes128_set_keyP14aes128_contextPKh aes128.o
0x08000b10 0x000008e2 Code RO 35 .text._Z15inv_mix_columnsPh aes128.o
0x080013f2 0x00000002 PAD
0x080013f4 0x000003c8 Code RO 43 .text._Z20aes128_decrypt_blockP14aes128_contextPKhPh aes128.o
0x080017bc 0x000003e6 Code RO 39 .text._Z20aes128_encrypt_blockP14aes128_contextPKhPh aes128.o
0x08001ba2 0x00000002 PAD
0x08001ba4 0x00000210 Code RO 125 .text._Z24calculate_crc32_with_keyPKhS0_Ph OTA.o
0x08001db4 0x0000002c Code RO 45 .text._Z26aes128_ecb_decrypt_48bytesP14aes128_contextPKhPh aes128.o
0x08001de0 0x00000182 Code RO 107 .text._Z7OTA_SETjj OTA.o
0x08001f62 0x00000002 PAD
0x08001f64 0x0000046c Code RO 123 .text._ZN10OTAHandler16handleOTAMessageEjPhh OTA.o
0x080023d0 0x000000a8 Code RO 115 .text._ZN10OTAHandler17jumpToApplicationEv OTA.o
0x08002478 0x00000080 Code RO 119 .text._ZN10OTAHandler20eraseApplicationAreaEv OTA.o
0x080024f8 0x0000005a Code RO 121 .text._ZN10OTAHandler20writeApplicationDataEjPhj OTA.o
0x08002552 0x00000002 PAD
0x08002554 0x00000098 Code RO 111 .text._ZN10OTAHandler7processEv OTA.o
0x080025ec 0x00000028 Code RO 909 .text._ZN10__cxxabiv121__isOurExceptionClassEPK21_Unwind_Control_Block libcppabi_wx.l(cxa_exception.cpp.o)
0x08002614 0x00000060 Code RO 937 .text._ZN10__cxxabiv1L22__cxa_end_cleanup_implEv libcppabi_wx.l(cxa_exception.cpp.o)
0x08002674 0x0000004c Code RO 163 .text._ZN14CAN_transmiter10sendBackupEv Can.o
0x080026c0 0x0000008c Code RO 159 .text._ZN14CAN_transmiter12sendDATA_ACKEjPh Can.o
0x0800274c 0x0000014e Code RO 161 .text._ZN14CAN_transmiter15CANFD_AsyncSendEjhPh Can.o
0x0800289a 0x00000002 PAD
0x0800289c 0x0000004e Code RO 157 .text._ZN14CAN_transmiter19communication_checkEv Can.o
0x080028ea 0x00000002 PAD
0x080028ec 0x00000038 Code RO 155 .text._ZN14CAN_transmiter4initEv Can.o
0x08002924 0x000000d4 Code RO 6 .text._ZN16BootloaderSystem3runEv main.o
0x080029f8 0x00000074 Code RO 980 .text._ZSt11__terminatePFvvE libcppabi_wx.l(cxa_handlers.cpp.o)
0x08002a6c 0x00000030 Code RO 971 .text._ZSt9terminatev libcppabi_wx.l(cxa_handlers.cpp.o)
0x08002a9c 0x0000000a Code RO 966 .text.__clang_call_terminate libcppabi_wx.l(cxa_exception.cpp.o)
0x08002aa6 0x00000002 PAD
0x08002aa8 0x0000006c Code RO 914 .text.__cxa_begin_catch libcppabi_wx.l(cxa_exception.cpp.o)
0x08002b14 0x0000000a Code RO 1337 .text.__cxa_get_globals libcppabi_wx.l(cxa_exception_storage.cpp.o)
0x08002b1e 0x0000000a Code RO 1339 .text.__cxa_get_globals_fast libcppabi_wx.l(cxa_exception_storage.cpp.o)
0x08002b28 0x00000026 Code RO 220 .text.can_deinit gd32c10x_can.o
0x08002b4e 0x00000002 PAD
0x08002b50 0x00000114 Code RO 226 .text.can_fd_init gd32c10x_can.o
0x08002c64 0x000000b2 Code RO 228 .text.can_filter_init gd32c10x_can.o
0x08002d16 0x00000002 PAD
0x08002d18 0x00000176 Code RO 224 .text.can_init gd32c10x_can.o
0x08002e8e 0x00000002 PAD
0x08002e90 0x00000008 Code RO 270 .text.can_interrupt_enable gd32c10x_can.o
0x08002e98 0x00000016 Code RO 280 .text.can_interrupt_flag_clear gd32c10x_can.o
0x08002eae 0x00000002 PAD
0x08002eb0 0x00000066 Code RO 278 .text.can_interrupt_flag_get gd32c10x_can.o
0x08002f16 0x00000002 PAD
0x08002f18 0x000001f4 Code RO 254 .text.can_message_receive gd32c10x_can.o
0x0800310c 0x000001f0 Code RO 248 .text.can_message_transmit gd32c10x_can.o
0x080032fc 0x00000018 Code RO 258 .text.can_receive_message_length_get gd32c10x_can.o
0x08003314 0x00000072 Code RO 222 .text.can_struct_para_init gd32c10x_can.o
0x08003386 0x00000002 PAD
0x08003388 0x000001b0 Code RO 153 .text.canfd_config Can.o
0x08003538 0x00000066 Code RO 306 .text.crc_block_data_calculate gd32c10x_crc.o
0x0800359e 0x00000002 PAD
0x080035a0 0x00000012 Code RO 296 .text.crc_data_register_reset gd32c10x_crc.o
0x080035b2 0x00000002 PAD
0x080035b4 0x00000018 Code RO 294 .text.crc_deinit gd32c10x_crc.o
0x080035cc 0x00000024 Code RO 66 .text.delay_1ms systick.o
0x080035f0 0x00000028 Code RO 64 .text.delay_1us systick.o
0x08003618 0x00000018 Code RO 68 .text.delay_decrement systick.o
0x08003630 0x00000024 Code RO 360 .text.dma_channel_disable gd32c10x_dma.o
0x08003654 0x00000024 Code RO 358 .text.dma_channel_enable gd32c10x_dma.o
0x08003678 0x00000074 Code RO 348 .text.dma_init gd32c10x_dma.o
0x080036ec 0x00000022 Code RO 394 .text.dma_interrupt_enable gd32c10x_dma.o
0x0800370e 0x00000002 PAD
0x08003710 0x0000000e Code RO 392 .text.dma_interrupt_flag_clear gd32c10x_dma.o
0x0800371e 0x00000002 PAD
0x08003720 0x0000003a Code RO 390 .text.dma_interrupt_flag_get gd32c10x_dma.o
0x0800375a 0x00000002 PAD
0x0800375c 0x0000001a Code RO 346 .text.dma_struct_para_init gd32c10x_dma.o
0x08003776 0x00000002 PAD
0x08003778 0x0000000c Code RO 502 .text.fmc_flag_clear gd32c10x_fmc.o
0x08003784 0x00000012 Code RO 464 .text.fmc_lock gd32c10x_fmc.o
0x08003796 0x00000002 PAD
0x08003798 0x00000166 Code RO 468 .text.fmc_page_erase gd32c10x_fmc.o
0x080038fe 0x00000002 PAD
0x08003900 0x00000026 Code RO 462 .text.fmc_unlock gd32c10x_fmc.o
0x08003926 0x00000002 PAD
0x08003928 0x000001aa Code RO 474 .text.fmc_word_program gd32c10x_fmc.o
0x08003ad2 0x00000002 PAD
0x08003ad4 0x0000002c Code RO 86 .text.fputc initial.o
0x08003b00 0x00000098 Code RO 203 .text.gd_eval_com_init gd32c10x_eval.o
0x08003b98 0x00000004 Code RO 558 .text.gpio_bit_reset gd32c10x_gpio.o
0x08003b9c 0x000002c0 Code RO 554 .text.gpio_init gd32c10x_gpio.o
0x08003e5c 0x00000080 Code RO 572 .text.gpio_pin_remap_config gd32c10x_gpio.o
0x08003edc 0x0000001e Code RO 8 .text.main main.o
0x08003efa 0x00000002 PAD
0x08003efc 0x00000060 Code RO 601 .text.nvic_irq_enable gd32c10x_misc.o
0x08003f5c 0x0000001c Code RO 605 .text.nvic_vector_table_set gd32c10x_misc.o
0x08003f78 0x00000012 Code RO 723 .text.rcu_all_reset_flag_clear gd32c10x_rcu.o
0x08003f8a 0x00000002 PAD
0x08003f8c 0x0000010c Code RO 751 .text.rcu_clock_freq_get gd32c10x_rcu.o
0x08004098 0x00000020 Code RO 671 .text.rcu_periph_clock_disable gd32c10x_rcu.o
0x080040b8 0x0000001e Code RO 669 .text.rcu_periph_clock_enable gd32c10x_rcu.o
0x080040d6 0x00000002 PAD
0x080040d8 0x00000020 Code RO 679 .text.rcu_periph_reset_disable gd32c10x_rcu.o
0x080040f8 0x0000001e Code RO 677 .text.rcu_periph_reset_enable gd32c10x_rcu.o
0x08004116 0x00000002 PAD
0x08004118 0x00000014 Code RO 685 .text.rcu_system_clock_source_config gd32c10x_rcu.o
0x0800412c 0x00000048 Code RO 62 .text.systick_config systick.o
0x08004174 0x00000006 Code RO 1322 .text.unlikely.abort_message libcppabi_wx.l(abort_message.cpp.o)
0x0800417a 0x00000002 PAD
0x0800417c 0x0000006a Code RO 767 .text.usart_baudrate_set gd32c10x_usart.o
0x080041e6 0x00000002 PAD
0x080041e8 0x00000008 Code RO 793 .text.usart_data_transmit gd32c10x_usart.o
0x080041f0 0x0000007a Code RO 765 .text.usart_deinit gd32c10x_usart.o
0x0800426a 0x00000002 PAD
0x0800426c 0x0000000a Code RO 775 .text.usart_enable gd32c10x_usart.o
0x08004276 0x00000002 PAD
0x08004278 0x00000010 Code RO 855 .text.usart_flag_get gd32c10x_usart.o
0x08004288 0x00000014 Code RO 781 .text.usart_receive_config gd32c10x_usart.o
0x0800429c 0x00000014 Code RO 779 .text.usart_transmit_config gd32c10x_usart.o
0x080042b0 0x0000000e Code RO 1914 i.__scatterload_copy mc_w.l(handlers.o)
0x080042be 0x00000002 Code RO 1915 i.__scatterload_null mc_w.l(handlers.o)
0x080042c0 0x0000000e Code RO 1916 i.__scatterload_zeroinit mc_w.l(handlers.o)
0x080042ce 0x00000002 PAD
0x080042d0 0x00000024 Code RO 1046 i.puts mc_w.l(puts.o)
0x080042f4 0x00000100 Data RO 50 .rodata._ZL4sbox aes128.o
0x080043f4 0x00000010 Data RO 135 .rodata._ZL8K_master OTA.o
0x08004404 0x00000400 Data RO 137 .rodata._ZZ24calculate_crc32_with_keyPKhS0_PhE9crc_table OTA.o
0x08004804 0x00000008 Data RO 753 .rodata.cst8 gd32c10x_rcu.o
0x0800480c 0x00000007 Data RO 282 .rodata.g_can_fdlength_table gd32c10x_can.o
0x08004813 0x00000100 Data RO 49 .rodata.inv_sbox aes128.o
0x08004913 0x00000001 PAD
0x08004914 0x00000020 Data RO 1913 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: 0x00000a68, Max: 0x00007200, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x20000000 0x00000004 Data RW 1484 .data mc_w.l(stdout.o)
0x20000004 0x000000e8 Data RW 175 .data.CAN0_transmiter Can.o
0x200000ec 0x00000004 Data RW 892 .data.SystemCoreClock system_gd32c10x.o
0x200000f0 0x00000004 Data RW 1332 .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 1341 .bss._ZN10__cxxabiv1L10eh_globalsE libcppabi_wx.l(cxa_exception_storage.cpp.o)
0x20000108 0x00000001 Zero RW 134 .bss._ZZN10OTAHandler7processEvE4zero OTA.o
0x20000109 0x00000007 PAD
0x20000110 0x00000008 Zero RW 178 .bss.can_rx_buffer Can.o
0x20000118 0x00000008 Zero RW 179 .bss.can_tx_buffer Can.o
0x20000120 0x0000001c Zero RW 176 .bss.dma_rx_parameter Can.o
0x2000013c 0x0000001c Zero RW 177 .bss.dma_tx_parameter Can.o
0x20000158 0x00000110 Zero RW 133 .bss.ota OTA.o
0x20000268 0x00000800 Zero RW 877 STACK startup_gd32c10x.o
Execution Region ARM_LIB_HEAP (Base: 0x20000a68, Size: 0x00000c00, Max: 0x00000c00, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x20000a68 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