boot V1.01.04: download CLI 移植 UP/DOWN 历史导航

- Boot/src/boot_cli.c: 命令历史环形缓冲(8条) + ESC [ A/B 箭头历史导航,
  回车入栈/重画提示符+整行, shownLen 同步维护
- help 提示串更新为 'keys: TAB = complete, UP/DOWN = history' (与 APP 一致)
- Boot/src/boot_version.h: V1.01.03 -> V1.01.04
- docs/开发日志.md: 新增 §56
This commit is contained in:
evan.liu 2026-09-06 08:58:01 +08:00
parent 17e814a883
commit 8b1744744e
8 changed files with 1246 additions and 1084 deletions

View File

@ -93,6 +93,11 @@ Section Cross References
boot_cli.o(i.boot_cli_run) refers to app_ota.o(i.app_ota_chan_idle) for app_ota_chan_idle
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_history_get) for cli_history_get
boot_cli.o(i.boot_cli_run) refers to strcpy.o(.text) for strcpy
boot_cli.o(i.boot_cli_run) refers to boot_cli.o(i.boot_cli_redraw) for boot_cli_redraw
boot_cli.o(i.boot_cli_run) refers to strlen.o(.text) for strlen
boot_cli.o(i.boot_cli_run) refers to boot_cli.o(i.cli_history_add) for cli_history_add
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
@ -110,6 +115,12 @@ Section Cross References
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
boot_cli.o(i.cli_history_add) refers to strcmp.o(.text) for strcmp
boot_cli.o(i.cli_history_add) refers to strcpy.o(.text) for strcpy
boot_cli.o(i.cli_history_add) refers to boot_cli.o(.data) for s_histCount
boot_cli.o(i.cli_history_add) refers to boot_cli.o(.bss) for s_history
boot_cli.o(i.cli_history_get) refers to boot_cli.o(.data) for s_histHead
boot_cli.o(i.cli_history_get) refers to boot_cli.o(.bss) for s_history
boot_cli.o(i.cli_printf) refers to boot_cli.o(i.str_pad) for str_pad
boot_cli.o(i.cli_printf) refers to boot_cli.o(i.u32_to_str) for u32_to_str
boot_cli.o(i.cli_printf) refers to boot_cli.o(i.cli_write) for cli_write
@ -387,38 +398,38 @@ Image Symbol Table
Symbol Name Value Ov Type Size Object(Section)
../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 isupper_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isprint_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 iscntrl_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalpha_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_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 entry7a.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 entry5.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.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 entry10b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.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 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.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/memcpy.c 0x00000000 Number 0 memcpyb.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
@ -488,134 +499,140 @@ Image Symbol Table
CmdDevInfo 0x01000959 Thumb Code 90 boot_cli.o(i.CmdDevInfo)
i.CmdHelp 0x01000a38 Section 0 boot_cli.o(i.CmdHelp)
CmdHelp 0x01000a39 Thumb Code 120 boot_cli.o(i.CmdHelp)
i.CmdOta 0x01000b08 Section 0 boot_cli.o(i.CmdOta)
CmdOta 0x01000b09 Thumb Code 20 boot_cli.o(i.CmdOta)
i.CmdReset 0x01000b24 Section 0 boot_cli.o(i.CmdReset)
CmdReset 0x01000b25 Thumb Code 34 boot_cli.o(i.CmdReset)
i.CmdUartInfo 0x01000b60 Section 0 boot_cli.o(i.CmdUartInfo)
CmdUartInfo 0x01000b61 Thumb Code 26 boot_cli.o(i.CmdUartInfo)
i.CmdVersion 0x01000c10 Section 0 boot_cli.o(i.CmdVersion)
CmdVersion 0x01000c11 Thumb Code 26 boot_cli.o(i.CmdVersion)
i.DMA_DeInit 0x01000c84 Section 0 n32wb03x_dma.o(i.DMA_DeInit)
i.DMA_EnableChannel 0x01000d24 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel)
i.DMA_GetCurrDataCounter 0x01000d40 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
i.DMA_Init 0x01000d48 Section 0 n32wb03x_dma.o(i.DMA_Init)
i.DMA_RequestRemap 0x01000d88 Section 0 n32wb03x_dma.o(i.DMA_RequestRemap)
i.GPIO_InitPeripheral 0x01000d98 Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
i.GPIO_InitStruct 0x01000ea0 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct)
i.GPIO_ReadInputDataBit 0x01000ebc Section 0 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit)
i.OTPTrim_Read 0x01000ed0 Section 0 system_n32wb03x.o(i.OTPTrim_Read)
i.Qflash_Erase_Sector 0x01000f9c Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
i.Qflash_Init 0x01000fd8 Section 0 n32wb03x_qflash.o(i.Qflash_Init)
i.Qflash_Write 0x01001010 Section 0 n32wb03x_qflash.o(i.Qflash_Write)
i.RCC_EnableAHBPeriphClk 0x01001054 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
i.RCC_EnableAPB2PeriphClk 0x01001074 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
i.RCC_GetClocksFreqValue 0x01001094 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
i.RCC_HsiCalib 0x01001138 Section 0 system_n32wb03x.o(i.RCC_HsiCalib)
RCC_HsiCalib 0x01001139 Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib)
i.SystemInit 0x01001268 Section 0 system_n32wb03x.o(i.SystemInit)
i.SystemTrimValueRead 0x01001384 Section 0 system_n32wb03x.o(i.SystemTrimValueRead)
i.USART_Enable 0x01001398 Section 0 n32wb03x_usart.o(i.USART_Enable)
i.USART_EnableDMA 0x010013b8 Section 0 n32wb03x_usart.o(i.USART_EnableDMA)
i.USART_GetFlagStatus 0x010013cc Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus)
i.USART_Init 0x010013ec Section 0 n32wb03x_usart.o(i.USART_Init)
i.USART_SendData 0x010014a0 Section 0 n32wb03x_usart.o(i.USART_SendData)
i.__aeabi_errno_addr 0x010014a8 Section 0 errno.o(i.__aeabi_errno_addr)
i.__scatterload_copy 0x010014b0 Section 14 handlers.o(i.__scatterload_copy)
i.__scatterload_null 0x010014be Section 2 handlers.o(i.__scatterload_null)
i.__scatterload_zeroinit 0x010014c0 Section 14 handlers.o(i.__scatterload_zeroinit)
i.__set_PRIMASK 0x010014ce Section 0 system_n32wb03x.o(i.__set_PRIMASK)
__set_PRIMASK 0x010014cf Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK)
i.__set_PRIMASK 0x010014d4 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK)
__set_PRIMASK 0x010014d5 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK)
i.app_ota_abort 0x010014dc Section 0 app_ota.o(i.app_ota_abort)
i.app_ota_chan_idle 0x01001518 Section 0 app_ota.o(i.app_ota_chan_idle)
i.app_ota_chan_rx 0x0100152c Section 0 app_ota.o(i.app_ota_chan_rx)
i.app_ota_chan_rx_uart 0x0100166c Section 0 app_ota.o(i.app_ota_chan_rx_uart)
i.app_ota_handle_frame 0x01001690 Section 0 app_ota.o(i.app_ota_handle_frame)
i.app_ota_reset_poll 0x0100170c Section 0 app_ota.o(i.app_ota_reset_poll)
i.boot_cli_redraw 0x01001768 Section 0 boot_cli.o(i.boot_cli_redraw)
boot_cli_redraw 0x01001769 Thumb Code 60 boot_cli.o(i.boot_cli_redraw)
i.boot_cli_run 0x010017b4 Section 0 boot_cli.o(i.boot_cli_run)
i.boot_cli_tab_complete 0x01001910 Section 0 boot_cli.o(i.boot_cli_tab_complete)
boot_cli_tab_complete 0x01001911 Thumb Code 306 boot_cli.o(i.boot_cli_tab_complete)
i.boot_delay_ms 0x01001a54 Section 0 boot_usart.o(i.boot_delay_ms)
i.boot_dl_strap_active 0x01001a6c Section 0 main.o(i.boot_dl_strap_active)
boot_dl_strap_active 0x01001a6d Thumb Code 58 main.o(i.boot_dl_strap_active)
i.boot_millis 0x01001aac Section 0 boot_usart.o(i.boot_millis)
i.boot_usart_init 0x01001ad4 Section 0 boot_usart.o(i.boot_usart_init)
i.boot_usart_read 0x01001be4 Section 0 boot_usart.o(i.boot_usart_read)
i.boot_usart_rx_head 0x01001c24 Section 0 boot_usart.o(i.boot_usart_rx_head)
boot_usart_rx_head 0x01001c25 Thumb Code 18 boot_usart.o(i.boot_usart_rx_head)
i.boot_usart_write 0x01001c3c Section 0 boot_usart.o(i.boot_usart_write)
i.bootset_commit 0x01001c6c Section 0 app_bootset.o(i.bootset_commit)
bootset_commit 0x01001c6d Thumb Code 74 app_bootset.o(i.bootset_commit)
i.bootset_crc 0x01001cc0 Section 0 app_bootset.o(i.bootset_crc)
bootset_crc 0x01001cc1 Thumb Code 14 app_bootset.o(i.bootset_crc)
i.bootset_ensure_qflash 0x01001cd0 Section 0 app_bootset.o(i.bootset_ensure_qflash)
bootset_ensure_qflash 0x01001cd1 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash)
i.bootset_print 0x01001cec Section 0 app_bootset.o(i.bootset_print)
bootset_print 0x01001ced Thumb Code 98 app_bootset.o(i.bootset_print)
i.bootset_valid 0x01001e58 Section 0 app_bootset.o(i.bootset_valid)
bootset_valid 0x01001e59 Thumb Code 32 app_bootset.o(i.bootset_valid)
i.caiic_crc32 0x01001e7c Section 0 boot_crc32.o(i.caiic_crc32)
i.cli_exec_line 0x01001ec0 Section 0 boot_cli.o(i.cli_exec_line)
cli_exec_line 0x01001ec1 Thumb Code 162 boot_cli.o(i.cli_exec_line)
i.cli_printf 0x01001f8c Section 0 boot_cli.o(i.cli_printf)
i.cli_write 0x01002128 Section 0 boot_cli.o(i.cli_write)
i.image_sane 0x01002140 Section 0 main.o(i.image_sane)
image_sane 0x01002141 Thumb Code 44 main.o(i.image_sane)
i.jump_to_app 0x01002174 Section 0 main.o(i.jump_to_app)
jump_to_app 0x01002175 Thumb Code 30 main.o(i.jump_to_app)
i.main 0x01002198 Section 0 main.o(i.main)
i.ota_crc16 0x0100235c Section 0 app_ota.o(i.ota_crc16)
ota_crc16 0x0100235d Thumb Code 68 app_ota.o(i.ota_crc16)
i.ota_erase_up_to 0x010023a8 Section 0 app_ota.o(i.ota_erase_up_to)
ota_erase_up_to 0x010023a9 Thumb Code 54 app_ota.o(i.ota_erase_up_to)
i.ota_on_begin 0x010023e8 Section 0 app_ota.o(i.ota_on_begin)
ota_on_begin 0x010023e9 Thumb Code 294 app_ota.o(i.ota_on_begin)
i.ota_on_data 0x01002558 Section 0 app_ota.o(i.ota_on_data)
ota_on_data 0x01002559 Thumb Code 396 app_ota.o(i.ota_on_data)
i.ota_on_end 0x01002700 Section 0 app_ota.o(i.ota_on_end)
ota_on_end 0x01002701 Thumb Code 326 app_ota.o(i.ota_on_end)
i.ota_program 0x01002870 Section 0 app_ota.o(i.ota_program)
ota_program 0x01002871 Thumb Code 46 app_ota.o(i.ota_program)
i.ota_rd32 0x010028a8 Section 0 app_ota.o(i.ota_rd32)
ota_rd32 0x010028a9 Thumb Code 24 app_ota.o(i.ota_rd32)
i.ota_respond 0x010028c0 Section 0 app_ota.o(i.ota_respond)
ota_respond 0x010028c1 Thumb Code 118 app_ota.o(i.ota_respond)
i.ota_uart_sink 0x0100293c Section 0 app_ota.o(i.ota_uart_sink)
ota_uart_sink 0x0100293d Thumb Code 22 app_ota.o(i.ota_uart_sink)
i.ota_update_bootsetting 0x01002958 Section 0 app_ota.o(i.ota_update_bootsetting)
ota_update_bootsetting 0x01002959 Thumb Code 174 app_ota.o(i.ota_update_bootsetting)
i.parse_u32 0x01002a24 Section 0 app_bootset.o(i.parse_u32)
parse_u32 0x01002a25 Thumb Code 46 app_bootset.o(i.parse_u32)
i.puts_boot 0x01002a52 Section 0 main.o(i.puts_boot)
puts_boot 0x01002a53 Thumb Code 24 main.o(i.puts_boot)
i.read_flash_ID 0x01002a6c Section 0 system_n32wb03x.o(i.read_flash_ID)
read_flash_ID 0x01002a6d Thumb Code 62 system_n32wb03x.o(i.read_flash_ID)
i.str_pad 0x01002ab0 Section 0 boot_cli.o(i.str_pad)
str_pad 0x01002ab1 Thumb Code 78 boot_cli.o(i.str_pad)
i.u32_to_str 0x01002afe Section 0 boot_cli.o(i.u32_to_str)
u32_to_str 0x01002aff Thumb Code 108 boot_cli.o(i.u32_to_str)
.constdata 0x01002b6a Section 472 system_n32wb03x.o(.constdata)
.constdata 0x01002d44 Section 108 boot_cli.o(.constdata)
s_cmds 0x01002d44 Data 108 boot_cli.o(.constdata)
.constdata 0x01002db0 Section 12 n32wb03x_rcc.o(.constdata)
s_ApbPresTable 0x01002db0 Data 8 n32wb03x_rcc.o(.constdata)
s_AhbPresTable 0x01002db8 Data 4 n32wb03x_rcc.o(.constdata)
.constdata 0x01002dbc Section 804 n32wb03x_qflash.o(.constdata)
.constdata 0x010030e0 Section 129 ctype_o.o(.constdata)
.constdata 0x01003164 Section 4 ctype_o.o(.constdata)
table 0x01003164 Data 4 ctype_o.o(.constdata)
.conststring 0x01003168 Section 666 boot_cli.o(.conststring)
.conststring 0x01003404 Section 145 app_bootset.o(.conststring)
i.CmdOta 0x01000b1c Section 0 boot_cli.o(i.CmdOta)
CmdOta 0x01000b1d Thumb Code 20 boot_cli.o(i.CmdOta)
i.CmdReset 0x01000b38 Section 0 boot_cli.o(i.CmdReset)
CmdReset 0x01000b39 Thumb Code 34 boot_cli.o(i.CmdReset)
i.CmdUartInfo 0x01000b74 Section 0 boot_cli.o(i.CmdUartInfo)
CmdUartInfo 0x01000b75 Thumb Code 26 boot_cli.o(i.CmdUartInfo)
i.CmdVersion 0x01000c24 Section 0 boot_cli.o(i.CmdVersion)
CmdVersion 0x01000c25 Thumb Code 26 boot_cli.o(i.CmdVersion)
i.DMA_DeInit 0x01000c98 Section 0 n32wb03x_dma.o(i.DMA_DeInit)
i.DMA_EnableChannel 0x01000d38 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel)
i.DMA_GetCurrDataCounter 0x01000d54 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
i.DMA_Init 0x01000d5c Section 0 n32wb03x_dma.o(i.DMA_Init)
i.DMA_RequestRemap 0x01000d9c Section 0 n32wb03x_dma.o(i.DMA_RequestRemap)
i.GPIO_InitPeripheral 0x01000dac Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
i.GPIO_InitStruct 0x01000eb4 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct)
i.GPIO_ReadInputDataBit 0x01000ed0 Section 0 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit)
i.OTPTrim_Read 0x01000ee4 Section 0 system_n32wb03x.o(i.OTPTrim_Read)
i.Qflash_Erase_Sector 0x01000fb0 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
i.Qflash_Init 0x01000fec Section 0 n32wb03x_qflash.o(i.Qflash_Init)
i.Qflash_Write 0x01001024 Section 0 n32wb03x_qflash.o(i.Qflash_Write)
i.RCC_EnableAHBPeriphClk 0x01001068 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
i.RCC_EnableAPB2PeriphClk 0x01001088 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
i.RCC_GetClocksFreqValue 0x010010a8 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
i.RCC_HsiCalib 0x0100114c Section 0 system_n32wb03x.o(i.RCC_HsiCalib)
RCC_HsiCalib 0x0100114d Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib)
i.SystemInit 0x0100127c Section 0 system_n32wb03x.o(i.SystemInit)
i.SystemTrimValueRead 0x01001398 Section 0 system_n32wb03x.o(i.SystemTrimValueRead)
i.USART_Enable 0x010013ac Section 0 n32wb03x_usart.o(i.USART_Enable)
i.USART_EnableDMA 0x010013cc Section 0 n32wb03x_usart.o(i.USART_EnableDMA)
i.USART_GetFlagStatus 0x010013e0 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus)
i.USART_Init 0x01001400 Section 0 n32wb03x_usart.o(i.USART_Init)
i.USART_SendData 0x010014b4 Section 0 n32wb03x_usart.o(i.USART_SendData)
i.__aeabi_errno_addr 0x010014bc Section 0 errno.o(i.__aeabi_errno_addr)
i.__scatterload_copy 0x010014c4 Section 14 handlers.o(i.__scatterload_copy)
i.__scatterload_null 0x010014d2 Section 2 handlers.o(i.__scatterload_null)
i.__scatterload_zeroinit 0x010014d4 Section 14 handlers.o(i.__scatterload_zeroinit)
i.__set_PRIMASK 0x010014e2 Section 0 system_n32wb03x.o(i.__set_PRIMASK)
__set_PRIMASK 0x010014e3 Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK)
i.__set_PRIMASK 0x010014e8 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK)
__set_PRIMASK 0x010014e9 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK)
i.app_ota_abort 0x010014f0 Section 0 app_ota.o(i.app_ota_abort)
i.app_ota_chan_idle 0x0100152c Section 0 app_ota.o(i.app_ota_chan_idle)
i.app_ota_chan_rx 0x01001540 Section 0 app_ota.o(i.app_ota_chan_rx)
i.app_ota_chan_rx_uart 0x01001680 Section 0 app_ota.o(i.app_ota_chan_rx_uart)
i.app_ota_handle_frame 0x010016a4 Section 0 app_ota.o(i.app_ota_handle_frame)
i.app_ota_reset_poll 0x01001720 Section 0 app_ota.o(i.app_ota_reset_poll)
i.boot_cli_redraw 0x0100177c Section 0 boot_cli.o(i.boot_cli_redraw)
boot_cli_redraw 0x0100177d Thumb Code 60 boot_cli.o(i.boot_cli_redraw)
i.boot_cli_run 0x010017c8 Section 0 boot_cli.o(i.boot_cli_run)
i.boot_cli_tab_complete 0x010019e8 Section 0 boot_cli.o(i.boot_cli_tab_complete)
boot_cli_tab_complete 0x010019e9 Thumb Code 306 boot_cli.o(i.boot_cli_tab_complete)
i.boot_delay_ms 0x01001b2c Section 0 boot_usart.o(i.boot_delay_ms)
i.boot_dl_strap_active 0x01001b44 Section 0 main.o(i.boot_dl_strap_active)
boot_dl_strap_active 0x01001b45 Thumb Code 58 main.o(i.boot_dl_strap_active)
i.boot_millis 0x01001b84 Section 0 boot_usart.o(i.boot_millis)
i.boot_usart_init 0x01001bac Section 0 boot_usart.o(i.boot_usart_init)
i.boot_usart_read 0x01001cbc Section 0 boot_usart.o(i.boot_usart_read)
i.boot_usart_rx_head 0x01001cfc Section 0 boot_usart.o(i.boot_usart_rx_head)
boot_usart_rx_head 0x01001cfd Thumb Code 18 boot_usart.o(i.boot_usart_rx_head)
i.boot_usart_write 0x01001d14 Section 0 boot_usart.o(i.boot_usart_write)
i.bootset_commit 0x01001d44 Section 0 app_bootset.o(i.bootset_commit)
bootset_commit 0x01001d45 Thumb Code 74 app_bootset.o(i.bootset_commit)
i.bootset_crc 0x01001d98 Section 0 app_bootset.o(i.bootset_crc)
bootset_crc 0x01001d99 Thumb Code 14 app_bootset.o(i.bootset_crc)
i.bootset_ensure_qflash 0x01001da8 Section 0 app_bootset.o(i.bootset_ensure_qflash)
bootset_ensure_qflash 0x01001da9 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash)
i.bootset_print 0x01001dc4 Section 0 app_bootset.o(i.bootset_print)
bootset_print 0x01001dc5 Thumb Code 98 app_bootset.o(i.bootset_print)
i.bootset_valid 0x01001f30 Section 0 app_bootset.o(i.bootset_valid)
bootset_valid 0x01001f31 Thumb Code 32 app_bootset.o(i.bootset_valid)
i.caiic_crc32 0x01001f54 Section 0 boot_crc32.o(i.caiic_crc32)
i.cli_exec_line 0x01001f98 Section 0 boot_cli.o(i.cli_exec_line)
cli_exec_line 0x01001f99 Thumb Code 162 boot_cli.o(i.cli_exec_line)
i.cli_history_add 0x01002064 Section 0 boot_cli.o(i.cli_history_add)
cli_history_add 0x01002065 Thumb Code 106 boot_cli.o(i.cli_history_add)
i.cli_history_get 0x010020dc Section 0 boot_cli.o(i.cli_history_get)
cli_history_get 0x010020dd Thumb Code 36 boot_cli.o(i.cli_history_get)
i.cli_printf 0x01002108 Section 0 boot_cli.o(i.cli_printf)
i.cli_write 0x010022a4 Section 0 boot_cli.o(i.cli_write)
i.image_sane 0x010022bc Section 0 main.o(i.image_sane)
image_sane 0x010022bd Thumb Code 44 main.o(i.image_sane)
i.jump_to_app 0x010022f0 Section 0 main.o(i.jump_to_app)
jump_to_app 0x010022f1 Thumb Code 30 main.o(i.jump_to_app)
i.main 0x01002314 Section 0 main.o(i.main)
i.ota_crc16 0x010024d8 Section 0 app_ota.o(i.ota_crc16)
ota_crc16 0x010024d9 Thumb Code 68 app_ota.o(i.ota_crc16)
i.ota_erase_up_to 0x01002524 Section 0 app_ota.o(i.ota_erase_up_to)
ota_erase_up_to 0x01002525 Thumb Code 54 app_ota.o(i.ota_erase_up_to)
i.ota_on_begin 0x01002564 Section 0 app_ota.o(i.ota_on_begin)
ota_on_begin 0x01002565 Thumb Code 294 app_ota.o(i.ota_on_begin)
i.ota_on_data 0x010026d4 Section 0 app_ota.o(i.ota_on_data)
ota_on_data 0x010026d5 Thumb Code 396 app_ota.o(i.ota_on_data)
i.ota_on_end 0x0100287c Section 0 app_ota.o(i.ota_on_end)
ota_on_end 0x0100287d Thumb Code 326 app_ota.o(i.ota_on_end)
i.ota_program 0x010029ec Section 0 app_ota.o(i.ota_program)
ota_program 0x010029ed Thumb Code 46 app_ota.o(i.ota_program)
i.ota_rd32 0x01002a24 Section 0 app_ota.o(i.ota_rd32)
ota_rd32 0x01002a25 Thumb Code 24 app_ota.o(i.ota_rd32)
i.ota_respond 0x01002a3c Section 0 app_ota.o(i.ota_respond)
ota_respond 0x01002a3d Thumb Code 118 app_ota.o(i.ota_respond)
i.ota_uart_sink 0x01002ab8 Section 0 app_ota.o(i.ota_uart_sink)
ota_uart_sink 0x01002ab9 Thumb Code 22 app_ota.o(i.ota_uart_sink)
i.ota_update_bootsetting 0x01002ad4 Section 0 app_ota.o(i.ota_update_bootsetting)
ota_update_bootsetting 0x01002ad5 Thumb Code 174 app_ota.o(i.ota_update_bootsetting)
i.parse_u32 0x01002ba0 Section 0 app_bootset.o(i.parse_u32)
parse_u32 0x01002ba1 Thumb Code 46 app_bootset.o(i.parse_u32)
i.puts_boot 0x01002bce Section 0 main.o(i.puts_boot)
puts_boot 0x01002bcf Thumb Code 24 main.o(i.puts_boot)
i.read_flash_ID 0x01002be8 Section 0 system_n32wb03x.o(i.read_flash_ID)
read_flash_ID 0x01002be9 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID)
i.str_pad 0x01002c2c Section 0 boot_cli.o(i.str_pad)
str_pad 0x01002c2d Thumb Code 78 boot_cli.o(i.str_pad)
i.u32_to_str 0x01002c7a Section 0 boot_cli.o(i.u32_to_str)
u32_to_str 0x01002c7b Thumb Code 108 boot_cli.o(i.u32_to_str)
.constdata 0x01002ce6 Section 472 system_n32wb03x.o(.constdata)
.constdata 0x01002ec0 Section 108 boot_cli.o(.constdata)
s_cmds 0x01002ec0 Data 108 boot_cli.o(.constdata)
.constdata 0x01002f2c Section 12 n32wb03x_rcc.o(.constdata)
s_ApbPresTable 0x01002f2c Data 8 n32wb03x_rcc.o(.constdata)
s_AhbPresTable 0x01002f34 Data 4 n32wb03x_rcc.o(.constdata)
.constdata 0x01002f38 Section 804 n32wb03x_qflash.o(.constdata)
.constdata 0x0100325c Section 129 ctype_o.o(.constdata)
.constdata 0x010032e0 Section 4 ctype_o.o(.constdata)
table 0x010032e0 Data 4 ctype_o.o(.constdata)
.conststring 0x010032e4 Section 666 boot_cli.o(.conststring)
.conststring 0x01003580 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)
s_millis 0x20004008 Data 4 boot_usart.o(.data)
.data 0x2000400c Section 1 boot_cli.o(.data)
.data 0x2000400c Section 3 boot_cli.o(.data)
s_otaMode 0x2000400c Data 1 boot_cli.o(.data)
s_histCount 0x2000400d Data 1 boot_cli.o(.data)
s_histHead 0x2000400e Data 1 boot_cli.o(.data)
.data 0x20004010 Section 61 app_ota.o(.data)
s_active 0x20004010 Data 1 app_ota.o(.data)
s_target_base 0x20004014 Data 4 app_ota.o(.data)
@ -646,14 +663,15 @@ Image Symbol Table
.bss 0x20004060 Section 52 system_n32wb03x.o(.bss)
.bss 0x20004094 Section 3072 boot_usart.o(.bss)
s_rxRing 0x20004094 Data 3072 boot_usart.o(.bss)
.bss 0x20004c94 Section 176 boot_cli.o(.bss)
s_txBuf 0x20004c94 Data 96 boot_cli.o(.bss)
s_line 0x20004cf4 Data 80 boot_cli.o(.bss)
.bss 0x20004d44 Section 487 app_ota.o(.bss)
s_chanBuf 0x20004d44 Data 487 app_ota.o(.bss)
.bss 0x20004f2c Section 808 n32wb03x_qflash.o(.bss)
ram_qflash_cmd 0x20004f2c Data 808 n32wb03x_qflash.o(.bss)
STACK 0x20005258 Section 2048 startup_n32wb03x.o(STACK)
.bss 0x20004c94 Section 816 boot_cli.o(.bss)
s_history 0x20004c94 Data 640 boot_cli.o(.bss)
s_txBuf 0x20004f14 Data 96 boot_cli.o(.bss)
s_line 0x20004f74 Data 80 boot_cli.o(.bss)
.bss 0x20004fc4 Section 487 app_ota.o(.bss)
s_chanBuf 0x20004fc4 Data 487 app_ota.o(.bss)
.bss 0x200051ac Section 808 n32wb03x_qflash.o(.bss)
ram_qflash_cmd 0x200051ac Data 808 n32wb03x_qflash.o(.bss)
STACK 0x200054d8 Section 2048 startup_n32wb03x.o(STACK)
Global Symbols
@ -747,61 +765,61 @@ Image Symbol Table
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 0x01000c85 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit)
DMA_EnableChannel 0x01000d25 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel)
DMA_GetCurrDataCounter 0x01000d41 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
DMA_Init 0x01000d49 Thumb Code 58 n32wb03x_dma.o(i.DMA_Init)
DMA_RequestRemap 0x01000d89 Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap)
GPIO_InitPeripheral 0x01000d99 Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
GPIO_InitStruct 0x01000ea1 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct)
GPIO_ReadInputDataBit 0x01000ebd Thumb Code 20 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit)
OTPTrim_Read 0x01000ed1 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read)
Qflash_Erase_Sector 0x01000f9d Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
Qflash_Init 0x01000fd9 Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init)
Qflash_Write 0x01001011 Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write)
RCC_EnableAHBPeriphClk 0x01001055 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
RCC_EnableAPB2PeriphClk 0x01001075 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
RCC_GetClocksFreqValue 0x01001095 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
SystemInit 0x01001269 Thumb Code 250 system_n32wb03x.o(i.SystemInit)
SystemTrimValueRead 0x01001385 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead)
USART_Enable 0x01001399 Thumb Code 26 n32wb03x_usart.o(i.USART_Enable)
USART_EnableDMA 0x010013b9 Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA)
USART_GetFlagStatus 0x010013cd Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus)
USART_Init 0x010013ed Thumb Code 162 n32wb03x_usart.o(i.USART_Init)
USART_SendData 0x010014a1 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData)
__aeabi_errno_addr 0x010014a9 Thumb Code 4 errno.o(i.__aeabi_errno_addr)
__rt_errno_addr 0x010014a9 Thumb Code 0 errno.o(i.__aeabi_errno_addr)
__scatterload_copy 0x010014b1 Thumb Code 14 handlers.o(i.__scatterload_copy)
__scatterload_null 0x010014bf Thumb Code 2 handlers.o(i.__scatterload_null)
__scatterload_zeroinit 0x010014c1 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
app_ota_abort 0x010014dd Thumb Code 32 app_ota.o(i.app_ota_abort)
app_ota_chan_idle 0x01001519 Thumb Code 12 app_ota.o(i.app_ota_chan_idle)
app_ota_chan_rx 0x0100152d Thumb Code 298 app_ota.o(i.app_ota_chan_rx)
app_ota_chan_rx_uart 0x0100166d Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart)
app_ota_handle_frame 0x01001691 Thumb Code 106 app_ota.o(i.app_ota_handle_frame)
app_ota_reset_poll 0x0100170d Thumb Code 70 app_ota.o(i.app_ota_reset_poll)
boot_cli_run 0x010017b5 Thumb Code 240 boot_cli.o(i.boot_cli_run)
boot_delay_ms 0x01001a55 Thumb Code 24 boot_usart.o(i.boot_delay_ms)
boot_millis 0x01001aad Thumb Code 30 boot_usart.o(i.boot_millis)
boot_usart_init 0x01001ad5 Thumb Code 238 boot_usart.o(i.boot_usart_init)
boot_usart_read 0x01001be5 Thumb Code 54 boot_usart.o(i.boot_usart_read)
boot_usart_write 0x01001c3d Thumb Code 42 boot_usart.o(i.boot_usart_write)
caiic_crc32 0x01001e7d Thumb Code 62 boot_crc32.o(i.caiic_crc32)
cli_printf 0x01001f8d Thumb Code 408 boot_cli.o(i.cli_printf)
cli_write 0x01002129 Thumb Code 22 boot_cli.o(i.cli_write)
main 0x01002199 Thumb Code 210 main.o(i.main)
TRIM_READ_CMD_CODE 0x01002b6a Data 320 system_n32wb03x.o(.constdata)
CMD_RDID 0x01002caa Data 152 system_n32wb03x.o(.constdata)
const_qflash_cmd 0x01002dbc Data 804 n32wb03x_qflash.o(.constdata)
__ctype_table 0x010030e0 Data 129 ctype_o.o(.constdata)
Region$$Table$$Base 0x01003498 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x010034b8 Number 0 anon$$obj.o(Region$$Table)
DMA_DeInit 0x01000c99 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit)
DMA_EnableChannel 0x01000d39 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel)
DMA_GetCurrDataCounter 0x01000d55 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
DMA_Init 0x01000d5d Thumb Code 58 n32wb03x_dma.o(i.DMA_Init)
DMA_RequestRemap 0x01000d9d Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap)
GPIO_InitPeripheral 0x01000dad Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
GPIO_InitStruct 0x01000eb5 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct)
GPIO_ReadInputDataBit 0x01000ed1 Thumb Code 20 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit)
OTPTrim_Read 0x01000ee5 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read)
Qflash_Erase_Sector 0x01000fb1 Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
Qflash_Init 0x01000fed Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init)
Qflash_Write 0x01001025 Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write)
RCC_EnableAHBPeriphClk 0x01001069 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
RCC_EnableAPB2PeriphClk 0x01001089 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
RCC_GetClocksFreqValue 0x010010a9 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
SystemInit 0x0100127d Thumb Code 250 system_n32wb03x.o(i.SystemInit)
SystemTrimValueRead 0x01001399 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead)
USART_Enable 0x010013ad Thumb Code 26 n32wb03x_usart.o(i.USART_Enable)
USART_EnableDMA 0x010013cd Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA)
USART_GetFlagStatus 0x010013e1 Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus)
USART_Init 0x01001401 Thumb Code 162 n32wb03x_usart.o(i.USART_Init)
USART_SendData 0x010014b5 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData)
__aeabi_errno_addr 0x010014bd Thumb Code 4 errno.o(i.__aeabi_errno_addr)
__rt_errno_addr 0x010014bd Thumb Code 0 errno.o(i.__aeabi_errno_addr)
__scatterload_copy 0x010014c5 Thumb Code 14 handlers.o(i.__scatterload_copy)
__scatterload_null 0x010014d3 Thumb Code 2 handlers.o(i.__scatterload_null)
__scatterload_zeroinit 0x010014d5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
app_ota_abort 0x010014f1 Thumb Code 32 app_ota.o(i.app_ota_abort)
app_ota_chan_idle 0x0100152d Thumb Code 12 app_ota.o(i.app_ota_chan_idle)
app_ota_chan_rx 0x01001541 Thumb Code 298 app_ota.o(i.app_ota_chan_rx)
app_ota_chan_rx_uart 0x01001681 Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart)
app_ota_handle_frame 0x010016a5 Thumb Code 106 app_ota.o(i.app_ota_handle_frame)
app_ota_reset_poll 0x01001721 Thumb Code 70 app_ota.o(i.app_ota_reset_poll)
boot_cli_run 0x010017c9 Thumb Code 432 boot_cli.o(i.boot_cli_run)
boot_delay_ms 0x01001b2d Thumb Code 24 boot_usart.o(i.boot_delay_ms)
boot_millis 0x01001b85 Thumb Code 30 boot_usart.o(i.boot_millis)
boot_usart_init 0x01001bad Thumb Code 238 boot_usart.o(i.boot_usart_init)
boot_usart_read 0x01001cbd Thumb Code 54 boot_usart.o(i.boot_usart_read)
boot_usart_write 0x01001d15 Thumb Code 42 boot_usart.o(i.boot_usart_write)
caiic_crc32 0x01001f55 Thumb Code 62 boot_crc32.o(i.caiic_crc32)
cli_printf 0x01002109 Thumb Code 408 boot_cli.o(i.cli_printf)
cli_write 0x010022a5 Thumb Code 22 boot_cli.o(i.cli_write)
main 0x01002315 Thumb Code 210 main.o(i.main)
TRIM_READ_CMD_CODE 0x01002ce6 Data 320 system_n32wb03x.o(.constdata)
CMD_RDID 0x01002e26 Data 152 system_n32wb03x.o(.constdata)
const_qflash_cmd 0x01002f38 Data 804 n32wb03x_qflash.o(.constdata)
__ctype_table 0x0100325c Data 129 ctype_o.o(.constdata)
Region$$Table$$Base 0x01003614 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x01003634 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)
CMD_FLASH_READ 0x20004058 Data 4 n32wb03x_qflash.o(.data)
trim_stored 0x20004060 Data 52 system_n32wb03x.o(.bss)
__initial_sp 0x20005a58 Data 0 startup_n32wb03x.o(STACK)
__initial_sp 0x20005cd8 Data 0 startup_n32wb03x.o(STACK)
@ -811,165 +829,167 @@ Memory Map of the image
Image Entry point : 0x010000c1
Load Region LR_IROM1 (Base: 0x01000000, Size: 0x00003518, Max: 0x00004000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x01000000, Size: 0x00003694, Max: 0x00004000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x000034b8, Max: 0x00004000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x00003634, 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 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)
0x010000c0 0x010000c0 0x00000000 Code RO 1235 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x010000c0 0x010000c0 0x00000004 Code RO 1260 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x010000c4 0x010000c4 0x00000004 Code RO 1263 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x010000c8 0x010000c8 0x00000000 Code RO 1265 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x010000c8 0x010000c8 0x00000000 Code RO 1267 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x010000c8 0x010000c8 0x00000008 Code RO 1268 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x010000d0 0x010000d0 0x00000000 Code RO 1270 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x010000d0 0x010000d0 0x00000000 Code RO 1272 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x010000d0 0x010000d0 0x00000004 Code RO 1261 .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 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)
0x01000100 0x01000100 0x0000002c Code RO 1238 .text mc_p.l(uidiv.o)
0x0100012c 0x0100012c 0x00000024 Code RO 1240 .text mc_p.l(memcpya.o)
0x01000150 0x01000150 0x00000024 Code RO 1242 .text mc_p.l(memseta.o)
0x01000174 0x01000174 0x0000000e Code RO 1244 .text mc_p.l(strlen.o)
0x01000182 0x01000182 0x0000001c Code RO 1246 .text mc_p.l(strcmp.o)
0x0100019e 0x0100019e 0x00000014 Code RO 1248 .text mc_p.l(memchr.o)
0x010001b2 0x010001b2 0x0000001a Code RO 1250 .text mc_p.l(memcmp.o)
0x010001cc 0x010001cc 0x00000012 Code RO 1252 .text mc_p.l(strcpy.o)
0x010001de 0x010001de 0x0000001e Code RO 1254 .text mc_p.l(strncmp.o)
0x010001fc 0x010001fc 0x00000076 Code RO 1258 .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)
0x01000274 0x01000274 0x00000008 Code RO 1274 .text mc_p.l(ctype_o.o)
0x0100027c 0x0100027c 0x000000a6 Code RO 1309 .text mc_p.l(_strtoul.o)
0x01000322 0x01000322 0x00000002 PAD
0x01000324 0x01000324 0x00000024 Code RO 1301 .text mc_p.l(init.o)
0x01000348 0x01000348 0x0000001e Code RO 1303 .text mc_p.l(_chval.o)
0x01000324 0x01000324 0x00000024 Code RO 1311 .text mc_p.l(init.o)
0x01000348 0x01000348 0x0000001e Code RO 1313 .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
0x01000368 0x01000368 0x000002d8 Code RO 520 i.AppBootset_CmdAppswitch app_bootset.o
0x01000640 0x01000640 0x00000020 Code RO 521 i.AppBootset_CmdBsdump app_bootset.o
0x01000660 0x01000660 0x000002f8 Code RO 522 i.AppBootset_CmdBsset app_bootset.o
0x01000958 0x01000958 0x000000e0 Code RO 295 i.CmdDevInfo boot_cli.o
0x01000a38 0x01000a38 0x000000d0 Code RO 296 i.CmdHelp boot_cli.o
0x01000b08 0x01000b08 0x0000001c Code RO 297 i.CmdOta boot_cli.o
0x01000b24 0x01000b24 0x0000003c Code RO 298 i.CmdReset boot_cli.o
0x01000b60 0x01000b60 0x000000b0 Code RO 299 i.CmdUartInfo boot_cli.o
0x01000c10 0x01000c10 0x00000074 Code RO 300 i.CmdVersion boot_cli.o
0x01000c84 0x01000c84 0x000000a0 Code RO 1103 i.DMA_DeInit n32wb03x_dma.o
0x01000d24 0x01000d24 0x0000001c Code RO 1104 i.DMA_EnableChannel n32wb03x_dma.o
0x01000d40 0x01000d40 0x00000008 Code RO 1105 i.DMA_GetCurrDataCounter n32wb03x_dma.o
0x01000d48 0x01000d48 0x00000040 Code RO 1108 i.DMA_Init n32wb03x_dma.o
0x01000d88 0x01000d88 0x00000010 Code RO 1109 i.DMA_RequestRemap n32wb03x_dma.o
0x01000d98 0x01000d98 0x00000106 Code RO 815 i.GPIO_InitPeripheral n32wb03x_gpio.o
0x01000e9e 0x01000e9e 0x00000002 PAD
0x01000ea0 0x01000ea0 0x0000001c Code RO 816 i.GPIO_InitStruct n32wb03x_gpio.o
0x01000ebc 0x01000ebc 0x00000014 Code RO 818 i.GPIO_ReadInputDataBit n32wb03x_gpio.o
0x01000ed0 0x01000ed0 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o
0x01000f9c 0x01000f9c 0x0000003c Code RO 1182 i.Qflash_Erase_Sector n32wb03x_qflash.o
0x01000fd8 0x01000fd8 0x00000038 Code RO 1183 i.Qflash_Init n32wb03x_qflash.o
0x01001010 0x01001010 0x00000044 Code RO 1185 i.Qflash_Write n32wb03x_qflash.o
0x01001054 0x01001054 0x00000020 Code RO 591 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o
0x01001074 0x01001074 0x00000020 Code RO 595 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o
0x01001094 0x01001094 0x000000a4 Code RO 603 i.RCC_GetClocksFreqValue n32wb03x_rcc.o
0x01001138 0x01001138 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o
0x01001268 0x01001268 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o
0x01001384 0x01001384 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o
0x01001398 0x01001398 0x00000020 Code RO 937 i.USART_Enable n32wb03x_usart.o
0x010013b8 0x010013b8 0x00000014 Code RO 938 i.USART_EnableDMA n32wb03x_usart.o
0x010013cc 0x010013cc 0x0000001e Code RO 944 i.USART_GetFlagStatus n32wb03x_usart.o
0x010013ea 0x010013ea 0x00000002 PAD
0x010013ec 0x010013ec 0x000000b4 Code RO 946 i.USART_Init n32wb03x_usart.o
0x010014a0 0x010014a0 0x00000008 Code RO 949 i.USART_SendData n32wb03x_usart.o
0x010014a8 0x010014a8 0x00000008 Code RO 1292 i.__aeabi_errno_addr mc_p.l(errno.o)
0x010014b0 0x010014b0 0x0000000e Code RO 1307 i.__scatterload_copy mc_p.l(handlers.o)
0x010014be 0x010014be 0x00000002 Code RO 1308 i.__scatterload_null mc_p.l(handlers.o)
0x010014c0 0x010014c0 0x0000000e Code RO 1309 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x010014ce 0x010014ce 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o
0x010014d4 0x010014d4 0x00000006 Code RO 1186 i.__set_PRIMASK n32wb03x_qflash.o
0x010014da 0x010014da 0x00000002 PAD
0x010014dc 0x010014dc 0x0000003c Code RO 401 i.app_ota_abort app_ota.o
0x01001518 0x01001518 0x00000014 Code RO 402 i.app_ota_chan_idle app_ota.o
0x0100152c 0x0100152c 0x00000140 Code RO 403 i.app_ota_chan_rx app_ota.o
0x0100166c 0x0100166c 0x00000024 Code RO 404 i.app_ota_chan_rx_uart app_ota.o
0x01001690 0x01001690 0x0000007c Code RO 406 i.app_ota_handle_frame app_ota.o
0x0100170c 0x0100170c 0x0000005c Code RO 407 i.app_ota_reset_poll app_ota.o
0x01001768 0x01001768 0x0000004c Code RO 301 i.boot_cli_redraw boot_cli.o
0x010017b4 0x010017b4 0x0000015c Code RO 302 i.boot_cli_run boot_cli.o
0x01001910 0x01001910 0x00000144 Code RO 303 i.boot_cli_tab_complete boot_cli.o
0x01001a54 0x01001a54 0x00000018 Code RO 244 i.boot_delay_ms boot_usart.o
0x01001a6c 0x01001a6c 0x00000040 Code RO 174 i.boot_dl_strap_active main.o
0x01001aac 0x01001aac 0x00000028 Code RO 245 i.boot_millis boot_usart.o
0x01001ad4 0x01001ad4 0x00000110 Code RO 246 i.boot_usart_init boot_usart.o
0x01001be4 0x01001be4 0x00000040 Code RO 247 i.boot_usart_read boot_usart.o
0x01001c24 0x01001c24 0x00000018 Code RO 248 i.boot_usart_rx_head boot_usart.o
0x01001c3c 0x01001c3c 0x00000030 Code RO 249 i.boot_usart_write boot_usart.o
0x01001c6c 0x01001c6c 0x00000054 Code RO 513 i.bootset_commit app_bootset.o
0x01001cc0 0x01001cc0 0x0000000e Code RO 514 i.bootset_crc app_bootset.o
0x01001cce 0x01001cce 0x00000002 PAD
0x01001cd0 0x01001cd0 0x0000001c Code RO 515 i.bootset_ensure_qflash app_bootset.o
0x01001cec 0x01001cec 0x0000016c Code RO 516 i.bootset_print app_bootset.o
0x01001e58 0x01001e58 0x00000024 Code RO 517 i.bootset_valid app_bootset.o
0x01001e7c 0x01001e7c 0x00000044 Code RO 231 i.caiic_crc32 boot_crc32.o
0x01001ec0 0x01001ec0 0x000000cc Code RO 304 i.cli_exec_line boot_cli.o
0x01001f8c 0x01001f8c 0x0000019c Code RO 305 i.cli_printf boot_cli.o
0x01002128 0x01002128 0x00000016 Code RO 306 i.cli_write boot_cli.o
0x0100213e 0x0100213e 0x00000002 PAD
0x01002140 0x01002140 0x00000034 Code RO 175 i.image_sane main.o
0x01002174 0x01002174 0x00000024 Code RO 176 i.jump_to_app main.o
0x01002198 0x01002198 0x000001c4 Code RO 177 i.main main.o
0x0100235c 0x0100235c 0x0000004c Code RO 408 i.ota_crc16 app_ota.o
0x010023a8 0x010023a8 0x00000040 Code RO 409 i.ota_erase_up_to app_ota.o
0x010023e8 0x010023e8 0x00000170 Code RO 410 i.ota_on_begin app_ota.o
0x01002558 0x01002558 0x000001a8 Code RO 411 i.ota_on_data app_ota.o
0x01002700 0x01002700 0x00000170 Code RO 412 i.ota_on_end app_ota.o
0x01002870 0x01002870 0x00000038 Code RO 413 i.ota_program app_ota.o
0x010028a8 0x010028a8 0x00000018 Code RO 414 i.ota_rd32 app_ota.o
0x010028c0 0x010028c0 0x0000007c Code RO 415 i.ota_respond app_ota.o
0x0100293c 0x0100293c 0x0000001c Code RO 416 i.ota_uart_sink app_ota.o
0x01002958 0x01002958 0x000000cc Code RO 417 i.ota_update_bootsetting app_ota.o
0x01002a24 0x01002a24 0x0000002e Code RO 518 i.parse_u32 app_bootset.o
0x01002a52 0x01002a52 0x00000018 Code RO 178 i.puts_boot main.o
0x01002a6a 0x01002a6a 0x00000002 PAD
0x01002a6c 0x01002a6c 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o
0x01002ab0 0x01002ab0 0x0000004e Code RO 307 i.str_pad boot_cli.o
0x01002afe 0x01002afe 0x0000006c Code RO 308 i.u32_to_str boot_cli.o
0x01002b6a 0x01002b6a 0x000001d8 Data RO 23 .constdata system_n32wb03x.o
0x01002d42 0x01002d42 0x00000002 PAD
0x01002d44 0x01002d44 0x0000006c Data RO 310 .constdata boot_cli.o
0x01002db0 0x01002db0 0x0000000c Data RO 611 .constdata n32wb03x_rcc.o
0x01002dbc 0x01002dbc 0x00000324 Data RO 1188 .constdata n32wb03x_qflash.o
0x010030e0 0x010030e0 0x00000081 Data RO 1265 .constdata mc_p.l(ctype_o.o)
0x01003161 0x01003161 0x00000003 PAD
0x01003164 0x01003164 0x00000004 Data RO 1266 .constdata mc_p.l(ctype_o.o)
0x01003168 0x01003168 0x0000029a Data RO 311 .conststring boot_cli.o
0x01003402 0x01003402 0x00000002 PAD
0x01003404 0x01003404 0x00000091 Data RO 519 .conststring app_bootset.o
0x01003495 0x01003495 0x00000003 PAD
0x01003498 0x01003498 0x00000020 Data RO 1305 Region$$Table anon$$obj.o
0x01000a38 0x01000a38 0x000000e4 Code RO 296 i.CmdHelp boot_cli.o
0x01000b1c 0x01000b1c 0x0000001c Code RO 297 i.CmdOta boot_cli.o
0x01000b38 0x01000b38 0x0000003c Code RO 298 i.CmdReset boot_cli.o
0x01000b74 0x01000b74 0x000000b0 Code RO 299 i.CmdUartInfo boot_cli.o
0x01000c24 0x01000c24 0x00000074 Code RO 300 i.CmdVersion boot_cli.o
0x01000c98 0x01000c98 0x000000a0 Code RO 1113 i.DMA_DeInit n32wb03x_dma.o
0x01000d38 0x01000d38 0x0000001c Code RO 1114 i.DMA_EnableChannel n32wb03x_dma.o
0x01000d54 0x01000d54 0x00000008 Code RO 1115 i.DMA_GetCurrDataCounter n32wb03x_dma.o
0x01000d5c 0x01000d5c 0x00000040 Code RO 1118 i.DMA_Init n32wb03x_dma.o
0x01000d9c 0x01000d9c 0x00000010 Code RO 1119 i.DMA_RequestRemap n32wb03x_dma.o
0x01000dac 0x01000dac 0x00000106 Code RO 825 i.GPIO_InitPeripheral n32wb03x_gpio.o
0x01000eb2 0x01000eb2 0x00000002 PAD
0x01000eb4 0x01000eb4 0x0000001c Code RO 826 i.GPIO_InitStruct n32wb03x_gpio.o
0x01000ed0 0x01000ed0 0x00000014 Code RO 828 i.GPIO_ReadInputDataBit n32wb03x_gpio.o
0x01000ee4 0x01000ee4 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o
0x01000fb0 0x01000fb0 0x0000003c Code RO 1192 i.Qflash_Erase_Sector n32wb03x_qflash.o
0x01000fec 0x01000fec 0x00000038 Code RO 1193 i.Qflash_Init n32wb03x_qflash.o
0x01001024 0x01001024 0x00000044 Code RO 1195 i.Qflash_Write n32wb03x_qflash.o
0x01001068 0x01001068 0x00000020 Code RO 601 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o
0x01001088 0x01001088 0x00000020 Code RO 605 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o
0x010010a8 0x010010a8 0x000000a4 Code RO 613 i.RCC_GetClocksFreqValue n32wb03x_rcc.o
0x0100114c 0x0100114c 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o
0x0100127c 0x0100127c 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o
0x01001398 0x01001398 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o
0x010013ac 0x010013ac 0x00000020 Code RO 947 i.USART_Enable n32wb03x_usart.o
0x010013cc 0x010013cc 0x00000014 Code RO 948 i.USART_EnableDMA n32wb03x_usart.o
0x010013e0 0x010013e0 0x0000001e Code RO 954 i.USART_GetFlagStatus n32wb03x_usart.o
0x010013fe 0x010013fe 0x00000002 PAD
0x01001400 0x01001400 0x000000b4 Code RO 956 i.USART_Init n32wb03x_usart.o
0x010014b4 0x010014b4 0x00000008 Code RO 959 i.USART_SendData n32wb03x_usart.o
0x010014bc 0x010014bc 0x00000008 Code RO 1302 i.__aeabi_errno_addr mc_p.l(errno.o)
0x010014c4 0x010014c4 0x0000000e Code RO 1317 i.__scatterload_copy mc_p.l(handlers.o)
0x010014d2 0x010014d2 0x00000002 Code RO 1318 i.__scatterload_null mc_p.l(handlers.o)
0x010014d4 0x010014d4 0x0000000e Code RO 1319 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x010014e2 0x010014e2 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o
0x010014e8 0x010014e8 0x00000006 Code RO 1196 i.__set_PRIMASK n32wb03x_qflash.o
0x010014ee 0x010014ee 0x00000002 PAD
0x010014f0 0x010014f0 0x0000003c Code RO 411 i.app_ota_abort app_ota.o
0x0100152c 0x0100152c 0x00000014 Code RO 412 i.app_ota_chan_idle app_ota.o
0x01001540 0x01001540 0x00000140 Code RO 413 i.app_ota_chan_rx app_ota.o
0x01001680 0x01001680 0x00000024 Code RO 414 i.app_ota_chan_rx_uart app_ota.o
0x010016a4 0x010016a4 0x0000007c Code RO 416 i.app_ota_handle_frame app_ota.o
0x01001720 0x01001720 0x0000005c Code RO 417 i.app_ota_reset_poll app_ota.o
0x0100177c 0x0100177c 0x0000004c Code RO 301 i.boot_cli_redraw boot_cli.o
0x010017c8 0x010017c8 0x00000220 Code RO 302 i.boot_cli_run boot_cli.o
0x010019e8 0x010019e8 0x00000144 Code RO 303 i.boot_cli_tab_complete boot_cli.o
0x01001b2c 0x01001b2c 0x00000018 Code RO 244 i.boot_delay_ms boot_usart.o
0x01001b44 0x01001b44 0x00000040 Code RO 174 i.boot_dl_strap_active main.o
0x01001b84 0x01001b84 0x00000028 Code RO 245 i.boot_millis boot_usart.o
0x01001bac 0x01001bac 0x00000110 Code RO 246 i.boot_usart_init boot_usart.o
0x01001cbc 0x01001cbc 0x00000040 Code RO 247 i.boot_usart_read boot_usart.o
0x01001cfc 0x01001cfc 0x00000018 Code RO 248 i.boot_usart_rx_head boot_usart.o
0x01001d14 0x01001d14 0x00000030 Code RO 249 i.boot_usart_write boot_usart.o
0x01001d44 0x01001d44 0x00000054 Code RO 523 i.bootset_commit app_bootset.o
0x01001d98 0x01001d98 0x0000000e Code RO 524 i.bootset_crc app_bootset.o
0x01001da6 0x01001da6 0x00000002 PAD
0x01001da8 0x01001da8 0x0000001c Code RO 525 i.bootset_ensure_qflash app_bootset.o
0x01001dc4 0x01001dc4 0x0000016c Code RO 526 i.bootset_print app_bootset.o
0x01001f30 0x01001f30 0x00000024 Code RO 527 i.bootset_valid app_bootset.o
0x01001f54 0x01001f54 0x00000044 Code RO 231 i.caiic_crc32 boot_crc32.o
0x01001f98 0x01001f98 0x000000cc Code RO 304 i.cli_exec_line boot_cli.o
0x01002064 0x01002064 0x00000078 Code RO 305 i.cli_history_add boot_cli.o
0x010020dc 0x010020dc 0x0000002c Code RO 306 i.cli_history_get boot_cli.o
0x01002108 0x01002108 0x0000019c Code RO 307 i.cli_printf boot_cli.o
0x010022a4 0x010022a4 0x00000016 Code RO 308 i.cli_write boot_cli.o
0x010022ba 0x010022ba 0x00000002 PAD
0x010022bc 0x010022bc 0x00000034 Code RO 175 i.image_sane main.o
0x010022f0 0x010022f0 0x00000024 Code RO 176 i.jump_to_app main.o
0x01002314 0x01002314 0x000001c4 Code RO 177 i.main main.o
0x010024d8 0x010024d8 0x0000004c Code RO 418 i.ota_crc16 app_ota.o
0x01002524 0x01002524 0x00000040 Code RO 419 i.ota_erase_up_to app_ota.o
0x01002564 0x01002564 0x00000170 Code RO 420 i.ota_on_begin app_ota.o
0x010026d4 0x010026d4 0x000001a8 Code RO 421 i.ota_on_data app_ota.o
0x0100287c 0x0100287c 0x00000170 Code RO 422 i.ota_on_end app_ota.o
0x010029ec 0x010029ec 0x00000038 Code RO 423 i.ota_program app_ota.o
0x01002a24 0x01002a24 0x00000018 Code RO 424 i.ota_rd32 app_ota.o
0x01002a3c 0x01002a3c 0x0000007c Code RO 425 i.ota_respond app_ota.o
0x01002ab8 0x01002ab8 0x0000001c Code RO 426 i.ota_uart_sink app_ota.o
0x01002ad4 0x01002ad4 0x000000cc Code RO 427 i.ota_update_bootsetting app_ota.o
0x01002ba0 0x01002ba0 0x0000002e Code RO 528 i.parse_u32 app_bootset.o
0x01002bce 0x01002bce 0x00000018 Code RO 178 i.puts_boot main.o
0x01002be6 0x01002be6 0x00000002 PAD
0x01002be8 0x01002be8 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o
0x01002c2c 0x01002c2c 0x0000004e Code RO 309 i.str_pad boot_cli.o
0x01002c7a 0x01002c7a 0x0000006c Code RO 310 i.u32_to_str boot_cli.o
0x01002ce6 0x01002ce6 0x000001d8 Data RO 23 .constdata system_n32wb03x.o
0x01002ebe 0x01002ebe 0x00000002 PAD
0x01002ec0 0x01002ec0 0x0000006c Data RO 312 .constdata boot_cli.o
0x01002f2c 0x01002f2c 0x0000000c Data RO 621 .constdata n32wb03x_rcc.o
0x01002f38 0x01002f38 0x00000324 Data RO 1198 .constdata n32wb03x_qflash.o
0x0100325c 0x0100325c 0x00000081 Data RO 1275 .constdata mc_p.l(ctype_o.o)
0x010032dd 0x010032dd 0x00000003 PAD
0x010032e0 0x010032e0 0x00000004 Data RO 1276 .constdata mc_p.l(ctype_o.o)
0x010032e4 0x010032e4 0x0000029a Data RO 313 .conststring boot_cli.o
0x0100357e 0x0100357e 0x00000002 PAD
0x01003580 0x01003580 0x00000091 Data RO 529 .conststring app_bootset.o
0x01003611 0x01003611 0x00000003 PAD
0x01003614 0x01003614 0x00000020 Data RO 1315 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x010034b8, Size: 0x00001a58, Max: 0x0000c000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x01003634, Size: 0x00001cd8, Max: 0x0000c000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20004000 0x010034b8 0x00000004 Data RW 24 .data system_n32wb03x.o
0x20004004 0x010034bc 0x00000008 Data RW 251 .data boot_usart.o
0x2000400c 0x010034c4 0x00000001 Data RW 312 .data boot_cli.o
0x2000400d 0x010034c5 0x00000003 PAD
0x20004010 0x010034c8 0x0000003d Data RW 419 .data app_ota.o
0x2000404d 0x01003505 0x00000001 Data RW 520 .data app_bootset.o
0x2000404e 0x01003506 0x00000002 PAD
0x20004050 0x01003508 0x0000000c Data RW 1189 .data n32wb03x_qflash.o
0x2000405c 0x01003514 0x00000004 Data RW 1295 .data mc_p.l(errno.o)
0x20004000 0x01003634 0x00000004 Data RW 24 .data system_n32wb03x.o
0x20004004 0x01003638 0x00000008 Data RW 251 .data boot_usart.o
0x2000400c 0x01003640 0x00000003 Data RW 314 .data boot_cli.o
0x2000400f 0x01003643 0x00000001 PAD
0x20004010 0x01003644 0x0000003d Data RW 429 .data app_ota.o
0x2000404d 0x01003681 0x00000001 Data RW 530 .data app_bootset.o
0x2000404e 0x01003682 0x00000002 PAD
0x20004050 0x01003684 0x0000000c Data RW 1199 .data n32wb03x_qflash.o
0x2000405c 0x01003690 0x00000004 Data RW 1305 .data mc_p.l(errno.o)
0x20004060 - 0x00000034 Zero RW 22 .bss system_n32wb03x.o
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 0x01003518 0x00000001 PAD
0x20004f2c - 0x00000328 Zero RW 1187 .bss n32wb03x_qflash.o
0x20005254 0x01003518 0x00000004 PAD
0x20005258 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o
0x20004c94 - 0x00000330 Zero RW 311 .bss boot_cli.o
0x20004fc4 - 0x000001e7 Zero RW 428 .bss app_ota.o
0x200051ab 0x01003694 0x00000001 PAD
0x200051ac - 0x00000328 Zero RW 1197 .bss n32wb03x_qflash.o
0x200054d4 0x01003694 0x00000004 PAD
0x200054d8 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o
==============================================================================
@ -981,7 +1001,7 @@ Image component sizes
2092 1148 145 1 0 6739 app_bootset.o
2388 322 0 61 487 12597 app_ota.o
2384 684 774 1 176 17112 boot_cli.o
2764 730 774 3 816 18436 boot_cli.o
68 6 0 0 0 874 boot_crc32.o
472 66 0 8 3072 4161 boot_usart.o
628 262 0 0 0 5643 main.o
@ -994,9 +1014,9 @@ Image component sizes
900 60 472 4 52 124580 system_n32wb03x.o
----------------------------------------------------------------------
10248 2666 2438 92 6648 191969 Object Totals
10628 2712 2438 92 7288 193293 Object Totals
0 0 32 0 0 0 (incl. Generated)
14 0 7 5 5 0 (incl. Padding)
14 0 7 3 5 0 (incl. Padding)
----------------------------------------------------------------------
@ -1047,15 +1067,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
10922 2690 2574 96 6648 189369 Grand Totals
10922 2690 2574 96 6648 189369 ELF Image Totals
10922 2690 2574 96 0 0 ROM Totals
11302 2736 2574 96 7288 190605 Grand Totals
11302 2736 2574 96 7288 190605 ELF Image Totals
11302 2736 2574 96 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 13496 ( 13.18kB)
Total RW Size (RW Data + ZI Data) 6744 ( 6.59kB)
Total ROM Size (Code + RO Data + RW Data) 13592 ( 13.27kB)
Total RO Size (Code + RO Data) 13876 ( 13.55kB)
Total RW Size (RW Data + ZI Data) 7384 ( 7.21kB)
Total ROM Size (Code + RO Data + RW Data) 13972 ( 13.64kB)
==============================================================================

