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(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.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
|
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_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 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.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_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 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
|
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.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 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.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 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 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
|
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 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 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.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_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(.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(.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_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 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(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_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_DeInit), (68 bytes).
|
||||||
Removing n32wb03x_gpio.o(i.GPIO_DeInitPin), (126 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_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_ReadOutputData), (8 bytes).
|
||||||
Removing n32wb03x_gpio.o(i.GPIO_ReadOutputDataBit), (20 bytes).
|
Removing n32wb03x_gpio.o(i.GPIO_ReadOutputDataBit), (20 bytes).
|
||||||
Removing n32wb03x_gpio.o(i.GPIO_ResetBits), (4 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_qflash.o(i.Qflash_Read), (68 bytes).
|
||||||
Removing n32wb03x_gpio.o(i.__ARM_common_switch8), (28 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)
|
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 ctype_o.o ABSOLUTE
|
||||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_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 isalpha_o.o ABSOLUTE
|
||||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_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 iscntrl_o.o ABSOLUTE
|
||||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_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 isupper_o.o ABSOLUTE
|
||||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_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 isprint_o.o ABSOLUTE
|
||||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_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/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE
|
||||||
../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE
|
../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE
|
||||||
../clib/microlib/errno.c 0x00000000 Number 0 errno.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 entry7a.o ABSOLUTE
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.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 entry10a.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 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 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/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 memcpyb.o ABSOLUTE
|
||||||
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.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/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE
|
||||||
../clib/microlib/string/strcmp.c 0x00000000 Number 0 strcmp.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/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE
|
||||||
../clib/scanf.c 0x00000000 Number 0 _strtoul.o ABSOLUTE
|
../clib/microlib/string/strncmp.c 0x00000000 Number 0 strncmp.o ABSOLUTE
|
||||||
../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE
|
|
||||||
../clib/scanf.c 0x00000000 Number 0 strtoul.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_bootset.c 0x00000000 Number 0 app_bootset.o ABSOLUTE
|
||||||
..\..\mcm-ddc-ble\src\app_ota.c 0x00000000 Number 0 app_ota.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
|
..\..\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 0x01000150 Section 0 memseta.o(.text)
|
||||||
.text 0x01000174 Section 0 strlen.o(.text)
|
.text 0x01000174 Section 0 strlen.o(.text)
|
||||||
.text 0x01000182 Section 0 strcmp.o(.text)
|
.text 0x01000182 Section 0 strcmp.o(.text)
|
||||||
.text 0x0100019e Section 0 memcmp.o(.text)
|
.text 0x0100019e Section 0 memchr.o(.text)
|
||||||
.text 0x010001b8 Section 0 strtoul.o(.text)
|
.text 0x010001b2 Section 0 memcmp.o(.text)
|
||||||
.text 0x01000230 Section 0 ctype_o.o(.text)
|
.text 0x010001cc Section 0 strcpy.o(.text)
|
||||||
.text 0x01000238 Section 0 _strtoul.o(.text)
|
.text 0x010001de Section 0 strncmp.o(.text)
|
||||||
.text 0x010002e0 Section 36 init.o(.text)
|
.text 0x010001fc Section 0 strtoul.o(.text)
|
||||||
.text 0x01000304 Section 0 _chval.o(.text)
|
.text 0x01000274 Section 0 ctype_o.o(.text)
|
||||||
i.AppBootset_CmdAppswitch 0x01000324 Section 0 app_bootset.o(i.AppBootset_CmdAppswitch)
|
.text 0x0100027c Section 0 _strtoul.o(.text)
|
||||||
i.AppBootset_CmdBsdump 0x010005fc Section 0 app_bootset.o(i.AppBootset_CmdBsdump)
|
.text 0x01000324 Section 36 init.o(.text)
|
||||||
i.AppBootset_CmdBsset 0x0100061c Section 0 app_bootset.o(i.AppBootset_CmdBsset)
|
.text 0x01000348 Section 0 _chval.o(.text)
|
||||||
i.CmdDevInfo 0x01000914 Section 0 boot_cli.o(i.CmdDevInfo)
|
i.AppBootset_CmdAppswitch 0x01000368 Section 0 app_bootset.o(i.AppBootset_CmdAppswitch)
|
||||||
CmdDevInfo 0x01000915 Thumb Code 90 boot_cli.o(i.CmdDevInfo)
|
i.AppBootset_CmdBsdump 0x01000640 Section 0 app_bootset.o(i.AppBootset_CmdBsdump)
|
||||||
i.CmdHelp 0x010009f4 Section 0 boot_cli.o(i.CmdHelp)
|
i.AppBootset_CmdBsset 0x01000660 Section 0 app_bootset.o(i.AppBootset_CmdBsset)
|
||||||
CmdHelp 0x010009f5 Thumb Code 114 boot_cli.o(i.CmdHelp)
|
i.CmdDevInfo 0x01000958 Section 0 boot_cli.o(i.CmdDevInfo)
|
||||||
i.CmdOta 0x01000aa8 Section 0 boot_cli.o(i.CmdOta)
|
CmdDevInfo 0x01000959 Thumb Code 90 boot_cli.o(i.CmdDevInfo)
|
||||||
CmdOta 0x01000aa9 Thumb Code 20 boot_cli.o(i.CmdOta)
|
i.CmdHelp 0x01000a38 Section 0 boot_cli.o(i.CmdHelp)
|
||||||
i.CmdReset 0x01000ac4 Section 0 boot_cli.o(i.CmdReset)
|
CmdHelp 0x01000a39 Thumb Code 114 boot_cli.o(i.CmdHelp)
|
||||||
CmdReset 0x01000ac5 Thumb Code 34 boot_cli.o(i.CmdReset)
|
i.CmdOta 0x01000aec Section 0 boot_cli.o(i.CmdOta)
|
||||||
i.CmdUartInfo 0x01000b00 Section 0 boot_cli.o(i.CmdUartInfo)
|
CmdOta 0x01000aed Thumb Code 20 boot_cli.o(i.CmdOta)
|
||||||
CmdUartInfo 0x01000b01 Thumb Code 26 boot_cli.o(i.CmdUartInfo)
|
i.CmdReset 0x01000b08 Section 0 boot_cli.o(i.CmdReset)
|
||||||
i.CmdVersion 0x01000bb0 Section 0 boot_cli.o(i.CmdVersion)
|
CmdReset 0x01000b09 Thumb Code 34 boot_cli.o(i.CmdReset)
|
||||||
CmdVersion 0x01000bb1 Thumb Code 26 boot_cli.o(i.CmdVersion)
|
i.CmdUartInfo 0x01000b44 Section 0 boot_cli.o(i.CmdUartInfo)
|
||||||
i.DMA_DeInit 0x01000c24 Section 0 n32wb03x_dma.o(i.DMA_DeInit)
|
CmdUartInfo 0x01000b45 Thumb Code 26 boot_cli.o(i.CmdUartInfo)
|
||||||
i.DMA_EnableChannel 0x01000cc4 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel)
|
i.CmdVersion 0x01000bf4 Section 0 boot_cli.o(i.CmdVersion)
|
||||||
i.DMA_GetCurrDataCounter 0x01000ce0 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
|
CmdVersion 0x01000bf5 Thumb Code 26 boot_cli.o(i.CmdVersion)
|
||||||
i.DMA_Init 0x01000ce8 Section 0 n32wb03x_dma.o(i.DMA_Init)
|
i.DMA_DeInit 0x01000c68 Section 0 n32wb03x_dma.o(i.DMA_DeInit)
|
||||||
i.DMA_RequestRemap 0x01000d28 Section 0 n32wb03x_dma.o(i.DMA_RequestRemap)
|
i.DMA_EnableChannel 0x01000d08 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel)
|
||||||
i.GPIO_InitPeripheral 0x01000d38 Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
|
i.DMA_GetCurrDataCounter 0x01000d24 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
|
||||||
i.GPIO_InitStruct 0x01000e40 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct)
|
i.DMA_Init 0x01000d2c Section 0 n32wb03x_dma.o(i.DMA_Init)
|
||||||
i.OTPTrim_Read 0x01000e5c Section 0 system_n32wb03x.o(i.OTPTrim_Read)
|
i.DMA_RequestRemap 0x01000d6c Section 0 n32wb03x_dma.o(i.DMA_RequestRemap)
|
||||||
i.Qflash_Erase_Sector 0x01000f28 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
|
i.GPIO_InitPeripheral 0x01000d7c Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
|
||||||
i.Qflash_Init 0x01000f64 Section 0 n32wb03x_qflash.o(i.Qflash_Init)
|
i.GPIO_InitStruct 0x01000e84 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct)
|
||||||
i.Qflash_Write 0x01000f9c Section 0 n32wb03x_qflash.o(i.Qflash_Write)
|
i.GPIO_ReadInputDataBit 0x01000ea0 Section 0 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit)
|
||||||
i.RCC_EnableAHBPeriphClk 0x01000fe0 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
|
i.OTPTrim_Read 0x01000eb4 Section 0 system_n32wb03x.o(i.OTPTrim_Read)
|
||||||
i.RCC_EnableAPB2PeriphClk 0x01001000 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
|
i.Qflash_Erase_Sector 0x01000f80 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
|
||||||
i.RCC_GetClocksFreqValue 0x01001020 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
|
i.Qflash_Init 0x01000fbc Section 0 n32wb03x_qflash.o(i.Qflash_Init)
|
||||||
i.RCC_HsiCalib 0x010010c4 Section 0 system_n32wb03x.o(i.RCC_HsiCalib)
|
i.Qflash_Write 0x01000ff4 Section 0 n32wb03x_qflash.o(i.Qflash_Write)
|
||||||
RCC_HsiCalib 0x010010c5 Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib)
|
i.RCC_EnableAHBPeriphClk 0x01001038 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
|
||||||
i.SystemInit 0x010011f4 Section 0 system_n32wb03x.o(i.SystemInit)
|
i.RCC_EnableAPB2PeriphClk 0x01001058 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
|
||||||
i.SystemTrimValueRead 0x01001310 Section 0 system_n32wb03x.o(i.SystemTrimValueRead)
|
i.RCC_GetClocksFreqValue 0x01001078 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
|
||||||
i.USART_Enable 0x01001324 Section 0 n32wb03x_usart.o(i.USART_Enable)
|
i.RCC_HsiCalib 0x0100111c Section 0 system_n32wb03x.o(i.RCC_HsiCalib)
|
||||||
i.USART_EnableDMA 0x01001344 Section 0 n32wb03x_usart.o(i.USART_EnableDMA)
|
RCC_HsiCalib 0x0100111d Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib)
|
||||||
i.USART_GetFlagStatus 0x01001358 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus)
|
i.SystemInit 0x0100124c Section 0 system_n32wb03x.o(i.SystemInit)
|
||||||
i.USART_Init 0x01001378 Section 0 n32wb03x_usart.o(i.USART_Init)
|
i.SystemTrimValueRead 0x01001368 Section 0 system_n32wb03x.o(i.SystemTrimValueRead)
|
||||||
i.USART_SendData 0x0100142c Section 0 n32wb03x_usart.o(i.USART_SendData)
|
i.USART_Enable 0x0100137c Section 0 n32wb03x_usart.o(i.USART_Enable)
|
||||||
i.__aeabi_errno_addr 0x01001434 Section 0 errno.o(i.__aeabi_errno_addr)
|
i.USART_EnableDMA 0x0100139c Section 0 n32wb03x_usart.o(i.USART_EnableDMA)
|
||||||
i.__scatterload_copy 0x0100143c Section 14 handlers.o(i.__scatterload_copy)
|
i.USART_GetFlagStatus 0x010013b0 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus)
|
||||||
i.__scatterload_null 0x0100144a Section 2 handlers.o(i.__scatterload_null)
|
i.USART_Init 0x010013d0 Section 0 n32wb03x_usart.o(i.USART_Init)
|
||||||
i.__scatterload_zeroinit 0x0100144c Section 14 handlers.o(i.__scatterload_zeroinit)
|
i.USART_SendData 0x01001484 Section 0 n32wb03x_usart.o(i.USART_SendData)
|
||||||
i.__set_PRIMASK 0x0100145a Section 0 system_n32wb03x.o(i.__set_PRIMASK)
|
i.__aeabi_errno_addr 0x0100148c Section 0 errno.o(i.__aeabi_errno_addr)
|
||||||
__set_PRIMASK 0x0100145b Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK)
|
i.__scatterload_copy 0x01001494 Section 14 handlers.o(i.__scatterload_copy)
|
||||||
i.__set_PRIMASK 0x01001460 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK)
|
i.__scatterload_null 0x010014a2 Section 2 handlers.o(i.__scatterload_null)
|
||||||
__set_PRIMASK 0x01001461 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK)
|
i.__scatterload_zeroinit 0x010014a4 Section 14 handlers.o(i.__scatterload_zeroinit)
|
||||||
i.app_ota_abort 0x01001468 Section 0 app_ota.o(i.app_ota_abort)
|
i.__set_PRIMASK 0x010014b2 Section 0 system_n32wb03x.o(i.__set_PRIMASK)
|
||||||
i.app_ota_chan_idle 0x010014a4 Section 0 app_ota.o(i.app_ota_chan_idle)
|
__set_PRIMASK 0x010014b3 Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK)
|
||||||
i.app_ota_chan_rx 0x010014b8 Section 0 app_ota.o(i.app_ota_chan_rx)
|
i.__set_PRIMASK 0x010014b8 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK)
|
||||||
i.app_ota_chan_rx_uart 0x010015f8 Section 0 app_ota.o(i.app_ota_chan_rx_uart)
|
__set_PRIMASK 0x010014b9 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK)
|
||||||
i.app_ota_handle_frame 0x0100161c Section 0 app_ota.o(i.app_ota_handle_frame)
|
i.app_ota_abort 0x010014c0 Section 0 app_ota.o(i.app_ota_abort)
|
||||||
i.app_ota_reset_poll 0x01001698 Section 0 app_ota.o(i.app_ota_reset_poll)
|
i.app_ota_chan_idle 0x010014fc Section 0 app_ota.o(i.app_ota_chan_idle)
|
||||||
i.boot_cli_run 0x010016f4 Section 0 boot_cli.o(i.boot_cli_run)
|
i.app_ota_chan_rx 0x01001510 Section 0 app_ota.o(i.app_ota_chan_rx)
|
||||||
i.boot_delay_ms 0x0100183c Section 0 boot_usart.o(i.boot_delay_ms)
|
i.app_ota_chan_rx_uart 0x01001650 Section 0 app_ota.o(i.app_ota_chan_rx_uart)
|
||||||
i.boot_millis 0x01001854 Section 0 boot_usart.o(i.boot_millis)
|
i.app_ota_handle_frame 0x01001674 Section 0 app_ota.o(i.app_ota_handle_frame)
|
||||||
i.boot_usart_init 0x0100187c Section 0 boot_usart.o(i.boot_usart_init)
|
i.app_ota_reset_poll 0x010016f0 Section 0 app_ota.o(i.app_ota_reset_poll)
|
||||||
i.boot_usart_read 0x0100198c Section 0 boot_usart.o(i.boot_usart_read)
|
i.boot_cli_redraw 0x0100174c Section 0 boot_cli.o(i.boot_cli_redraw)
|
||||||
i.boot_usart_rx_head 0x010019cc Section 0 boot_usart.o(i.boot_usart_rx_head)
|
boot_cli_redraw 0x0100174d Thumb Code 60 boot_cli.o(i.boot_cli_redraw)
|
||||||
boot_usart_rx_head 0x010019cd Thumb Code 18 boot_usart.o(i.boot_usart_rx_head)
|
i.boot_cli_run 0x01001798 Section 0 boot_cli.o(i.boot_cli_run)
|
||||||
i.boot_usart_write 0x010019e4 Section 0 boot_usart.o(i.boot_usart_write)
|
i.boot_cli_tab_complete 0x010018f4 Section 0 boot_cli.o(i.boot_cli_tab_complete)
|
||||||
i.bootset_commit 0x01001a14 Section 0 app_bootset.o(i.bootset_commit)
|
boot_cli_tab_complete 0x010018f5 Thumb Code 306 boot_cli.o(i.boot_cli_tab_complete)
|
||||||
bootset_commit 0x01001a15 Thumb Code 74 app_bootset.o(i.bootset_commit)
|
i.boot_delay_ms 0x01001a38 Section 0 boot_usart.o(i.boot_delay_ms)
|
||||||
i.bootset_crc 0x01001a68 Section 0 app_bootset.o(i.bootset_crc)
|
i.boot_dl_strap_active 0x01001a50 Section 0 main.o(i.boot_dl_strap_active)
|
||||||
bootset_crc 0x01001a69 Thumb Code 14 app_bootset.o(i.bootset_crc)
|
boot_dl_strap_active 0x01001a51 Thumb Code 58 main.o(i.boot_dl_strap_active)
|
||||||
i.bootset_ensure_qflash 0x01001a78 Section 0 app_bootset.o(i.bootset_ensure_qflash)
|
i.boot_millis 0x01001a90 Section 0 boot_usart.o(i.boot_millis)
|
||||||
bootset_ensure_qflash 0x01001a79 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash)
|
i.boot_usart_init 0x01001ab8 Section 0 boot_usart.o(i.boot_usart_init)
|
||||||
i.bootset_print 0x01001a94 Section 0 app_bootset.o(i.bootset_print)
|
i.boot_usart_read 0x01001bc8 Section 0 boot_usart.o(i.boot_usart_read)
|
||||||
bootset_print 0x01001a95 Thumb Code 98 app_bootset.o(i.bootset_print)
|
i.boot_usart_rx_head 0x01001c08 Section 0 boot_usart.o(i.boot_usart_rx_head)
|
||||||
i.bootset_valid 0x01001c00 Section 0 app_bootset.o(i.bootset_valid)
|
boot_usart_rx_head 0x01001c09 Thumb Code 18 boot_usart.o(i.boot_usart_rx_head)
|
||||||
bootset_valid 0x01001c01 Thumb Code 32 app_bootset.o(i.bootset_valid)
|
i.boot_usart_write 0x01001c20 Section 0 boot_usart.o(i.boot_usart_write)
|
||||||
i.caiic_crc32 0x01001c24 Section 0 boot_crc32.o(i.caiic_crc32)
|
i.bootset_commit 0x01001c50 Section 0 app_bootset.o(i.bootset_commit)
|
||||||
i.cli_exec_line 0x01001c68 Section 0 boot_cli.o(i.cli_exec_line)
|
bootset_commit 0x01001c51 Thumb Code 74 app_bootset.o(i.bootset_commit)
|
||||||
cli_exec_line 0x01001c69 Thumb Code 162 boot_cli.o(i.cli_exec_line)
|
i.bootset_crc 0x01001ca4 Section 0 app_bootset.o(i.bootset_crc)
|
||||||
i.cli_printf 0x01001d34 Section 0 boot_cli.o(i.cli_printf)
|
bootset_crc 0x01001ca5 Thumb Code 14 app_bootset.o(i.bootset_crc)
|
||||||
i.cli_write 0x01001ed0 Section 0 boot_cli.o(i.cli_write)
|
i.bootset_ensure_qflash 0x01001cb4 Section 0 app_bootset.o(i.bootset_ensure_qflash)
|
||||||
i.image_sane 0x01001ee8 Section 0 main.o(i.image_sane)
|
bootset_ensure_qflash 0x01001cb5 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash)
|
||||||
image_sane 0x01001ee9 Thumb Code 44 main.o(i.image_sane)
|
i.bootset_print 0x01001cd0 Section 0 app_bootset.o(i.bootset_print)
|
||||||
i.jump_to_app 0x01001f1c Section 0 main.o(i.jump_to_app)
|
bootset_print 0x01001cd1 Thumb Code 98 app_bootset.o(i.bootset_print)
|
||||||
jump_to_app 0x01001f1d Thumb Code 30 main.o(i.jump_to_app)
|
i.bootset_valid 0x01001e3c Section 0 app_bootset.o(i.bootset_valid)
|
||||||
i.main 0x01001f40 Section 0 main.o(i.main)
|
bootset_valid 0x01001e3d Thumb Code 32 app_bootset.o(i.bootset_valid)
|
||||||
i.ota_crc16 0x010020c0 Section 0 app_ota.o(i.ota_crc16)
|
i.caiic_crc32 0x01001e60 Section 0 boot_crc32.o(i.caiic_crc32)
|
||||||
ota_crc16 0x010020c1 Thumb Code 68 app_ota.o(i.ota_crc16)
|
i.cli_exec_line 0x01001ea4 Section 0 boot_cli.o(i.cli_exec_line)
|
||||||
i.ota_erase_up_to 0x0100210c Section 0 app_ota.o(i.ota_erase_up_to)
|
cli_exec_line 0x01001ea5 Thumb Code 162 boot_cli.o(i.cli_exec_line)
|
||||||
ota_erase_up_to 0x0100210d Thumb Code 54 app_ota.o(i.ota_erase_up_to)
|
i.cli_printf 0x01001f70 Section 0 boot_cli.o(i.cli_printf)
|
||||||
i.ota_on_begin 0x0100214c Section 0 app_ota.o(i.ota_on_begin)
|
i.cli_write 0x0100210c Section 0 boot_cli.o(i.cli_write)
|
||||||
ota_on_begin 0x0100214d Thumb Code 294 app_ota.o(i.ota_on_begin)
|
i.image_sane 0x01002124 Section 0 main.o(i.image_sane)
|
||||||
i.ota_on_data 0x010022bc Section 0 app_ota.o(i.ota_on_data)
|
image_sane 0x01002125 Thumb Code 44 main.o(i.image_sane)
|
||||||
ota_on_data 0x010022bd Thumb Code 396 app_ota.o(i.ota_on_data)
|
i.jump_to_app 0x01002158 Section 0 main.o(i.jump_to_app)
|
||||||
i.ota_on_end 0x01002464 Section 0 app_ota.o(i.ota_on_end)
|
jump_to_app 0x01002159 Thumb Code 30 main.o(i.jump_to_app)
|
||||||
ota_on_end 0x01002465 Thumb Code 326 app_ota.o(i.ota_on_end)
|
i.main 0x0100217c Section 0 main.o(i.main)
|
||||||
i.ota_program 0x010025d4 Section 0 app_ota.o(i.ota_program)
|
i.ota_crc16 0x01002340 Section 0 app_ota.o(i.ota_crc16)
|
||||||
ota_program 0x010025d5 Thumb Code 46 app_ota.o(i.ota_program)
|
ota_crc16 0x01002341 Thumb Code 68 app_ota.o(i.ota_crc16)
|
||||||
i.ota_rd32 0x0100260c Section 0 app_ota.o(i.ota_rd32)
|
i.ota_erase_up_to 0x0100238c Section 0 app_ota.o(i.ota_erase_up_to)
|
||||||
ota_rd32 0x0100260d Thumb Code 24 app_ota.o(i.ota_rd32)
|
ota_erase_up_to 0x0100238d Thumb Code 54 app_ota.o(i.ota_erase_up_to)
|
||||||
i.ota_respond 0x01002624 Section 0 app_ota.o(i.ota_respond)
|
i.ota_on_begin 0x010023cc Section 0 app_ota.o(i.ota_on_begin)
|
||||||
ota_respond 0x01002625 Thumb Code 118 app_ota.o(i.ota_respond)
|
ota_on_begin 0x010023cd Thumb Code 294 app_ota.o(i.ota_on_begin)
|
||||||
i.ota_uart_sink 0x010026a0 Section 0 app_ota.o(i.ota_uart_sink)
|
i.ota_on_data 0x0100253c Section 0 app_ota.o(i.ota_on_data)
|
||||||
ota_uart_sink 0x010026a1 Thumb Code 22 app_ota.o(i.ota_uart_sink)
|
ota_on_data 0x0100253d Thumb Code 396 app_ota.o(i.ota_on_data)
|
||||||
i.ota_update_bootsetting 0x010026bc Section 0 app_ota.o(i.ota_update_bootsetting)
|
i.ota_on_end 0x010026e4 Section 0 app_ota.o(i.ota_on_end)
|
||||||
ota_update_bootsetting 0x010026bd Thumb Code 174 app_ota.o(i.ota_update_bootsetting)
|
ota_on_end 0x010026e5 Thumb Code 326 app_ota.o(i.ota_on_end)
|
||||||
i.parse_u32 0x01002788 Section 0 app_bootset.o(i.parse_u32)
|
i.ota_program 0x01002854 Section 0 app_ota.o(i.ota_program)
|
||||||
parse_u32 0x01002789 Thumb Code 46 app_bootset.o(i.parse_u32)
|
ota_program 0x01002855 Thumb Code 46 app_ota.o(i.ota_program)
|
||||||
i.puts_boot 0x010027b6 Section 0 main.o(i.puts_boot)
|
i.ota_rd32 0x0100288c Section 0 app_ota.o(i.ota_rd32)
|
||||||
puts_boot 0x010027b7 Thumb Code 24 main.o(i.puts_boot)
|
ota_rd32 0x0100288d Thumb Code 24 app_ota.o(i.ota_rd32)
|
||||||
i.read_flash_ID 0x010027d0 Section 0 system_n32wb03x.o(i.read_flash_ID)
|
i.ota_respond 0x010028a4 Section 0 app_ota.o(i.ota_respond)
|
||||||
read_flash_ID 0x010027d1 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID)
|
ota_respond 0x010028a5 Thumb Code 118 app_ota.o(i.ota_respond)
|
||||||
i.str_pad 0x01002814 Section 0 boot_cli.o(i.str_pad)
|
i.ota_uart_sink 0x01002920 Section 0 app_ota.o(i.ota_uart_sink)
|
||||||
str_pad 0x01002815 Thumb Code 78 boot_cli.o(i.str_pad)
|
ota_uart_sink 0x01002921 Thumb Code 22 app_ota.o(i.ota_uart_sink)
|
||||||
i.u32_to_str 0x01002862 Section 0 boot_cli.o(i.u32_to_str)
|
i.ota_update_bootsetting 0x0100293c Section 0 app_ota.o(i.ota_update_bootsetting)
|
||||||
u32_to_str 0x01002863 Thumb Code 108 boot_cli.o(i.u32_to_str)
|
ota_update_bootsetting 0x0100293d Thumb Code 174 app_ota.o(i.ota_update_bootsetting)
|
||||||
.constdata 0x010028ce Section 472 system_n32wb03x.o(.constdata)
|
i.parse_u32 0x01002a08 Section 0 app_bootset.o(i.parse_u32)
|
||||||
.constdata 0x01002aa8 Section 108 boot_cli.o(.constdata)
|
parse_u32 0x01002a09 Thumb Code 46 app_bootset.o(i.parse_u32)
|
||||||
s_cmds 0x01002aa8 Data 108 boot_cli.o(.constdata)
|
i.puts_boot 0x01002a36 Section 0 main.o(i.puts_boot)
|
||||||
.constdata 0x01002b14 Section 12 n32wb03x_rcc.o(.constdata)
|
puts_boot 0x01002a37 Thumb Code 24 main.o(i.puts_boot)
|
||||||
s_ApbPresTable 0x01002b14 Data 8 n32wb03x_rcc.o(.constdata)
|
i.read_flash_ID 0x01002a50 Section 0 system_n32wb03x.o(i.read_flash_ID)
|
||||||
s_AhbPresTable 0x01002b1c Data 4 n32wb03x_rcc.o(.constdata)
|
read_flash_ID 0x01002a51 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID)
|
||||||
.constdata 0x01002b20 Section 804 n32wb03x_qflash.o(.constdata)
|
i.str_pad 0x01002a94 Section 0 boot_cli.o(i.str_pad)
|
||||||
.constdata 0x01002e44 Section 129 ctype_o.o(.constdata)
|
str_pad 0x01002a95 Thumb Code 78 boot_cli.o(i.str_pad)
|
||||||
.constdata 0x01002ec8 Section 4 ctype_o.o(.constdata)
|
i.u32_to_str 0x01002ae2 Section 0 boot_cli.o(i.u32_to_str)
|
||||||
table 0x01002ec8 Data 4 ctype_o.o(.constdata)
|
u32_to_str 0x01002ae3 Thumb Code 108 boot_cli.o(i.u32_to_str)
|
||||||
.conststring 0x01002ecc Section 666 boot_cli.o(.conststring)
|
.constdata 0x01002b4e Section 472 system_n32wb03x.o(.constdata)
|
||||||
.conststring 0x01003168 Section 145 app_bootset.o(.conststring)
|
.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 0x20004000 Section 4 system_n32wb03x.o(.data)
|
||||||
.data 0x20004004 Section 8 boot_usart.o(.data)
|
.data 0x20004004 Section 8 boot_usart.o(.data)
|
||||||
s_rxTail 0x20004004 Data 2 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)
|
_memset$wrapper 0x01000163 Thumb Code 18 memseta.o(.text)
|
||||||
strlen 0x01000175 Thumb Code 14 strlen.o(.text)
|
strlen 0x01000175 Thumb Code 14 strlen.o(.text)
|
||||||
strcmp 0x01000183 Thumb Code 28 strcmp.o(.text)
|
strcmp 0x01000183 Thumb Code 28 strcmp.o(.text)
|
||||||
memcmp 0x0100019f Thumb Code 26 memcmp.o(.text)
|
memchr 0x0100019f Thumb Code 20 memchr.o(.text)
|
||||||
strtoul 0x010001b9 Thumb Code 118 strtoul.o(.text)
|
memcmp 0x010001b3 Thumb Code 26 memcmp.o(.text)
|
||||||
__rt_ctype_table 0x01000231 Thumb Code 4 ctype_o.o(.text)
|
strcpy 0x010001cd Thumb Code 18 strcpy.o(.text)
|
||||||
_strtoul 0x01000239 Thumb Code 166 _strtoul.o(.text)
|
strncmp 0x010001df Thumb Code 30 strncmp.o(.text)
|
||||||
__scatterload 0x010002e1 Thumb Code 28 init.o(.text)
|
strtoul 0x010001fd Thumb Code 118 strtoul.o(.text)
|
||||||
__scatterload_rt2 0x010002e1 Thumb Code 0 init.o(.text)
|
__rt_ctype_table 0x01000275 Thumb Code 4 ctype_o.o(.text)
|
||||||
_chval 0x01000305 Thumb Code 30 _chval.o(.text)
|
_strtoul 0x0100027d Thumb Code 166 _strtoul.o(.text)
|
||||||
AppBootset_CmdAppswitch 0x01000325 Thumb Code 282 app_bootset.o(i.AppBootset_CmdAppswitch)
|
__scatterload 0x01000325 Thumb Code 28 init.o(.text)
|
||||||
AppBootset_CmdBsdump 0x010005fd Thumb Code 28 app_bootset.o(i.AppBootset_CmdBsdump)
|
__scatterload_rt2 0x01000325 Thumb Code 0 init.o(.text)
|
||||||
AppBootset_CmdBsset 0x0100061d Thumb Code 348 app_bootset.o(i.AppBootset_CmdBsset)
|
_chval 0x01000349 Thumb Code 30 _chval.o(.text)
|
||||||
DMA_DeInit 0x01000c25 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit)
|
AppBootset_CmdAppswitch 0x01000369 Thumb Code 282 app_bootset.o(i.AppBootset_CmdAppswitch)
|
||||||
DMA_EnableChannel 0x01000cc5 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel)
|
AppBootset_CmdBsdump 0x01000641 Thumb Code 28 app_bootset.o(i.AppBootset_CmdBsdump)
|
||||||
DMA_GetCurrDataCounter 0x01000ce1 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
|
AppBootset_CmdBsset 0x01000661 Thumb Code 348 app_bootset.o(i.AppBootset_CmdBsset)
|
||||||
DMA_Init 0x01000ce9 Thumb Code 58 n32wb03x_dma.o(i.DMA_Init)
|
DMA_DeInit 0x01000c69 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit)
|
||||||
DMA_RequestRemap 0x01000d29 Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap)
|
DMA_EnableChannel 0x01000d09 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel)
|
||||||
GPIO_InitPeripheral 0x01000d39 Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
|
DMA_GetCurrDataCounter 0x01000d25 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
|
||||||
GPIO_InitStruct 0x01000e41 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct)
|
DMA_Init 0x01000d2d Thumb Code 58 n32wb03x_dma.o(i.DMA_Init)
|
||||||
OTPTrim_Read 0x01000e5d Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read)
|
DMA_RequestRemap 0x01000d6d Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap)
|
||||||
Qflash_Erase_Sector 0x01000f29 Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
|
GPIO_InitPeripheral 0x01000d7d Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
|
||||||
Qflash_Init 0x01000f65 Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init)
|
GPIO_InitStruct 0x01000e85 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct)
|
||||||
Qflash_Write 0x01000f9d Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write)
|
GPIO_ReadInputDataBit 0x01000ea1 Thumb Code 20 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit)
|
||||||
RCC_EnableAHBPeriphClk 0x01000fe1 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
|
OTPTrim_Read 0x01000eb5 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read)
|
||||||
RCC_EnableAPB2PeriphClk 0x01001001 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
|
Qflash_Erase_Sector 0x01000f81 Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
|
||||||
RCC_GetClocksFreqValue 0x01001021 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
|
Qflash_Init 0x01000fbd Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init)
|
||||||
SystemInit 0x010011f5 Thumb Code 250 system_n32wb03x.o(i.SystemInit)
|
Qflash_Write 0x01000ff5 Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write)
|
||||||
SystemTrimValueRead 0x01001311 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead)
|
RCC_EnableAHBPeriphClk 0x01001039 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
|
||||||
USART_Enable 0x01001325 Thumb Code 26 n32wb03x_usart.o(i.USART_Enable)
|
RCC_EnableAPB2PeriphClk 0x01001059 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
|
||||||
USART_EnableDMA 0x01001345 Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA)
|
RCC_GetClocksFreqValue 0x01001079 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
|
||||||
USART_GetFlagStatus 0x01001359 Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus)
|
SystemInit 0x0100124d Thumb Code 250 system_n32wb03x.o(i.SystemInit)
|
||||||
USART_Init 0x01001379 Thumb Code 162 n32wb03x_usart.o(i.USART_Init)
|
SystemTrimValueRead 0x01001369 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead)
|
||||||
USART_SendData 0x0100142d Thumb Code 8 n32wb03x_usart.o(i.USART_SendData)
|
USART_Enable 0x0100137d Thumb Code 26 n32wb03x_usart.o(i.USART_Enable)
|
||||||
__aeabi_errno_addr 0x01001435 Thumb Code 4 errno.o(i.__aeabi_errno_addr)
|
USART_EnableDMA 0x0100139d Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA)
|
||||||
__rt_errno_addr 0x01001435 Thumb Code 0 errno.o(i.__aeabi_errno_addr)
|
USART_GetFlagStatus 0x010013b1 Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus)
|
||||||
__scatterload_copy 0x0100143d Thumb Code 14 handlers.o(i.__scatterload_copy)
|
USART_Init 0x010013d1 Thumb Code 162 n32wb03x_usart.o(i.USART_Init)
|
||||||
__scatterload_null 0x0100144b Thumb Code 2 handlers.o(i.__scatterload_null)
|
USART_SendData 0x01001485 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData)
|
||||||
__scatterload_zeroinit 0x0100144d Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
|
__aeabi_errno_addr 0x0100148d Thumb Code 4 errno.o(i.__aeabi_errno_addr)
|
||||||
app_ota_abort 0x01001469 Thumb Code 32 app_ota.o(i.app_ota_abort)
|
__rt_errno_addr 0x0100148d Thumb Code 0 errno.o(i.__aeabi_errno_addr)
|
||||||
app_ota_chan_idle 0x010014a5 Thumb Code 12 app_ota.o(i.app_ota_chan_idle)
|
__scatterload_copy 0x01001495 Thumb Code 14 handlers.o(i.__scatterload_copy)
|
||||||
app_ota_chan_rx 0x010014b9 Thumb Code 298 app_ota.o(i.app_ota_chan_rx)
|
__scatterload_null 0x010014a3 Thumb Code 2 handlers.o(i.__scatterload_null)
|
||||||
app_ota_chan_rx_uart 0x010015f9 Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart)
|
__scatterload_zeroinit 0x010014a5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
|
||||||
app_ota_handle_frame 0x0100161d Thumb Code 106 app_ota.o(i.app_ota_handle_frame)
|
app_ota_abort 0x010014c1 Thumb Code 32 app_ota.o(i.app_ota_abort)
|
||||||
app_ota_reset_poll 0x01001699 Thumb Code 70 app_ota.o(i.app_ota_reset_poll)
|
app_ota_chan_idle 0x010014fd Thumb Code 12 app_ota.o(i.app_ota_chan_idle)
|
||||||
boot_cli_run 0x010016f5 Thumb Code 220 boot_cli.o(i.boot_cli_run)
|
app_ota_chan_rx 0x01001511 Thumb Code 298 app_ota.o(i.app_ota_chan_rx)
|
||||||
boot_delay_ms 0x0100183d Thumb Code 24 boot_usart.o(i.boot_delay_ms)
|
app_ota_chan_rx_uart 0x01001651 Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart)
|
||||||
boot_millis 0x01001855 Thumb Code 30 boot_usart.o(i.boot_millis)
|
app_ota_handle_frame 0x01001675 Thumb Code 106 app_ota.o(i.app_ota_handle_frame)
|
||||||
boot_usart_init 0x0100187d Thumb Code 238 boot_usart.o(i.boot_usart_init)
|
app_ota_reset_poll 0x010016f1 Thumb Code 70 app_ota.o(i.app_ota_reset_poll)
|
||||||
boot_usart_read 0x0100198d Thumb Code 54 boot_usart.o(i.boot_usart_read)
|
boot_cli_run 0x01001799 Thumb Code 240 boot_cli.o(i.boot_cli_run)
|
||||||
boot_usart_write 0x010019e5 Thumb Code 42 boot_usart.o(i.boot_usart_write)
|
boot_delay_ms 0x01001a39 Thumb Code 24 boot_usart.o(i.boot_delay_ms)
|
||||||
caiic_crc32 0x01001c25 Thumb Code 62 boot_crc32.o(i.caiic_crc32)
|
boot_millis 0x01001a91 Thumb Code 30 boot_usart.o(i.boot_millis)
|
||||||
cli_printf 0x01001d35 Thumb Code 408 boot_cli.o(i.cli_printf)
|
boot_usart_init 0x01001ab9 Thumb Code 238 boot_usart.o(i.boot_usart_init)
|
||||||
cli_write 0x01001ed1 Thumb Code 22 boot_cli.o(i.cli_write)
|
boot_usart_read 0x01001bc9 Thumb Code 54 boot_usart.o(i.boot_usart_read)
|
||||||
main 0x01001f41 Thumb Code 190 main.o(i.main)
|
boot_usart_write 0x01001c21 Thumb Code 42 boot_usart.o(i.boot_usart_write)
|
||||||
TRIM_READ_CMD_CODE 0x010028ce Data 320 system_n32wb03x.o(.constdata)
|
caiic_crc32 0x01001e61 Thumb Code 62 boot_crc32.o(i.caiic_crc32)
|
||||||
CMD_RDID 0x01002a0e Data 152 system_n32wb03x.o(.constdata)
|
cli_printf 0x01001f71 Thumb Code 408 boot_cli.o(i.cli_printf)
|
||||||
const_qflash_cmd 0x01002b20 Data 804 n32wb03x_qflash.o(.constdata)
|
cli_write 0x0100210d Thumb Code 22 boot_cli.o(i.cli_write)
|
||||||
__ctype_table 0x01002e44 Data 129 ctype_o.o(.constdata)
|
main 0x0100217d Thumb Code 210 main.o(i.main)
|
||||||
Region$$Table$$Base 0x010031fc Number 0 anon$$obj.o(Region$$Table)
|
TRIM_READ_CMD_CODE 0x01002b4e Data 320 system_n32wb03x.o(.constdata)
|
||||||
Region$$Table$$Limit 0x0100321c Number 0 anon$$obj.o(Region$$Table)
|
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)
|
SystemCoreClock 0x20004000 Data 4 system_n32wb03x.o(.data)
|
||||||
CMD_FLASH_SE 0x20004050 Data 4 n32wb03x_qflash.o(.data)
|
CMD_FLASH_SE 0x20004050 Data 4 n32wb03x_qflash.o(.data)
|
||||||
CMD_FLASH_WRITE 0x20004054 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
|
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
|
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
|
||||||
|
|
||||||
0x01000000 0x01000000 0x000000c0 Data RO 3 RESET startup_n32wb03x.o
|
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 0x00000000 Code RO 1225 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
|
||||||
0x010000c0 0x010000c0 0x00000004 Code RO 1229 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
|
0x010000c0 0x010000c0 0x00000004 Code RO 1250 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
|
||||||
0x010000c4 0x010000c4 0x00000004 Code RO 1232 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
|
0x010000c4 0x010000c4 0x00000004 Code RO 1253 .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 1255 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
|
||||||
0x010000c8 0x010000c8 0x00000000 Code RO 1236 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
|
0x010000c8 0x010000c8 0x00000000 Code RO 1257 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
|
||||||
0x010000c8 0x010000c8 0x00000008 Code RO 1237 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
|
0x010000c8 0x010000c8 0x00000008 Code RO 1258 .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 1260 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
|
||||||
0x010000d0 0x010000d0 0x00000000 Code RO 1241 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
|
0x010000d0 0x010000d0 0x00000000 Code RO 1262 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
|
||||||
0x010000d0 0x010000d0 0x00000004 Code RO 1230 .ARM.Collect$$$$00002712 mc_p.l(entry2.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
|
0x010000d4 0x010000d4 0x0000000e Code RO 10 .emb_text system_n32wb03x.o
|
||||||
0x010000e2 0x010000e2 0x00000002 PAD
|
0x010000e2 0x010000e2 0x00000002 PAD
|
||||||
0x010000e4 0x010000e4 0x0000001c Code RO 4 .text startup_n32wb03x.o
|
0x010000e4 0x010000e4 0x0000001c Code RO 4 .text startup_n32wb03x.o
|
||||||
0x01000100 0x01000100 0x0000002c Code RO 1213 .text mc_p.l(uidiv.o)
|
0x01000100 0x01000100 0x0000002c Code RO 1228 .text mc_p.l(uidiv.o)
|
||||||
0x0100012c 0x0100012c 0x00000024 Code RO 1215 .text mc_p.l(memcpya.o)
|
0x0100012c 0x0100012c 0x00000024 Code RO 1230 .text mc_p.l(memcpya.o)
|
||||||
0x01000150 0x01000150 0x00000024 Code RO 1217 .text mc_p.l(memseta.o)
|
0x01000150 0x01000150 0x00000024 Code RO 1232 .text mc_p.l(memseta.o)
|
||||||
0x01000174 0x01000174 0x0000000e Code RO 1219 .text mc_p.l(strlen.o)
|
0x01000174 0x01000174 0x0000000e Code RO 1234 .text mc_p.l(strlen.o)
|
||||||
0x01000182 0x01000182 0x0000001c Code RO 1221 .text mc_p.l(strcmp.o)
|
0x01000182 0x01000182 0x0000001c Code RO 1236 .text mc_p.l(strcmp.o)
|
||||||
0x0100019e 0x0100019e 0x0000001a Code RO 1223 .text mc_p.l(memcmp.o)
|
0x0100019e 0x0100019e 0x00000014 Code RO 1238 .text mc_p.l(memchr.o)
|
||||||
0x010001b8 0x010001b8 0x00000076 Code RO 1227 .text mc_p.l(strtoul.o)
|
0x010001b2 0x010001b2 0x0000001a Code RO 1240 .text mc_p.l(memcmp.o)
|
||||||
0x0100022e 0x0100022e 0x00000002 PAD
|
0x010001cc 0x010001cc 0x00000012 Code RO 1242 .text mc_p.l(strcpy.o)
|
||||||
0x01000230 0x01000230 0x00000008 Code RO 1243 .text mc_p.l(ctype_o.o)
|
0x010001de 0x010001de 0x0000001e Code RO 1244 .text mc_p.l(strncmp.o)
|
||||||
0x01000238 0x01000238 0x000000a6 Code RO 1278 .text mc_p.l(_strtoul.o)
|
0x010001fc 0x010001fc 0x00000076 Code RO 1248 .text mc_p.l(strtoul.o)
|
||||||
0x010002de 0x010002de 0x00000002 PAD
|
0x01000272 0x01000272 0x00000002 PAD
|
||||||
0x010002e0 0x010002e0 0x00000024 Code RO 1280 .text mc_p.l(init.o)
|
0x01000274 0x01000274 0x00000008 Code RO 1264 .text mc_p.l(ctype_o.o)
|
||||||
0x01000304 0x01000304 0x0000001e Code RO 1282 .text mc_p.l(_chval.o)
|
0x0100027c 0x0100027c 0x000000a6 Code RO 1299 .text mc_p.l(_strtoul.o)
|
||||||
0x01000322 0x01000322 0x00000002 PAD
|
0x01000322 0x01000322 0x00000002 PAD
|
||||||
0x01000324 0x01000324 0x000002d8 Code RO 495 i.AppBootset_CmdAppswitch app_bootset.o
|
0x01000324 0x01000324 0x00000024 Code RO 1301 .text mc_p.l(init.o)
|
||||||
0x010005fc 0x010005fc 0x00000020 Code RO 496 i.AppBootset_CmdBsdump app_bootset.o
|
0x01000348 0x01000348 0x0000001e Code RO 1303 .text mc_p.l(_chval.o)
|
||||||
0x0100061c 0x0100061c 0x000002f8 Code RO 497 i.AppBootset_CmdBsset app_bootset.o
|
0x01000366 0x01000366 0x00000002 PAD
|
||||||
0x01000914 0x01000914 0x000000e0 Code RO 290 i.CmdDevInfo boot_cli.o
|
0x01000368 0x01000368 0x000002d8 Code RO 510 i.AppBootset_CmdAppswitch app_bootset.o
|
||||||
0x010009f4 0x010009f4 0x000000b4 Code RO 291 i.CmdHelp boot_cli.o
|
0x01000640 0x01000640 0x00000020 Code RO 511 i.AppBootset_CmdBsdump app_bootset.o
|
||||||
0x01000aa8 0x01000aa8 0x0000001c Code RO 292 i.CmdOta boot_cli.o
|
0x01000660 0x01000660 0x000002f8 Code RO 512 i.AppBootset_CmdBsset app_bootset.o
|
||||||
0x01000ac4 0x01000ac4 0x0000003c Code RO 293 i.CmdReset boot_cli.o
|
0x01000958 0x01000958 0x000000e0 Code RO 295 i.CmdDevInfo boot_cli.o
|
||||||
0x01000b00 0x01000b00 0x000000b0 Code RO 294 i.CmdUartInfo boot_cli.o
|
0x01000a38 0x01000a38 0x000000b4 Code RO 296 i.CmdHelp boot_cli.o
|
||||||
0x01000bb0 0x01000bb0 0x00000074 Code RO 295 i.CmdVersion boot_cli.o
|
0x01000aec 0x01000aec 0x0000001c Code RO 297 i.CmdOta boot_cli.o
|
||||||
0x01000c24 0x01000c24 0x000000a0 Code RO 1088 i.DMA_DeInit n32wb03x_dma.o
|
0x01000b08 0x01000b08 0x0000003c Code RO 298 i.CmdReset boot_cli.o
|
||||||
0x01000cc4 0x01000cc4 0x0000001c Code RO 1089 i.DMA_EnableChannel n32wb03x_dma.o
|
0x01000b44 0x01000b44 0x000000b0 Code RO 299 i.CmdUartInfo boot_cli.o
|
||||||
0x01000ce0 0x01000ce0 0x00000008 Code RO 1090 i.DMA_GetCurrDataCounter n32wb03x_dma.o
|
0x01000bf4 0x01000bf4 0x00000074 Code RO 300 i.CmdVersion boot_cli.o
|
||||||
0x01000ce8 0x01000ce8 0x00000040 Code RO 1093 i.DMA_Init n32wb03x_dma.o
|
0x01000c68 0x01000c68 0x000000a0 Code RO 1103 i.DMA_DeInit n32wb03x_dma.o
|
||||||
0x01000d28 0x01000d28 0x00000010 Code RO 1094 i.DMA_RequestRemap n32wb03x_dma.o
|
0x01000d08 0x01000d08 0x0000001c Code RO 1104 i.DMA_EnableChannel n32wb03x_dma.o
|
||||||
0x01000d38 0x01000d38 0x00000106 Code RO 800 i.GPIO_InitPeripheral n32wb03x_gpio.o
|
0x01000d24 0x01000d24 0x00000008 Code RO 1105 i.DMA_GetCurrDataCounter n32wb03x_dma.o
|
||||||
0x01000e3e 0x01000e3e 0x00000002 PAD
|
0x01000d2c 0x01000d2c 0x00000040 Code RO 1108 i.DMA_Init n32wb03x_dma.o
|
||||||
0x01000e40 0x01000e40 0x0000001c Code RO 801 i.GPIO_InitStruct n32wb03x_gpio.o
|
0x01000d6c 0x01000d6c 0x00000010 Code RO 1109 i.DMA_RequestRemap n32wb03x_dma.o
|
||||||
0x01000e5c 0x01000e5c 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o
|
0x01000d7c 0x01000d7c 0x00000106 Code RO 815 i.GPIO_InitPeripheral n32wb03x_gpio.o
|
||||||
0x01000f28 0x01000f28 0x0000003c Code RO 1167 i.Qflash_Erase_Sector n32wb03x_qflash.o
|
0x01000e82 0x01000e82 0x00000002 PAD
|
||||||
0x01000f64 0x01000f64 0x00000038 Code RO 1168 i.Qflash_Init n32wb03x_qflash.o
|
0x01000e84 0x01000e84 0x0000001c Code RO 816 i.GPIO_InitStruct n32wb03x_gpio.o
|
||||||
0x01000f9c 0x01000f9c 0x00000044 Code RO 1170 i.Qflash_Write n32wb03x_qflash.o
|
0x01000ea0 0x01000ea0 0x00000014 Code RO 818 i.GPIO_ReadInputDataBit n32wb03x_gpio.o
|
||||||
0x01000fe0 0x01000fe0 0x00000020 Code RO 576 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o
|
0x01000eb4 0x01000eb4 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o
|
||||||
0x01001000 0x01001000 0x00000020 Code RO 580 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o
|
0x01000f80 0x01000f80 0x0000003c Code RO 1182 i.Qflash_Erase_Sector n32wb03x_qflash.o
|
||||||
0x01001020 0x01001020 0x000000a4 Code RO 588 i.RCC_GetClocksFreqValue n32wb03x_rcc.o
|
0x01000fbc 0x01000fbc 0x00000038 Code RO 1183 i.Qflash_Init n32wb03x_qflash.o
|
||||||
0x010010c4 0x010010c4 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o
|
0x01000ff4 0x01000ff4 0x00000044 Code RO 1185 i.Qflash_Write n32wb03x_qflash.o
|
||||||
0x010011f4 0x010011f4 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o
|
0x01001038 0x01001038 0x00000020 Code RO 591 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o
|
||||||
0x01001310 0x01001310 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o
|
0x01001058 0x01001058 0x00000020 Code RO 595 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o
|
||||||
0x01001324 0x01001324 0x00000020 Code RO 922 i.USART_Enable n32wb03x_usart.o
|
0x01001078 0x01001078 0x000000a4 Code RO 603 i.RCC_GetClocksFreqValue n32wb03x_rcc.o
|
||||||
0x01001344 0x01001344 0x00000014 Code RO 923 i.USART_EnableDMA n32wb03x_usart.o
|
0x0100111c 0x0100111c 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o
|
||||||
0x01001358 0x01001358 0x0000001e Code RO 929 i.USART_GetFlagStatus n32wb03x_usart.o
|
0x0100124c 0x0100124c 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o
|
||||||
0x01001376 0x01001376 0x00000002 PAD
|
0x01001368 0x01001368 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o
|
||||||
0x01001378 0x01001378 0x000000b4 Code RO 931 i.USART_Init n32wb03x_usart.o
|
0x0100137c 0x0100137c 0x00000020 Code RO 937 i.USART_Enable n32wb03x_usart.o
|
||||||
0x0100142c 0x0100142c 0x00000008 Code RO 934 i.USART_SendData n32wb03x_usart.o
|
0x0100139c 0x0100139c 0x00000014 Code RO 938 i.USART_EnableDMA n32wb03x_usart.o
|
||||||
0x01001434 0x01001434 0x00000008 Code RO 1271 i.__aeabi_errno_addr mc_p.l(errno.o)
|
0x010013b0 0x010013b0 0x0000001e Code RO 944 i.USART_GetFlagStatus n32wb03x_usart.o
|
||||||
0x0100143c 0x0100143c 0x0000000e Code RO 1286 i.__scatterload_copy mc_p.l(handlers.o)
|
0x010013ce 0x010013ce 0x00000002 PAD
|
||||||
0x0100144a 0x0100144a 0x00000002 Code RO 1287 i.__scatterload_null mc_p.l(handlers.o)
|
0x010013d0 0x010013d0 0x000000b4 Code RO 946 i.USART_Init n32wb03x_usart.o
|
||||||
0x0100144c 0x0100144c 0x0000000e Code RO 1288 i.__scatterload_zeroinit mc_p.l(handlers.o)
|
0x01001484 0x01001484 0x00000008 Code RO 949 i.USART_SendData n32wb03x_usart.o
|
||||||
0x0100145a 0x0100145a 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o
|
0x0100148c 0x0100148c 0x00000008 Code RO 1292 i.__aeabi_errno_addr mc_p.l(errno.o)
|
||||||
0x01001460 0x01001460 0x00000006 Code RO 1171 i.__set_PRIMASK n32wb03x_qflash.o
|
0x01001494 0x01001494 0x0000000e Code RO 1307 i.__scatterload_copy mc_p.l(handlers.o)
|
||||||
0x01001466 0x01001466 0x00000002 PAD
|
0x010014a2 0x010014a2 0x00000002 Code RO 1308 i.__scatterload_null mc_p.l(handlers.o)
|
||||||
0x01001468 0x01001468 0x0000003c Code RO 386 i.app_ota_abort app_ota.o
|
0x010014a4 0x010014a4 0x0000000e Code RO 1309 i.__scatterload_zeroinit mc_p.l(handlers.o)
|
||||||
0x010014a4 0x010014a4 0x00000014 Code RO 387 i.app_ota_chan_idle app_ota.o
|
0x010014b2 0x010014b2 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o
|
||||||
0x010014b8 0x010014b8 0x00000140 Code RO 388 i.app_ota_chan_rx app_ota.o
|
0x010014b8 0x010014b8 0x00000006 Code RO 1186 i.__set_PRIMASK n32wb03x_qflash.o
|
||||||
0x010015f8 0x010015f8 0x00000024 Code RO 389 i.app_ota_chan_rx_uart app_ota.o
|
0x010014be 0x010014be 0x00000002 PAD
|
||||||
0x0100161c 0x0100161c 0x0000007c Code RO 391 i.app_ota_handle_frame app_ota.o
|
0x010014c0 0x010014c0 0x0000003c Code RO 401 i.app_ota_abort app_ota.o
|
||||||
0x01001698 0x01001698 0x0000005c Code RO 392 i.app_ota_reset_poll app_ota.o
|
0x010014fc 0x010014fc 0x00000014 Code RO 402 i.app_ota_chan_idle app_ota.o
|
||||||
0x010016f4 0x010016f4 0x00000148 Code RO 296 i.boot_cli_run boot_cli.o
|
0x01001510 0x01001510 0x00000140 Code RO 403 i.app_ota_chan_rx app_ota.o
|
||||||
0x0100183c 0x0100183c 0x00000018 Code RO 239 i.boot_delay_ms boot_usart.o
|
0x01001650 0x01001650 0x00000024 Code RO 404 i.app_ota_chan_rx_uart app_ota.o
|
||||||
0x01001854 0x01001854 0x00000028 Code RO 240 i.boot_millis boot_usart.o
|
0x01001674 0x01001674 0x0000007c Code RO 406 i.app_ota_handle_frame app_ota.o
|
||||||
0x0100187c 0x0100187c 0x00000110 Code RO 241 i.boot_usart_init boot_usart.o
|
0x010016f0 0x010016f0 0x0000005c Code RO 407 i.app_ota_reset_poll app_ota.o
|
||||||
0x0100198c 0x0100198c 0x00000040 Code RO 242 i.boot_usart_read boot_usart.o
|
0x0100174c 0x0100174c 0x0000004c Code RO 301 i.boot_cli_redraw boot_cli.o
|
||||||
0x010019cc 0x010019cc 0x00000018 Code RO 243 i.boot_usart_rx_head boot_usart.o
|
0x01001798 0x01001798 0x0000015c Code RO 302 i.boot_cli_run boot_cli.o
|
||||||
0x010019e4 0x010019e4 0x00000030 Code RO 244 i.boot_usart_write boot_usart.o
|
0x010018f4 0x010018f4 0x00000144 Code RO 303 i.boot_cli_tab_complete boot_cli.o
|
||||||
0x01001a14 0x01001a14 0x00000054 Code RO 498 i.bootset_commit app_bootset.o
|
0x01001a38 0x01001a38 0x00000018 Code RO 244 i.boot_delay_ms boot_usart.o
|
||||||
0x01001a68 0x01001a68 0x0000000e Code RO 499 i.bootset_crc app_bootset.o
|
0x01001a50 0x01001a50 0x00000040 Code RO 174 i.boot_dl_strap_active main.o
|
||||||
0x01001a76 0x01001a76 0x00000002 PAD
|
0x01001a90 0x01001a90 0x00000028 Code RO 245 i.boot_millis boot_usart.o
|
||||||
0x01001a78 0x01001a78 0x0000001c Code RO 500 i.bootset_ensure_qflash app_bootset.o
|
0x01001ab8 0x01001ab8 0x00000110 Code RO 246 i.boot_usart_init boot_usart.o
|
||||||
0x01001a94 0x01001a94 0x0000016c Code RO 501 i.bootset_print app_bootset.o
|
0x01001bc8 0x01001bc8 0x00000040 Code RO 247 i.boot_usart_read boot_usart.o
|
||||||
0x01001c00 0x01001c00 0x00000024 Code RO 502 i.bootset_valid app_bootset.o
|
0x01001c08 0x01001c08 0x00000018 Code RO 248 i.boot_usart_rx_head boot_usart.o
|
||||||
0x01001c24 0x01001c24 0x00000044 Code RO 226 i.caiic_crc32 boot_crc32.o
|
0x01001c20 0x01001c20 0x00000030 Code RO 249 i.boot_usart_write boot_usart.o
|
||||||
0x01001c68 0x01001c68 0x000000cc Code RO 297 i.cli_exec_line boot_cli.o
|
0x01001c50 0x01001c50 0x00000054 Code RO 513 i.bootset_commit app_bootset.o
|
||||||
0x01001d34 0x01001d34 0x0000019c Code RO 298 i.cli_printf boot_cli.o
|
0x01001ca4 0x01001ca4 0x0000000e Code RO 514 i.bootset_crc app_bootset.o
|
||||||
0x01001ed0 0x01001ed0 0x00000016 Code RO 299 i.cli_write boot_cli.o
|
0x01001cb2 0x01001cb2 0x00000002 PAD
|
||||||
0x01001ee6 0x01001ee6 0x00000002 PAD
|
0x01001cb4 0x01001cb4 0x0000001c Code RO 515 i.bootset_ensure_qflash app_bootset.o
|
||||||
0x01001ee8 0x01001ee8 0x00000034 Code RO 174 i.image_sane main.o
|
0x01001cd0 0x01001cd0 0x0000016c Code RO 516 i.bootset_print app_bootset.o
|
||||||
0x01001f1c 0x01001f1c 0x00000024 Code RO 175 i.jump_to_app main.o
|
0x01001e3c 0x01001e3c 0x00000024 Code RO 517 i.bootset_valid app_bootset.o
|
||||||
0x01001f40 0x01001f40 0x00000180 Code RO 176 i.main main.o
|
0x01001e60 0x01001e60 0x00000044 Code RO 231 i.caiic_crc32 boot_crc32.o
|
||||||
0x010020c0 0x010020c0 0x0000004c Code RO 393 i.ota_crc16 app_ota.o
|
0x01001ea4 0x01001ea4 0x000000cc Code RO 304 i.cli_exec_line boot_cli.o
|
||||||
0x0100210c 0x0100210c 0x00000040 Code RO 394 i.ota_erase_up_to app_ota.o
|
0x01001f70 0x01001f70 0x0000019c Code RO 305 i.cli_printf boot_cli.o
|
||||||
0x0100214c 0x0100214c 0x00000170 Code RO 395 i.ota_on_begin app_ota.o
|
0x0100210c 0x0100210c 0x00000016 Code RO 306 i.cli_write boot_cli.o
|
||||||
0x010022bc 0x010022bc 0x000001a8 Code RO 396 i.ota_on_data app_ota.o
|
0x01002122 0x01002122 0x00000002 PAD
|
||||||
0x01002464 0x01002464 0x00000170 Code RO 397 i.ota_on_end app_ota.o
|
0x01002124 0x01002124 0x00000034 Code RO 175 i.image_sane main.o
|
||||||
0x010025d4 0x010025d4 0x00000038 Code RO 398 i.ota_program app_ota.o
|
0x01002158 0x01002158 0x00000024 Code RO 176 i.jump_to_app main.o
|
||||||
0x0100260c 0x0100260c 0x00000018 Code RO 399 i.ota_rd32 app_ota.o
|
0x0100217c 0x0100217c 0x000001c4 Code RO 177 i.main main.o
|
||||||
0x01002624 0x01002624 0x0000007c Code RO 400 i.ota_respond app_ota.o
|
0x01002340 0x01002340 0x0000004c Code RO 408 i.ota_crc16 app_ota.o
|
||||||
0x010026a0 0x010026a0 0x0000001c Code RO 401 i.ota_uart_sink app_ota.o
|
0x0100238c 0x0100238c 0x00000040 Code RO 409 i.ota_erase_up_to app_ota.o
|
||||||
0x010026bc 0x010026bc 0x000000cc Code RO 402 i.ota_update_bootsetting app_ota.o
|
0x010023cc 0x010023cc 0x00000170 Code RO 410 i.ota_on_begin app_ota.o
|
||||||
0x01002788 0x01002788 0x0000002e Code RO 503 i.parse_u32 app_bootset.o
|
0x0100253c 0x0100253c 0x000001a8 Code RO 411 i.ota_on_data app_ota.o
|
||||||
0x010027b6 0x010027b6 0x00000018 Code RO 177 i.puts_boot main.o
|
0x010026e4 0x010026e4 0x00000170 Code RO 412 i.ota_on_end app_ota.o
|
||||||
0x010027ce 0x010027ce 0x00000002 PAD
|
0x01002854 0x01002854 0x00000038 Code RO 413 i.ota_program app_ota.o
|
||||||
0x010027d0 0x010027d0 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o
|
0x0100288c 0x0100288c 0x00000018 Code RO 414 i.ota_rd32 app_ota.o
|
||||||
0x01002814 0x01002814 0x0000004e Code RO 300 i.str_pad boot_cli.o
|
0x010028a4 0x010028a4 0x0000007c Code RO 415 i.ota_respond app_ota.o
|
||||||
0x01002862 0x01002862 0x0000006c Code RO 301 i.u32_to_str boot_cli.o
|
0x01002920 0x01002920 0x0000001c Code RO 416 i.ota_uart_sink app_ota.o
|
||||||
0x010028ce 0x010028ce 0x000001d8 Data RO 23 .constdata system_n32wb03x.o
|
0x0100293c 0x0100293c 0x000000cc Code RO 417 i.ota_update_bootsetting app_ota.o
|
||||||
0x01002aa6 0x01002aa6 0x00000002 PAD
|
0x01002a08 0x01002a08 0x0000002e Code RO 518 i.parse_u32 app_bootset.o
|
||||||
0x01002aa8 0x01002aa8 0x0000006c Data RO 303 .constdata boot_cli.o
|
0x01002a36 0x01002a36 0x00000018 Code RO 178 i.puts_boot main.o
|
||||||
0x01002b14 0x01002b14 0x0000000c Data RO 596 .constdata n32wb03x_rcc.o
|
0x01002a4e 0x01002a4e 0x00000002 PAD
|
||||||
0x01002b20 0x01002b20 0x00000324 Data RO 1173 .constdata n32wb03x_qflash.o
|
0x01002a50 0x01002a50 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o
|
||||||
0x01002e44 0x01002e44 0x00000081 Data RO 1244 .constdata mc_p.l(ctype_o.o)
|
0x01002a94 0x01002a94 0x0000004e Code RO 307 i.str_pad boot_cli.o
|
||||||
0x01002ec5 0x01002ec5 0x00000003 PAD
|
0x01002ae2 0x01002ae2 0x0000006c Code RO 308 i.u32_to_str boot_cli.o
|
||||||
0x01002ec8 0x01002ec8 0x00000004 Data RO 1245 .constdata mc_p.l(ctype_o.o)
|
0x01002b4e 0x01002b4e 0x000001d8 Data RO 23 .constdata system_n32wb03x.o
|
||||||
0x01002ecc 0x01002ecc 0x0000029a Data RO 304 .conststring boot_cli.o
|
0x01002d26 0x01002d26 0x00000002 PAD
|
||||||
0x01003166 0x01003166 0x00000002 PAD
|
0x01002d28 0x01002d28 0x0000006c Data RO 310 .constdata boot_cli.o
|
||||||
0x01003168 0x01003168 0x00000091 Data RO 504 .conststring app_bootset.o
|
0x01002d94 0x01002d94 0x0000000c Data RO 611 .constdata n32wb03x_rcc.o
|
||||||
0x010031f9 0x010031f9 0x00000003 PAD
|
0x01002da0 0x01002da0 0x00000324 Data RO 1188 .constdata n32wb03x_qflash.o
|
||||||
0x010031fc 0x010031fc 0x00000020 Data RO 1284 Region$$Table anon$$obj.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
|
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
|
||||||
|
|
||||||
0x20004000 0x0100321c 0x00000004 Data RW 24 .data system_n32wb03x.o
|
0x20004000 0x010034ac 0x00000004 Data RW 24 .data system_n32wb03x.o
|
||||||
0x20004004 0x01003220 0x00000008 Data RW 246 .data boot_usart.o
|
0x20004004 0x010034b0 0x00000008 Data RW 251 .data boot_usart.o
|
||||||
0x2000400c 0x01003228 0x00000001 Data RW 305 .data boot_cli.o
|
0x2000400c 0x010034b8 0x00000001 Data RW 312 .data boot_cli.o
|
||||||
0x2000400d 0x01003229 0x00000003 PAD
|
0x2000400d 0x010034b9 0x00000003 PAD
|
||||||
0x20004010 0x0100322c 0x0000003d Data RW 404 .data app_ota.o
|
0x20004010 0x010034bc 0x0000003d Data RW 419 .data app_ota.o
|
||||||
0x2000404d 0x01003269 0x00000001 Data RW 505 .data app_bootset.o
|
0x2000404d 0x010034f9 0x00000001 Data RW 520 .data app_bootset.o
|
||||||
0x2000404e 0x0100326a 0x00000002 PAD
|
0x2000404e 0x010034fa 0x00000002 PAD
|
||||||
0x20004050 0x0100326c 0x0000000c Data RW 1174 .data n32wb03x_qflash.o
|
0x20004050 0x010034fc 0x0000000c Data RW 1189 .data n32wb03x_qflash.o
|
||||||
0x2000405c 0x01003278 0x00000004 Data RW 1274 .data mc_p.l(errno.o)
|
0x2000405c 0x01003508 0x00000004 Data RW 1295 .data mc_p.l(errno.o)
|
||||||
0x20004060 - 0x00000034 Zero RW 22 .bss system_n32wb03x.o
|
0x20004060 - 0x00000034 Zero RW 22 .bss system_n32wb03x.o
|
||||||
0x20004094 - 0x00000c00 Zero RW 245 .bss boot_usart.o
|
0x20004094 - 0x00000c00 Zero RW 250 .bss boot_usart.o
|
||||||
0x20004c94 - 0x000000b0 Zero RW 302 .bss boot_cli.o
|
0x20004c94 - 0x000000b0 Zero RW 309 .bss boot_cli.o
|
||||||
0x20004d44 - 0x000001e7 Zero RW 403 .bss app_ota.o
|
0x20004d44 - 0x000001e7 Zero RW 418 .bss app_ota.o
|
||||||
0x20004f2b 0x0100327c 0x00000001 PAD
|
0x20004f2b 0x0100350c 0x00000001 PAD
|
||||||
0x20004f2c - 0x00000328 Zero RW 1172 .bss n32wb03x_qflash.o
|
0x20004f2c - 0x00000328 Zero RW 1187 .bss n32wb03x_qflash.o
|
||||||
0x20005254 0x0100327c 0x00000004 PAD
|
0x20005254 0x0100350c 0x00000004 PAD
|
||||||
0x20005258 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o
|
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
|
2092 1148 145 1 0 6739 app_bootset.o
|
||||||
2388 322 0 61 487 12597 app_ota.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
|
68 6 0 0 0 874 boot_crc32.o
|
||||||
472 66 0 8 3072 4161 boot_usart.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
|
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
|
190 32 804 12 808 4258 n32wb03x_qflash.o
|
||||||
228 32 12 0 0 2848 n32wb03x_rcc.o
|
228 32 12 0 0 2848 n32wb03x_rcc.o
|
||||||
270 24 0 0 0 5093 n32wb03x_usart.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
|
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)
|
0 0 32 0 0 0 (incl. Generated)
|
||||||
14 0 7 5 5 0 (incl. Padding)
|
14 0 7 5 5 0 (incl. Padding)
|
||||||
|
|
||||||
@ -976,26 +1016,29 @@ Image component sizes
|
|||||||
8 4 0 4 0 60 errno.o
|
8 4 0 4 0 60 errno.o
|
||||||
30 0 0 0 0 0 handlers.o
|
30 0 0 0 0 0 handlers.o
|
||||||
36 8 0 0 0 68 init.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
|
26 0 0 0 0 72 memcmp.o
|
||||||
36 0 0 0 0 60 memcpya.o
|
36 0 0 0 0 60 memcpya.o
|
||||||
36 0 0 0 0 100 memseta.o
|
36 0 0 0 0 100 memseta.o
|
||||||
28 0 0 0 0 68 strcmp.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
|
14 0 0 0 0 60 strlen.o
|
||||||
|
30 0 0 0 0 72 strncmp.o
|
||||||
118 0 0 0 0 84 strtoul.o
|
118 0 0 0 0 84 strtoul.o
|
||||||
44 0 0 0 0 72 uidiv.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)
|
6 0 3 0 0 0 (incl. Padding)
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
Code (inc. data) RO Data RW Data ZI Data Debug Library Name
|
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
|
Code (inc. data) RO Data RW Data ZI Data Debug
|
||||||
|
|
||||||
10254 2580 2574 96 6648 186425 Grand Totals
|
10894 2668 2590 96 6648 189365 Grand Totals
|
||||||
10254 2580 2574 96 6648 186425 ELF Image Totals
|
10894 2668 2590 96 6648 189365 ELF Image Totals
|
||||||
10254 2580 2574 96 0 0 ROM 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 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'
|
Rebuild target 'caiic_boot'
|
||||||
assembling startup_n32wb03x.s...
|
assembling startup_n32wb03x.s...
|
||||||
compiling boot_crc32.c...
|
compiling boot_crc32.c...
|
||||||
|
compiling system_n32wb03x.c...
|
||||||
|
compiling boot_cli.c...
|
||||||
|
compiling app_ota.c...
|
||||||
|
compiling app_bootset.c...
|
||||||
compiling main.c...
|
compiling main.c...
|
||||||
compiling boot_usart.c...
|
compiling boot_usart.c...
|
||||||
compiling system_n32wb03x.c...
|
|
||||||
compiling app_bootset.c...
|
|
||||||
compiling n32wb03x_gpio.c...
|
compiling n32wb03x_gpio.c...
|
||||||
compiling n32wb03x_usart.c...
|
|
||||||
compiling n32wb03x_rcc.c...
|
compiling n32wb03x_rcc.c...
|
||||||
compiling boot_cli.c...
|
compiling n32wb03x_usart.c...
|
||||||
compiling n32wb03x_dma.c...
|
compiling n32wb03x_dma.c...
|
||||||
compiling app_ota.c...
|
|
||||||
compiling n32wb03x_qflash.c...
|
compiling n32wb03x_qflash.c...
|
||||||
linking...
|
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...
|
FromELF: creating hex file...
|
||||||
After Build - User command #1: fromelf --bin --output=.\bin\caiic_boot.bin .\Objects\caiic_boot.axf
|
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).
|
".\Objects\caiic_boot.axf" - 0 Error(s), 0 Warning(s).
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* @file boot_cli.c
|
* @file boot_cli.c
|
||||||
* @brief Bootloader download-mode CLI: bare-metal polled line editor +
|
* @brief Bootloader download-mode CLI: bare-metal polled line editor
|
||||||
* command table, and the UART OTA binary frame mode.
|
* (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
|
* Wire-compatible with the application's UART CLI so that
|
||||||
* tools/ble_ota_update.py works unchanged against the bootloader:
|
* tools/ble_ota_update.py works unchanged against the bootloader:
|
||||||
@ -31,6 +32,7 @@
|
|||||||
#define CLI_LINE_SIZE 80
|
#define CLI_LINE_SIZE 80
|
||||||
#define CLI_MAX_ARGS 8
|
#define CLI_MAX_ARGS 8
|
||||||
#define OTA_IDLE_EXIT_MS 3000u /* binary mode fallback exit */
|
#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) */
|
/* 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 */
|
#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).
|
* @brief Download-mode main loop. Never returns (leaves via reset only).
|
||||||
*/
|
*/
|
||||||
void boot_cli_run(void)
|
void boot_cli_run(void)
|
||||||
{
|
{
|
||||||
static char s_line[CLI_LINE_SIZE];
|
static char s_line[CLI_LINE_SIZE];
|
||||||
uint8_t len = 0;
|
uint16_t len = 0;
|
||||||
uint32_t otaLastRx = 0;
|
uint32_t otaLastRx = 0;
|
||||||
|
|
||||||
cli_write("\r\nCLI ready (bootloader download mode). Type 'help' for commands.\r\n"
|
cli_write("\r\nCLI ready (bootloader download mode). Type 'help' for commands "
|
||||||
BOOT_CLI_PROMPT);
|
"(TAB = complete).\r\n" BOOT_CLI_PROMPT);
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
@ -424,6 +543,10 @@ void boot_cli_run(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CLI_KEY_TAB:
|
||||||
|
len = boot_cli_tab_complete(s_line, len);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (ch >= 0x20u && len < CLI_LINE_SIZE - 1u)
|
if (ch >= 0x20u && len < CLI_LINE_SIZE - 1u)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,6 +6,6 @@
|
|||||||
#ifndef __BOOT_VERSION_H__
|
#ifndef __BOOT_VERSION_H__
|
||||||
#define __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__ */
|
#endif /* __BOOT_VERSION_H__ */
|
||||||
|
|||||||
@ -7,6 +7,8 @@
|
|||||||
* production download and bricked-device recovery.
|
* production download and bricked-device recovery.
|
||||||
*
|
*
|
||||||
* Download mode entry:
|
* 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
|
* 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
|
* 2. automatic when there is no jumpable image: the bootsetting record
|
||||||
* is invalid AND the APP1 vector table fails sanity (SP outside the
|
* is invalid AND the APP1 vector table fails sanity (SP outside the
|
||||||
@ -34,6 +36,16 @@
|
|||||||
#define SRAM_SP_MIN 0x20004001u
|
#define SRAM_SP_MIN 0x20004001u
|
||||||
#define SRAM_SP_MAX 0x2000C000u
|
#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 */
|
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.
|
* @brief Main program.
|
||||||
*/
|
*/
|
||||||
@ -114,7 +144,16 @@ int main(void)
|
|||||||
puts_boot("\r\n[boot] CAIIC-BOOT " BOOT_FW_VERSION
|
puts_boot("\r\n[boot] CAIIC-BOOT " BOOT_FW_VERSION
|
||||||
" - Enter within 2s: download mode\r\n");
|
" - Enter within 2s: download mode\r\n");
|
||||||
|
|
||||||
/* Entry 1: Enter key inside the window */
|
/* Entry 0 (strap): 3.3 V held on the strap pin forces download mode */
|
||||||
|
if (boot_dl_strap_active())
|
||||||
|
{
|
||||||
|
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();
|
window_start = boot_millis();
|
||||||
while ((boot_millis() - window_start) < BOOT_DL_WINDOW_MS)
|
while ((boot_millis() - window_start) < BOOT_DL_WINDOW_MS)
|
||||||
{
|
{
|
||||||
@ -125,6 +164,7 @@ int main(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Entry 2 (recovery): no jumpable image at all */
|
/* Entry 2 (recovery): no jumpable image at all */
|
||||||
if (!enter_dl && !bs_ok && !image_sane(CAIIC_APP1_BASE))
|
if (!enter_dl && !bs_ok && !image_sane(CAIIC_APP1_BASE))
|
||||||
|
|||||||
46
docs/开发日志.md
46
docs/开发日志.md
@ -1372,3 +1372,49 @@ APP2 链接的镜像发向 APP1 区。设备端 END 校验(向量表 Reset PC
|
|||||||
- 协议文档:`docs/ble_protocol.md` §6.8。注意 **Boot 本身不能被 OTA 更新**
|
- 协议文档:`docs/ble_protocol.md` §6.8。注意 **Boot 本身不能被 OTA 更新**
|
||||||
(OTA 只写 APP bank),升级 Boot 只能 SWD 整片包;已出厂设备的旧 Boot
|
(OTA 只写 APP bank),升级 Boot 只能 SWD 整片包;已出厂设备的旧 Boot
|
||||||
无 download 模式,功能不受影响。
|
无 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