feat(ota): OTA功能测试通过,CANFD解包效率优化

- 添加OTA固件升级功能,包括应用程序验证和跳转机制
- 实现CANFD数据传输协议,支持加密和CRC校验
- 优化CAN通信处理,添加调试输出和错误处理
- 更新RTE组件配置,升级csolution版本到2.12.0
- 增加Flash擦除和写入的安全验证机制
- 添加应用程序区域扫描和验证功能

refactor(can): 重构CAN通信模块和OTA数据处理

- 移除未使用的常量定义和辅助函数
- 改进数据解包和加密解密流程
- 添加条件编译调试输出
- 优化Flash操作的安全性和可靠性

chore(build): 更新项目配置和忽略文件

- 添加tmp/和out/目录到.gitignore
- 扩展ROM0_SIZE从0x0020000到0x08005000
- 添加bin输出格式支持
This commit is contained in:
cbb
2026-01-03 18:00:28 +08:00
parent 9c7145ef99
commit 2f482554f0
39 changed files with 1954 additions and 1764 deletions
+4
View File
@@ -15,6 +15,10 @@ cbuild-run:
info: generate by Robot_V2.Release+GD32C103CB
type: hex
load: image
- file: Robot_V2/GD32C103CB/Release/Robot_V2.bin
info: generate by Robot_V2.Release+GD32C103CB
type: bin
load: none
system-resources:
memory:
- name: IROM1
@@ -1,5 +1,5 @@
build:
generated-by: csolution version 2.12.0
generated-by: csolution version 2.12.0+p41-gfeadfc5e
solution: ../../../../Robot_V2.csolution.yml
project: ../../../../Robot_V2/Robot_V2.cproject.yml
context: Robot_V2.Debug+GD32C103CB
@@ -74,6 +74,8 @@ build:
outdir: .
rtedir: ../../../../Robot_V2/RTE
output:
- type: bin
file: Robot_V2.bin
- type: elf
file: Robot_V2.axf
- type: hex
@@ -104,18 +106,6 @@ build:
category: source
attr: config
version: 1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:ADC@1.0.0
condition: GD32C10x STDPERIPHERALS RCU
from-pack: GigaDevice::GD32C10x_DFP@1.0.1
selected-by: Device:GD32C10x_StdPeripherals:ADC
files:
- file: ${CMSIS_PACK_ROOT}/GigaDevice/GD32C10x_DFP/1.0.1/Device/Firmware/Peripherals/inc/gd32c10x_adc.h
category: header
version: 1.0.0
- file: ../../../../Robot_V2/RTE/Device/GD32C103CB/gd32c10x_adc.c
category: source
attr: config
version: 1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:CAN@1.0.0
condition: GD32C10x STDPERIPHERALS RCU
from-pack: GigaDevice::GD32C10x_DFP@1.0.1
@@ -128,6 +118,18 @@ build:
category: source
attr: config
version: 1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:CRC@1.0.0
condition: GD32C10x STDPERIPHERALS RCU
from-pack: GigaDevice::GD32C10x_DFP@1.0.1
selected-by: Device:GD32C10x_StdPeripherals:CRC
files:
- file: ${CMSIS_PACK_ROOT}/GigaDevice/GD32C10x_DFP/1.0.1/Device/Firmware/Peripherals/inc/gd32c10x_crc.h
category: header
version: 1.0.0
- file: ../../../../Robot_V2/RTE/Device/GD32C103CB/gd32c10x_crc.c
category: source
attr: config
version: 1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:DBG@1.0.0
condition: GD32C10x STDPERIPHERALS RCU
from-pack: GigaDevice::GD32C10x_DFP@1.0.1
@@ -236,30 +238,6 @@ build:
category: source
attr: config
version: 1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:SPI_I2S@1.0.0
condition: GD32C10x STDPERIPHERALS RCU
from-pack: GigaDevice::GD32C10x_DFP@1.0.1
selected-by: Device:GD32C10x_StdPeripherals:SPI_I2S
files:
- file: ${CMSIS_PACK_ROOT}/GigaDevice/GD32C10x_DFP/1.0.1/Device/Firmware/Peripherals/inc/gd32c10x_spi.h
category: header
version: 1.0.0
- file: ../../../../Robot_V2/RTE/Device/GD32C103CB/gd32c10x_spi.c
category: source
attr: config
version: 1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:TIMER@1.0.0
condition: GD32C10x STDPERIPHERALS RCU
from-pack: GigaDevice::GD32C10x_DFP@1.0.1
selected-by: Device:GD32C10x_StdPeripherals:TIMER
files:
- file: ${CMSIS_PACK_ROOT}/GigaDevice/GD32C10x_DFP/1.0.1/Device/Firmware/Peripherals/inc/gd32c10x_timer.h
category: header
version: 1.0.0
- file: ../../../../Robot_V2/RTE/Device/GD32C103CB/gd32c10x_timer.c
category: source
attr: config
version: 1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:USART@1.0.0
condition: GD32C10x STDPERIPHERALS RCU
from-pack: GigaDevice::GD32C10x_DFP@1.0.1
@@ -272,18 +250,6 @@ build:
category: source
attr: config
version: 1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:WWDGT@1.0.0
condition: GD32C10x STDPERIPHERALS RCU
from-pack: GigaDevice::GD32C10x_DFP@1.0.1
selected-by: Device:GD32C10x_StdPeripherals:WWDGT
files:
- file: ${CMSIS_PACK_ROOT}/GigaDevice/GD32C10x_DFP/1.0.1/Device/Firmware/Peripherals/inc/gd32c10x_wwdgt.h
category: header
version: 1.0.0
- file: ../../../../Robot_V2/RTE/Device/GD32C103CB/gd32c10x_wwdgt.c
category: source
attr: config
version: 1.0.0
- component: GigaDevice::Device:GD32C10x_libopt@1.0.0
condition: GD32C10x CMSIS
from-pack: GigaDevice::GD32C10x_DFP@1.0.1
@@ -321,6 +287,10 @@ build:
category: header
- file: ../../../../Robot_V2/main.cpp
category: sourceCpp
- file: ../../../../Robot_V2/sys/aes128.h
category: header
- file: ../../../../Robot_V2/sys/aes128.cpp
category: sourceCpp
- group: sys
files:
- file: ../../../../Robot_V2/sys/systick.cpp
@@ -331,48 +301,22 @@ build:
category: sourceCpp
- file: ../../../../Robot_V2/sys/initial.h
category: header
- file: ../../../../Robot_V2/sys/health.h
- file: ../../../../Robot_V2/sys/flash.h
category: header
- file: ../../../../Robot_V2/sys/health.cpp
- file: ../../../../Robot_V2/sys/flash.cpp
category: sourceCpp
- file: ../../../../Robot_V2/sys/OTA.h
category: header
- file: ../../../../Robot_V2/sys/OTA.cpp
category: sourceCpp
- file: ../../../../Robot_V2/sys/config.h
category: header
- group: device
files:
- file: ../../../../Robot_V2/device/Can.cpp
category: sourceCpp
- file: ../../../../Robot_V2/device/Can.h
category: header
- file: ../../../../Robot_V2/device/ang_sensor.cpp
category: sourceCpp
- file: ../../../../Robot_V2/device/ang_sensor.h
category: header
- file: ../../../../Robot_V2/device/ADC.cpp
category: sourceCpp
- file: ../../../../Robot_V2/device/adc.h
category: header
- file: ../../../../Robot_V2/device/Timer.cpp
category: sourceCpp
- file: ../../../../Robot_V2/device/Timer.h
category: header
- file: ../../../../Robot_V2/device/test.cpp
category: sourceCpp
- file: ../../../../Robot_V2/device/motor.cpp
category: sourceCpp
- file: ../../../../Robot_V2/device/motor.h
category: header
- group: Algorithm
files:
- file: ../../../../Robot_V2/Algorithm/Filter.cpp
category: sourceCpp
- file: ../../../../Robot_V2/Algorithm/Filter.h
category: header
- file: ../../../../Robot_V2/Algorithm/DengFOC.cpp
category: sourceCpp
- file: ../../../../Robot_V2/Algorithm/DengFOC.h
category: header
- file: ../../../../Robot_V2/Algorithm/pid.cpp
category: sourceCpp
- file: ../../../../Robot_V2/pid.h
category: header
constructed-files:
- file: ../../../../Robot_V2/RTE/_Debug_GD32C103CB/RTE_Components.h
category: header
@@ -387,8 +331,8 @@ build:
- pack: GigaDevice::GD32C10x_DFP@1.0.1
components:
- component: GigaDevice::Device:EVAL:GD32C10x@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:ADC@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:CAN@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:CRC@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:DBG@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:DMA@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:EXTI@1.0.0
@@ -398,9 +342,6 @@ build:
- component: GigaDevice::Device:GD32C10x_StdPeripherals:MISC@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:PMU@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:RCU@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:SPI_I2S@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:TIMER@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:USART@1.0.0
- component: GigaDevice::Device:GD32C10x_StdPeripherals:WWDGT@1.0.0
- component: GigaDevice::Device:GD32C10x_libopt@1.0.0
- component: GigaDevice::Device:Startup@1.0.0
@@ -74,6 +74,8 @@ build:
outdir: .
rtedir: ../../../../Robot_V2/RTE
output:
- type: bin
file: Robot_V2.bin
- type: elf
file: Robot_V2.axf
- type: hex
Binary file not shown.
+160 -154
View File
@@ -6,147 +6,151 @@ Memory Map of the image
Image Entry point : 0x08000165
Load Region LR_ROM0 (Base: 0x08000000, Size: 0x00004800, Max: 0x00020000, ABSOLUTE, COMPRESSED[0x00004610])
Load Region LR_ROM0 (Base: 0x08000000, Size: 0x00004628, Max: 0x08005000, ABSOLUTE)
Execution Region ER_ROM0 (Base: 0x08000000, Size: 0x000045ec, Max: 0x00020000, ABSOLUTE)
Execution Region ER_ROM0 (Base: 0x08000000, Size: 0x0000452c, Max: 0x08005000, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x08000000 0x00000150 Data RO 899 RESET startup_gd32c10x.o
0x08000150 0x00000000 Code RO 1063 * .ARM.Collect$$$$00000000 mc_w.l(entry.o)
0x08000150 0x00000004 Code RO 1488 .ARM.Collect$$$$00000003 mc_w.l(entry4.o)
0x08000154 0x00000004 Code RO 1491 .ARM.Collect$$$$00000004 mc_w.l(entry5.o)
0x08000158 0x00000000 Code RO 1493 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o)
0x08000158 0x00000000 Code RO 1495 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o)
0x08000158 0x00000008 Code RO 1496 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o)
0x08000160 0x00000000 Code RO 1498 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o)
0x08000160 0x00000000 Code RO 1500 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o)
0x08000160 0x00000004 Code RO 1489 .ARM.Collect$$$$00002714 mc_w.l(entry4.o)
0x08000164 0x0000002c Code RO 900 * .text startup_gd32c10x.o
0x08000190 0x00000024 Code RO 1070 .text mc_w.l(memcpya.o)
0x080001b4 0x00000024 Code RO 1072 .text mc_w.l(memseta.o)
0x080001d8 0x0000001a Code RO 1074 .text mc_w.l(memcmp.o)
0x080001f2 0x00000062 Code RO 1514 .text mc_w.l(uldiv.o)
0x08000254 0x00000002 Code RO 1516 .text mc_w.l(abort.o)
0x08000256 0x00000002 PAD
0x08000258 0x00000030 Code RO 1843 .text mc_w.l(init.o)
0x08000288 0x0000001e Code RO 1845 .text mc_w.l(llshl.o)
0x080002a6 0x00000020 Code RO 1847 .text mc_w.l(llushr.o)
0x080002c6 0x0000003a Code RO 1938 .text mc_w.l(__dczerorl.o)
0x08000300 0x000000cc Code RO 186 .text.CAN0_RX0_IRQHandler Can.o
0x080003cc 0x0000004a Code RO 188 .text.DMA0_Channel4_IRQHandler Can.o
0x08000416 0x00000002 PAD
0x08000418 0x00000026 Code RO 190 .text.DMA0_Channel5_IRQHandler Can.o
0x0800043e 0x00000002 PAD
0x08000440 0x00000342 Code RO 906 .text.SystemInit system_gd32c10x.o
0x08000782 0x00000002 PAD
0x08000784 0x00000012 Code RO 91 .text.USART0_init initial.o
0x08000796 0x00000002 PAD
0x08000798 0x00000198 Code RO 36 .text._Z11mix_columnsPh aes128.o
0x08000930 0x00000238 Code RO 44 .text._Z14aes128_set_keyP14aes128_contextPKh aes128.o
0x08000b68 0x000008e2 Code RO 42 .text._Z15inv_mix_columnsPh aes128.o
0x0800144a 0x00000002 PAD
0x0800144c 0x000003c8 Code RO 50 .text._Z20aes128_decrypt_blockP14aes128_contextPKhPh aes128.o
0x08001814 0x000003e6 Code RO 46 .text._Z20aes128_encrypt_blockP14aes128_contextPKhPh aes128.o
0x08001bfa 0x00000002 PAD
0x08001bfc 0x00000210 Code RO 149 .text._Z24calculate_crc32_with_keyPKhS0_Ph OTA.o
0x08001e0c 0x0000002c Code RO 52 .text._Z26aes128_ecb_decrypt_48bytesP14aes128_contextPKhPh aes128.o
0x08001e38 0x00000410 Code RO 147 .text._ZN10OTAHandler16handleOTAMessageEjPhh OTA.o
0x08002248 0x00000078 Code RO 135 .text._ZN10OTAHandler7processEv OTA.o
0x080022c0 0x00000028 Code RO 929 .text._ZN10__cxxabiv121__isOurExceptionClassEPK21_Unwind_Control_Block libcppabi_wx.l(cxa_exception.cpp.o)
0x080022e8 0x00000060 Code RO 957 .text._ZN10__cxxabiv1L22__cxa_end_cleanup_implEv libcppabi_wx.l(cxa_exception.cpp.o)
0x08002348 0x0000009e Code RO 180 .text._ZN14CAN_transmiter12sendDATA_ACKEjPh Can.o
0x080023e6 0x00000002 PAD
0x080023e8 0x00000178 Code RO 182 .text._ZN14CAN_transmiter15CANFD_AsyncSendEjhPh Can.o
0x08002560 0x00000064 Code RO 178 .text._ZN14CAN_transmiter19communication_checkEv Can.o
0x080025c4 0x00000038 Code RO 176 .text._ZN14CAN_transmiter4initEv Can.o
0x080025fc 0x00000074 Code RO 1000 .text._ZSt11__terminatePFvvE libcppabi_wx.l(cxa_handlers.cpp.o)
0x08002670 0x00000030 Code RO 991 .text._ZSt9terminatev libcppabi_wx.l(cxa_handlers.cpp.o)
0x080026a0 0x0000000a Code RO 986 .text.__clang_call_terminate libcppabi_wx.l(cxa_exception.cpp.o)
0x080026aa 0x00000002 PAD
0x080026ac 0x0000006c Code RO 934 .text.__cxa_begin_catch libcppabi_wx.l(cxa_exception.cpp.o)
0x08002718 0x0000000a Code RO 1355 .text.__cxa_get_globals libcppabi_wx.l(cxa_exception_storage.cpp.o)
0x08002722 0x0000000a Code RO 1357 .text.__cxa_get_globals_fast libcppabi_wx.l(cxa_exception_storage.cpp.o)
0x0800272c 0x00000026 Code RO 240 .text.can_deinit gd32c10x_can.o
0x08002752 0x00000002 PAD
0x08002754 0x00000114 Code RO 246 .text.can_fd_init gd32c10x_can.o
0x08002868 0x000000b2 Code RO 248 .text.can_filter_init gd32c10x_can.o
0x0800291a 0x00000002 PAD
0x0800291c 0x00000176 Code RO 244 .text.can_init gd32c10x_can.o
0x08002a92 0x00000002 PAD
0x08002a94 0x00000008 Code RO 290 .text.can_interrupt_enable gd32c10x_can.o
0x08002a9c 0x00000016 Code RO 300 .text.can_interrupt_flag_clear gd32c10x_can.o
0x08002ab2 0x00000002 PAD
0x08002ab4 0x00000066 Code RO 298 .text.can_interrupt_flag_get gd32c10x_can.o
0x08002b1a 0x00000002 PAD
0x08002b1c 0x000001f4 Code RO 274 .text.can_message_receive gd32c10x_can.o
0x08002d10 0x000001f0 Code RO 268 .text.can_message_transmit gd32c10x_can.o
0x08002f00 0x00000018 Code RO 278 .text.can_receive_message_length_get gd32c10x_can.o
0x08002f18 0x00000072 Code RO 242 .text.can_struct_para_init gd32c10x_can.o
0x08002f8a 0x00000002 PAD
0x08002f8c 0x000001b0 Code RO 174 .text.canfd_config Can.o
0x0800313c 0x00000018 Code RO 314 .text.crc_deinit gd32c10x_crc.o
0x08003154 0x00000022 Code RO 73 .text.delay_1ms systick.o
0x08003176 0x00000002 PAD
0x08003178 0x00000018 Code RO 75 .text.delay_decrement systick.o
0x08003190 0x00000024 Code RO 380 .text.dma_channel_disable gd32c10x_dma.o
0x080031b4 0x00000024 Code RO 378 .text.dma_channel_enable gd32c10x_dma.o
0x080031d8 0x00000074 Code RO 368 .text.dma_init gd32c10x_dma.o
0x0800324c 0x00000022 Code RO 414 .text.dma_interrupt_enable gd32c10x_dma.o
0x0800326e 0x00000002 PAD
0x08003270 0x0000000e Code RO 412 .text.dma_interrupt_flag_clear gd32c10x_dma.o
0x0800327e 0x00000002 PAD
0x08003280 0x0000003a Code RO 410 .text.dma_interrupt_flag_get gd32c10x_dma.o
0x080032ba 0x00000002 PAD
0x080032bc 0x0000001a Code RO 366 .text.dma_struct_para_init gd32c10x_dma.o
0x080032d6 0x00000002 PAD
0x080032d8 0x0000002c Code RO 93 .text.fputc initial.o
0x08003304 0x00000010 Code RO 553 .text.fwdgt_counter_reload gd32c10x_fwdgt.o
0x08003314 0x00000098 Code RO 223 .text.gd_eval_com_init gd32c10x_eval.o
0x080033ac 0x00000004 Code RO 578 .text.gpio_bit_reset gd32c10x_gpio.o
0x080033b0 0x000002c0 Code RO 574 .text.gpio_init gd32c10x_gpio.o
0x08003670 0x00000080 Code RO 592 .text.gpio_pin_remap_config gd32c10x_gpio.o
0x080036f0 0x0000003a Code RO 14 .text.main main.o
0x0800372a 0x00000002 PAD
0x0800372c 0x00000060 Code RO 621 .text.nvic_irq_enable gd32c10x_misc.o
0x0800378c 0x0000001c Code RO 625 .text.nvic_vector_table_set gd32c10x_misc.o
0x080037a8 0x0000010c Code RO 771 .text.rcu_clock_freq_get gd32c10x_rcu.o
0x080038b4 0x0000001e Code RO 689 .text.rcu_periph_clock_enable gd32c10x_rcu.o
0x080038d2 0x00000002 PAD
0x080038d4 0x00000020 Code RO 699 .text.rcu_periph_reset_disable gd32c10x_rcu.o
0x080038f4 0x0000001e Code RO 697 .text.rcu_periph_reset_enable gd32c10x_rcu.o
0x08003912 0x00000002 PAD
0x08003914 0x00000048 Code RO 69 .text.systick_config systick.o
0x0800395c 0x00000006 Code RO 1340 .text.unlikely.abort_message libcppabi_wx.l(abort_message.cpp.o)
0x08003962 0x00000002 PAD
0x08003964 0x0000006a Code RO 787 .text.usart_baudrate_set gd32c10x_usart.o
0x080039ce 0x00000002 PAD
0x080039d0 0x00000008 Code RO 813 .text.usart_data_transmit gd32c10x_usart.o
0x080039d8 0x0000007a Code RO 785 .text.usart_deinit gd32c10x_usart.o
0x08003a52 0x00000002 PAD
0x08003a54 0x0000000a Code RO 795 .text.usart_enable gd32c10x_usart.o
0x08003a5e 0x00000002 PAD
0x08003a60 0x00000010 Code RO 875 .text.usart_flag_get gd32c10x_usart.o
0x08003a70 0x00000014 Code RO 801 .text.usart_receive_config gd32c10x_usart.o
0x08003a84 0x00000014 Code RO 799 .text.usart_transmit_config gd32c10x_usart.o
0x08003a98 0x00000020 Code RO 1285 i.__0printf$8 mc_w.l(printf8.o)
0x08003ab8 0x0000000e Code RO 1932 i.__scatterload_copy mc_w.l(handlers.o)
0x08003ac6 0x00000002 Code RO 1933 i.__scatterload_null mc_w.l(handlers.o)
0x08003ac8 0x0000000e Code RO 1934 i.__scatterload_zeroinit mc_w.l(handlers.o)
0x08003ad6 0x00000002 PAD
0x08003ad8 0x00000410 Code RO 1292 i._printf_core mc_w.l(printf8.o)
0x08003ee8 0x00000024 Code RO 1293 i._printf_post_padding mc_w.l(printf8.o)
0x08003f0c 0x0000002e Code RO 1294 i._printf_pre_padding mc_w.l(printf8.o)
0x08003f3a 0x00000002 PAD
0x08003f3c 0x00000024 Code RO 1066 i.puts mc_w.l(puts.o)
0x08003f60 0x00000100 Data RO 57 .rodata._ZL4sbox aes128.o
0x08004060 0x00000400 Data RO 158 .rodata._ZZ24calculate_crc32_with_keyPKhS0_PhE9crc_table OTA.o
0x08004460 0x00000008 Data RO 773 .rodata.cst8 gd32c10x_rcu.o
0x08004468 0x00000007 Data RO 302 .rodata.g_can_fdlength_table gd32c10x_can.o
0x0800446f 0x00000100 Data RO 56 .rodata.inv_sbox aes128.o
0x0800456f 0x0000005c Data RO 199 .rodata.str1.1 Can.o
0x080045cb 0x00000001 PAD
0x080045cc 0x00000020 Data RO 1931 Region$$Table anon$$obj.o
0x08000000 0x00000150 Data RO 895 RESET startup_gd32c10x.o
0x08000150 0x00000000 Code RO 1059 * .ARM.Collect$$$$00000000 mc_w.l(entry.o)
0x08000150 0x00000004 Code RO 1486 .ARM.Collect$$$$00000003 mc_w.l(entry4.o)
0x08000154 0x00000004 Code RO 1489 .ARM.Collect$$$$00000004 mc_w.l(entry5.o)
0x08000158 0x00000000 Code RO 1491 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o)
0x08000158 0x00000000 Code RO 1493 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o)
0x08000158 0x00000008 Code RO 1494 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o)
0x08000160 0x00000000 Code RO 1496 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o)
0x08000160 0x00000000 Code RO 1498 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o)
0x08000160 0x00000004 Code RO 1487 .ARM.Collect$$$$00002714 mc_w.l(entry4.o)
0x08000164 0x0000002c Code RO 896 * .text startup_gd32c10x.o
0x08000190 0x00000024 Code RO 1068 .text mc_w.l(memcpya.o)
0x080001b4 0x00000024 Code RO 1070 .text mc_w.l(memseta.o)
0x080001d8 0x0000001a Code RO 1072 .text mc_w.l(memcmp.o)
0x080001f2 0x00000002 Code RO 1514 .text mc_w.l(abort.o)
0x080001f4 0x00000030 Code RO 1841 .text mc_w.l(init.o)
0x08000224 0x0000009c Code RO 183 .text.CAN0_RX0_IRQHandler Can.o
0x080002c0 0x0000004a Code RO 185 .text.DMA0_Channel4_IRQHandler Can.o
0x0800030a 0x00000002 PAD
0x0800030c 0x00000026 Code RO 187 .text.DMA0_Channel5_IRQHandler Can.o
0x08000332 0x00000002 PAD
0x08000334 0x00000342 Code RO 902 .text.SystemInit system_gd32c10x.o
0x08000676 0x00000002 PAD
0x08000678 0x00000012 Code RO 85 .text.USART0_init initial.o
0x0800068a 0x00000002 PAD
0x0800068c 0x00000198 Code RO 32 .text._Z11mix_columnsPh aes128.o
0x08000824 0x00000238 Code RO 40 .text._Z14aes128_set_keyP14aes128_contextPKh aes128.o
0x08000a5c 0x000008e2 Code RO 38 .text._Z15inv_mix_columnsPh aes128.o
0x0800133e 0x00000002 PAD
0x08001340 0x00000030 Code RO 133 .text._Z19validateApplicationv OTA.o
0x08001370 0x000003c8 Code RO 46 .text._Z20aes128_decrypt_blockP14aes128_contextPKhPh aes128.o
0x08001738 0x000003e6 Code RO 42 .text._Z20aes128_encrypt_blockP14aes128_contextPKhPh aes128.o
0x08001b1e 0x00000002 PAD
0x08001b20 0x00000210 Code RO 145 .text._Z24calculate_crc32_with_keyPKhS0_Ph OTA.o
0x08001d30 0x0000002c Code RO 48 .text._Z26aes128_ecb_decrypt_48bytesP14aes128_contextPKhPh aes128.o
0x08001d5c 0x000004a8 Code RO 143 .text._ZN10OTAHandler16handleOTAMessageEjPhh OTA.o
0x08002204 0x00000088 Code RO 135 .text._ZN10OTAHandler17jumpToApplicationEv OTA.o
0x0800228c 0x0000005a Code RO 139 .text._ZN10OTAHandler20writeApplicationDataEjPhj OTA.o
0x080022e6 0x00000002 PAD
0x080022e8 0x00000078 Code RO 129 .text._ZN10OTAHandler7processEv OTA.o
0x08002360 0x00000028 Code RO 925 .text._ZN10__cxxabiv121__isOurExceptionClassEPK21_Unwind_Control_Block libcppabi_wx.l(cxa_exception.cpp.o)
0x08002388 0x00000060 Code RO 953 .text._ZN10__cxxabiv1L22__cxa_end_cleanup_implEv libcppabi_wx.l(cxa_exception.cpp.o)
0x080023e8 0x0000008c Code RO 177 .text._ZN14CAN_transmiter12sendDATA_ACKEjPh Can.o
0x08002474 0x0000014e Code RO 179 .text._ZN14CAN_transmiter15CANFD_AsyncSendEjhPh Can.o
0x080025c2 0x00000002 PAD
0x080025c4 0x0000004e Code RO 175 .text._ZN14CAN_transmiter19communication_checkEv Can.o
0x08002612 0x00000002 PAD
0x08002614 0x00000038 Code RO 173 .text._ZN14CAN_transmiter4initEv Can.o
0x0800264c 0x00000074 Code RO 996 .text._ZSt11__terminatePFvvE libcppabi_wx.l(cxa_handlers.cpp.o)
0x080026c0 0x00000030 Code RO 987 .text._ZSt9terminatev libcppabi_wx.l(cxa_handlers.cpp.o)
0x080026f0 0x0000000a Code RO 982 .text.__clang_call_terminate libcppabi_wx.l(cxa_exception.cpp.o)
0x080026fa 0x00000002 PAD
0x080026fc 0x0000006c Code RO 930 .text.__cxa_begin_catch libcppabi_wx.l(cxa_exception.cpp.o)
0x08002768 0x0000000a Code RO 1353 .text.__cxa_get_globals libcppabi_wx.l(cxa_exception_storage.cpp.o)
0x08002772 0x0000000a Code RO 1355 .text.__cxa_get_globals_fast libcppabi_wx.l(cxa_exception_storage.cpp.o)
0x0800277c 0x00000026 Code RO 236 .text.can_deinit gd32c10x_can.o
0x080027a2 0x00000002 PAD
0x080027a4 0x00000114 Code RO 242 .text.can_fd_init gd32c10x_can.o
0x080028b8 0x000000b2 Code RO 244 .text.can_filter_init gd32c10x_can.o
0x0800296a 0x00000002 PAD
0x0800296c 0x00000176 Code RO 240 .text.can_init gd32c10x_can.o
0x08002ae2 0x00000002 PAD
0x08002ae4 0x00000008 Code RO 286 .text.can_interrupt_enable gd32c10x_can.o
0x08002aec 0x00000016 Code RO 296 .text.can_interrupt_flag_clear gd32c10x_can.o
0x08002b02 0x00000002 PAD
0x08002b04 0x00000066 Code RO 294 .text.can_interrupt_flag_get gd32c10x_can.o
0x08002b6a 0x00000002 PAD
0x08002b6c 0x000001f4 Code RO 270 .text.can_message_receive gd32c10x_can.o
0x08002d60 0x000001f0 Code RO 264 .text.can_message_transmit gd32c10x_can.o
0x08002f50 0x00000018 Code RO 274 .text.can_receive_message_length_get gd32c10x_can.o
0x08002f68 0x00000072 Code RO 238 .text.can_struct_para_init gd32c10x_can.o
0x08002fda 0x00000002 PAD
0x08002fdc 0x000001b0 Code RO 171 .text.canfd_config Can.o
0x0800318c 0x00000018 Code RO 310 .text.crc_deinit gd32c10x_crc.o
0x080031a4 0x00000024 Code RO 67 .text.delay_1ms systick.o
0x080031c8 0x00000018 Code RO 69 .text.delay_decrement systick.o
0x080031e0 0x00000024 Code RO 376 .text.dma_channel_disable gd32c10x_dma.o
0x08003204 0x00000024 Code RO 374 .text.dma_channel_enable gd32c10x_dma.o
0x08003228 0x00000074 Code RO 364 .text.dma_init gd32c10x_dma.o
0x0800329c 0x00000022 Code RO 410 .text.dma_interrupt_enable gd32c10x_dma.o
0x080032be 0x00000002 PAD
0x080032c0 0x0000000e Code RO 408 .text.dma_interrupt_flag_clear gd32c10x_dma.o
0x080032ce 0x00000002 PAD
0x080032d0 0x0000003a Code RO 406 .text.dma_interrupt_flag_get gd32c10x_dma.o
0x0800330a 0x00000002 PAD
0x0800330c 0x0000001a Code RO 362 .text.dma_struct_para_init gd32c10x_dma.o
0x08003326 0x00000002 PAD
0x08003328 0x00000012 Code RO 480 .text.fmc_lock gd32c10x_fmc.o
0x0800333a 0x00000002 PAD
0x0800333c 0x00000166 Code RO 484 .text.fmc_page_erase gd32c10x_fmc.o
0x080034a2 0x00000002 PAD
0x080034a4 0x00000026 Code RO 478 .text.fmc_unlock gd32c10x_fmc.o
0x080034ca 0x00000002 PAD
0x080034cc 0x000001aa Code RO 490 .text.fmc_word_program gd32c10x_fmc.o
0x08003676 0x00000002 PAD
0x08003678 0x0000002c Code RO 87 .text.fputc initial.o
0x080036a4 0x00000098 Code RO 219 .text.gd_eval_com_init gd32c10x_eval.o
0x0800373c 0x00000004 Code RO 574 .text.gpio_bit_reset gd32c10x_gpio.o
0x08003740 0x000002c0 Code RO 570 .text.gpio_init gd32c10x_gpio.o
0x08003a00 0x00000080 Code RO 588 .text.gpio_pin_remap_config gd32c10x_gpio.o
0x08003a80 0x0000006e Code RO 10 .text.main main.o
0x08003aee 0x00000002 PAD
0x08003af0 0x00000060 Code RO 617 .text.nvic_irq_enable gd32c10x_misc.o
0x08003b50 0x0000001c Code RO 621 .text.nvic_vector_table_set gd32c10x_misc.o
0x08003b6c 0x0000010c Code RO 767 .text.rcu_clock_freq_get gd32c10x_rcu.o
0x08003c78 0x00000020 Code RO 687 .text.rcu_periph_clock_disable gd32c10x_rcu.o
0x08003c98 0x0000001e Code RO 685 .text.rcu_periph_clock_enable gd32c10x_rcu.o
0x08003cb6 0x00000002 PAD
0x08003cb8 0x00000020 Code RO 695 .text.rcu_periph_reset_disable gd32c10x_rcu.o
0x08003cd8 0x0000001e Code RO 693 .text.rcu_periph_reset_enable gd32c10x_rcu.o
0x08003cf6 0x00000002 PAD
0x08003cf8 0x00000014 Code RO 701 .text.rcu_system_clock_source_config gd32c10x_rcu.o
0x08003d0c 0x00000048 Code RO 65 .text.systick_config systick.o
0x08003d54 0x00000006 Code RO 1338 .text.unlikely.abort_message libcppabi_wx.l(abort_message.cpp.o)
0x08003d5a 0x00000002 PAD
0x08003d5c 0x0000006a Code RO 783 .text.usart_baudrate_set gd32c10x_usart.o
0x08003dc6 0x00000002 PAD
0x08003dc8 0x00000008 Code RO 809 .text.usart_data_transmit gd32c10x_usart.o
0x08003dd0 0x0000007a Code RO 781 .text.usart_deinit gd32c10x_usart.o
0x08003e4a 0x00000002 PAD
0x08003e4c 0x0000000a Code RO 791 .text.usart_enable gd32c10x_usart.o
0x08003e56 0x00000002 PAD
0x08003e58 0x00000010 Code RO 871 .text.usart_flag_get gd32c10x_usart.o
0x08003e68 0x00000014 Code RO 797 .text.usart_receive_config gd32c10x_usart.o
0x08003e7c 0x00000014 Code RO 795 .text.usart_transmit_config gd32c10x_usart.o
0x08003e90 0x0000000e Code RO 1930 i.__scatterload_copy mc_w.l(handlers.o)
0x08003e9e 0x00000002 Code RO 1931 i.__scatterload_null mc_w.l(handlers.o)
0x08003ea0 0x0000000e Code RO 1932 i.__scatterload_zeroinit mc_w.l(handlers.o)
0x08003eae 0x00000002 PAD
0x08003eb0 0x00000024 Code RO 1062 i.puts mc_w.l(puts.o)
0x08003ed4 0x00000100 Data RO 53 .rodata._ZL4sbox aes128.o
0x08003fd4 0x00000010 Data RO 153 .rodata._ZL8K_master OTA.o
0x08003fe4 0x00000400 Data RO 155 .rodata._ZZ24calculate_crc32_with_keyPKhS0_PhE9crc_table OTA.o
0x080043e4 0x00000008 Data RO 769 .rodata.cst8 gd32c10x_rcu.o
0x080043ec 0x00000007 Data RO 298 .rodata.g_can_fdlength_table gd32c10x_can.o
0x080043f3 0x00000100 Data RO 52 .rodata.inv_sbox aes128.o
0x080044f3 0x00000017 Data RO 13 .rodata.str1.1 main.o
0x0800450a 0x00000002 PAD
0x0800450c 0x00000020 Data RO 1929 Region$$Table anon$$obj.o
Execution Region RW_NOINIT (Base: 0x20000000, Size: 0x00000000, Max: 0x00007200, ABSOLUTE, UNINIT)
@@ -154,31 +158,33 @@ Memory Map of the image
**** No section assigned to this execution region ****
Execution Region RW_RAM0 (Base: 0x20000000, Size: 0x00000a70, Max: 0x00007200, ABSOLUTE, COMPRESSED[0x00000020])
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 1502 .data mc_w.l(stdout.o)
0x20000004 0x000000e8 Data RW 194 .data.CAN0_transmiter Can.o
0x200000ec 0x00000004 Data RW 912 .data.SystemCoreClock system_gd32c10x.o
0x200000f0 0x00000004 Data RW 1350 .data.__cxa_terminate_handler libcppabi_wx.l(cxa_default_handlers.cpp.o)
0x200000f4 0x0000011c Data RW 155 .data.ota OTA.o
0x20000210 0x00000004 Zero RW 79 .bss._ZL5delay systick.o
0x20000214 0x0000000c Zero RW 1359 .bss._ZN10__cxxabiv1L10eh_globalsE libcppabi_wx.l(cxa_exception_storage.cpp.o)
0x20000220 0x00000001 Zero RW 156 .bss._ZZN10OTAHandler7processEvE4zero OTA.o
0x20000221 0x00000007 PAD
0x20000228 0x00000008 Zero RW 197 .bss.can_rx_buffer Can.o
0x20000230 0x00000008 Zero RW 198 .bss.can_tx_buffer Can.o
0x20000238 0x0000001c Zero RW 195 .bss.dma_rx_parameter Can.o
0x20000254 0x0000001c Zero RW 196 .bss.dma_tx_parameter Can.o
0x20000270 0x00000800 Zero RW 897 STACK startup_gd32c10x.o
0x20000000 0x00000004 Data RW 1500 .data mc_w.l(stdout.o)
0x20000004 0x000000e8 Data RW 191 .data.CAN0_transmiter Can.o
0x200000ec 0x00000004 Data RW 908 .data.SystemCoreClock system_gd32c10x.o
0x200000f0 0x00000004 Data RW 1348 .data.__cxa_terminate_handler libcppabi_wx.l(cxa_default_handlers.cpp.o)
0x200000f4 0x00000004 PAD
0x200000f8 0x00000004 Zero RW 73 .bss._ZL5delay systick.o
0x200000fc 0x0000000c Zero RW 1357 .bss._ZN10__cxxabiv1L10eh_globalsE libcppabi_wx.l(cxa_exception_storage.cpp.o)
0x20000108 0x00000001 Zero RW 152 .bss._ZZN10OTAHandler7processEvE4zero OTA.o
0x20000109 0x00000007 PAD
0x20000110 0x00000008 Zero RW 194 .bss.can_rx_buffer Can.o
0x20000118 0x00000008 Zero RW 195 .bss.can_tx_buffer Can.o
0x20000120 0x0000001c Zero RW 192 .bss.dma_rx_parameter Can.o
0x2000013c 0x0000001c Zero RW 193 .bss.dma_tx_parameter Can.o
0x20000158 0x0000010c Zero RW 151 .bss.ota OTA.o
0x20000264 0x00000004 PAD
0x20000268 0x00000800 Zero RW 893 STACK startup_gd32c10x.o
Execution Region ARM_LIB_HEAP (Base: 0x20000a70, Size: 0x00000c00, Max: 0x00000c00, ABSOLUTE)
Execution Region ARM_LIB_HEAP (Base: 0x20000a68, Size: 0x00000c00, Max: 0x00000c00, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x20000a70 0x00000c00 Zero RW 1 ARM_LIB_HEAP.bss anon$$obj.o
0x20000a68 0x00000c00 Zero RW 1 ARM_LIB_HEAP.bss anon$$obj.o
Execution Region ARM_LIB_STACK (Base: 0x20007e00, Size: 0x00000200, Max: 0x00000200, ABSOLUTE)
File diff suppressed because it is too large Load Diff