Binary file not shown.

View File

@ -2,20 +2,20 @@
Rebuild target 'caiic_boot'
assembling startup_n32wb03x.s...
compiling boot_crc32.c...
compiling app_bootset.c...
compiling n32wb03x_gpio.c...
compiling main.c...
compiling boot_usart.c...
compiling n32wb03x_usart.c...
compiling boot_cli.c...
compiling n32wb03x_dma.c...
compiling system_n32wb03x.c...
compiling app_ota.c...
compiling app_bootset.c...
compiling n32wb03x_rcc.c...
compiling n32wb03x_gpio.c...
compiling system_n32wb03x.c...
compiling n32wb03x_dma.c...
compiling boot_cli.c...
compiling main.c...
compiling n32wb03x_qflash.c...
linking...
Program Size: Code=10922 RO-data=2574 RW-data=96 ZI-data=6648
Program Size: Code=11302 RO-data=2574 RW-data=96 ZI-data=7288
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).
Build Time Elapsed: 00:00:01
Build Time Elapsed: 00:00:02

View File

@ -1,8 +1,8 @@
/**
* @file boot_cli.c
* @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.
* (echo, backspace, TAB command-name completion, UP/DOWN history)
* + 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:
@ -33,6 +33,8 @@
#define CLI_MAX_ARGS 8
#define OTA_IDLE_EXIT_MS 3000u /* binary mode fallback exit */
#define CLI_KEY_TAB 0x09 /* TAB: command-name completion */
#define CLI_KEY_ESC 0x1B /* ESC: arrow-key escape sequence start */
#define CLI_HISTORY_SIZE 8 /* number of remembered command lines */
/* ------------------------------------------------------------------ */
/* Output (cli_core.h shim implementation) */
@ -303,7 +305,7 @@ static void CmdHelp(int argc, char* argv[])
{
cli_printf(" %-8s %s\r\n", s_cmds[i].name, s_cmds[i].help);
}
cli_write("keys: TAB = complete\r\n");
cli_write("keys: TAB = complete, UP/DOWN = history\r\n");
}
/* ------------------------------------------------------------------ */
@ -479,13 +481,59 @@ static uint16_t boot_cli_tab_complete(char* line, uint16_t len)
return len;
}
/* ------------------------------------------------------------------ */
/* Command history (ring buffer) */
/* ------------------------------------------------------------------ */
static char s_history[CLI_HISTORY_SIZE][CLI_LINE_SIZE];
static uint8_t s_histCount = 0; /* number of valid entries */
static uint8_t s_histHead = 0; /* next write position */
/**
* @brief Store a command line in the history ring (skips empty lines and
* repeats of the most recent entry).
*/
static void cli_history_add(const char* line)
{
if (line[0] == '\0')
{
return;
}
if (s_histCount > 0u)
{
uint8_t last = (uint8_t)((s_histHead + CLI_HISTORY_SIZE - 1u) % CLI_HISTORY_SIZE);
if (strcmp(s_history[last], line) == 0)
{
return;
}
}
strcpy(s_history[s_histHead], line);
s_histHead = (uint8_t)((s_histHead + 1u) % CLI_HISTORY_SIZE);
if (s_histCount < CLI_HISTORY_SIZE)
{
s_histCount++;
}
}
/**
* @brief Get a history entry; nav = 0 is the newest entry.
*/
static const char* cli_history_get(int nav)
{
int idx = ((int)s_histHead - 1 - nav + CLI_HISTORY_SIZE) % CLI_HISTORY_SIZE;
return s_history[idx];
}
/**
* @brief Download-mode main loop. Never returns (leaves via reset only).
*/
void boot_cli_run(void)
{
static char s_line[CLI_LINE_SIZE];
uint16_t len = 0;
uint16_t len = 0;
uint16_t shownLen = 0; /* chars currently displayed after the prompt */
uint8_t escState = 0; /* 0=normal, 1=got ESC, 2=got ESC '[' */
int histNav = -1; /* -1 = editing, 0.. = history entry (0=newest) */
uint32_t otaLastRx = 0;
cli_write("\r\nCLI ready (bootloader download mode). Type 'help' for commands.\r\n"
@ -504,7 +552,8 @@ void boot_cli_run(void)
s_otaMode = 0;
app_ota_chan_idle();
cli_write("\r\n[ota] binary mode OFF (idle)\r\n" BOOT_CLI_PROMPT);
len = 0;
len = 0;
shownLen = 0;
}
if (boot_usart_read(&ch) == 0)
@ -519,19 +568,67 @@ void boot_cli_run(void)
{
s_otaMode = 0;
cli_write("\r\n[ota] binary mode OFF (abort)\r\n" BOOT_CLI_PROMPT);
len = 0;
len = 0;
shownLen = 0;
}
continue;
}
/* Escape sequences (arrow keys: ESC '[' 'A'/'B') */
if (escState == 1)
{
escState = (ch == '[') ? 2 : 0;
continue;
}
if (escState == 2)
{
escState = 0;
if (ch == 'A') /* UP: older history entry */
{
if (histNav + 1 < (int)s_histCount)
{
histNav++;
strcpy(s_line, cli_history_get(histNav));
shownLen = boot_cli_redraw(s_line, shownLen);
len = (uint16_t)strlen(s_line);
}
}
else if (ch == 'B') /* DOWN: newer entry / back to empty line */
{
if (histNav >= 0)
{
histNav--;
if (histNav >= 0)
{
strcpy(s_line, cli_history_get(histNav));
}
else
{
s_line[0] = '\0';
}
shownLen = boot_cli_redraw(s_line, shownLen);
len = (uint16_t)strlen(s_line);
}
}
/* other escape sequences are ignored */
continue;
}
switch (ch)
{
case CLI_KEY_ESC:
escState = 1;
break;
case '\r':
case '\n':
cli_write("\r\n");
s_line[len] = '\0';
cli_history_add(s_line); /* copy before dispatch tokenizes in place */
(void)cli_exec_line(s_line);
len = 0;
len = 0;
shownLen = 0;
histNav = -1;
cli_write(BOOT_CLI_PROMPT);
break;
@ -541,18 +638,21 @@ void boot_cli_run(void)
{
len--;
cli_write("\b \b");
shownLen = len;
}
break;
case CLI_KEY_TAB:
len = boot_cli_tab_complete(s_line, len);
len = boot_cli_tab_complete(s_line, len);
shownLen = len;
break;
default:
if (ch >= 0x20u && len < CLI_LINE_SIZE - 1u)
if (ch >= 0x20u && ch < 0x7Fu && len < CLI_LINE_SIZE - 1u)
{
s_line[len++] = (char)ch;
boot_usart_write(&ch, 1); /* echo */
shownLen = len;
}
break;
}

