boot V1.01.02: 3.3V strap 进入 download + CLI TAB 命令补全
- 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)
This commit is contained in:
parent
b38ad3dd5a
commit
9dad3daf61
@ -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)
|
||||
|
||||
==============================================================================
|
||||
|
||||
|
||||
Binary file not shown.
@ -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).
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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__ */
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
46
docs/开发日志.md
46
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 区内)。
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user