From 9dad3daf61e65210a09fe86b580595e083c26580 Mon Sep 17 00:00:00 2001 From: "evan.liu" <583229071@qq.com> Date: Sun, 6 Sep 2026 06:40:55 +0800 Subject: [PATCH] =?UTF-8?q?boot=20V1.01.02:=203.3V=20strap=20=E8=BF=9B?= =?UTF-8?q?=E5=85=A5=20download=20+=20CLI=20TAB=20=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Boot/src/main.c: PB5 3.3V strap 引脚 (输入+内部下拉), 拉高即进 download 并跳过 2s 回车窗口 (dev log §53) - Boot/src/boot_cli.c: 从 APP 移植 TAB 命令名自动补全 (单匹配补全+空格, 多匹配公共前缀/列候选) (dev log §54) - Boot/src/boot_version.h: V1.01.00 -> V1.01.02 - docs/开发日志.md: 新增 §53/§54 - 出包: mothercup_ble_prod.hex/bin 更新 (boot bin 13580B) --- Boot/MDK-ARM/Listings/caiic_boot.map | 741 ++++++------ Boot/MDK-ARM/bin/caiic_boot.bin | Bin 12924 -> 13580 bytes Boot/MDK-ARM/build.log | 12 +- Boot/src/boot_cli.c | 133 ++- Boot/src/boot_version.h | 2 +- Boot/src/main.c | 54 +- docs/开发日志.md | 46 + tools/out/mothercup_ble_prod.bin | Bin 88868 -> 88868 bytes tools/out/mothercup_ble_prod.hex | 1611 +++++++++++++------------- 9 files changed, 1446 insertions(+), 1153 deletions(-) diff --git a/Boot/MDK-ARM/Listings/caiic_boot.map b/Boot/MDK-ARM/Listings/caiic_boot.map index 61154d7..4fb211a 100644 --- a/Boot/MDK-ARM/Listings/caiic_boot.map +++ b/Boot/MDK-ARM/Listings/caiic_boot.map @@ -31,9 +31,14 @@ Section Cross References system_n32wb03x.o(i.read_flash_ID) refers to system_n32wb03x.o(i.__set_PRIMASK) for __set_PRIMASK system_n32wb03x.o(i.read_flash_ID) refers to system_n32wb03x.o(.constdata) for CMD_RDID system_n32wb03x.o(i.system_delay_n_10us) refers to system_n32wb03x.o(.emb_text) for system_delay_cycles + main.o(i.boot_dl_strap_active) refers to n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) for RCC_EnableAPB2PeriphClk + main.o(i.boot_dl_strap_active) refers to n32wb03x_gpio.o(i.GPIO_InitStruct) for GPIO_InitStruct + main.o(i.boot_dl_strap_active) refers to n32wb03x_gpio.o(i.GPIO_InitPeripheral) for GPIO_InitPeripheral + main.o(i.boot_dl_strap_active) refers to n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) for GPIO_ReadInputDataBit main.o(i.main) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32 main.o(i.main) refers to boot_usart.o(i.boot_usart_init) for boot_usart_init main.o(i.main) refers to main.o(i.puts_boot) for puts_boot + main.o(i.main) refers to main.o(i.boot_dl_strap_active) for boot_dl_strap_active main.o(i.main) refers to boot_usart.o(i.boot_millis) for boot_millis main.o(i.main) refers to boot_usart.o(i.boot_usart_read) for boot_usart_read main.o(i.main) refers to main.o(i.image_sane) for image_sane @@ -79,6 +84,9 @@ Section Cross References boot_cli.o(i.CmdUartInfo) refers to boot_cli.o(i.cli_write) for cli_write boot_cli.o(i.CmdVersion) refers to boot_cli.o(i.cli_printf) for cli_printf boot_cli.o(i.CmdVersion) refers to system_n32wb03x.o(.data) for SystemCoreClock + boot_cli.o(i.boot_cli_redraw) refers to strlen.o(.text) for strlen + boot_cli.o(i.boot_cli_redraw) refers to boot_cli.o(i.cli_write) for cli_write + boot_cli.o(i.boot_cli_redraw) refers to boot_usart.o(i.boot_usart_write) for boot_usart_write boot_cli.o(i.boot_cli_run) refers to boot_cli.o(i.cli_write) for cli_write boot_cli.o(i.boot_cli_run) refers to app_ota.o(i.app_ota_reset_poll) for app_ota_reset_poll boot_cli.o(i.boot_cli_run) refers to boot_usart.o(i.boot_millis) for boot_millis @@ -86,10 +94,19 @@ Section Cross References boot_cli.o(i.boot_cli_run) refers to boot_usart.o(i.boot_usart_read) for boot_usart_read boot_cli.o(i.boot_cli_run) refers to app_ota.o(i.app_ota_chan_rx_uart) for app_ota_chan_rx_uart boot_cli.o(i.boot_cli_run) refers to boot_cli.o(i.cli_exec_line) for cli_exec_line + boot_cli.o(i.boot_cli_run) refers to boot_cli.o(i.boot_cli_tab_complete) for boot_cli_tab_complete boot_cli.o(i.boot_cli_run) refers to boot_usart.o(i.boot_usart_write) for boot_usart_write boot_cli.o(i.boot_cli_run) refers to boot_cli.o(.conststring) for .conststring boot_cli.o(i.boot_cli_run) refers to boot_cli.o(.data) for s_otaMode boot_cli.o(i.boot_cli_run) refers to boot_cli.o(.bss) for s_line + boot_cli.o(i.boot_cli_tab_complete) refers to memchr.o(.text) for memchr + boot_cli.o(i.boot_cli_tab_complete) refers to strncmp.o(.text) for strncmp + boot_cli.o(i.boot_cli_tab_complete) refers to strcpy.o(.text) for strcpy + boot_cli.o(i.boot_cli_tab_complete) refers to strlen.o(.text) for strlen + boot_cli.o(i.boot_cli_tab_complete) refers to boot_usart.o(i.boot_usart_write) for boot_usart_write + boot_cli.o(i.boot_cli_tab_complete) refers to boot_cli.o(i.cli_write) for cli_write + boot_cli.o(i.boot_cli_tab_complete) refers to boot_cli.o(i.boot_cli_redraw) for boot_cli_redraw + boot_cli.o(i.boot_cli_tab_complete) refers to boot_cli.o(.constdata) for s_cmds boot_cli.o(i.cli_exec_line) refers to strcmp.o(.text) for strcmp boot_cli.o(i.cli_exec_line) refers to boot_cli.o(i.cli_printf) for cli_printf boot_cli.o(i.cli_exec_line) refers to boot_cli.o(.constdata) for s_cmds @@ -318,7 +335,6 @@ Removing Unused input sections from the image. Removing n32wb03x_gpio.o(i.GPIO_DeInit), (68 bytes). Removing n32wb03x_gpio.o(i.GPIO_DeInitPin), (126 bytes). Removing n32wb03x_gpio.o(i.GPIO_ReadInputData), (8 bytes). - Removing n32wb03x_gpio.o(i.GPIO_ReadInputDataBit), (20 bytes). Removing n32wb03x_gpio.o(i.GPIO_ReadOutputData), (8 bytes). Removing n32wb03x_gpio.o(i.GPIO_ReadOutputDataBit), (20 bytes). Removing n32wb03x_gpio.o(i.GPIO_ResetBits), (4 bytes). @@ -361,7 +377,7 @@ Removing Unused input sections from the image. Removing n32wb03x_qflash.o(i.Qflash_Read), (68 bytes). Removing n32wb03x_gpio.o(i.__ARM_common_switch8), (28 bytes). -98 unused section(s) (total 3926 bytes) removed from the image. +97 unused section(s) (total 3906 bytes) removed from the image. ============================================================================== @@ -371,43 +387,46 @@ Image Symbol Table Symbol Name Value Ov Type Size Object(Section) - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE - ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalpha_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 iscntrl_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isprint_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/errno.c 0x00000000 Number 0 errno.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE + ../clib/microlib/string/memchr.c 0x00000000 Number 0 memchr.o ABSOLUTE ../clib/microlib/string/memcmp.c 0x00000000 Number 0 memcmp.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE ../clib/microlib/string/strcmp.c 0x00000000 Number 0 strcmp.o ABSOLUTE + ../clib/microlib/string/strcpy.c 0x00000000 Number 0 strcpy.o ABSOLUTE ../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 _strtoul.o ABSOLUTE - ../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE + ../clib/microlib/string/strncmp.c 0x00000000 Number 0 strncmp.o ABSOLUTE ../clib/scanf.c 0x00000000 Number 0 strtoul.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _strtoul.o ABSOLUTE ..\..\mcm-ddc-ble\src\app_bootset.c 0x00000000 Number 0 app_bootset.o ABSOLUTE ..\..\mcm-ddc-ble\src\app_ota.c 0x00000000 Number 0 app_ota.o ABSOLUTE ..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\CMSIS\device\startup\startup_n32wb03x.s 0x00000000 Number 0 startup_n32wb03x.o ABSOLUTE @@ -453,134 +472,144 @@ Image Symbol Table .text 0x01000150 Section 0 memseta.o(.text) .text 0x01000174 Section 0 strlen.o(.text) .text 0x01000182 Section 0 strcmp.o(.text) - .text 0x0100019e Section 0 memcmp.o(.text) - .text 0x010001b8 Section 0 strtoul.o(.text) - .text 0x01000230 Section 0 ctype_o.o(.text) - .text 0x01000238 Section 0 _strtoul.o(.text) - .text 0x010002e0 Section 36 init.o(.text) - .text 0x01000304 Section 0 _chval.o(.text) - i.AppBootset_CmdAppswitch 0x01000324 Section 0 app_bootset.o(i.AppBootset_CmdAppswitch) - i.AppBootset_CmdBsdump 0x010005fc Section 0 app_bootset.o(i.AppBootset_CmdBsdump) - i.AppBootset_CmdBsset 0x0100061c Section 0 app_bootset.o(i.AppBootset_CmdBsset) - i.CmdDevInfo 0x01000914 Section 0 boot_cli.o(i.CmdDevInfo) - CmdDevInfo 0x01000915 Thumb Code 90 boot_cli.o(i.CmdDevInfo) - i.CmdHelp 0x010009f4 Section 0 boot_cli.o(i.CmdHelp) - CmdHelp 0x010009f5 Thumb Code 114 boot_cli.o(i.CmdHelp) - i.CmdOta 0x01000aa8 Section 0 boot_cli.o(i.CmdOta) - CmdOta 0x01000aa9 Thumb Code 20 boot_cli.o(i.CmdOta) - i.CmdReset 0x01000ac4 Section 0 boot_cli.o(i.CmdReset) - CmdReset 0x01000ac5 Thumb Code 34 boot_cli.o(i.CmdReset) - i.CmdUartInfo 0x01000b00 Section 0 boot_cli.o(i.CmdUartInfo) - CmdUartInfo 0x01000b01 Thumb Code 26 boot_cli.o(i.CmdUartInfo) - i.CmdVersion 0x01000bb0 Section 0 boot_cli.o(i.CmdVersion) - CmdVersion 0x01000bb1 Thumb Code 26 boot_cli.o(i.CmdVersion) - i.DMA_DeInit 0x01000c24 Section 0 n32wb03x_dma.o(i.DMA_DeInit) - i.DMA_EnableChannel 0x01000cc4 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel) - i.DMA_GetCurrDataCounter 0x01000ce0 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) - i.DMA_Init 0x01000ce8 Section 0 n32wb03x_dma.o(i.DMA_Init) - i.DMA_RequestRemap 0x01000d28 Section 0 n32wb03x_dma.o(i.DMA_RequestRemap) - i.GPIO_InitPeripheral 0x01000d38 Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral) - i.GPIO_InitStruct 0x01000e40 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct) - i.OTPTrim_Read 0x01000e5c Section 0 system_n32wb03x.o(i.OTPTrim_Read) - i.Qflash_Erase_Sector 0x01000f28 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector) - i.Qflash_Init 0x01000f64 Section 0 n32wb03x_qflash.o(i.Qflash_Init) - i.Qflash_Write 0x01000f9c Section 0 n32wb03x_qflash.o(i.Qflash_Write) - i.RCC_EnableAHBPeriphClk 0x01000fe0 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) - i.RCC_EnableAPB2PeriphClk 0x01001000 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) - i.RCC_GetClocksFreqValue 0x01001020 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) - i.RCC_HsiCalib 0x010010c4 Section 0 system_n32wb03x.o(i.RCC_HsiCalib) - RCC_HsiCalib 0x010010c5 Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib) - i.SystemInit 0x010011f4 Section 0 system_n32wb03x.o(i.SystemInit) - i.SystemTrimValueRead 0x01001310 Section 0 system_n32wb03x.o(i.SystemTrimValueRead) - i.USART_Enable 0x01001324 Section 0 n32wb03x_usart.o(i.USART_Enable) - i.USART_EnableDMA 0x01001344 Section 0 n32wb03x_usart.o(i.USART_EnableDMA) - i.USART_GetFlagStatus 0x01001358 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus) - i.USART_Init 0x01001378 Section 0 n32wb03x_usart.o(i.USART_Init) - i.USART_SendData 0x0100142c Section 0 n32wb03x_usart.o(i.USART_SendData) - i.__aeabi_errno_addr 0x01001434 Section 0 errno.o(i.__aeabi_errno_addr) - i.__scatterload_copy 0x0100143c Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x0100144a Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x0100144c Section 14 handlers.o(i.__scatterload_zeroinit) - i.__set_PRIMASK 0x0100145a Section 0 system_n32wb03x.o(i.__set_PRIMASK) - __set_PRIMASK 0x0100145b Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK) - i.__set_PRIMASK 0x01001460 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK) - __set_PRIMASK 0x01001461 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK) - i.app_ota_abort 0x01001468 Section 0 app_ota.o(i.app_ota_abort) - i.app_ota_chan_idle 0x010014a4 Section 0 app_ota.o(i.app_ota_chan_idle) - i.app_ota_chan_rx 0x010014b8 Section 0 app_ota.o(i.app_ota_chan_rx) - i.app_ota_chan_rx_uart 0x010015f8 Section 0 app_ota.o(i.app_ota_chan_rx_uart) - i.app_ota_handle_frame 0x0100161c Section 0 app_ota.o(i.app_ota_handle_frame) - i.app_ota_reset_poll 0x01001698 Section 0 app_ota.o(i.app_ota_reset_poll) - i.boot_cli_run 0x010016f4 Section 0 boot_cli.o(i.boot_cli_run) - i.boot_delay_ms 0x0100183c Section 0 boot_usart.o(i.boot_delay_ms) - i.boot_millis 0x01001854 Section 0 boot_usart.o(i.boot_millis) - i.boot_usart_init 0x0100187c Section 0 boot_usart.o(i.boot_usart_init) - i.boot_usart_read 0x0100198c Section 0 boot_usart.o(i.boot_usart_read) - i.boot_usart_rx_head 0x010019cc Section 0 boot_usart.o(i.boot_usart_rx_head) - boot_usart_rx_head 0x010019cd Thumb Code 18 boot_usart.o(i.boot_usart_rx_head) - i.boot_usart_write 0x010019e4 Section 0 boot_usart.o(i.boot_usart_write) - i.bootset_commit 0x01001a14 Section 0 app_bootset.o(i.bootset_commit) - bootset_commit 0x01001a15 Thumb Code 74 app_bootset.o(i.bootset_commit) - i.bootset_crc 0x01001a68 Section 0 app_bootset.o(i.bootset_crc) - bootset_crc 0x01001a69 Thumb Code 14 app_bootset.o(i.bootset_crc) - i.bootset_ensure_qflash 0x01001a78 Section 0 app_bootset.o(i.bootset_ensure_qflash) - bootset_ensure_qflash 0x01001a79 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash) - i.bootset_print 0x01001a94 Section 0 app_bootset.o(i.bootset_print) - bootset_print 0x01001a95 Thumb Code 98 app_bootset.o(i.bootset_print) - i.bootset_valid 0x01001c00 Section 0 app_bootset.o(i.bootset_valid) - bootset_valid 0x01001c01 Thumb Code 32 app_bootset.o(i.bootset_valid) - i.caiic_crc32 0x01001c24 Section 0 boot_crc32.o(i.caiic_crc32) - i.cli_exec_line 0x01001c68 Section 0 boot_cli.o(i.cli_exec_line) - cli_exec_line 0x01001c69 Thumb Code 162 boot_cli.o(i.cli_exec_line) - i.cli_printf 0x01001d34 Section 0 boot_cli.o(i.cli_printf) - i.cli_write 0x01001ed0 Section 0 boot_cli.o(i.cli_write) - i.image_sane 0x01001ee8 Section 0 main.o(i.image_sane) - image_sane 0x01001ee9 Thumb Code 44 main.o(i.image_sane) - i.jump_to_app 0x01001f1c Section 0 main.o(i.jump_to_app) - jump_to_app 0x01001f1d Thumb Code 30 main.o(i.jump_to_app) - i.main 0x01001f40 Section 0 main.o(i.main) - i.ota_crc16 0x010020c0 Section 0 app_ota.o(i.ota_crc16) - ota_crc16 0x010020c1 Thumb Code 68 app_ota.o(i.ota_crc16) - i.ota_erase_up_to 0x0100210c Section 0 app_ota.o(i.ota_erase_up_to) - ota_erase_up_to 0x0100210d Thumb Code 54 app_ota.o(i.ota_erase_up_to) - i.ota_on_begin 0x0100214c Section 0 app_ota.o(i.ota_on_begin) - ota_on_begin 0x0100214d Thumb Code 294 app_ota.o(i.ota_on_begin) - i.ota_on_data 0x010022bc Section 0 app_ota.o(i.ota_on_data) - ota_on_data 0x010022bd Thumb Code 396 app_ota.o(i.ota_on_data) - i.ota_on_end 0x01002464 Section 0 app_ota.o(i.ota_on_end) - ota_on_end 0x01002465 Thumb Code 326 app_ota.o(i.ota_on_end) - i.ota_program 0x010025d4 Section 0 app_ota.o(i.ota_program) - ota_program 0x010025d5 Thumb Code 46 app_ota.o(i.ota_program) - i.ota_rd32 0x0100260c Section 0 app_ota.o(i.ota_rd32) - ota_rd32 0x0100260d Thumb Code 24 app_ota.o(i.ota_rd32) - i.ota_respond 0x01002624 Section 0 app_ota.o(i.ota_respond) - ota_respond 0x01002625 Thumb Code 118 app_ota.o(i.ota_respond) - i.ota_uart_sink 0x010026a0 Section 0 app_ota.o(i.ota_uart_sink) - ota_uart_sink 0x010026a1 Thumb Code 22 app_ota.o(i.ota_uart_sink) - i.ota_update_bootsetting 0x010026bc Section 0 app_ota.o(i.ota_update_bootsetting) - ota_update_bootsetting 0x010026bd Thumb Code 174 app_ota.o(i.ota_update_bootsetting) - i.parse_u32 0x01002788 Section 0 app_bootset.o(i.parse_u32) - parse_u32 0x01002789 Thumb Code 46 app_bootset.o(i.parse_u32) - i.puts_boot 0x010027b6 Section 0 main.o(i.puts_boot) - puts_boot 0x010027b7 Thumb Code 24 main.o(i.puts_boot) - i.read_flash_ID 0x010027d0 Section 0 system_n32wb03x.o(i.read_flash_ID) - read_flash_ID 0x010027d1 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID) - i.str_pad 0x01002814 Section 0 boot_cli.o(i.str_pad) - str_pad 0x01002815 Thumb Code 78 boot_cli.o(i.str_pad) - i.u32_to_str 0x01002862 Section 0 boot_cli.o(i.u32_to_str) - u32_to_str 0x01002863 Thumb Code 108 boot_cli.o(i.u32_to_str) - .constdata 0x010028ce Section 472 system_n32wb03x.o(.constdata) - .constdata 0x01002aa8 Section 108 boot_cli.o(.constdata) - s_cmds 0x01002aa8 Data 108 boot_cli.o(.constdata) - .constdata 0x01002b14 Section 12 n32wb03x_rcc.o(.constdata) - s_ApbPresTable 0x01002b14 Data 8 n32wb03x_rcc.o(.constdata) - s_AhbPresTable 0x01002b1c Data 4 n32wb03x_rcc.o(.constdata) - .constdata 0x01002b20 Section 804 n32wb03x_qflash.o(.constdata) - .constdata 0x01002e44 Section 129 ctype_o.o(.constdata) - .constdata 0x01002ec8 Section 4 ctype_o.o(.constdata) - table 0x01002ec8 Data 4 ctype_o.o(.constdata) - .conststring 0x01002ecc Section 666 boot_cli.o(.conststring) - .conststring 0x01003168 Section 145 app_bootset.o(.conststring) + .text 0x0100019e Section 0 memchr.o(.text) + .text 0x010001b2 Section 0 memcmp.o(.text) + .text 0x010001cc Section 0 strcpy.o(.text) + .text 0x010001de Section 0 strncmp.o(.text) + .text 0x010001fc Section 0 strtoul.o(.text) + .text 0x01000274 Section 0 ctype_o.o(.text) + .text 0x0100027c Section 0 _strtoul.o(.text) + .text 0x01000324 Section 36 init.o(.text) + .text 0x01000348 Section 0 _chval.o(.text) + i.AppBootset_CmdAppswitch 0x01000368 Section 0 app_bootset.o(i.AppBootset_CmdAppswitch) + i.AppBootset_CmdBsdump 0x01000640 Section 0 app_bootset.o(i.AppBootset_CmdBsdump) + i.AppBootset_CmdBsset 0x01000660 Section 0 app_bootset.o(i.AppBootset_CmdBsset) + i.CmdDevInfo 0x01000958 Section 0 boot_cli.o(i.CmdDevInfo) + CmdDevInfo 0x01000959 Thumb Code 90 boot_cli.o(i.CmdDevInfo) + i.CmdHelp 0x01000a38 Section 0 boot_cli.o(i.CmdHelp) + CmdHelp 0x01000a39 Thumb Code 114 boot_cli.o(i.CmdHelp) + i.CmdOta 0x01000aec Section 0 boot_cli.o(i.CmdOta) + CmdOta 0x01000aed Thumb Code 20 boot_cli.o(i.CmdOta) + i.CmdReset 0x01000b08 Section 0 boot_cli.o(i.CmdReset) + CmdReset 0x01000b09 Thumb Code 34 boot_cli.o(i.CmdReset) + i.CmdUartInfo 0x01000b44 Section 0 boot_cli.o(i.CmdUartInfo) + CmdUartInfo 0x01000b45 Thumb Code 26 boot_cli.o(i.CmdUartInfo) + i.CmdVersion 0x01000bf4 Section 0 boot_cli.o(i.CmdVersion) + CmdVersion 0x01000bf5 Thumb Code 26 boot_cli.o(i.CmdVersion) + i.DMA_DeInit 0x01000c68 Section 0 n32wb03x_dma.o(i.DMA_DeInit) + i.DMA_EnableChannel 0x01000d08 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel) + i.DMA_GetCurrDataCounter 0x01000d24 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) + i.DMA_Init 0x01000d2c Section 0 n32wb03x_dma.o(i.DMA_Init) + i.DMA_RequestRemap 0x01000d6c Section 0 n32wb03x_dma.o(i.DMA_RequestRemap) + i.GPIO_InitPeripheral 0x01000d7c Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral) + i.GPIO_InitStruct 0x01000e84 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct) + i.GPIO_ReadInputDataBit 0x01000ea0 Section 0 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) + i.OTPTrim_Read 0x01000eb4 Section 0 system_n32wb03x.o(i.OTPTrim_Read) + i.Qflash_Erase_Sector 0x01000f80 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector) + i.Qflash_Init 0x01000fbc Section 0 n32wb03x_qflash.o(i.Qflash_Init) + i.Qflash_Write 0x01000ff4 Section 0 n32wb03x_qflash.o(i.Qflash_Write) + i.RCC_EnableAHBPeriphClk 0x01001038 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) + i.RCC_EnableAPB2PeriphClk 0x01001058 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) + i.RCC_GetClocksFreqValue 0x01001078 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) + i.RCC_HsiCalib 0x0100111c Section 0 system_n32wb03x.o(i.RCC_HsiCalib) + RCC_HsiCalib 0x0100111d Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib) + i.SystemInit 0x0100124c Section 0 system_n32wb03x.o(i.SystemInit) + i.SystemTrimValueRead 0x01001368 Section 0 system_n32wb03x.o(i.SystemTrimValueRead) + i.USART_Enable 0x0100137c Section 0 n32wb03x_usart.o(i.USART_Enable) + i.USART_EnableDMA 0x0100139c Section 0 n32wb03x_usart.o(i.USART_EnableDMA) + i.USART_GetFlagStatus 0x010013b0 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus) + i.USART_Init 0x010013d0 Section 0 n32wb03x_usart.o(i.USART_Init) + i.USART_SendData 0x01001484 Section 0 n32wb03x_usart.o(i.USART_SendData) + i.__aeabi_errno_addr 0x0100148c Section 0 errno.o(i.__aeabi_errno_addr) + i.__scatterload_copy 0x01001494 Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x010014a2 Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x010014a4 Section 14 handlers.o(i.__scatterload_zeroinit) + i.__set_PRIMASK 0x010014b2 Section 0 system_n32wb03x.o(i.__set_PRIMASK) + __set_PRIMASK 0x010014b3 Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK) + i.__set_PRIMASK 0x010014b8 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK) + __set_PRIMASK 0x010014b9 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK) + i.app_ota_abort 0x010014c0 Section 0 app_ota.o(i.app_ota_abort) + i.app_ota_chan_idle 0x010014fc Section 0 app_ota.o(i.app_ota_chan_idle) + i.app_ota_chan_rx 0x01001510 Section 0 app_ota.o(i.app_ota_chan_rx) + i.app_ota_chan_rx_uart 0x01001650 Section 0 app_ota.o(i.app_ota_chan_rx_uart) + i.app_ota_handle_frame 0x01001674 Section 0 app_ota.o(i.app_ota_handle_frame) + i.app_ota_reset_poll 0x010016f0 Section 0 app_ota.o(i.app_ota_reset_poll) + i.boot_cli_redraw 0x0100174c Section 0 boot_cli.o(i.boot_cli_redraw) + boot_cli_redraw 0x0100174d Thumb Code 60 boot_cli.o(i.boot_cli_redraw) + i.boot_cli_run 0x01001798 Section 0 boot_cli.o(i.boot_cli_run) + i.boot_cli_tab_complete 0x010018f4 Section 0 boot_cli.o(i.boot_cli_tab_complete) + boot_cli_tab_complete 0x010018f5 Thumb Code 306 boot_cli.o(i.boot_cli_tab_complete) + i.boot_delay_ms 0x01001a38 Section 0 boot_usart.o(i.boot_delay_ms) + i.boot_dl_strap_active 0x01001a50 Section 0 main.o(i.boot_dl_strap_active) + boot_dl_strap_active 0x01001a51 Thumb Code 58 main.o(i.boot_dl_strap_active) + i.boot_millis 0x01001a90 Section 0 boot_usart.o(i.boot_millis) + i.boot_usart_init 0x01001ab8 Section 0 boot_usart.o(i.boot_usart_init) + i.boot_usart_read 0x01001bc8 Section 0 boot_usart.o(i.boot_usart_read) + i.boot_usart_rx_head 0x01001c08 Section 0 boot_usart.o(i.boot_usart_rx_head) + boot_usart_rx_head 0x01001c09 Thumb Code 18 boot_usart.o(i.boot_usart_rx_head) + i.boot_usart_write 0x01001c20 Section 0 boot_usart.o(i.boot_usart_write) + i.bootset_commit 0x01001c50 Section 0 app_bootset.o(i.bootset_commit) + bootset_commit 0x01001c51 Thumb Code 74 app_bootset.o(i.bootset_commit) + i.bootset_crc 0x01001ca4 Section 0 app_bootset.o(i.bootset_crc) + bootset_crc 0x01001ca5 Thumb Code 14 app_bootset.o(i.bootset_crc) + i.bootset_ensure_qflash 0x01001cb4 Section 0 app_bootset.o(i.bootset_ensure_qflash) + bootset_ensure_qflash 0x01001cb5 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash) + i.bootset_print 0x01001cd0 Section 0 app_bootset.o(i.bootset_print) + bootset_print 0x01001cd1 Thumb Code 98 app_bootset.o(i.bootset_print) + i.bootset_valid 0x01001e3c Section 0 app_bootset.o(i.bootset_valid) + bootset_valid 0x01001e3d Thumb Code 32 app_bootset.o(i.bootset_valid) + i.caiic_crc32 0x01001e60 Section 0 boot_crc32.o(i.caiic_crc32) + i.cli_exec_line 0x01001ea4 Section 0 boot_cli.o(i.cli_exec_line) + cli_exec_line 0x01001ea5 Thumb Code 162 boot_cli.o(i.cli_exec_line) + i.cli_printf 0x01001f70 Section 0 boot_cli.o(i.cli_printf) + i.cli_write 0x0100210c Section 0 boot_cli.o(i.cli_write) + i.image_sane 0x01002124 Section 0 main.o(i.image_sane) + image_sane 0x01002125 Thumb Code 44 main.o(i.image_sane) + i.jump_to_app 0x01002158 Section 0 main.o(i.jump_to_app) + jump_to_app 0x01002159 Thumb Code 30 main.o(i.jump_to_app) + i.main 0x0100217c Section 0 main.o(i.main) + i.ota_crc16 0x01002340 Section 0 app_ota.o(i.ota_crc16) + ota_crc16 0x01002341 Thumb Code 68 app_ota.o(i.ota_crc16) + i.ota_erase_up_to 0x0100238c Section 0 app_ota.o(i.ota_erase_up_to) + ota_erase_up_to 0x0100238d Thumb Code 54 app_ota.o(i.ota_erase_up_to) + i.ota_on_begin 0x010023cc Section 0 app_ota.o(i.ota_on_begin) + ota_on_begin 0x010023cd Thumb Code 294 app_ota.o(i.ota_on_begin) + i.ota_on_data 0x0100253c Section 0 app_ota.o(i.ota_on_data) + ota_on_data 0x0100253d Thumb Code 396 app_ota.o(i.ota_on_data) + i.ota_on_end 0x010026e4 Section 0 app_ota.o(i.ota_on_end) + ota_on_end 0x010026e5 Thumb Code 326 app_ota.o(i.ota_on_end) + i.ota_program 0x01002854 Section 0 app_ota.o(i.ota_program) + ota_program 0x01002855 Thumb Code 46 app_ota.o(i.ota_program) + i.ota_rd32 0x0100288c Section 0 app_ota.o(i.ota_rd32) + ota_rd32 0x0100288d Thumb Code 24 app_ota.o(i.ota_rd32) + i.ota_respond 0x010028a4 Section 0 app_ota.o(i.ota_respond) + ota_respond 0x010028a5 Thumb Code 118 app_ota.o(i.ota_respond) + i.ota_uart_sink 0x01002920 Section 0 app_ota.o(i.ota_uart_sink) + ota_uart_sink 0x01002921 Thumb Code 22 app_ota.o(i.ota_uart_sink) + i.ota_update_bootsetting 0x0100293c Section 0 app_ota.o(i.ota_update_bootsetting) + ota_update_bootsetting 0x0100293d Thumb Code 174 app_ota.o(i.ota_update_bootsetting) + i.parse_u32 0x01002a08 Section 0 app_bootset.o(i.parse_u32) + parse_u32 0x01002a09 Thumb Code 46 app_bootset.o(i.parse_u32) + i.puts_boot 0x01002a36 Section 0 main.o(i.puts_boot) + puts_boot 0x01002a37 Thumb Code 24 main.o(i.puts_boot) + i.read_flash_ID 0x01002a50 Section 0 system_n32wb03x.o(i.read_flash_ID) + read_flash_ID 0x01002a51 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID) + i.str_pad 0x01002a94 Section 0 boot_cli.o(i.str_pad) + str_pad 0x01002a95 Thumb Code 78 boot_cli.o(i.str_pad) + i.u32_to_str 0x01002ae2 Section 0 boot_cli.o(i.u32_to_str) + u32_to_str 0x01002ae3 Thumb Code 108 boot_cli.o(i.u32_to_str) + .constdata 0x01002b4e Section 472 system_n32wb03x.o(.constdata) + .constdata 0x01002d28 Section 108 boot_cli.o(.constdata) + s_cmds 0x01002d28 Data 108 boot_cli.o(.constdata) + .constdata 0x01002d94 Section 12 n32wb03x_rcc.o(.constdata) + s_ApbPresTable 0x01002d94 Data 8 n32wb03x_rcc.o(.constdata) + s_AhbPresTable 0x01002d9c Data 4 n32wb03x_rcc.o(.constdata) + .constdata 0x01002da0 Section 804 n32wb03x_qflash.o(.constdata) + .constdata 0x010030c4 Section 129 ctype_o.o(.constdata) + .constdata 0x01003148 Section 4 ctype_o.o(.constdata) + table 0x01003148 Data 4 ctype_o.o(.constdata) + .conststring 0x0100314c Section 682 boot_cli.o(.conststring) + .conststring 0x010033f8 Section 145 app_bootset.o(.conststring) .data 0x20004000 Section 4 system_n32wb03x.o(.data) .data 0x20004004 Section 8 boot_usart.o(.data) s_rxTail 0x20004004 Data 2 boot_usart.o(.data) @@ -705,64 +734,68 @@ Image Symbol Table _memset$wrapper 0x01000163 Thumb Code 18 memseta.o(.text) strlen 0x01000175 Thumb Code 14 strlen.o(.text) strcmp 0x01000183 Thumb Code 28 strcmp.o(.text) - memcmp 0x0100019f Thumb Code 26 memcmp.o(.text) - strtoul 0x010001b9 Thumb Code 118 strtoul.o(.text) - __rt_ctype_table 0x01000231 Thumb Code 4 ctype_o.o(.text) - _strtoul 0x01000239 Thumb Code 166 _strtoul.o(.text) - __scatterload 0x010002e1 Thumb Code 28 init.o(.text) - __scatterload_rt2 0x010002e1 Thumb Code 0 init.o(.text) - _chval 0x01000305 Thumb Code 30 _chval.o(.text) - AppBootset_CmdAppswitch 0x01000325 Thumb Code 282 app_bootset.o(i.AppBootset_CmdAppswitch) - AppBootset_CmdBsdump 0x010005fd Thumb Code 28 app_bootset.o(i.AppBootset_CmdBsdump) - AppBootset_CmdBsset 0x0100061d Thumb Code 348 app_bootset.o(i.AppBootset_CmdBsset) - DMA_DeInit 0x01000c25 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit) - DMA_EnableChannel 0x01000cc5 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel) - DMA_GetCurrDataCounter 0x01000ce1 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) - DMA_Init 0x01000ce9 Thumb Code 58 n32wb03x_dma.o(i.DMA_Init) - DMA_RequestRemap 0x01000d29 Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap) - GPIO_InitPeripheral 0x01000d39 Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral) - GPIO_InitStruct 0x01000e41 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct) - OTPTrim_Read 0x01000e5d Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read) - Qflash_Erase_Sector 0x01000f29 Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector) - Qflash_Init 0x01000f65 Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init) - Qflash_Write 0x01000f9d Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write) - RCC_EnableAHBPeriphClk 0x01000fe1 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) - RCC_EnableAPB2PeriphClk 0x01001001 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) - RCC_GetClocksFreqValue 0x01001021 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) - SystemInit 0x010011f5 Thumb Code 250 system_n32wb03x.o(i.SystemInit) - SystemTrimValueRead 0x01001311 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead) - USART_Enable 0x01001325 Thumb Code 26 n32wb03x_usart.o(i.USART_Enable) - USART_EnableDMA 0x01001345 Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA) - USART_GetFlagStatus 0x01001359 Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus) - USART_Init 0x01001379 Thumb Code 162 n32wb03x_usart.o(i.USART_Init) - USART_SendData 0x0100142d Thumb Code 8 n32wb03x_usart.o(i.USART_SendData) - __aeabi_errno_addr 0x01001435 Thumb Code 4 errno.o(i.__aeabi_errno_addr) - __rt_errno_addr 0x01001435 Thumb Code 0 errno.o(i.__aeabi_errno_addr) - __scatterload_copy 0x0100143d Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x0100144b Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x0100144d Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - app_ota_abort 0x01001469 Thumb Code 32 app_ota.o(i.app_ota_abort) - app_ota_chan_idle 0x010014a5 Thumb Code 12 app_ota.o(i.app_ota_chan_idle) - app_ota_chan_rx 0x010014b9 Thumb Code 298 app_ota.o(i.app_ota_chan_rx) - app_ota_chan_rx_uart 0x010015f9 Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart) - app_ota_handle_frame 0x0100161d Thumb Code 106 app_ota.o(i.app_ota_handle_frame) - app_ota_reset_poll 0x01001699 Thumb Code 70 app_ota.o(i.app_ota_reset_poll) - boot_cli_run 0x010016f5 Thumb Code 220 boot_cli.o(i.boot_cli_run) - boot_delay_ms 0x0100183d Thumb Code 24 boot_usart.o(i.boot_delay_ms) - boot_millis 0x01001855 Thumb Code 30 boot_usart.o(i.boot_millis) - boot_usart_init 0x0100187d Thumb Code 238 boot_usart.o(i.boot_usart_init) - boot_usart_read 0x0100198d Thumb Code 54 boot_usart.o(i.boot_usart_read) - boot_usart_write 0x010019e5 Thumb Code 42 boot_usart.o(i.boot_usart_write) - caiic_crc32 0x01001c25 Thumb Code 62 boot_crc32.o(i.caiic_crc32) - cli_printf 0x01001d35 Thumb Code 408 boot_cli.o(i.cli_printf) - cli_write 0x01001ed1 Thumb Code 22 boot_cli.o(i.cli_write) - main 0x01001f41 Thumb Code 190 main.o(i.main) - TRIM_READ_CMD_CODE 0x010028ce Data 320 system_n32wb03x.o(.constdata) - CMD_RDID 0x01002a0e Data 152 system_n32wb03x.o(.constdata) - const_qflash_cmd 0x01002b20 Data 804 n32wb03x_qflash.o(.constdata) - __ctype_table 0x01002e44 Data 129 ctype_o.o(.constdata) - Region$$Table$$Base 0x010031fc Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x0100321c Number 0 anon$$obj.o(Region$$Table) + memchr 0x0100019f Thumb Code 20 memchr.o(.text) + memcmp 0x010001b3 Thumb Code 26 memcmp.o(.text) + strcpy 0x010001cd Thumb Code 18 strcpy.o(.text) + strncmp 0x010001df Thumb Code 30 strncmp.o(.text) + strtoul 0x010001fd Thumb Code 118 strtoul.o(.text) + __rt_ctype_table 0x01000275 Thumb Code 4 ctype_o.o(.text) + _strtoul 0x0100027d Thumb Code 166 _strtoul.o(.text) + __scatterload 0x01000325 Thumb Code 28 init.o(.text) + __scatterload_rt2 0x01000325 Thumb Code 0 init.o(.text) + _chval 0x01000349 Thumb Code 30 _chval.o(.text) + AppBootset_CmdAppswitch 0x01000369 Thumb Code 282 app_bootset.o(i.AppBootset_CmdAppswitch) + AppBootset_CmdBsdump 0x01000641 Thumb Code 28 app_bootset.o(i.AppBootset_CmdBsdump) + AppBootset_CmdBsset 0x01000661 Thumb Code 348 app_bootset.o(i.AppBootset_CmdBsset) + DMA_DeInit 0x01000c69 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit) + DMA_EnableChannel 0x01000d09 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel) + DMA_GetCurrDataCounter 0x01000d25 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) + DMA_Init 0x01000d2d Thumb Code 58 n32wb03x_dma.o(i.DMA_Init) + DMA_RequestRemap 0x01000d6d Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap) + GPIO_InitPeripheral 0x01000d7d Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral) + GPIO_InitStruct 0x01000e85 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct) + GPIO_ReadInputDataBit 0x01000ea1 Thumb Code 20 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) + OTPTrim_Read 0x01000eb5 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read) + Qflash_Erase_Sector 0x01000f81 Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector) + Qflash_Init 0x01000fbd Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init) + Qflash_Write 0x01000ff5 Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write) + RCC_EnableAHBPeriphClk 0x01001039 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) + RCC_EnableAPB2PeriphClk 0x01001059 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) + RCC_GetClocksFreqValue 0x01001079 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) + SystemInit 0x0100124d Thumb Code 250 system_n32wb03x.o(i.SystemInit) + SystemTrimValueRead 0x01001369 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead) + USART_Enable 0x0100137d Thumb Code 26 n32wb03x_usart.o(i.USART_Enable) + USART_EnableDMA 0x0100139d Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA) + USART_GetFlagStatus 0x010013b1 Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus) + USART_Init 0x010013d1 Thumb Code 162 n32wb03x_usart.o(i.USART_Init) + USART_SendData 0x01001485 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData) + __aeabi_errno_addr 0x0100148d Thumb Code 4 errno.o(i.__aeabi_errno_addr) + __rt_errno_addr 0x0100148d Thumb Code 0 errno.o(i.__aeabi_errno_addr) + __scatterload_copy 0x01001495 Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x010014a3 Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x010014a5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + app_ota_abort 0x010014c1 Thumb Code 32 app_ota.o(i.app_ota_abort) + app_ota_chan_idle 0x010014fd Thumb Code 12 app_ota.o(i.app_ota_chan_idle) + app_ota_chan_rx 0x01001511 Thumb Code 298 app_ota.o(i.app_ota_chan_rx) + app_ota_chan_rx_uart 0x01001651 Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart) + app_ota_handle_frame 0x01001675 Thumb Code 106 app_ota.o(i.app_ota_handle_frame) + app_ota_reset_poll 0x010016f1 Thumb Code 70 app_ota.o(i.app_ota_reset_poll) + boot_cli_run 0x01001799 Thumb Code 240 boot_cli.o(i.boot_cli_run) + boot_delay_ms 0x01001a39 Thumb Code 24 boot_usart.o(i.boot_delay_ms) + boot_millis 0x01001a91 Thumb Code 30 boot_usart.o(i.boot_millis) + boot_usart_init 0x01001ab9 Thumb Code 238 boot_usart.o(i.boot_usart_init) + boot_usart_read 0x01001bc9 Thumb Code 54 boot_usart.o(i.boot_usart_read) + boot_usart_write 0x01001c21 Thumb Code 42 boot_usart.o(i.boot_usart_write) + caiic_crc32 0x01001e61 Thumb Code 62 boot_crc32.o(i.caiic_crc32) + cli_printf 0x01001f71 Thumb Code 408 boot_cli.o(i.cli_printf) + cli_write 0x0100210d Thumb Code 22 boot_cli.o(i.cli_write) + main 0x0100217d Thumb Code 210 main.o(i.main) + TRIM_READ_CMD_CODE 0x01002b4e Data 320 system_n32wb03x.o(.constdata) + CMD_RDID 0x01002c8e Data 152 system_n32wb03x.o(.constdata) + const_qflash_cmd 0x01002da0 Data 804 n32wb03x_qflash.o(.constdata) + __ctype_table 0x010030c4 Data 129 ctype_o.o(.constdata) + Region$$Table$$Base 0x0100348c Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x010034ac Number 0 anon$$obj.o(Region$$Table) SystemCoreClock 0x20004000 Data 4 system_n32wb03x.o(.data) CMD_FLASH_SE 0x20004050 Data 4 n32wb03x_qflash.o(.data) CMD_FLASH_WRITE 0x20004054 Data 4 n32wb03x_qflash.o(.data) @@ -778,157 +811,164 @@ Memory Map of the image Image Entry point : 0x010000c1 - Load Region LR_IROM1 (Base: 0x01000000, Size: 0x0000327c, Max: 0x00004000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x01000000, Size: 0x0000350c, Max: 0x00004000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x0000321c, Max: 0x00004000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x000034ac, Max: 0x00004000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x01000000 0x01000000 0x000000c0 Data RO 3 RESET startup_n32wb03x.o - 0x010000c0 0x010000c0 0x00000000 Code RO 1210 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) - 0x010000c0 0x010000c0 0x00000004 Code RO 1229 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) - 0x010000c4 0x010000c4 0x00000004 Code RO 1232 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) - 0x010000c8 0x010000c8 0x00000000 Code RO 1234 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) - 0x010000c8 0x010000c8 0x00000000 Code RO 1236 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) - 0x010000c8 0x010000c8 0x00000008 Code RO 1237 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) - 0x010000d0 0x010000d0 0x00000000 Code RO 1239 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) - 0x010000d0 0x010000d0 0x00000000 Code RO 1241 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) - 0x010000d0 0x010000d0 0x00000004 Code RO 1230 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) + 0x010000c0 0x010000c0 0x00000000 Code RO 1225 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) + 0x010000c0 0x010000c0 0x00000004 Code RO 1250 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) + 0x010000c4 0x010000c4 0x00000004 Code RO 1253 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) + 0x010000c8 0x010000c8 0x00000000 Code RO 1255 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) + 0x010000c8 0x010000c8 0x00000000 Code RO 1257 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) + 0x010000c8 0x010000c8 0x00000008 Code RO 1258 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) + 0x010000d0 0x010000d0 0x00000000 Code RO 1260 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) + 0x010000d0 0x010000d0 0x00000000 Code RO 1262 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) + 0x010000d0 0x010000d0 0x00000004 Code RO 1251 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) 0x010000d4 0x010000d4 0x0000000e Code RO 10 .emb_text system_n32wb03x.o 0x010000e2 0x010000e2 0x00000002 PAD 0x010000e4 0x010000e4 0x0000001c Code RO 4 .text startup_n32wb03x.o - 0x01000100 0x01000100 0x0000002c Code RO 1213 .text mc_p.l(uidiv.o) - 0x0100012c 0x0100012c 0x00000024 Code RO 1215 .text mc_p.l(memcpya.o) - 0x01000150 0x01000150 0x00000024 Code RO 1217 .text mc_p.l(memseta.o) - 0x01000174 0x01000174 0x0000000e Code RO 1219 .text mc_p.l(strlen.o) - 0x01000182 0x01000182 0x0000001c Code RO 1221 .text mc_p.l(strcmp.o) - 0x0100019e 0x0100019e 0x0000001a Code RO 1223 .text mc_p.l(memcmp.o) - 0x010001b8 0x010001b8 0x00000076 Code RO 1227 .text mc_p.l(strtoul.o) - 0x0100022e 0x0100022e 0x00000002 PAD - 0x01000230 0x01000230 0x00000008 Code RO 1243 .text mc_p.l(ctype_o.o) - 0x01000238 0x01000238 0x000000a6 Code RO 1278 .text mc_p.l(_strtoul.o) - 0x010002de 0x010002de 0x00000002 PAD - 0x010002e0 0x010002e0 0x00000024 Code RO 1280 .text mc_p.l(init.o) - 0x01000304 0x01000304 0x0000001e Code RO 1282 .text mc_p.l(_chval.o) + 0x01000100 0x01000100 0x0000002c Code RO 1228 .text mc_p.l(uidiv.o) + 0x0100012c 0x0100012c 0x00000024 Code RO 1230 .text mc_p.l(memcpya.o) + 0x01000150 0x01000150 0x00000024 Code RO 1232 .text mc_p.l(memseta.o) + 0x01000174 0x01000174 0x0000000e Code RO 1234 .text mc_p.l(strlen.o) + 0x01000182 0x01000182 0x0000001c Code RO 1236 .text mc_p.l(strcmp.o) + 0x0100019e 0x0100019e 0x00000014 Code RO 1238 .text mc_p.l(memchr.o) + 0x010001b2 0x010001b2 0x0000001a Code RO 1240 .text mc_p.l(memcmp.o) + 0x010001cc 0x010001cc 0x00000012 Code RO 1242 .text mc_p.l(strcpy.o) + 0x010001de 0x010001de 0x0000001e Code RO 1244 .text mc_p.l(strncmp.o) + 0x010001fc 0x010001fc 0x00000076 Code RO 1248 .text mc_p.l(strtoul.o) + 0x01000272 0x01000272 0x00000002 PAD + 0x01000274 0x01000274 0x00000008 Code RO 1264 .text mc_p.l(ctype_o.o) + 0x0100027c 0x0100027c 0x000000a6 Code RO 1299 .text mc_p.l(_strtoul.o) 0x01000322 0x01000322 0x00000002 PAD - 0x01000324 0x01000324 0x000002d8 Code RO 495 i.AppBootset_CmdAppswitch app_bootset.o - 0x010005fc 0x010005fc 0x00000020 Code RO 496 i.AppBootset_CmdBsdump app_bootset.o - 0x0100061c 0x0100061c 0x000002f8 Code RO 497 i.AppBootset_CmdBsset app_bootset.o - 0x01000914 0x01000914 0x000000e0 Code RO 290 i.CmdDevInfo boot_cli.o - 0x010009f4 0x010009f4 0x000000b4 Code RO 291 i.CmdHelp boot_cli.o - 0x01000aa8 0x01000aa8 0x0000001c Code RO 292 i.CmdOta boot_cli.o - 0x01000ac4 0x01000ac4 0x0000003c Code RO 293 i.CmdReset boot_cli.o - 0x01000b00 0x01000b00 0x000000b0 Code RO 294 i.CmdUartInfo boot_cli.o - 0x01000bb0 0x01000bb0 0x00000074 Code RO 295 i.CmdVersion boot_cli.o - 0x01000c24 0x01000c24 0x000000a0 Code RO 1088 i.DMA_DeInit n32wb03x_dma.o - 0x01000cc4 0x01000cc4 0x0000001c Code RO 1089 i.DMA_EnableChannel n32wb03x_dma.o - 0x01000ce0 0x01000ce0 0x00000008 Code RO 1090 i.DMA_GetCurrDataCounter n32wb03x_dma.o - 0x01000ce8 0x01000ce8 0x00000040 Code RO 1093 i.DMA_Init n32wb03x_dma.o - 0x01000d28 0x01000d28 0x00000010 Code RO 1094 i.DMA_RequestRemap n32wb03x_dma.o - 0x01000d38 0x01000d38 0x00000106 Code RO 800 i.GPIO_InitPeripheral n32wb03x_gpio.o - 0x01000e3e 0x01000e3e 0x00000002 PAD - 0x01000e40 0x01000e40 0x0000001c Code RO 801 i.GPIO_InitStruct n32wb03x_gpio.o - 0x01000e5c 0x01000e5c 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o - 0x01000f28 0x01000f28 0x0000003c Code RO 1167 i.Qflash_Erase_Sector n32wb03x_qflash.o - 0x01000f64 0x01000f64 0x00000038 Code RO 1168 i.Qflash_Init n32wb03x_qflash.o - 0x01000f9c 0x01000f9c 0x00000044 Code RO 1170 i.Qflash_Write n32wb03x_qflash.o - 0x01000fe0 0x01000fe0 0x00000020 Code RO 576 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o - 0x01001000 0x01001000 0x00000020 Code RO 580 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o - 0x01001020 0x01001020 0x000000a4 Code RO 588 i.RCC_GetClocksFreqValue n32wb03x_rcc.o - 0x010010c4 0x010010c4 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o - 0x010011f4 0x010011f4 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o - 0x01001310 0x01001310 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o - 0x01001324 0x01001324 0x00000020 Code RO 922 i.USART_Enable n32wb03x_usart.o - 0x01001344 0x01001344 0x00000014 Code RO 923 i.USART_EnableDMA n32wb03x_usart.o - 0x01001358 0x01001358 0x0000001e Code RO 929 i.USART_GetFlagStatus n32wb03x_usart.o - 0x01001376 0x01001376 0x00000002 PAD - 0x01001378 0x01001378 0x000000b4 Code RO 931 i.USART_Init n32wb03x_usart.o - 0x0100142c 0x0100142c 0x00000008 Code RO 934 i.USART_SendData n32wb03x_usart.o - 0x01001434 0x01001434 0x00000008 Code RO 1271 i.__aeabi_errno_addr mc_p.l(errno.o) - 0x0100143c 0x0100143c 0x0000000e Code RO 1286 i.__scatterload_copy mc_p.l(handlers.o) - 0x0100144a 0x0100144a 0x00000002 Code RO 1287 i.__scatterload_null mc_p.l(handlers.o) - 0x0100144c 0x0100144c 0x0000000e Code RO 1288 i.__scatterload_zeroinit mc_p.l(handlers.o) - 0x0100145a 0x0100145a 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o - 0x01001460 0x01001460 0x00000006 Code RO 1171 i.__set_PRIMASK n32wb03x_qflash.o - 0x01001466 0x01001466 0x00000002 PAD - 0x01001468 0x01001468 0x0000003c Code RO 386 i.app_ota_abort app_ota.o - 0x010014a4 0x010014a4 0x00000014 Code RO 387 i.app_ota_chan_idle app_ota.o - 0x010014b8 0x010014b8 0x00000140 Code RO 388 i.app_ota_chan_rx app_ota.o - 0x010015f8 0x010015f8 0x00000024 Code RO 389 i.app_ota_chan_rx_uart app_ota.o - 0x0100161c 0x0100161c 0x0000007c Code RO 391 i.app_ota_handle_frame app_ota.o - 0x01001698 0x01001698 0x0000005c Code RO 392 i.app_ota_reset_poll app_ota.o - 0x010016f4 0x010016f4 0x00000148 Code RO 296 i.boot_cli_run boot_cli.o - 0x0100183c 0x0100183c 0x00000018 Code RO 239 i.boot_delay_ms boot_usart.o - 0x01001854 0x01001854 0x00000028 Code RO 240 i.boot_millis boot_usart.o - 0x0100187c 0x0100187c 0x00000110 Code RO 241 i.boot_usart_init boot_usart.o - 0x0100198c 0x0100198c 0x00000040 Code RO 242 i.boot_usart_read boot_usart.o - 0x010019cc 0x010019cc 0x00000018 Code RO 243 i.boot_usart_rx_head boot_usart.o - 0x010019e4 0x010019e4 0x00000030 Code RO 244 i.boot_usart_write boot_usart.o - 0x01001a14 0x01001a14 0x00000054 Code RO 498 i.bootset_commit app_bootset.o - 0x01001a68 0x01001a68 0x0000000e Code RO 499 i.bootset_crc app_bootset.o - 0x01001a76 0x01001a76 0x00000002 PAD - 0x01001a78 0x01001a78 0x0000001c Code RO 500 i.bootset_ensure_qflash app_bootset.o - 0x01001a94 0x01001a94 0x0000016c Code RO 501 i.bootset_print app_bootset.o - 0x01001c00 0x01001c00 0x00000024 Code RO 502 i.bootset_valid app_bootset.o - 0x01001c24 0x01001c24 0x00000044 Code RO 226 i.caiic_crc32 boot_crc32.o - 0x01001c68 0x01001c68 0x000000cc Code RO 297 i.cli_exec_line boot_cli.o - 0x01001d34 0x01001d34 0x0000019c Code RO 298 i.cli_printf boot_cli.o - 0x01001ed0 0x01001ed0 0x00000016 Code RO 299 i.cli_write boot_cli.o - 0x01001ee6 0x01001ee6 0x00000002 PAD - 0x01001ee8 0x01001ee8 0x00000034 Code RO 174 i.image_sane main.o - 0x01001f1c 0x01001f1c 0x00000024 Code RO 175 i.jump_to_app main.o - 0x01001f40 0x01001f40 0x00000180 Code RO 176 i.main main.o - 0x010020c0 0x010020c0 0x0000004c Code RO 393 i.ota_crc16 app_ota.o - 0x0100210c 0x0100210c 0x00000040 Code RO 394 i.ota_erase_up_to app_ota.o - 0x0100214c 0x0100214c 0x00000170 Code RO 395 i.ota_on_begin app_ota.o - 0x010022bc 0x010022bc 0x000001a8 Code RO 396 i.ota_on_data app_ota.o - 0x01002464 0x01002464 0x00000170 Code RO 397 i.ota_on_end app_ota.o - 0x010025d4 0x010025d4 0x00000038 Code RO 398 i.ota_program app_ota.o - 0x0100260c 0x0100260c 0x00000018 Code RO 399 i.ota_rd32 app_ota.o - 0x01002624 0x01002624 0x0000007c Code RO 400 i.ota_respond app_ota.o - 0x010026a0 0x010026a0 0x0000001c Code RO 401 i.ota_uart_sink app_ota.o - 0x010026bc 0x010026bc 0x000000cc Code RO 402 i.ota_update_bootsetting app_ota.o - 0x01002788 0x01002788 0x0000002e Code RO 503 i.parse_u32 app_bootset.o - 0x010027b6 0x010027b6 0x00000018 Code RO 177 i.puts_boot main.o - 0x010027ce 0x010027ce 0x00000002 PAD - 0x010027d0 0x010027d0 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o - 0x01002814 0x01002814 0x0000004e Code RO 300 i.str_pad boot_cli.o - 0x01002862 0x01002862 0x0000006c Code RO 301 i.u32_to_str boot_cli.o - 0x010028ce 0x010028ce 0x000001d8 Data RO 23 .constdata system_n32wb03x.o - 0x01002aa6 0x01002aa6 0x00000002 PAD - 0x01002aa8 0x01002aa8 0x0000006c Data RO 303 .constdata boot_cli.o - 0x01002b14 0x01002b14 0x0000000c Data RO 596 .constdata n32wb03x_rcc.o - 0x01002b20 0x01002b20 0x00000324 Data RO 1173 .constdata n32wb03x_qflash.o - 0x01002e44 0x01002e44 0x00000081 Data RO 1244 .constdata mc_p.l(ctype_o.o) - 0x01002ec5 0x01002ec5 0x00000003 PAD - 0x01002ec8 0x01002ec8 0x00000004 Data RO 1245 .constdata mc_p.l(ctype_o.o) - 0x01002ecc 0x01002ecc 0x0000029a Data RO 304 .conststring boot_cli.o - 0x01003166 0x01003166 0x00000002 PAD - 0x01003168 0x01003168 0x00000091 Data RO 504 .conststring app_bootset.o - 0x010031f9 0x010031f9 0x00000003 PAD - 0x010031fc 0x010031fc 0x00000020 Data RO 1284 Region$$Table anon$$obj.o + 0x01000324 0x01000324 0x00000024 Code RO 1301 .text mc_p.l(init.o) + 0x01000348 0x01000348 0x0000001e Code RO 1303 .text mc_p.l(_chval.o) + 0x01000366 0x01000366 0x00000002 PAD + 0x01000368 0x01000368 0x000002d8 Code RO 510 i.AppBootset_CmdAppswitch app_bootset.o + 0x01000640 0x01000640 0x00000020 Code RO 511 i.AppBootset_CmdBsdump app_bootset.o + 0x01000660 0x01000660 0x000002f8 Code RO 512 i.AppBootset_CmdBsset app_bootset.o + 0x01000958 0x01000958 0x000000e0 Code RO 295 i.CmdDevInfo boot_cli.o + 0x01000a38 0x01000a38 0x000000b4 Code RO 296 i.CmdHelp boot_cli.o + 0x01000aec 0x01000aec 0x0000001c Code RO 297 i.CmdOta boot_cli.o + 0x01000b08 0x01000b08 0x0000003c Code RO 298 i.CmdReset boot_cli.o + 0x01000b44 0x01000b44 0x000000b0 Code RO 299 i.CmdUartInfo boot_cli.o + 0x01000bf4 0x01000bf4 0x00000074 Code RO 300 i.CmdVersion boot_cli.o + 0x01000c68 0x01000c68 0x000000a0 Code RO 1103 i.DMA_DeInit n32wb03x_dma.o + 0x01000d08 0x01000d08 0x0000001c Code RO 1104 i.DMA_EnableChannel n32wb03x_dma.o + 0x01000d24 0x01000d24 0x00000008 Code RO 1105 i.DMA_GetCurrDataCounter n32wb03x_dma.o + 0x01000d2c 0x01000d2c 0x00000040 Code RO 1108 i.DMA_Init n32wb03x_dma.o + 0x01000d6c 0x01000d6c 0x00000010 Code RO 1109 i.DMA_RequestRemap n32wb03x_dma.o + 0x01000d7c 0x01000d7c 0x00000106 Code RO 815 i.GPIO_InitPeripheral n32wb03x_gpio.o + 0x01000e82 0x01000e82 0x00000002 PAD + 0x01000e84 0x01000e84 0x0000001c Code RO 816 i.GPIO_InitStruct n32wb03x_gpio.o + 0x01000ea0 0x01000ea0 0x00000014 Code RO 818 i.GPIO_ReadInputDataBit n32wb03x_gpio.o + 0x01000eb4 0x01000eb4 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o + 0x01000f80 0x01000f80 0x0000003c Code RO 1182 i.Qflash_Erase_Sector n32wb03x_qflash.o + 0x01000fbc 0x01000fbc 0x00000038 Code RO 1183 i.Qflash_Init n32wb03x_qflash.o + 0x01000ff4 0x01000ff4 0x00000044 Code RO 1185 i.Qflash_Write n32wb03x_qflash.o + 0x01001038 0x01001038 0x00000020 Code RO 591 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o + 0x01001058 0x01001058 0x00000020 Code RO 595 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o + 0x01001078 0x01001078 0x000000a4 Code RO 603 i.RCC_GetClocksFreqValue n32wb03x_rcc.o + 0x0100111c 0x0100111c 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o + 0x0100124c 0x0100124c 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o + 0x01001368 0x01001368 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o + 0x0100137c 0x0100137c 0x00000020 Code RO 937 i.USART_Enable n32wb03x_usart.o + 0x0100139c 0x0100139c 0x00000014 Code RO 938 i.USART_EnableDMA n32wb03x_usart.o + 0x010013b0 0x010013b0 0x0000001e Code RO 944 i.USART_GetFlagStatus n32wb03x_usart.o + 0x010013ce 0x010013ce 0x00000002 PAD + 0x010013d0 0x010013d0 0x000000b4 Code RO 946 i.USART_Init n32wb03x_usart.o + 0x01001484 0x01001484 0x00000008 Code RO 949 i.USART_SendData n32wb03x_usart.o + 0x0100148c 0x0100148c 0x00000008 Code RO 1292 i.__aeabi_errno_addr mc_p.l(errno.o) + 0x01001494 0x01001494 0x0000000e Code RO 1307 i.__scatterload_copy mc_p.l(handlers.o) + 0x010014a2 0x010014a2 0x00000002 Code RO 1308 i.__scatterload_null mc_p.l(handlers.o) + 0x010014a4 0x010014a4 0x0000000e Code RO 1309 i.__scatterload_zeroinit mc_p.l(handlers.o) + 0x010014b2 0x010014b2 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o + 0x010014b8 0x010014b8 0x00000006 Code RO 1186 i.__set_PRIMASK n32wb03x_qflash.o + 0x010014be 0x010014be 0x00000002 PAD + 0x010014c0 0x010014c0 0x0000003c Code RO 401 i.app_ota_abort app_ota.o + 0x010014fc 0x010014fc 0x00000014 Code RO 402 i.app_ota_chan_idle app_ota.o + 0x01001510 0x01001510 0x00000140 Code RO 403 i.app_ota_chan_rx app_ota.o + 0x01001650 0x01001650 0x00000024 Code RO 404 i.app_ota_chan_rx_uart app_ota.o + 0x01001674 0x01001674 0x0000007c Code RO 406 i.app_ota_handle_frame app_ota.o + 0x010016f0 0x010016f0 0x0000005c Code RO 407 i.app_ota_reset_poll app_ota.o + 0x0100174c 0x0100174c 0x0000004c Code RO 301 i.boot_cli_redraw boot_cli.o + 0x01001798 0x01001798 0x0000015c Code RO 302 i.boot_cli_run boot_cli.o + 0x010018f4 0x010018f4 0x00000144 Code RO 303 i.boot_cli_tab_complete boot_cli.o + 0x01001a38 0x01001a38 0x00000018 Code RO 244 i.boot_delay_ms boot_usart.o + 0x01001a50 0x01001a50 0x00000040 Code RO 174 i.boot_dl_strap_active main.o + 0x01001a90 0x01001a90 0x00000028 Code RO 245 i.boot_millis boot_usart.o + 0x01001ab8 0x01001ab8 0x00000110 Code RO 246 i.boot_usart_init boot_usart.o + 0x01001bc8 0x01001bc8 0x00000040 Code RO 247 i.boot_usart_read boot_usart.o + 0x01001c08 0x01001c08 0x00000018 Code RO 248 i.boot_usart_rx_head boot_usart.o + 0x01001c20 0x01001c20 0x00000030 Code RO 249 i.boot_usart_write boot_usart.o + 0x01001c50 0x01001c50 0x00000054 Code RO 513 i.bootset_commit app_bootset.o + 0x01001ca4 0x01001ca4 0x0000000e Code RO 514 i.bootset_crc app_bootset.o + 0x01001cb2 0x01001cb2 0x00000002 PAD + 0x01001cb4 0x01001cb4 0x0000001c Code RO 515 i.bootset_ensure_qflash app_bootset.o + 0x01001cd0 0x01001cd0 0x0000016c Code RO 516 i.bootset_print app_bootset.o + 0x01001e3c 0x01001e3c 0x00000024 Code RO 517 i.bootset_valid app_bootset.o + 0x01001e60 0x01001e60 0x00000044 Code RO 231 i.caiic_crc32 boot_crc32.o + 0x01001ea4 0x01001ea4 0x000000cc Code RO 304 i.cli_exec_line boot_cli.o + 0x01001f70 0x01001f70 0x0000019c Code RO 305 i.cli_printf boot_cli.o + 0x0100210c 0x0100210c 0x00000016 Code RO 306 i.cli_write boot_cli.o + 0x01002122 0x01002122 0x00000002 PAD + 0x01002124 0x01002124 0x00000034 Code RO 175 i.image_sane main.o + 0x01002158 0x01002158 0x00000024 Code RO 176 i.jump_to_app main.o + 0x0100217c 0x0100217c 0x000001c4 Code RO 177 i.main main.o + 0x01002340 0x01002340 0x0000004c Code RO 408 i.ota_crc16 app_ota.o + 0x0100238c 0x0100238c 0x00000040 Code RO 409 i.ota_erase_up_to app_ota.o + 0x010023cc 0x010023cc 0x00000170 Code RO 410 i.ota_on_begin app_ota.o + 0x0100253c 0x0100253c 0x000001a8 Code RO 411 i.ota_on_data app_ota.o + 0x010026e4 0x010026e4 0x00000170 Code RO 412 i.ota_on_end app_ota.o + 0x01002854 0x01002854 0x00000038 Code RO 413 i.ota_program app_ota.o + 0x0100288c 0x0100288c 0x00000018 Code RO 414 i.ota_rd32 app_ota.o + 0x010028a4 0x010028a4 0x0000007c Code RO 415 i.ota_respond app_ota.o + 0x01002920 0x01002920 0x0000001c Code RO 416 i.ota_uart_sink app_ota.o + 0x0100293c 0x0100293c 0x000000cc Code RO 417 i.ota_update_bootsetting app_ota.o + 0x01002a08 0x01002a08 0x0000002e Code RO 518 i.parse_u32 app_bootset.o + 0x01002a36 0x01002a36 0x00000018 Code RO 178 i.puts_boot main.o + 0x01002a4e 0x01002a4e 0x00000002 PAD + 0x01002a50 0x01002a50 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o + 0x01002a94 0x01002a94 0x0000004e Code RO 307 i.str_pad boot_cli.o + 0x01002ae2 0x01002ae2 0x0000006c Code RO 308 i.u32_to_str boot_cli.o + 0x01002b4e 0x01002b4e 0x000001d8 Data RO 23 .constdata system_n32wb03x.o + 0x01002d26 0x01002d26 0x00000002 PAD + 0x01002d28 0x01002d28 0x0000006c Data RO 310 .constdata boot_cli.o + 0x01002d94 0x01002d94 0x0000000c Data RO 611 .constdata n32wb03x_rcc.o + 0x01002da0 0x01002da0 0x00000324 Data RO 1188 .constdata n32wb03x_qflash.o + 0x010030c4 0x010030c4 0x00000081 Data RO 1265 .constdata mc_p.l(ctype_o.o) + 0x01003145 0x01003145 0x00000003 PAD + 0x01003148 0x01003148 0x00000004 Data RO 1266 .constdata mc_p.l(ctype_o.o) + 0x0100314c 0x0100314c 0x000002aa Data RO 311 .conststring boot_cli.o + 0x010033f6 0x010033f6 0x00000002 PAD + 0x010033f8 0x010033f8 0x00000091 Data RO 519 .conststring app_bootset.o + 0x01003489 0x01003489 0x00000003 PAD + 0x0100348c 0x0100348c 0x00000020 Data RO 1305 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x0100321c, Size: 0x00001a58, Max: 0x0000c000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x010034ac, Size: 0x00001a58, Max: 0x0000c000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20004000 0x0100321c 0x00000004 Data RW 24 .data system_n32wb03x.o - 0x20004004 0x01003220 0x00000008 Data RW 246 .data boot_usart.o - 0x2000400c 0x01003228 0x00000001 Data RW 305 .data boot_cli.o - 0x2000400d 0x01003229 0x00000003 PAD - 0x20004010 0x0100322c 0x0000003d Data RW 404 .data app_ota.o - 0x2000404d 0x01003269 0x00000001 Data RW 505 .data app_bootset.o - 0x2000404e 0x0100326a 0x00000002 PAD - 0x20004050 0x0100326c 0x0000000c Data RW 1174 .data n32wb03x_qflash.o - 0x2000405c 0x01003278 0x00000004 Data RW 1274 .data mc_p.l(errno.o) + 0x20004000 0x010034ac 0x00000004 Data RW 24 .data system_n32wb03x.o + 0x20004004 0x010034b0 0x00000008 Data RW 251 .data boot_usart.o + 0x2000400c 0x010034b8 0x00000001 Data RW 312 .data boot_cli.o + 0x2000400d 0x010034b9 0x00000003 PAD + 0x20004010 0x010034bc 0x0000003d Data RW 419 .data app_ota.o + 0x2000404d 0x010034f9 0x00000001 Data RW 520 .data app_bootset.o + 0x2000404e 0x010034fa 0x00000002 PAD + 0x20004050 0x010034fc 0x0000000c Data RW 1189 .data n32wb03x_qflash.o + 0x2000405c 0x01003508 0x00000004 Data RW 1295 .data mc_p.l(errno.o) 0x20004060 - 0x00000034 Zero RW 22 .bss system_n32wb03x.o - 0x20004094 - 0x00000c00 Zero RW 245 .bss boot_usart.o - 0x20004c94 - 0x000000b0 Zero RW 302 .bss boot_cli.o - 0x20004d44 - 0x000001e7 Zero RW 403 .bss app_ota.o - 0x20004f2b 0x0100327c 0x00000001 PAD - 0x20004f2c - 0x00000328 Zero RW 1172 .bss n32wb03x_qflash.o - 0x20005254 0x0100327c 0x00000004 PAD + 0x20004094 - 0x00000c00 Zero RW 250 .bss boot_usart.o + 0x20004c94 - 0x000000b0 Zero RW 309 .bss boot_cli.o + 0x20004d44 - 0x000001e7 Zero RW 418 .bss app_ota.o + 0x20004f2b 0x0100350c 0x00000001 PAD + 0x20004f2c - 0x00000328 Zero RW 1187 .bss n32wb03x_qflash.o + 0x20005254 0x0100350c 0x00000004 PAD 0x20005258 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o @@ -941,12 +981,12 @@ Image component sizes 2092 1148 145 1 0 6739 app_bootset.o 2388 322 0 61 487 12597 app_ota.o - 1936 628 774 1 176 15380 boot_cli.o + 2356 662 790 1 176 17108 boot_cli.o 68 6 0 0 0 874 boot_crc32.o 472 66 0 8 3072 4161 boot_usart.o - 496 208 0 0 0 5011 main.o + 628 262 0 0 0 5643 main.o 276 18 0 0 0 4372 n32wb03x_dma.o - 290 4 0 0 0 2252 n32wb03x_gpio.o + 310 4 0 0 0 2948 n32wb03x_gpio.o 190 32 804 12 808 4258 n32wb03x_qflash.o 228 32 12 0 0 2848 n32wb03x_rcc.o 270 24 0 0 0 5093 n32wb03x_usart.o @@ -954,7 +994,7 @@ Image component sizes 900 60 472 4 52 124580 system_n32wb03x.o ---------------------------------------------------------------------- - 9648 2556 2438 92 6648 188909 Object Totals + 10220 2644 2454 92 6648 191965 Object Totals 0 0 32 0 0 0 (incl. Generated) 14 0 7 5 5 0 (incl. Padding) @@ -976,26 +1016,29 @@ Image component sizes 8 4 0 4 0 60 errno.o 30 0 0 0 0 0 handlers.o 36 8 0 0 0 68 init.o + 20 0 0 0 0 60 memchr.o 26 0 0 0 0 72 memcmp.o 36 0 0 0 0 60 memcpya.o 36 0 0 0 0 100 memseta.o 28 0 0 0 0 68 strcmp.o + 18 0 0 0 0 60 strcpy.o 14 0 0 0 0 60 strlen.o + 30 0 0 0 0 72 strncmp.o 118 0 0 0 0 84 strtoul.o 44 0 0 0 0 72 uidiv.o ---------------------------------------------------------------------- - 606 24 136 4 0 848 Library Totals + 674 24 136 4 0 1040 Library Totals 6 0 3 0 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name - 600 24 133 4 0 848 mc_p.l + 668 24 133 4 0 1040 mc_p.l ---------------------------------------------------------------------- - 606 24 136 4 0 848 Library Totals + 674 24 136 4 0 1040 Library Totals ---------------------------------------------------------------------- @@ -1004,15 +1047,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 10254 2580 2574 96 6648 186425 Grand Totals - 10254 2580 2574 96 6648 186425 ELF Image Totals - 10254 2580 2574 96 0 0 ROM Totals + 10894 2668 2590 96 6648 189365 Grand Totals + 10894 2668 2590 96 6648 189365 ELF Image Totals + 10894 2668 2590 96 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 12828 ( 12.53kB) + Total RO Size (Code + RO Data) 13484 ( 13.17kB) Total RW Size (RW Data + ZI Data) 6744 ( 6.59kB) - Total ROM Size (Code + RO Data + RW Data) 12924 ( 12.62kB) + Total ROM Size (Code + RO Data + RW Data) 13580 ( 13.26kB) ============================================================================== diff --git a/Boot/MDK-ARM/bin/caiic_boot.bin b/Boot/MDK-ARM/bin/caiic_boot.bin index bbd7824714b9333978fb13d15b79e70290e7422c..74d9089f12b31fa25710ee372c6a0ba14e8a2261 100644 GIT binary patch delta 2975 zcmY*b4R9O972e&`zii9OkK-RAkc5UL7!r)!ILtXEiKY#y z6DH%dB&jK$jFSz;4p5x(Q=3VsYt=)`U<^}8NthPNW;zWiRP8VoP-rjwopjRO^_>%j zVMeQc``-87zJ2%J+s*e5?HWFB3uI9kbsqAb_)7y>zvzVW%#sUJT#D;|B*Z0xo=uh6 zIYeWf?3cLwCQfkllUUFb@t}rmvQ&t5Hcy)cL^%Paws}~{Jom}=H@DMroJ9VwlFc*n z^iL;U0;(fVU}+6|1Mel_7Ip(UgtdpL^w7*G-(kE1TNrs_YTlm zuig#+x2oM?EOn{{ld+jTVGPbNn>DN(vJUn0wBNTqg2#1PP%-TM7VKw=FB z>W(u}QI~rlCIv|ZC$}UJoSd^J?gbMSDm!Uu$E(;|ma>5>`SCOw;iG|6k2vV*Iit(f zpyfIRkf^N#{bj8-h5z7MEkKoPJ#9(6D9x`Ai8#``d8O>G0MKjsgn z?}B+Yzdzk0-ZO?yW9dIR!{;u=I1j|oE&Vnxrh5T&E^i2i6t>UWL4s}ZDeFFb_d(^% zuE7vaVv16TT7;dV>&zkmf2E)Rmt1Dp&XL-Bfdci3f~A9*L*5Gr4eRo`oK;vQQ~^Jw zWM&XDqV0aweQ|3`pc#Ix?6CbfevG*sWuc!av6)_v-JhO!kM)U=1j<)w!}Qu5s&S?Y zXmqW0-K(V`(V)t@%pegJ1Ak>6&Hgiu5Z}ahIl`5W9Ht~$P-C-=cfiabhfuCRd7k|e&NR|+&k;Q$^AZo;k zt1*Cr+Fn#+31zYL2bCQwI!HdsFyiu&4UMeM)m`%IO!3U0HzImF?7taC7mTr{_-R)q zwmi{<@Tn&DN^#Wrx_&iKnmo(u-BtD{_2Lw!nmii+p8HYajB3{5UaxgTlee)ei!1Q@ zc;S)*m`rMHaOn{7*0Yk5hQO#+nOZHh2)ux#b$aPF8cSuFMJZi2>Gm-4E%tIE4=Mk@ z4BJ!UEAiGNEPzMF)9x_pN4zJ2qzhU0T*-!k%(PV~6xsz%E>e$7ImeLn*F35-r3@;W zk9m$wy%5S=HpA*-9{IV17qCd$pim(*Q@Eq2uWv`w&G4BKg<+dUHK=xV7)ig&qgh>k zT5n(2t_ZfFq2Sm_438(#qzR?HZ7#ADgs7KS8yKl3|}fy+%MId8pL{6_!C? zM6`Vis%wC>j;&o2v2|fUtr9SN>8*geE=fiZZ%cCHcvO?Wo9D(gd1?OWR8b12#LA;n z&xS1TH3(OwHv|5QB=qo!@D?%>^pN5G10H)|Zr(6~lT`Rqnn3F*OWIT1gslvFktAff zadc1nmZ;~*)J8v^I~%%kd86MlN5LtBX9VT>92K5VKO1tr_l;h|xAdwP^k`}^pji&p zEm}BC5gcaVo6|_wx;~PAnsWefAh#c!`*_|0^nsj_Ji7d-Mui6!3K(G{Z3-QbJ_a!j zbtmx|xSeK^RFiqNd^n`cqZu^)vq|i=QC-#)quaU_O7XA}X+pVSJYlH{>+(Zc>NUaa zRxm`tItgkt2b-V*9AukITiY%w*gMGS@_EGtHZEm@)CKy*!zQ|9*fr4ts_U|cfp>M? z1nad~_EM>*t~(E#gWJayGHUOM|AlpQ>z+qE8}S+|D%0B z?1|A>-yRx{bcQLva_h?a)wFl-kN4cax2Kox-rKv=$VtT3(Rm`NjC#kgi@oOUB%>;G z_@0AK9G~*lV9zdb+Z8tZ7J(52M()UH^1a%Fpj-@1&jCICYl)E2 z<<;!*+KuG(9Q&m981dxUzPfgNfSs$WpjUGB5eyFqOOp52LSPr);r&(x*WL&E9!X|h|A#~i2aAw*BcT9;;1$UMz zi#b-q-%iXqwx9Qr&z1OTzKHb2RwCR1W0eD83Ue`xFP#Xt!R&8E_%1ub{Xl;J^coAo zlR&==7k&@W641Yg(Z?a20{Iuf{}k+u1Fsj>cCf<(eHg|qad+d39C@QTelc(mS5SWQ znh?E-?%2CKcK^^HjMrcD5`^m delta 2378 zcmY*b4R90J5#IOoFWHs_MzxW!PeL|l*%q=%3nXqM+;T|dk2KIw>@sp7or5sM)21Cl z3pnlIn3NJZ4_X0f$8I5GcL-xpoTO=8(=?>eCP9k(m(WQB!$fp4lU|d+>7+Yd_Xz2v zGkSXazWsLJ-@e`3zg69wdevT~Kpa-BXc~DVOs{!HO2-yOr_2IyCIRxje%51pGvD`m zU(8p`MyKVeA56LhXrWINX(@Bihv~Tp+er_S=a}2H*#2Hc?F8cQVuGn_S-C>TiS&R9 zyg3&eCDK`~dQzIE5%)zhu|uR%LkW0Gj-&}+oh50?JF_d1by{PSrbhY~m1Rw_-i-QE zVGW|Yw0@BjiL_9)2xHPLn4U|)ia>$0d3ocRLo&zfrw z7|0IISYt%pG?o-~`G*?tRXM<&TeE;WH?a#=3vE)_->l0>FLT=(mR~E67a+|iBl&)D z*xx^<%PY~ym9qu*nIJvfV|r^NI=oyyge)=XyTN(@SzWB(Huoz$aw$%5HEGNDBJYpo zorSMs|A+E-3;p6ZM&SsN{#`N_*{2vAz(bR!%3@(N_NU4Qo>JJ0wr)DvnYnIzglyQY zjBOq6AvwZ99yqJ;py(c(gXEF|5mWAShU*e-ZWTC`Bn711`mVrvfRrv@DBFbPLKEUw zl;Sjiak`!}olxi5Vjw8j3&wP-N)U484W8{Y78cZOQw;upW?|-10bo4LPCDa_H6_B)gneLO`n3p< zsu*x~q?$_SIFO#NusYYRHJ23^LhmYu_kSv^&vmT+H$_jJh{iIWFAm_^KV5UCzG|4V z=W0UM?Fx~OtL&YcopheUHn@ZI4W8|GZ}iRsj)mm)pv2ksg58aK#>Td&5 z*T%e_q)WPaP8Iom_L!&1abB;@6Rskk%}jU>QP=*8EwwpdOIPH_S)$HI9?d*h_b8!H zYb-x+KOJjf+r8n)Uac{ItI#R%0!T|M_5YJC`kcHjn{`JVf^!2V(a>Mi*{j~5cdP}7 zfGet<^2A{W@ct}Fe=o9%_wGIRDF{LH=i?wqQ!90BA{l6F0a$^HDrNnLc1{9;FX6i6bzl6 zpOFEW#HNq_H}l2y&dn{huF`{^HB@!=4`U@mDA0L94fPo z^LZ{Bc+SsRePuR`}Y2 z7Zu<<3Hu-k)FAg|g#=>(CrX-%zOet7$`1Ix>HlS!#>pVzKESv(1af4CRM5ICW-Zhw2rE=)lrOSszU_FzCTT%Np%T*G8#O>ja*ex}S0_`B%CrOeCz z^_1RQV*aLfitlE1(}%>tzQ}c~YtY~)bb=GCM=eJ{dS5jQk-YsdIS&h+LHh`uz{CAN z#@onPfYz;+Hi8#_@om~-p z%4|sFO(K#JBOJe@HsYPTRbB4GQsB;uc+?+ZiE(6&P^!jUX7o-TQ&o!%m!QjWHRjtD zaFF4itC$lY;>^Kfd(JqEy%>@vuB|Homy*xV6Cv` z_&_u6_jt*57%NBCC`p=po5sXeA-c2VO4YB8hfX;o7QN|ALglBVL~|A{gO&fkXzD0+YQPQ)kt8G%IGSK5XJavt?Hq8Qr!*7mm#1~kBBvIzEHJgB}LH#3$PdI_pBX$MlvnZz#m#~q{NXH8% zx-ybk-MN#vBGt}K{adzd>i805-tBspg#2AVuv~FT0O+m*@_ig9aa?QwxD&^a%9_}z ITY3rn7iP<(#{d8T diff --git a/Boot/MDK-ARM/build.log b/Boot/MDK-ARM/build.log index 7c324e0..f22da89 100644 --- a/Boot/MDK-ARM/build.log +++ b/Boot/MDK-ARM/build.log @@ -2,19 +2,19 @@ Rebuild target 'caiic_boot' assembling startup_n32wb03x.s... compiling boot_crc32.c... +compiling system_n32wb03x.c... +compiling boot_cli.c... +compiling app_ota.c... +compiling app_bootset.c... compiling main.c... compiling boot_usart.c... -compiling system_n32wb03x.c... -compiling app_bootset.c... compiling n32wb03x_gpio.c... -compiling n32wb03x_usart.c... compiling n32wb03x_rcc.c... -compiling boot_cli.c... +compiling n32wb03x_usart.c... compiling n32wb03x_dma.c... -compiling app_ota.c... compiling n32wb03x_qflash.c... linking... -Program Size: Code=10254 RO-data=2574 RW-data=96 ZI-data=6648 +Program Size: Code=10894 RO-data=2590 RW-data=96 ZI-data=6648 FromELF: creating hex file... After Build - User command #1: fromelf --bin --output=.\bin\caiic_boot.bin .\Objects\caiic_boot.axf ".\Objects\caiic_boot.axf" - 0 Error(s), 0 Warning(s). diff --git a/Boot/src/boot_cli.c b/Boot/src/boot_cli.c index 6ab586c..0b7f3f5 100644 --- a/Boot/src/boot_cli.c +++ b/Boot/src/boot_cli.c @@ -1,7 +1,8 @@ /** * @file boot_cli.c - * @brief Bootloader download-mode CLI: bare-metal polled line editor + - * command table, and the UART OTA binary frame mode. + * @brief Bootloader download-mode CLI: bare-metal polled line editor + * (echo, backspace, TAB command-name completion) + command table, + * and the UART OTA binary frame mode. * * Wire-compatible with the application's UART CLI so that * tools/ble_ota_update.py works unchanged against the bootloader: @@ -31,6 +32,7 @@ #define CLI_LINE_SIZE 80 #define CLI_MAX_ARGS 8 #define OTA_IDLE_EXIT_MS 3000u /* binary mode fallback exit */ +#define CLI_KEY_TAB 0x09 /* TAB: command-name completion */ /* ------------------------------------------------------------------ */ /* Output (cli_core.h shim implementation) */ @@ -359,17 +361,134 @@ static int cli_exec_line(char* line) #define BOOT_CLI_PROMPT "caiic->" /* wire-compatible with the app CLI */ +/** + * @brief Redraw the input line: erase `shownLen` chars, print prompt + line. + * @return new shown length (in the boot CLI this always equals strlen(line)). + */ +static uint16_t boot_cli_redraw(const char* line, uint16_t shownLen) +{ + uint16_t i; + uint16_t len = (uint16_t)strlen(line); + + cli_write("\r" BOOT_CLI_PROMPT); + for (i = 0; i < shownLen; i++) + { + cli_write(" "); + } + cli_write("\r" BOOT_CLI_PROMPT); + if (len > 0u) + { + boot_usart_write((const uint8_t*)line, len); + } + return len; +} + +/** + * @brief TAB completion on the first token of the line (command name only). + * Single match: complete it and append a space. + * Multiple matches: extend to the common prefix, or list candidates. + * Ported from the application CLI (mcm-ddc-ble/src/app_cli.c). + */ +static uint16_t boot_cli_tab_complete(char* line, uint16_t len) +{ + char common[CLI_LINE_SIZE]; + uint16_t commonLen = 0; + int matchCount = 0; + uint32_t i; + + /* Only complete the first token (no space typed yet) */ + if (memchr(line, ' ', len) != NULL) + { + return len; + } + line[len] = '\0'; + + for (i = 0; i < CLI_CMD_COUNT; i++) + { + const char* name = s_cmds[i].name; + if (strncmp(name, line, len) == 0) + { + if (matchCount == 0) + { + strcpy(common, name); + commonLen = (uint16_t)strlen(common); + } + else + { + /* shrink common to the shared prefix */ + while (commonLen > len && strncmp(common, name, commonLen) != 0) + { + commonLen--; + } + common[commonLen] = '\0'; + } + matchCount++; + } + } + + if (matchCount == 0) + { + return len; + } + + if (matchCount == 1) + { + /* complete the command name + one space */ + while (len < CLI_LINE_SIZE - 1u && len < commonLen) + { + boot_usart_write((const uint8_t*)&common[len], 1); + line[len] = common[len]; + len++; + } + if (len < CLI_LINE_SIZE - 1u) + { + line[len] = ' '; + len++; + cli_write(" "); + } + return len; + } + + if (commonLen > len) + { + /* extend to the common prefix */ + while (len < CLI_LINE_SIZE - 1u && len < commonLen) + { + boot_usart_write((const uint8_t*)&common[len], 1); + line[len] = common[len]; + len++; + } + } + else + { + /* ambiguous: list the candidates and redraw */ + cli_write("\r\n"); + for (i = 0; i < CLI_CMD_COUNT; i++) + { + const char* name = s_cmds[i].name; + if (strncmp(name, line, len) == 0) + { + cli_write(name); + cli_write(" "); + } + } + cli_write("\r\n"); + boot_cli_redraw(line, len); + } + return len; +} + /** * @brief Download-mode main loop. Never returns (leaves via reset only). */ void boot_cli_run(void) { static char s_line[CLI_LINE_SIZE]; - uint8_t len = 0; + uint16_t len = 0; uint32_t otaLastRx = 0; - cli_write("\r\nCLI ready (bootloader download mode). Type 'help' for commands.\r\n" - BOOT_CLI_PROMPT); + cli_write("\r\nCLI ready (bootloader download mode). Type 'help' for commands " + "(TAB = complete).\r\n" BOOT_CLI_PROMPT); for (;;) { @@ -424,6 +543,10 @@ void boot_cli_run(void) } break; + case CLI_KEY_TAB: + len = boot_cli_tab_complete(s_line, len); + break; + default: if (ch >= 0x20u && len < CLI_LINE_SIZE - 1u) { diff --git a/Boot/src/boot_version.h b/Boot/src/boot_version.h index 2201168..92bb264 100644 --- a/Boot/src/boot_version.h +++ b/Boot/src/boot_version.h @@ -6,6 +6,6 @@ #ifndef __BOOT_VERSION_H__ #define __BOOT_VERSION_H__ -#define BOOT_FW_VERSION "V1.01.00" +#define BOOT_FW_VERSION "V1.01.02" #endif /* __BOOT_VERSION_H__ */ diff --git a/Boot/src/main.c b/Boot/src/main.c index cabd916..dd1aa25 100644 --- a/Boot/src/main.c +++ b/Boot/src/main.c @@ -7,6 +7,8 @@ * production download and bricked-device recovery. * * Download mode entry: + * 0. strap pin held HIGH (3.3 V) at reset - forces download mode + * deterministically, no host on the UART needed, * 1. press Enter within the 2 s window printed in the boot banner, or * 2. automatic when there is no jumpable image: the bootsetting record * is invalid AND the APP1 vector table fails sanity (SP outside the @@ -34,6 +36,16 @@ #define SRAM_SP_MIN 0x20004001u #define SRAM_SP_MAX 0x2000C000u +/* Download-mode strap pin: tie it HIGH (the board's 3.3 V rail) at reset to + * force download mode. PB5 is free on the STB board (not SWD PA4/PA5, not + * USART1 PB6/PB7, not LED PB0/PA6, not 32.768 kHz crystal PB8/PB9, not the + * user keys PB1/PB2) and is broken out on header J3 next to the UART pins. + * The internal pull-down keeps the un-strapped state LOW (normal boot); an + * external 3.3 V drive overrides that weak pull-down cleanly. */ +#define BOOT_DL_STRAP_GPIO GPIOB +#define BOOT_DL_STRAP_CLK RCC_APB2_PERIPH_GPIOB +#define BOOT_DL_STRAP_PIN GPIO_PIN_5 + extern void boot_cli_run(void); /* boot_cli.c - never returns */ /** @@ -82,6 +94,24 @@ static void puts_boot(const char* s) } } +/** + * @brief Configure the download strap pin as a pull-down input and read it. + * @return 1 when the pin is HIGH (3.3 V applied -> enter download mode). + */ +static int boot_dl_strap_active(void) +{ + GPIO_InitType s; + + RCC_EnableAPB2PeriphClk(BOOT_DL_STRAP_CLK, ENABLE); + GPIO_InitStruct(&s); + s.Pin = BOOT_DL_STRAP_PIN; + s.GPIO_Mode = GPIO_MODE_INPUT; + s.GPIO_Pull = GPIO_PULL_DOWN; + GPIO_InitPeripheral(BOOT_DL_STRAP_GPIO, &s); + + return (GPIO_ReadInputDataBit(BOOT_DL_STRAP_GPIO, BOOT_DL_STRAP_PIN) == Bit_SET) ? 1 : 0; +} + /** * @brief Main program. */ @@ -114,15 +144,25 @@ int main(void) puts_boot("\r\n[boot] CAIIC-BOOT " BOOT_FW_VERSION " - Enter within 2s: download mode\r\n"); - /* Entry 1: Enter key inside the window */ - window_start = boot_millis(); - while ((boot_millis() - window_start) < BOOT_DL_WINDOW_MS) + /* Entry 0 (strap): 3.3 V held on the strap pin forces download mode */ + if (boot_dl_strap_active()) { - uint8_t ch; - if (boot_usart_read(&ch) != 0 && (ch == '\r' || ch == '\n')) + enter_dl = 1; + puts_boot("[boot] strap pin HIGH (3V3): download mode\r\n"); + } + + /* Entry 1: Enter key inside the window (skipped when strap already set) */ + if (!enter_dl) + { + window_start = boot_millis(); + while ((boot_millis() - window_start) < BOOT_DL_WINDOW_MS) { - enter_dl = 1; - break; + uint8_t ch; + if (boot_usart_read(&ch) != 0 && (ch == '\r' || ch == '\n')) + { + enter_dl = 1; + break; + } } } diff --git a/docs/开发日志.md b/docs/开发日志.md index e699ccd..90b2719 100644 --- a/docs/开发日志.md +++ b/docs/开发日志.md @@ -1372,3 +1372,49 @@ APP2 链接的镜像发向 APP1 区。设备端 END 校验(向量表 Reset PC - 协议文档:`docs/ble_protocol.md` §6.8。注意 **Boot 本身不能被 OTA 更新** (OTA 只写 APP bank),升级 Boot 只能 SWD 整片包;已出厂设备的旧 Boot 无 download 模式,功能不受影响。 + +## 53. Boot 新增 3.3V 拉高下载 strapping 机制(2026-09-06,Boot V1.01.01) + +- 需求:在不动原有 2s 回车窗口 / 救砖自动进入两条入口的前提下,**新增一条 + 纯硬件入口**——上电/复位时把某一 IO 脚接 3.3V(板载 VDD 轨),Boot 即进入 + download 模式,无需 PC 串口在 2s 内回车,方便产线/现场用一根跳线强制进入。 +- 引脚选型(依据 STB 开发板原理图 `nations-tec/N32WB031_STB_V1.3` + SDK + EVAL 例程按键定义): + - 占用脚(必须避开):SWD=PA4/PA5、LED1=PB0(D1)、LED2=PA6(D2)、 + USART1=PB6(TX)/PB7(RX)、32.768K 晶振=PB8/PB9、用户键 KEY1=PB1/KEY2=PB2 + (SDK `central_hogprh`/`EXTI/KeyInterrupt` 等例程均定义 PB1/PB2); + PA0 为 WKUP 唤醒脚,也避开。 + - **选定 PB5**:空闲、纯 GPIO、无板载按键/LED/晶振/SWD/串口占用,且在 + 排针 J3 上与 PB6(TX)/PB7(RX) 相邻,接跳线最方便。 +- 实现(`Boot/src/main.c`): + - 新增宏 `BOOT_DL_STRAP_GPIO=GPIOB` / `BOOT_DL_STRAP_PIN=GPIO_PIN_5` / + `BOOT_DL_STRAP_CLK=RCC_APB2_PERIPH_GPIOB`; + - `boot_dl_strap_active()`:使能 GPIOB 时钟 → 配为**输入 + 内部下拉** + (`GPIO_MODE_INPUT` + `GPIO_PULL_DOWN`)→ 读 `GPIO_ReadInputDataBit`, + 为高返回 1。不接跳线时内部弱下拉把脚拉低 → 正常启动;外接 3.3V 强驱动 + 覆盖弱下拉 → 读高 → 进 download; + - 主流程:banner 后**先查 strap**(置 enter_dl 并打印 + `[boot] strap pin HIGH (3V3): download mode`),strap 生效时**跳过 2s + 回车窗口**直接进 download;未生效则继续走原有 2s 窗口 + 救砖判断, + 两条旧入口行为不变。 +- 版本:`Boot/src/boot_version.h` `BOOT_FW_VERSION` V1.01.00 → V1.01.01。 +- 用法:板子断电 → 用跳线把 J3 的 PB5 接到 3.3V(J3 上有 VDD_U1/3.3V 脚)→ + 上电/复位 → 看到 `strap pin HIGH (3V3)` 即进入 download 模式(CLI + OTA)。 +- 注意:PB5 与 LPUART 无冲突(本工程未用 LPUART 日志);若日后产品板复用 + PB5,只需改上述三个宏即可换脚。 + +## 54. Boot download CLI 移植 TAB 命令补全(2026-09-06,Boot V1.01.02) + +- 从 APP 的 `mcm-ddc-ble/src/app_cli.c` 把 **TAB 命令名自动补全**移植到 + `Boot/src/boot_cli.c`(Boot 侧为裸机轮询行编辑器,命令表是本地 `s_cmds[]`, + 直接引用本地表而非 cli_core 的枚举函数): + - `boot_cli_tab_complete()`:只补全首 token(已含空格则不补);单匹配→补全 + 命令名并追加一个空格;多匹配→先扩展到公共前缀,再按 TAB 列出候选; + - `boot_cli_redraw()`:多匹配列出候选后重画 `caiic->` 提示符 + 当前行 + (Boot 无历史导航,`shownLen` 恒等于当前行长); + - `boot_cli_run()`:switch 新增 `CLI_KEY_TAB(0x09)` 分支,`len` 由 + `uint8_t` 改 `uint16_t`;ready banner 提示 `(TAB = complete)`。 +- 行为与 APP 一致:`b`+TAB → 扩到 `bs`(bsdump/bsset 公共前缀),再 TAB 列出 + `bsdump bsset`;`d`+TAB → `devinfo `;空行+TAB → 列出全部命令。 +- 版本:`Boot/src/boot_version.h` V1.01.01 → V1.01.02;构建 0E/0W, + `Code=10894 RO-data=2590 RW-data=96 ZI-data=6648`,bin 13580B(16KB 区内)。 diff --git a/tools/out/mothercup_ble_prod.bin b/tools/out/mothercup_ble_prod.bin index b4f335f2505648e8e631663ee1e681e5a38176d1..43b64abeac5113e0824ec77bc2b7d8caeb051f85 100644 GIT binary patch delta 2937 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