View File

@ -6,6 +6,6 @@
#ifndef __BOOT_VERSION_H__
#define __BOOT_VERSION_H__
#define BOOT_FW_VERSION "V1.01.03"
#define BOOT_FW_VERSION "V1.01.04"
#endif /* __BOOT_VERSION_H__ */

View File

@ -1431,3 +1431,21 @@ APP2 链接的镜像发向 APP1 区。设备端 END 校验(向量表 Reset PC
一致(提示只放在 `help` 里)。
- 版本:`Boot/src/boot_version.h` V1.01.02 → V1.01.03;构建 0E/0W,
`Code=10922 RO-data=2574 RW-data=96 ZI-data=6648`。
## 56. Boot download CLI 移植 UP/DOWN 历史(2026-09-06,Boot V1.01.04)
- 从 APP 的 `mcm-ddc-ble/src/app_cli.c` 把 **UP/DOWN 箭头历史导航**移植到
`Boot/src/boot_cli.c`,与 TAB 补全一起使 Boot CLI 行编辑能力与 APP 对齐:
- 命令历史环形缓冲 `s_history[CLI_HISTORY_SIZE=8][CLI_LINE_SIZE=80]` +
`cli_history_add()`(跳过空行/相邻重复)/ `cli_history_get(nav)`;
- `boot_cli_run()`:新增 `escState`(ESC / ESC '[' 两级状态机,识别
`ESC [ A`=上、`ESC [ B`=下)、`histNav`(-1=编辑,0..=历史索引)、
`shownLen`(屏显行长,用于重画);UP 取更早历史、DOWN 取更新/回空行,
切换时 `boot_cli_redraw()` 重画提示符+整行;
- 回车执行前 `cli_history_add()` 入栈并复位 `histNav/shownLen`;退格/回显/
TAB 均同步维护 `shownLen`;普通字符回显加 `ch < 0x7F` 过滤(对齐 APP);
- `help` 提示串由 `keys: TAB = complete` 更新为
`keys: TAB = complete, UP/DOWN = history`(与 APP 一致)。
- 版本:`Boot/src/boot_version.h` V1.01.03 → V1.01.04;构建 0E/0W,
`Code=11302 RO-data=2574 RW-data=96 ZI-data=7288`(+640B 历史环),
bin 13972B(16KB 区内),`__initial_sp=0x20005CD8`(远离 0x2000C000 悬崖)。

Binary file not shown.

File diff suppressed because it is too large Load Diff