CLI 新增 pinset 管脚高低电平命令 (Boot V1.00.07 / APP V1.00.31)

- pinset <pxN> [0|1]: 设置 GPIO 输出高低 / 读当前电平 (pa0-6/pb0-13)
- Boot/src/boot_cli.c + mcm-ddc-ble/src/cli_core.c 各加一份同名命令
- 对 SWD(PA4/PA5) / 控制台(PB6/PB7) 重配前打印 warning
- Boot V1.00.06 -> V1.00.07; APP V1.00.30 -> V1.00.31 (0x0001001F)
- docs/开发日志.md: 新增 §59
This commit is contained in:
evan.liu 2026-09-12 09:58:55 +08:00
parent 011feee05d
commit 3d6567819a
19 changed files with 7373 additions and 6957 deletions

View File

@ -74,6 +74,15 @@ Section Cross References
boot_cli.o(i.CmdOta) refers to boot_cli.o(i.cli_write) for cli_write boot_cli.o(i.CmdOta) refers to boot_cli.o(i.cli_write) for cli_write
boot_cli.o(i.CmdOta) refers to boot_cli.o(.conststring) for .conststring boot_cli.o(i.CmdOta) refers to boot_cli.o(.conststring) for .conststring
boot_cli.o(i.CmdOta) refers to boot_cli.o(.data) for s_otaMode boot_cli.o(i.CmdOta) refers to boot_cli.o(.data) for s_otaMode
boot_cli.o(i.CmdPinSet) refers to boot_cli.o(i.cli_write) for cli_write
boot_cli.o(i.CmdPinSet) refers to boot_cli.o(i.pinset_parse) for pinset_parse
boot_cli.o(i.CmdPinSet) refers to boot_cli.o(i.cli_printf) for cli_printf
boot_cli.o(i.CmdPinSet) refers to n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) for RCC_EnableAPB2PeriphClk
boot_cli.o(i.CmdPinSet) refers to n32wb03x_gpio.o(i.GPIO_InitStruct) for GPIO_InitStruct
boot_cli.o(i.CmdPinSet) refers to n32wb03x_gpio.o(i.GPIO_InitPeripheral) for GPIO_InitPeripheral
boot_cli.o(i.CmdPinSet) refers to n32wb03x_gpio.o(i.GPIO_SetBits) for GPIO_SetBits
boot_cli.o(i.CmdPinSet) refers to n32wb03x_gpio.o(i.GPIO_ResetBits) for GPIO_ResetBits
boot_cli.o(i.CmdPinSet) refers to n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) for GPIO_ReadInputDataBit
boot_cli.o(i.CmdReset) refers to boot_cli.o(i.cli_write) for cli_write boot_cli.o(i.CmdReset) refers to boot_cli.o(i.cli_write) for cli_write
boot_cli.o(i.CmdReset) refers to boot_usart.o(i.boot_delay_ms) for boot_delay_ms boot_cli.o(i.CmdReset) refers to boot_usart.o(i.boot_delay_ms) for boot_delay_ms
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
@ -133,6 +142,7 @@ Section Cross References
boot_cli.o(.constdata) refers to app_bootset.o(i.AppBootset_CmdAppswitch) for AppBootset_CmdAppswitch boot_cli.o(.constdata) refers to app_bootset.o(i.AppBootset_CmdAppswitch) for AppBootset_CmdAppswitch
boot_cli.o(.constdata) refers to boot_cli.o(i.CmdOta) for CmdOta boot_cli.o(.constdata) refers to boot_cli.o(i.CmdOta) for CmdOta
boot_cli.o(.constdata) refers to boot_cli.o(i.CmdReset) for CmdReset boot_cli.o(.constdata) refers to boot_cli.o(i.CmdReset) for CmdReset
boot_cli.o(.constdata) refers to boot_cli.o(i.CmdPinSet) for CmdPinSet
boot_cli.o(.constdata) refers to boot_cli.o(i.CmdUartInfo) for CmdUartInfo boot_cli.o(.constdata) refers to boot_cli.o(i.CmdUartInfo) for CmdUartInfo
app_ota.o(i.app_ota_abort) refers to app_ota.o(.data) for s_active app_ota.o(i.app_ota_abort) refers to app_ota.o(.data) for s_active
app_ota.o(i.app_ota_chan_idle) refers to app_ota.o(.data) for s_chanState app_ota.o(i.app_ota_chan_idle) refers to app_ota.o(.data) for s_chanState
@ -341,11 +351,8 @@ 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_SetBits), (4 bytes).
Removing n32wb03x_gpio.o(i.GPIO_TogglePin), (8 bytes). Removing n32wb03x_gpio.o(i.GPIO_TogglePin), (8 bytes).
Removing n32wb03x_gpio.o(i.GPIO_Write), (4 bytes). Removing n32wb03x_gpio.o(i.GPIO_Write), (4 bytes).
Removing n32wb03x_gpio.o(i.GPIO_WriteBit), (12 bytes). Removing n32wb03x_gpio.o(i.GPIO_WriteBit), (12 bytes).
@ -384,7 +391,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. 95 unused section(s) (total 3898 bytes) removed from the image.
============================================================================== ==============================================================================
@ -394,34 +401,34 @@ 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 isalpha_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_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 ctype_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 iscntrl_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalpha_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_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 isupper_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 iscntrl_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 entry7a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.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 entry9b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.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 entry7a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
../clib/microlib/string/memchr.c 0x00000000 Number 0 memchr.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
@ -432,8 +439,8 @@ Image Symbol Table
../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE ../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE
../clib/microlib/string/strncmp.c 0x00000000 Number 0 strncmp.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 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 _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
@ -497,127 +504,134 @@ Image Symbol Table
CmdHelp 0x01000a39 Thumb Code 126 boot_cli.o(i.CmdHelp) CmdHelp 0x01000a39 Thumb Code 126 boot_cli.o(i.CmdHelp)
i.CmdOta 0x01000b3c Section 0 boot_cli.o(i.CmdOta) i.CmdOta 0x01000b3c Section 0 boot_cli.o(i.CmdOta)
CmdOta 0x01000b3d Thumb Code 20 boot_cli.o(i.CmdOta) CmdOta 0x01000b3d Thumb Code 20 boot_cli.o(i.CmdOta)
i.CmdReset 0x01000b58 Section 0 boot_cli.o(i.CmdReset) i.CmdPinSet 0x01000b58 Section 0 boot_cli.o(i.CmdPinSet)
CmdReset 0x01000b59 Thumb Code 34 boot_cli.o(i.CmdReset) CmdPinSet 0x01000b59 Thumb Code 268 boot_cli.o(i.CmdPinSet)
i.CmdUartInfo 0x01000b94 Section 0 boot_cli.o(i.CmdUartInfo) i.CmdReset 0x01000d5c Section 0 boot_cli.o(i.CmdReset)
CmdUartInfo 0x01000b95 Thumb Code 26 boot_cli.o(i.CmdUartInfo) CmdReset 0x01000d5d Thumb Code 34 boot_cli.o(i.CmdReset)
i.CmdVersion 0x01000c44 Section 0 boot_cli.o(i.CmdVersion) i.CmdUartInfo 0x01000d98 Section 0 boot_cli.o(i.CmdUartInfo)
CmdVersion 0x01000c45 Thumb Code 26 boot_cli.o(i.CmdVersion) CmdUartInfo 0x01000d99 Thumb Code 26 boot_cli.o(i.CmdUartInfo)
i.DMA_DeInit 0x01000cb8 Section 0 n32wb03x_dma.o(i.DMA_DeInit) i.CmdVersion 0x01000e48 Section 0 boot_cli.o(i.CmdVersion)
i.DMA_EnableChannel 0x01000d58 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel) CmdVersion 0x01000e49 Thumb Code 26 boot_cli.o(i.CmdVersion)
i.DMA_GetCurrDataCounter 0x01000d74 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) i.DMA_DeInit 0x01000ebc Section 0 n32wb03x_dma.o(i.DMA_DeInit)
i.DMA_Init 0x01000d7c Section 0 n32wb03x_dma.o(i.DMA_Init) i.DMA_EnableChannel 0x01000f5c Section 0 n32wb03x_dma.o(i.DMA_EnableChannel)
i.DMA_RequestRemap 0x01000dbc Section 0 n32wb03x_dma.o(i.DMA_RequestRemap) i.DMA_GetCurrDataCounter 0x01000f78 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
i.GPIO_InitPeripheral 0x01000dcc Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral) i.DMA_Init 0x01000f80 Section 0 n32wb03x_dma.o(i.DMA_Init)
i.GPIO_InitStruct 0x01000ed4 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct) i.DMA_RequestRemap 0x01000fc0 Section 0 n32wb03x_dma.o(i.DMA_RequestRemap)
i.OTPTrim_Read 0x01000ef0 Section 0 system_n32wb03x.o(i.OTPTrim_Read) i.GPIO_InitPeripheral 0x01000fd0 Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
i.Qflash_Erase_Sector 0x01000fbc Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector) i.GPIO_InitStruct 0x010010d8 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct)
i.Qflash_Init 0x01000ff8 Section 0 n32wb03x_qflash.o(i.Qflash_Init) i.GPIO_ReadInputDataBit 0x010010f4 Section 0 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit)
i.Qflash_Write 0x01001030 Section 0 n32wb03x_qflash.o(i.Qflash_Write) i.GPIO_ResetBits 0x01001108 Section 0 n32wb03x_gpio.o(i.GPIO_ResetBits)
i.RCC_EnableAHBPeriphClk 0x01001074 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) i.GPIO_SetBits 0x0100110c Section 0 n32wb03x_gpio.o(i.GPIO_SetBits)
i.RCC_EnableAPB2PeriphClk 0x01001094 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) i.OTPTrim_Read 0x01001110 Section 0 system_n32wb03x.o(i.OTPTrim_Read)
i.RCC_GetClocksFreqValue 0x010010b4 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) i.Qflash_Erase_Sector 0x010011dc Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
i.RCC_HsiCalib 0x01001158 Section 0 system_n32wb03x.o(i.RCC_HsiCalib) i.Qflash_Init 0x01001218 Section 0 n32wb03x_qflash.o(i.Qflash_Init)
RCC_HsiCalib 0x01001159 Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib) i.Qflash_Write 0x01001250 Section 0 n32wb03x_qflash.o(i.Qflash_Write)
i.SystemInit 0x01001288 Section 0 system_n32wb03x.o(i.SystemInit) i.RCC_EnableAHBPeriphClk 0x01001294 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
i.SystemTrimValueRead 0x010013a4 Section 0 system_n32wb03x.o(i.SystemTrimValueRead) i.RCC_EnableAPB2PeriphClk 0x010012b4 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
i.USART_Enable 0x010013b8 Section 0 n32wb03x_usart.o(i.USART_Enable) i.RCC_GetClocksFreqValue 0x010012d4 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
i.USART_EnableDMA 0x010013d8 Section 0 n32wb03x_usart.o(i.USART_EnableDMA) i.RCC_HsiCalib 0x01001378 Section 0 system_n32wb03x.o(i.RCC_HsiCalib)
i.USART_GetFlagStatus 0x010013ec Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus) RCC_HsiCalib 0x01001379 Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib)
i.USART_Init 0x0100140c Section 0 n32wb03x_usart.o(i.USART_Init) i.SystemInit 0x010014a8 Section 0 system_n32wb03x.o(i.SystemInit)
i.USART_SendData 0x010014c0 Section 0 n32wb03x_usart.o(i.USART_SendData) i.SystemTrimValueRead 0x010015c4 Section 0 system_n32wb03x.o(i.SystemTrimValueRead)
i.__aeabi_errno_addr 0x010014c8 Section 0 errno.o(i.__aeabi_errno_addr) i.USART_Enable 0x010015d8 Section 0 n32wb03x_usart.o(i.USART_Enable)
i.__scatterload_copy 0x010014d0 Section 14 handlers.o(i.__scatterload_copy) i.USART_EnableDMA 0x010015f8 Section 0 n32wb03x_usart.o(i.USART_EnableDMA)
i.__scatterload_null 0x010014de Section 2 handlers.o(i.__scatterload_null) i.USART_GetFlagStatus 0x0100160c Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus)
i.__scatterload_zeroinit 0x010014e0 Section 14 handlers.o(i.__scatterload_zeroinit) i.USART_Init 0x0100162c Section 0 n32wb03x_usart.o(i.USART_Init)
i.__set_PRIMASK 0x010014ee Section 0 system_n32wb03x.o(i.__set_PRIMASK) i.USART_SendData 0x010016e0 Section 0 n32wb03x_usart.o(i.USART_SendData)
__set_PRIMASK 0x010014ef Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK) i.__aeabi_errno_addr 0x010016e8 Section 0 errno.o(i.__aeabi_errno_addr)
i.__set_PRIMASK 0x010014f4 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK) i.__scatterload_copy 0x010016f0 Section 14 handlers.o(i.__scatterload_copy)
__set_PRIMASK 0x010014f5 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK) i.__scatterload_null 0x010016fe Section 2 handlers.o(i.__scatterload_null)
i.app_ota_abort 0x010014fc Section 0 app_ota.o(i.app_ota_abort) i.__scatterload_zeroinit 0x01001700 Section 14 handlers.o(i.__scatterload_zeroinit)
i.app_ota_chan_idle 0x01001538 Section 0 app_ota.o(i.app_ota_chan_idle) i.__set_PRIMASK 0x0100170e Section 0 system_n32wb03x.o(i.__set_PRIMASK)
i.app_ota_chan_rx 0x0100154c Section 0 app_ota.o(i.app_ota_chan_rx) __set_PRIMASK 0x0100170f Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK)
i.app_ota_chan_rx_uart 0x0100168c Section 0 app_ota.o(i.app_ota_chan_rx_uart) i.__set_PRIMASK 0x01001714 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK)
i.app_ota_handle_frame 0x010016b0 Section 0 app_ota.o(i.app_ota_handle_frame) __set_PRIMASK 0x01001715 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK)
i.app_ota_reset_poll 0x0100172c Section 0 app_ota.o(i.app_ota_reset_poll) i.app_ota_abort 0x0100171c Section 0 app_ota.o(i.app_ota_abort)
i.boot_cli_redraw 0x01001788 Section 0 boot_cli.o(i.boot_cli_redraw) i.app_ota_chan_idle 0x01001758 Section 0 app_ota.o(i.app_ota_chan_idle)
boot_cli_redraw 0x01001789 Thumb Code 60 boot_cli.o(i.boot_cli_redraw) i.app_ota_chan_rx 0x0100176c Section 0 app_ota.o(i.app_ota_chan_rx)
i.boot_cli_run 0x010017d4 Section 0 boot_cli.o(i.boot_cli_run) i.app_ota_chan_rx_uart 0x010018ac Section 0 app_ota.o(i.app_ota_chan_rx_uart)
i.boot_cli_tab_complete 0x010019f4 Section 0 boot_cli.o(i.boot_cli_tab_complete) i.app_ota_handle_frame 0x010018d0 Section 0 app_ota.o(i.app_ota_handle_frame)
boot_cli_tab_complete 0x010019f5 Thumb Code 306 boot_cli.o(i.boot_cli_tab_complete) i.app_ota_reset_poll 0x0100194c Section 0 app_ota.o(i.app_ota_reset_poll)
i.boot_delay_ms 0x01001b38 Section 0 boot_usart.o(i.boot_delay_ms) i.boot_cli_redraw 0x010019a8 Section 0 boot_cli.o(i.boot_cli_redraw)
i.boot_millis 0x01001b50 Section 0 boot_usart.o(i.boot_millis) boot_cli_redraw 0x010019a9 Thumb Code 60 boot_cli.o(i.boot_cli_redraw)
i.boot_usart_init 0x01001b78 Section 0 boot_usart.o(i.boot_usart_init) i.boot_cli_run 0x010019f4 Section 0 boot_cli.o(i.boot_cli_run)
i.boot_usart_read 0x01001c88 Section 0 boot_usart.o(i.boot_usart_read) i.boot_cli_tab_complete 0x01001c14 Section 0 boot_cli.o(i.boot_cli_tab_complete)
i.boot_usart_rx_head 0x01001cc8 Section 0 boot_usart.o(i.boot_usart_rx_head) boot_cli_tab_complete 0x01001c15 Thumb Code 306 boot_cli.o(i.boot_cli_tab_complete)
boot_usart_rx_head 0x01001cc9 Thumb Code 18 boot_usart.o(i.boot_usart_rx_head) i.boot_delay_ms 0x01001d58 Section 0 boot_usart.o(i.boot_delay_ms)
i.boot_usart_write 0x01001ce0 Section 0 boot_usart.o(i.boot_usart_write) i.boot_millis 0x01001d70 Section 0 boot_usart.o(i.boot_millis)
i.bootset_commit 0x01001d10 Section 0 app_bootset.o(i.bootset_commit) i.boot_usart_init 0x01001d98 Section 0 boot_usart.o(i.boot_usart_init)
bootset_commit 0x01001d11 Thumb Code 74 app_bootset.o(i.bootset_commit) i.boot_usart_read 0x01001ea8 Section 0 boot_usart.o(i.boot_usart_read)
i.bootset_crc 0x01001d64 Section 0 app_bootset.o(i.bootset_crc) i.boot_usart_rx_head 0x01001ee8 Section 0 boot_usart.o(i.boot_usart_rx_head)
bootset_crc 0x01001d65 Thumb Code 14 app_bootset.o(i.bootset_crc) boot_usart_rx_head 0x01001ee9 Thumb Code 18 boot_usart.o(i.boot_usart_rx_head)
i.bootset_ensure_qflash 0x01001d74 Section 0 app_bootset.o(i.bootset_ensure_qflash) i.boot_usart_write 0x01001f00 Section 0 boot_usart.o(i.boot_usart_write)
bootset_ensure_qflash 0x01001d75 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash) i.bootset_commit 0x01001f30 Section 0 app_bootset.o(i.bootset_commit)
i.bootset_print 0x01001d90 Section 0 app_bootset.o(i.bootset_print) bootset_commit 0x01001f31 Thumb Code 74 app_bootset.o(i.bootset_commit)
bootset_print 0x01001d91 Thumb Code 98 app_bootset.o(i.bootset_print) i.bootset_crc 0x01001f84 Section 0 app_bootset.o(i.bootset_crc)
i.bootset_valid 0x01001efc Section 0 app_bootset.o(i.bootset_valid) bootset_crc 0x01001f85 Thumb Code 14 app_bootset.o(i.bootset_crc)
bootset_valid 0x01001efd Thumb Code 32 app_bootset.o(i.bootset_valid) i.bootset_ensure_qflash 0x01001f94 Section 0 app_bootset.o(i.bootset_ensure_qflash)
i.caiic_crc32 0x01001f20 Section 0 boot_crc32.o(i.caiic_crc32) bootset_ensure_qflash 0x01001f95 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash)
i.cli_exec_line 0x01001f64 Section 0 boot_cli.o(i.cli_exec_line) i.bootset_print 0x01001fb0 Section 0 app_bootset.o(i.bootset_print)
cli_exec_line 0x01001f65 Thumb Code 162 boot_cli.o(i.cli_exec_line) bootset_print 0x01001fb1 Thumb Code 98 app_bootset.o(i.bootset_print)
i.cli_history_add 0x01002030 Section 0 boot_cli.o(i.cli_history_add) i.bootset_valid 0x0100211c Section 0 app_bootset.o(i.bootset_valid)
cli_history_add 0x01002031 Thumb Code 106 boot_cli.o(i.cli_history_add) bootset_valid 0x0100211d Thumb Code 32 app_bootset.o(i.bootset_valid)
i.cli_history_get 0x010020a8 Section 0 boot_cli.o(i.cli_history_get) i.caiic_crc32 0x01002140 Section 0 boot_crc32.o(i.caiic_crc32)
cli_history_get 0x010020a9 Thumb Code 36 boot_cli.o(i.cli_history_get) i.cli_exec_line 0x01002184 Section 0 boot_cli.o(i.cli_exec_line)
i.cli_printf 0x010020d4 Section 0 boot_cli.o(i.cli_printf) cli_exec_line 0x01002185 Thumb Code 162 boot_cli.o(i.cli_exec_line)
i.cli_write 0x01002270 Section 0 boot_cli.o(i.cli_write) i.cli_history_add 0x01002250 Section 0 boot_cli.o(i.cli_history_add)
i.image_sane 0x01002288 Section 0 main.o(i.image_sane) cli_history_add 0x01002251 Thumb Code 106 boot_cli.o(i.cli_history_add)
image_sane 0x01002289 Thumb Code 44 main.o(i.image_sane) i.cli_history_get 0x010022c8 Section 0 boot_cli.o(i.cli_history_get)
i.jump_to_app 0x010022bc Section 0 main.o(i.jump_to_app) cli_history_get 0x010022c9 Thumb Code 36 boot_cli.o(i.cli_history_get)
jump_to_app 0x010022bd Thumb Code 30 main.o(i.jump_to_app) i.cli_printf 0x010022f4 Section 0 boot_cli.o(i.cli_printf)
i.main 0x010022e0 Section 0 main.o(i.main) i.cli_write 0x01002490 Section 0 boot_cli.o(i.cli_write)
i.ota_crc16 0x01002464 Section 0 app_ota.o(i.ota_crc16) i.image_sane 0x010024a8 Section 0 main.o(i.image_sane)
ota_crc16 0x01002465 Thumb Code 68 app_ota.o(i.ota_crc16) image_sane 0x010024a9 Thumb Code 44 main.o(i.image_sane)
i.ota_erase_up_to 0x010024b0 Section 0 app_ota.o(i.ota_erase_up_to) i.jump_to_app 0x010024dc Section 0 main.o(i.jump_to_app)
ota_erase_up_to 0x010024b1 Thumb Code 54 app_ota.o(i.ota_erase_up_to) jump_to_app 0x010024dd Thumb Code 30 main.o(i.jump_to_app)
i.ota_on_begin 0x010024f0 Section 0 app_ota.o(i.ota_on_begin) i.main 0x01002500 Section 0 main.o(i.main)
ota_on_begin 0x010024f1 Thumb Code 294 app_ota.o(i.ota_on_begin) i.ota_crc16 0x01002684 Section 0 app_ota.o(i.ota_crc16)
i.ota_on_data 0x01002660 Section 0 app_ota.o(i.ota_on_data) ota_crc16 0x01002685 Thumb Code 68 app_ota.o(i.ota_crc16)
ota_on_data 0x01002661 Thumb Code 396 app_ota.o(i.ota_on_data) i.ota_erase_up_to 0x010026d0 Section 0 app_ota.o(i.ota_erase_up_to)
i.ota_on_end 0x01002808 Section 0 app_ota.o(i.ota_on_end) ota_erase_up_to 0x010026d1 Thumb Code 54 app_ota.o(i.ota_erase_up_to)
ota_on_end 0x01002809 Thumb Code 326 app_ota.o(i.ota_on_end) i.ota_on_begin 0x01002710 Section 0 app_ota.o(i.ota_on_begin)
i.ota_program 0x01002978 Section 0 app_ota.o(i.ota_program) ota_on_begin 0x01002711 Thumb Code 294 app_ota.o(i.ota_on_begin)
ota_program 0x01002979 Thumb Code 46 app_ota.o(i.ota_program) i.ota_on_data 0x01002880 Section 0 app_ota.o(i.ota_on_data)
i.ota_rd32 0x010029b0 Section 0 app_ota.o(i.ota_rd32) ota_on_data 0x01002881 Thumb Code 396 app_ota.o(i.ota_on_data)
ota_rd32 0x010029b1 Thumb Code 24 app_ota.o(i.ota_rd32) i.ota_on_end 0x01002a28 Section 0 app_ota.o(i.ota_on_end)
i.ota_respond 0x010029c8 Section 0 app_ota.o(i.ota_respond) ota_on_end 0x01002a29 Thumb Code 326 app_ota.o(i.ota_on_end)
ota_respond 0x010029c9 Thumb Code 118 app_ota.o(i.ota_respond) i.ota_program 0x01002b98 Section 0 app_ota.o(i.ota_program)
i.ota_uart_sink 0x01002a44 Section 0 app_ota.o(i.ota_uart_sink) ota_program 0x01002b99 Thumb Code 46 app_ota.o(i.ota_program)
ota_uart_sink 0x01002a45 Thumb Code 22 app_ota.o(i.ota_uart_sink) i.ota_rd32 0x01002bd0 Section 0 app_ota.o(i.ota_rd32)
i.ota_update_bootsetting 0x01002a60 Section 0 app_ota.o(i.ota_update_bootsetting) ota_rd32 0x01002bd1 Thumb Code 24 app_ota.o(i.ota_rd32)
ota_update_bootsetting 0x01002a61 Thumb Code 174 app_ota.o(i.ota_update_bootsetting) i.ota_respond 0x01002be8 Section 0 app_ota.o(i.ota_respond)
i.parse_u32 0x01002b2c Section 0 app_bootset.o(i.parse_u32) ota_respond 0x01002be9 Thumb Code 118 app_ota.o(i.ota_respond)
parse_u32 0x01002b2d Thumb Code 46 app_bootset.o(i.parse_u32) i.ota_uart_sink 0x01002c64 Section 0 app_ota.o(i.ota_uart_sink)
i.puts_boot 0x01002b5a Section 0 main.o(i.puts_boot) ota_uart_sink 0x01002c65 Thumb Code 22 app_ota.o(i.ota_uart_sink)
puts_boot 0x01002b5b Thumb Code 24 main.o(i.puts_boot) i.ota_update_bootsetting 0x01002c80 Section 0 app_ota.o(i.ota_update_bootsetting)
i.read_flash_ID 0x01002b74 Section 0 system_n32wb03x.o(i.read_flash_ID) ota_update_bootsetting 0x01002c81 Thumb Code 174 app_ota.o(i.ota_update_bootsetting)
read_flash_ID 0x01002b75 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID) i.parse_u32 0x01002d4c Section 0 app_bootset.o(i.parse_u32)
i.str_pad 0x01002bb8 Section 0 boot_cli.o(i.str_pad) parse_u32 0x01002d4d Thumb Code 46 app_bootset.o(i.parse_u32)
str_pad 0x01002bb9 Thumb Code 78 boot_cli.o(i.str_pad) i.pinset_parse 0x01002d7c Section 0 boot_cli.o(i.pinset_parse)
i.u32_to_str 0x01002c06 Section 0 boot_cli.o(i.u32_to_str) pinset_parse 0x01002d7d Thumb Code 170 boot_cli.o(i.pinset_parse)
u32_to_str 0x01002c07 Thumb Code 108 boot_cli.o(i.u32_to_str) i.puts_boot 0x01002e30 Section 0 main.o(i.puts_boot)
.constdata 0x01002c72 Section 472 system_n32wb03x.o(.constdata) puts_boot 0x01002e31 Thumb Code 24 main.o(i.puts_boot)
.constdata 0x01002e4c Section 108 boot_cli.o(.constdata) i.read_flash_ID 0x01002e48 Section 0 system_n32wb03x.o(i.read_flash_ID)
s_cmds 0x01002e4c Data 108 boot_cli.o(.constdata) read_flash_ID 0x01002e49 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID)
.constdata 0x01002eb8 Section 12 n32wb03x_rcc.o(.constdata) i.str_pad 0x01002e8c Section 0 boot_cli.o(i.str_pad)
s_ApbPresTable 0x01002eb8 Data 8 n32wb03x_rcc.o(.constdata) str_pad 0x01002e8d Thumb Code 78 boot_cli.o(i.str_pad)
s_AhbPresTable 0x01002ec0 Data 4 n32wb03x_rcc.o(.constdata) i.u32_to_str 0x01002eda Section 0 boot_cli.o(i.u32_to_str)
.constdata 0x01002ec4 Section 804 n32wb03x_qflash.o(.constdata) u32_to_str 0x01002edb Thumb Code 108 boot_cli.o(i.u32_to_str)
.constdata 0x010031e8 Section 129 ctype_o.o(.constdata) .constdata 0x01002f46 Section 472 system_n32wb03x.o(.constdata)
.constdata 0x0100326c Section 4 ctype_o.o(.constdata) .constdata 0x01003120 Section 120 boot_cli.o(.constdata)
table 0x0100326c Data 4 ctype_o.o(.constdata) s_cmds 0x01003120 Data 120 boot_cli.o(.constdata)
.conststring 0x01003270 Section 666 boot_cli.o(.conststring) .constdata 0x01003198 Section 12 n32wb03x_rcc.o(.constdata)
.conststring 0x0100350c Section 145 app_bootset.o(.conststring) s_ApbPresTable 0x01003198 Data 8 n32wb03x_rcc.o(.constdata)
s_AhbPresTable 0x010031a0 Data 4 n32wb03x_rcc.o(.constdata)
.constdata 0x010031a4 Section 804 n32wb03x_qflash.o(.constdata)
.constdata 0x010034c8 Section 129 ctype_o.o(.constdata)
.constdata 0x0100354c Section 4 ctype_o.o(.constdata)
table 0x0100354c Data 4 ctype_o.o(.constdata)
.conststring 0x01003550 Section 730 boot_cli.o(.conststring)
.conststring 0x0100382c 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)
@ -758,54 +772,57 @@ Image Symbol Table
AppBootset_CmdAppswitch 0x01000369 Thumb Code 282 app_bootset.o(i.AppBootset_CmdAppswitch) 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_CmdBsdump 0x01000641 Thumb Code 28 app_bootset.o(i.AppBootset_CmdBsdump)
AppBootset_CmdBsset 0x01000661 Thumb Code 348 app_bootset.o(i.AppBootset_CmdBsset) AppBootset_CmdBsset 0x01000661 Thumb Code 348 app_bootset.o(i.AppBootset_CmdBsset)
DMA_DeInit 0x01000cb9 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit) DMA_DeInit 0x01000ebd Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit)
DMA_EnableChannel 0x01000d59 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel) DMA_EnableChannel 0x01000f5d Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel)
DMA_GetCurrDataCounter 0x01000d75 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) DMA_GetCurrDataCounter 0x01000f79 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
DMA_Init 0x01000d7d Thumb Code 58 n32wb03x_dma.o(i.DMA_Init) DMA_Init 0x01000f81 Thumb Code 58 n32wb03x_dma.o(i.DMA_Init)
DMA_RequestRemap 0x01000dbd Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap) DMA_RequestRemap 0x01000fc1 Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap)
GPIO_InitPeripheral 0x01000dcd Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral) GPIO_InitPeripheral 0x01000fd1 Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
GPIO_InitStruct 0x01000ed5 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct) GPIO_InitStruct 0x010010d9 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct)
OTPTrim_Read 0x01000ef1 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read) GPIO_ReadInputDataBit 0x010010f5 Thumb Code 20 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit)
Qflash_Erase_Sector 0x01000fbd Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector) GPIO_ResetBits 0x01001109 Thumb Code 4 n32wb03x_gpio.o(i.GPIO_ResetBits)
Qflash_Init 0x01000ff9 Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init) GPIO_SetBits 0x0100110d Thumb Code 4 n32wb03x_gpio.o(i.GPIO_SetBits)
Qflash_Write 0x01001031 Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write) OTPTrim_Read 0x01001111 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read)
RCC_EnableAHBPeriphClk 0x01001075 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) Qflash_Erase_Sector 0x010011dd Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
RCC_EnableAPB2PeriphClk 0x01001095 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) Qflash_Init 0x01001219 Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init)
RCC_GetClocksFreqValue 0x010010b5 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) Qflash_Write 0x01001251 Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write)
SystemInit 0x01001289 Thumb Code 250 system_n32wb03x.o(i.SystemInit) RCC_EnableAHBPeriphClk 0x01001295 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
SystemTrimValueRead 0x010013a5 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead) RCC_EnableAPB2PeriphClk 0x010012b5 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
USART_Enable 0x010013b9 Thumb Code 26 n32wb03x_usart.o(i.USART_Enable) RCC_GetClocksFreqValue 0x010012d5 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
USART_EnableDMA 0x010013d9 Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA) SystemInit 0x010014a9 Thumb Code 250 system_n32wb03x.o(i.SystemInit)
USART_GetFlagStatus 0x010013ed Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus) SystemTrimValueRead 0x010015c5 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead)
USART_Init 0x0100140d Thumb Code 162 n32wb03x_usart.o(i.USART_Init) USART_Enable 0x010015d9 Thumb Code 26 n32wb03x_usart.o(i.USART_Enable)
USART_SendData 0x010014c1 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData) USART_EnableDMA 0x010015f9 Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA)
__aeabi_errno_addr 0x010014c9 Thumb Code 4 errno.o(i.__aeabi_errno_addr) USART_GetFlagStatus 0x0100160d Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus)
__rt_errno_addr 0x010014c9 Thumb Code 0 errno.o(i.__aeabi_errno_addr) USART_Init 0x0100162d Thumb Code 162 n32wb03x_usart.o(i.USART_Init)
__scatterload_copy 0x010014d1 Thumb Code 14 handlers.o(i.__scatterload_copy) USART_SendData 0x010016e1 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData)
__scatterload_null 0x010014df Thumb Code 2 handlers.o(i.__scatterload_null) __aeabi_errno_addr 0x010016e9 Thumb Code 4 errno.o(i.__aeabi_errno_addr)
__scatterload_zeroinit 0x010014e1 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) __rt_errno_addr 0x010016e9 Thumb Code 0 errno.o(i.__aeabi_errno_addr)
app_ota_abort 0x010014fd Thumb Code 32 app_ota.o(i.app_ota_abort) __scatterload_copy 0x010016f1 Thumb Code 14 handlers.o(i.__scatterload_copy)
app_ota_chan_idle 0x01001539 Thumb Code 12 app_ota.o(i.app_ota_chan_idle) __scatterload_null 0x010016ff Thumb Code 2 handlers.o(i.__scatterload_null)
app_ota_chan_rx 0x0100154d Thumb Code 298 app_ota.o(i.app_ota_chan_rx) __scatterload_zeroinit 0x01001701 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
app_ota_chan_rx_uart 0x0100168d Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart) app_ota_abort 0x0100171d Thumb Code 32 app_ota.o(i.app_ota_abort)
app_ota_handle_frame 0x010016b1 Thumb Code 106 app_ota.o(i.app_ota_handle_frame) app_ota_chan_idle 0x01001759 Thumb Code 12 app_ota.o(i.app_ota_chan_idle)
app_ota_reset_poll 0x0100172d Thumb Code 70 app_ota.o(i.app_ota_reset_poll) app_ota_chan_rx 0x0100176d Thumb Code 298 app_ota.o(i.app_ota_chan_rx)
boot_cli_run 0x010017d5 Thumb Code 432 boot_cli.o(i.boot_cli_run) app_ota_chan_rx_uart 0x010018ad Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart)
boot_delay_ms 0x01001b39 Thumb Code 24 boot_usart.o(i.boot_delay_ms) app_ota_handle_frame 0x010018d1 Thumb Code 106 app_ota.o(i.app_ota_handle_frame)
boot_millis 0x01001b51 Thumb Code 30 boot_usart.o(i.boot_millis) app_ota_reset_poll 0x0100194d Thumb Code 70 app_ota.o(i.app_ota_reset_poll)
boot_usart_init 0x01001b79 Thumb Code 238 boot_usart.o(i.boot_usart_init) boot_cli_run 0x010019f5 Thumb Code 432 boot_cli.o(i.boot_cli_run)
boot_usart_read 0x01001c89 Thumb Code 54 boot_usart.o(i.boot_usart_read) boot_delay_ms 0x01001d59 Thumb Code 24 boot_usart.o(i.boot_delay_ms)
boot_usart_write 0x01001ce1 Thumb Code 42 boot_usart.o(i.boot_usart_write) boot_millis 0x01001d71 Thumb Code 30 boot_usart.o(i.boot_millis)
caiic_crc32 0x01001f21 Thumb Code 62 boot_crc32.o(i.caiic_crc32) boot_usart_init 0x01001d99 Thumb Code 238 boot_usart.o(i.boot_usart_init)
cli_printf 0x010020d5 Thumb Code 408 boot_cli.o(i.cli_printf) boot_usart_read 0x01001ea9 Thumb Code 54 boot_usart.o(i.boot_usart_read)
cli_write 0x01002271 Thumb Code 22 boot_cli.o(i.cli_write) boot_usart_write 0x01001f01 Thumb Code 42 boot_usart.o(i.boot_usart_write)
main 0x010022e1 Thumb Code 194 main.o(i.main) caiic_crc32 0x01002141 Thumb Code 62 boot_crc32.o(i.caiic_crc32)
TRIM_READ_CMD_CODE 0x01002c72 Data 320 system_n32wb03x.o(.constdata) cli_printf 0x010022f5 Thumb Code 408 boot_cli.o(i.cli_printf)
CMD_RDID 0x01002db2 Data 152 system_n32wb03x.o(.constdata) cli_write 0x01002491 Thumb Code 22 boot_cli.o(i.cli_write)
const_qflash_cmd 0x01002ec4 Data 804 n32wb03x_qflash.o(.constdata) main 0x01002501 Thumb Code 194 main.o(i.main)
__ctype_table 0x010031e8 Data 129 ctype_o.o(.constdata) TRIM_READ_CMD_CODE 0x01002f46 Data 320 system_n32wb03x.o(.constdata)
Region$$Table$$Base 0x010035a0 Number 0 anon$$obj.o(Region$$Table) CMD_RDID 0x01003086 Data 152 system_n32wb03x.o(.constdata)
Region$$Table$$Limit 0x010035c0 Number 0 anon$$obj.o(Region$$Table) const_qflash_cmd 0x010031a4 Data 804 n32wb03x_qflash.o(.constdata)
__ctype_table 0x010034c8 Data 129 ctype_o.o(.constdata)
Region$$Table$$Base 0x010038c0 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x010038e0 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)
@ -821,164 +838,169 @@ Memory Map of the image
Image Entry point : 0x010000c1 Image Entry point : 0x010000c1
Load Region LR_IROM1 (Base: 0x01000000, Size: 0x00003620, Max: 0x00004000, ABSOLUTE) Load Region LR_IROM1 (Base: 0x01000000, Size: 0x00003940, Max: 0x00004000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x000035c0, Max: 0x00004000, ABSOLUTE) Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x000038e0, 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 1230 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) 0x010000c0 0x010000c0 0x00000000 Code RO 1240 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x010000c0 0x010000c0 0x00000004 Code RO 1255 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) 0x010000c0 0x010000c0 0x00000004 Code RO 1265 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x010000c4 0x010000c4 0x00000004 Code RO 1258 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) 0x010000c4 0x010000c4 0x00000004 Code RO 1268 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x010000c8 0x010000c8 0x00000000 Code RO 1260 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) 0x010000c8 0x010000c8 0x00000000 Code RO 1270 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x010000c8 0x010000c8 0x00000000 Code RO 1262 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) 0x010000c8 0x010000c8 0x00000000 Code RO 1272 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x010000c8 0x010000c8 0x00000008 Code RO 1263 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) 0x010000c8 0x010000c8 0x00000008 Code RO 1273 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x010000d0 0x010000d0 0x00000000 Code RO 1265 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) 0x010000d0 0x010000d0 0x00000000 Code RO 1275 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x010000d0 0x010000d0 0x00000000 Code RO 1267 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) 0x010000d0 0x010000d0 0x00000000 Code RO 1277 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x010000d0 0x010000d0 0x00000004 Code RO 1256 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) 0x010000d0 0x010000d0 0x00000004 Code RO 1266 .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 1233 .text mc_p.l(uidiv.o) 0x01000100 0x01000100 0x0000002c Code RO 1243 .text mc_p.l(uidiv.o)
0x0100012c 0x0100012c 0x00000024 Code RO 1235 .text mc_p.l(memcpya.o) 0x0100012c 0x0100012c 0x00000024 Code RO 1245 .text mc_p.l(memcpya.o)
0x01000150 0x01000150 0x00000024 Code RO 1237 .text mc_p.l(memseta.o) 0x01000150 0x01000150 0x00000024 Code RO 1247 .text mc_p.l(memseta.o)
0x01000174 0x01000174 0x0000000e Code RO 1239 .text mc_p.l(strlen.o) 0x01000174 0x01000174 0x0000000e Code RO 1249 .text mc_p.l(strlen.o)
0x01000182 0x01000182 0x0000001c Code RO 1241 .text mc_p.l(strcmp.o) 0x01000182 0x01000182 0x0000001c Code RO 1251 .text mc_p.l(strcmp.o)
0x0100019e 0x0100019e 0x00000014 Code RO 1243 .text mc_p.l(memchr.o) 0x0100019e 0x0100019e 0x00000014 Code RO 1253 .text mc_p.l(memchr.o)
0x010001b2 0x010001b2 0x0000001a Code RO 1245 .text mc_p.l(memcmp.o) 0x010001b2 0x010001b2 0x0000001a Code RO 1255 .text mc_p.l(memcmp.o)
0x010001cc 0x010001cc 0x00000012 Code RO 1247 .text mc_p.l(strcpy.o) 0x010001cc 0x010001cc 0x00000012 Code RO 1257 .text mc_p.l(strcpy.o)
0x010001de 0x010001de 0x0000001e Code RO 1249 .text mc_p.l(strncmp.o) 0x010001de 0x010001de 0x0000001e Code RO 1259 .text mc_p.l(strncmp.o)
0x010001fc 0x010001fc 0x00000076 Code RO 1253 .text mc_p.l(strtoul.o) 0x010001fc 0x010001fc 0x00000076 Code RO 1263 .text mc_p.l(strtoul.o)
0x01000272 0x01000272 0x00000002 PAD 0x01000272 0x01000272 0x00000002 PAD
0x01000274 0x01000274 0x00000008 Code RO 1269 .text mc_p.l(ctype_o.o) 0x01000274 0x01000274 0x00000008 Code RO 1279 .text mc_p.l(ctype_o.o)
0x0100027c 0x0100027c 0x000000a6 Code RO 1304 .text mc_p.l(_strtoul.o) 0x0100027c 0x0100027c 0x000000a6 Code RO 1314 .text mc_p.l(_strtoul.o)
0x01000322 0x01000322 0x00000002 PAD 0x01000322 0x01000322 0x00000002 PAD
0x01000324 0x01000324 0x00000024 Code RO 1306 .text mc_p.l(init.o) 0x01000324 0x01000324 0x00000024 Code RO 1316 .text mc_p.l(init.o)
0x01000348 0x01000348 0x0000001e Code RO 1308 .text mc_p.l(_chval.o) 0x01000348 0x01000348 0x0000001e Code RO 1318 .text mc_p.l(_chval.o)
0x01000366 0x01000366 0x00000002 PAD 0x01000366 0x01000366 0x00000002 PAD
0x01000368 0x01000368 0x000002d8 Code RO 515 i.AppBootset_CmdAppswitch app_bootset.o 0x01000368 0x01000368 0x000002d8 Code RO 525 i.AppBootset_CmdAppswitch app_bootset.o
0x01000640 0x01000640 0x00000020 Code RO 516 i.AppBootset_CmdBsdump app_bootset.o 0x01000640 0x01000640 0x00000020 Code RO 526 i.AppBootset_CmdBsdump app_bootset.o
0x01000660 0x01000660 0x000002f8 Code RO 517 i.AppBootset_CmdBsset app_bootset.o 0x01000660 0x01000660 0x000002f8 Code RO 527 i.AppBootset_CmdBsset app_bootset.o
0x01000958 0x01000958 0x000000e0 Code RO 290 i.CmdDevInfo boot_cli.o 0x01000958 0x01000958 0x000000e0 Code RO 290 i.CmdDevInfo boot_cli.o
0x01000a38 0x01000a38 0x00000104 Code RO 291 i.CmdHelp boot_cli.o 0x01000a38 0x01000a38 0x00000104 Code RO 291 i.CmdHelp boot_cli.o
0x01000b3c 0x01000b3c 0x0000001c Code RO 292 i.CmdOta boot_cli.o 0x01000b3c 0x01000b3c 0x0000001c Code RO 292 i.CmdOta boot_cli.o
0x01000b58 0x01000b58 0x0000003c Code RO 293 i.CmdReset boot_cli.o 0x01000b58 0x01000b58 0x00000204 Code RO 293 i.CmdPinSet boot_cli.o
0x01000b94 0x01000b94 0x000000b0 Code RO 294 i.CmdUartInfo boot_cli.o 0x01000d5c 0x01000d5c 0x0000003c Code RO 294 i.CmdReset boot_cli.o
0x01000c44 0x01000c44 0x00000074 Code RO 295 i.CmdVersion boot_cli.o 0x01000d98 0x01000d98 0x000000b0 Code RO 295 i.CmdUartInfo boot_cli.o
0x01000cb8 0x01000cb8 0x000000a0 Code RO 1108 i.DMA_DeInit n32wb03x_dma.o 0x01000e48 0x01000e48 0x00000074 Code RO 296 i.CmdVersion boot_cli.o
0x01000d58 0x01000d58 0x0000001c Code RO 1109 i.DMA_EnableChannel n32wb03x_dma.o 0x01000ebc 0x01000ebc 0x000000a0 Code RO 1118 i.DMA_DeInit n32wb03x_dma.o
0x01000d74 0x01000d74 0x00000008 Code RO 1110 i.DMA_GetCurrDataCounter n32wb03x_dma.o 0x01000f5c 0x01000f5c 0x0000001c Code RO 1119 i.DMA_EnableChannel n32wb03x_dma.o
0x01000d7c 0x01000d7c 0x00000040 Code RO 1113 i.DMA_Init n32wb03x_dma.o 0x01000f78 0x01000f78 0x00000008 Code RO 1120 i.DMA_GetCurrDataCounter n32wb03x_dma.o
0x01000dbc 0x01000dbc 0x00000010 Code RO 1114 i.DMA_RequestRemap n32wb03x_dma.o 0x01000f80 0x01000f80 0x00000040 Code RO 1123 i.DMA_Init n32wb03x_dma.o
0x01000dcc 0x01000dcc 0x00000106 Code RO 820 i.GPIO_InitPeripheral n32wb03x_gpio.o 0x01000fc0 0x01000fc0 0x00000010 Code RO 1124 i.DMA_RequestRemap n32wb03x_dma.o
0x01000ed2 0x01000ed2 0x00000002 PAD 0x01000fd0 0x01000fd0 0x00000106 Code RO 830 i.GPIO_InitPeripheral n32wb03x_gpio.o
0x01000ed4 0x01000ed4 0x0000001c Code RO 821 i.GPIO_InitStruct n32wb03x_gpio.o 0x010010d6 0x010010d6 0x00000002 PAD
0x01000ef0 0x01000ef0 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o 0x010010d8 0x010010d8 0x0000001c Code RO 831 i.GPIO_InitStruct n32wb03x_gpio.o
0x01000fbc 0x01000fbc 0x0000003c Code RO 1187 i.Qflash_Erase_Sector n32wb03x_qflash.o 0x010010f4 0x010010f4 0x00000014 Code RO 833 i.GPIO_ReadInputDataBit n32wb03x_gpio.o
0x01000ff8 0x01000ff8 0x00000038 Code RO 1188 i.Qflash_Init n32wb03x_qflash.o 0x01001108 0x01001108 0x00000004 Code RO 836 i.GPIO_ResetBits n32wb03x_gpio.o
0x01001030 0x01001030 0x00000044 Code RO 1190 i.Qflash_Write n32wb03x_qflash.o 0x0100110c 0x0100110c 0x00000004 Code RO 837 i.GPIO_SetBits n32wb03x_gpio.o
0x01001074 0x01001074 0x00000020 Code RO 596 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o 0x01001110 0x01001110 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o
0x01001094 0x01001094 0x00000020 Code RO 600 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o 0x010011dc 0x010011dc 0x0000003c Code RO 1197 i.Qflash_Erase_Sector n32wb03x_qflash.o
0x010010b4 0x010010b4 0x000000a4 Code RO 608 i.RCC_GetClocksFreqValue n32wb03x_rcc.o 0x01001218 0x01001218 0x00000038 Code RO 1198 i.Qflash_Init n32wb03x_qflash.o
0x01001158 0x01001158 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o 0x01001250 0x01001250 0x00000044 Code RO 1200 i.Qflash_Write n32wb03x_qflash.o
0x01001288 0x01001288 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o 0x01001294 0x01001294 0x00000020 Code RO 606 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o
0x010013a4 0x010013a4 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o 0x010012b4 0x010012b4 0x00000020 Code RO 610 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o
0x010013b8 0x010013b8 0x00000020 Code RO 942 i.USART_Enable n32wb03x_usart.o 0x010012d4 0x010012d4 0x000000a4 Code RO 618 i.RCC_GetClocksFreqValue n32wb03x_rcc.o
0x010013d8 0x010013d8 0x00000014 Code RO 943 i.USART_EnableDMA n32wb03x_usart.o 0x01001378 0x01001378 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o
0x010013ec 0x010013ec 0x0000001e Code RO 949 i.USART_GetFlagStatus n32wb03x_usart.o 0x010014a8 0x010014a8 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o
0x0100140a 0x0100140a 0x00000002 PAD 0x010015c4 0x010015c4 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o
0x0100140c 0x0100140c 0x000000b4 Code RO 951 i.USART_Init n32wb03x_usart.o 0x010015d8 0x010015d8 0x00000020 Code RO 952 i.USART_Enable n32wb03x_usart.o
0x010014c0 0x010014c0 0x00000008 Code RO 954 i.USART_SendData n32wb03x_usart.o 0x010015f8 0x010015f8 0x00000014 Code RO 953 i.USART_EnableDMA n32wb03x_usart.o
0x010014c8 0x010014c8 0x00000008 Code RO 1297 i.__aeabi_errno_addr mc_p.l(errno.o) 0x0100160c 0x0100160c 0x0000001e Code RO 959 i.USART_GetFlagStatus n32wb03x_usart.o
0x010014d0 0x010014d0 0x0000000e Code RO 1312 i.__scatterload_copy mc_p.l(handlers.o) 0x0100162a 0x0100162a 0x00000002 PAD
0x010014de 0x010014de 0x00000002 Code RO 1313 i.__scatterload_null mc_p.l(handlers.o) 0x0100162c 0x0100162c 0x000000b4 Code RO 961 i.USART_Init n32wb03x_usart.o
0x010014e0 0x010014e0 0x0000000e Code RO 1314 i.__scatterload_zeroinit mc_p.l(handlers.o) 0x010016e0 0x010016e0 0x00000008 Code RO 964 i.USART_SendData n32wb03x_usart.o
0x010014ee 0x010014ee 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o 0x010016e8 0x010016e8 0x00000008 Code RO 1307 i.__aeabi_errno_addr mc_p.l(errno.o)
0x010014f4 0x010014f4 0x00000006 Code RO 1191 i.__set_PRIMASK n32wb03x_qflash.o 0x010016f0 0x010016f0 0x0000000e Code RO 1322 i.__scatterload_copy mc_p.l(handlers.o)
0x010014fa 0x010014fa 0x00000002 PAD 0x010016fe 0x010016fe 0x00000002 Code RO 1323 i.__scatterload_null mc_p.l(handlers.o)
0x010014fc 0x010014fc 0x0000003c Code RO 406 i.app_ota_abort app_ota.o 0x01001700 0x01001700 0x0000000e Code RO 1324 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x01001538 0x01001538 0x00000014 Code RO 407 i.app_ota_chan_idle app_ota.o 0x0100170e 0x0100170e 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o
0x0100154c 0x0100154c 0x00000140 Code RO 408 i.app_ota_chan_rx app_ota.o 0x01001714 0x01001714 0x00000006 Code RO 1201 i.__set_PRIMASK n32wb03x_qflash.o
0x0100168c 0x0100168c 0x00000024 Code RO 409 i.app_ota_chan_rx_uart app_ota.o 0x0100171a 0x0100171a 0x00000002 PAD
0x010016b0 0x010016b0 0x0000007c Code RO 411 i.app_ota_handle_frame app_ota.o 0x0100171c 0x0100171c 0x0000003c Code RO 416 i.app_ota_abort app_ota.o
0x0100172c 0x0100172c 0x0000005c Code RO 412 i.app_ota_reset_poll app_ota.o 0x01001758 0x01001758 0x00000014 Code RO 417 i.app_ota_chan_idle app_ota.o
0x01001788 0x01001788 0x0000004c Code RO 296 i.boot_cli_redraw boot_cli.o 0x0100176c 0x0100176c 0x00000140 Code RO 418 i.app_ota_chan_rx app_ota.o
0x010017d4 0x010017d4 0x00000220 Code RO 297 i.boot_cli_run boot_cli.o 0x010018ac 0x010018ac 0x00000024 Code RO 419 i.app_ota_chan_rx_uart app_ota.o
0x010019f4 0x010019f4 0x00000144 Code RO 298 i.boot_cli_tab_complete boot_cli.o 0x010018d0 0x010018d0 0x0000007c Code RO 421 i.app_ota_handle_frame app_ota.o
0x01001b38 0x01001b38 0x00000018 Code RO 239 i.boot_delay_ms boot_usart.o 0x0100194c 0x0100194c 0x0000005c Code RO 422 i.app_ota_reset_poll app_ota.o
0x01001b50 0x01001b50 0x00000028 Code RO 240 i.boot_millis boot_usart.o 0x010019a8 0x010019a8 0x0000004c Code RO 297 i.boot_cli_redraw boot_cli.o
0x01001b78 0x01001b78 0x00000110 Code RO 241 i.boot_usart_init boot_usart.o 0x010019f4 0x010019f4 0x00000220 Code RO 298 i.boot_cli_run boot_cli.o
0x01001c88 0x01001c88 0x00000040 Code RO 242 i.boot_usart_read boot_usart.o 0x01001c14 0x01001c14 0x00000144 Code RO 299 i.boot_cli_tab_complete boot_cli.o
0x01001cc8 0x01001cc8 0x00000018 Code RO 243 i.boot_usart_rx_head boot_usart.o 0x01001d58 0x01001d58 0x00000018 Code RO 239 i.boot_delay_ms boot_usart.o
0x01001ce0 0x01001ce0 0x00000030 Code RO 244 i.boot_usart_write boot_usart.o 0x01001d70 0x01001d70 0x00000028 Code RO 240 i.boot_millis boot_usart.o
0x01001d10 0x01001d10 0x00000054 Code RO 518 i.bootset_commit app_bootset.o 0x01001d98 0x01001d98 0x00000110 Code RO 241 i.boot_usart_init boot_usart.o
0x01001d64 0x01001d64 0x0000000e Code RO 519 i.bootset_crc app_bootset.o 0x01001ea8 0x01001ea8 0x00000040 Code RO 242 i.boot_usart_read boot_usart.o
0x01001d72 0x01001d72 0x00000002 PAD 0x01001ee8 0x01001ee8 0x00000018 Code RO 243 i.boot_usart_rx_head boot_usart.o
0x01001d74 0x01001d74 0x0000001c Code RO 520 i.bootset_ensure_qflash app_bootset.o 0x01001f00 0x01001f00 0x00000030 Code RO 244 i.boot_usart_write boot_usart.o
0x01001d90 0x01001d90 0x0000016c Code RO 521 i.bootset_print app_bootset.o 0x01001f30 0x01001f30 0x00000054 Code RO 528 i.bootset_commit app_bootset.o
0x01001efc 0x01001efc 0x00000024 Code RO 522 i.bootset_valid app_bootset.o 0x01001f84 0x01001f84 0x0000000e Code RO 529 i.bootset_crc app_bootset.o
0x01001f20 0x01001f20 0x00000044 Code RO 226 i.caiic_crc32 boot_crc32.o 0x01001f92 0x01001f92 0x00000002 PAD
0x01001f64 0x01001f64 0x000000cc Code RO 299 i.cli_exec_line boot_cli.o 0x01001f94 0x01001f94 0x0000001c Code RO 530 i.bootset_ensure_qflash app_bootset.o
0x01002030 0x01002030 0x00000078 Code RO 300 i.cli_history_add boot_cli.o 0x01001fb0 0x01001fb0 0x0000016c Code RO 531 i.bootset_print app_bootset.o
0x010020a8 0x010020a8 0x0000002c Code RO 301 i.cli_history_get boot_cli.o 0x0100211c 0x0100211c 0x00000024 Code RO 532 i.bootset_valid app_bootset.o
0x010020d4 0x010020d4 0x0000019c Code RO 302 i.cli_printf boot_cli.o 0x01002140 0x01002140 0x00000044 Code RO 226 i.caiic_crc32 boot_crc32.o
0x01002270 0x01002270 0x00000016 Code RO 303 i.cli_write boot_cli.o 0x01002184 0x01002184 0x000000cc Code RO 300 i.cli_exec_line boot_cli.o
0x01002286 0x01002286 0x00000002 PAD 0x01002250 0x01002250 0x00000078 Code RO 301 i.cli_history_add boot_cli.o
0x01002288 0x01002288 0x00000034 Code RO 174 i.image_sane main.o 0x010022c8 0x010022c8 0x0000002c Code RO 302 i.cli_history_get boot_cli.o
0x010022bc 0x010022bc 0x00000024 Code RO 175 i.jump_to_app main.o 0x010022f4 0x010022f4 0x0000019c Code RO 303 i.cli_printf boot_cli.o
0x010022e0 0x010022e0 0x00000184 Code RO 176 i.main main.o 0x01002490 0x01002490 0x00000016 Code RO 304 i.cli_write boot_cli.o
0x01002464 0x01002464 0x0000004c Code RO 413 i.ota_crc16 app_ota.o 0x010024a6 0x010024a6 0x00000002 PAD
0x010024b0 0x010024b0 0x00000040 Code RO 414 i.ota_erase_up_to app_ota.o 0x010024a8 0x010024a8 0x00000034 Code RO 174 i.image_sane main.o
0x010024f0 0x010024f0 0x00000170 Code RO 415 i.ota_on_begin app_ota.o 0x010024dc 0x010024dc 0x00000024 Code RO 175 i.jump_to_app main.o
0x01002660 0x01002660 0x000001a8 Code RO 416 i.ota_on_data app_ota.o 0x01002500 0x01002500 0x00000184 Code RO 176 i.main main.o
0x01002808 0x01002808 0x00000170 Code RO 417 i.ota_on_end app_ota.o 0x01002684 0x01002684 0x0000004c Code RO 423 i.ota_crc16 app_ota.o
0x01002978 0x01002978 0x00000038 Code RO 418 i.ota_program app_ota.o 0x010026d0 0x010026d0 0x00000040 Code RO 424 i.ota_erase_up_to app_ota.o
0x010029b0 0x010029b0 0x00000018 Code RO 419 i.ota_rd32 app_ota.o 0x01002710 0x01002710 0x00000170 Code RO 425 i.ota_on_begin app_ota.o
0x010029c8 0x010029c8 0x0000007c Code RO 420 i.ota_respond app_ota.o 0x01002880 0x01002880 0x000001a8 Code RO 426 i.ota_on_data app_ota.o
0x01002a44 0x01002a44 0x0000001c Code RO 421 i.ota_uart_sink app_ota.o 0x01002a28 0x01002a28 0x00000170 Code RO 427 i.ota_on_end app_ota.o
0x01002a60 0x01002a60 0x000000cc Code RO 422 i.ota_update_bootsetting app_ota.o 0x01002b98 0x01002b98 0x00000038 Code RO 428 i.ota_program app_ota.o
0x01002b2c 0x01002b2c 0x0000002e Code RO 523 i.parse_u32 app_bootset.o 0x01002bd0 0x01002bd0 0x00000018 Code RO 429 i.ota_rd32 app_ota.o
0x01002b5a 0x01002b5a 0x00000018 Code RO 177 i.puts_boot main.o 0x01002be8 0x01002be8 0x0000007c Code RO 430 i.ota_respond app_ota.o
0x01002b72 0x01002b72 0x00000002 PAD 0x01002c64 0x01002c64 0x0000001c Code RO 431 i.ota_uart_sink app_ota.o
0x01002b74 0x01002b74 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o 0x01002c80 0x01002c80 0x000000cc Code RO 432 i.ota_update_bootsetting app_ota.o
0x01002bb8 0x01002bb8 0x0000004e Code RO 304 i.str_pad boot_cli.o 0x01002d4c 0x01002d4c 0x0000002e Code RO 533 i.parse_u32 app_bootset.o
0x01002c06 0x01002c06 0x0000006c Code RO 305 i.u32_to_str boot_cli.o 0x01002d7a 0x01002d7a 0x00000002 PAD
0x01002c72 0x01002c72 0x000001d8 Data RO 23 .constdata system_n32wb03x.o 0x01002d7c 0x01002d7c 0x000000b4 Code RO 305 i.pinset_parse boot_cli.o
0x01002e4a 0x01002e4a 0x00000002 PAD 0x01002e30 0x01002e30 0x00000018 Code RO 177 i.puts_boot main.o
0x01002e4c 0x01002e4c 0x0000006c Data RO 307 .constdata boot_cli.o 0x01002e48 0x01002e48 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o
0x01002eb8 0x01002eb8 0x0000000c Data RO 616 .constdata n32wb03x_rcc.o 0x01002e8c 0x01002e8c 0x0000004e Code RO 306 i.str_pad boot_cli.o
0x01002ec4 0x01002ec4 0x00000324 Data RO 1193 .constdata n32wb03x_qflash.o 0x01002eda 0x01002eda 0x0000006c Code RO 307 i.u32_to_str boot_cli.o
0x010031e8 0x010031e8 0x00000081 Data RO 1270 .constdata mc_p.l(ctype_o.o) 0x01002f46 0x01002f46 0x000001d8 Data RO 23 .constdata system_n32wb03x.o
0x01003269 0x01003269 0x00000003 PAD 0x0100311e 0x0100311e 0x00000002 PAD
0x0100326c 0x0100326c 0x00000004 Data RO 1271 .constdata mc_p.l(ctype_o.o) 0x01003120 0x01003120 0x00000078 Data RO 309 .constdata boot_cli.o
0x01003270 0x01003270 0x0000029a Data RO 308 .conststring boot_cli.o 0x01003198 0x01003198 0x0000000c Data RO 626 .constdata n32wb03x_rcc.o
0x0100350a 0x0100350a 0x00000002 PAD 0x010031a4 0x010031a4 0x00000324 Data RO 1203 .constdata n32wb03x_qflash.o
0x0100350c 0x0100350c 0x00000091 Data RO 524 .conststring app_bootset.o 0x010034c8 0x010034c8 0x00000081 Data RO 1280 .constdata mc_p.l(ctype_o.o)
0x0100359d 0x0100359d 0x00000003 PAD 0x01003549 0x01003549 0x00000003 PAD
0x010035a0 0x010035a0 0x00000020 Data RO 1310 Region$$Table anon$$obj.o 0x0100354c 0x0100354c 0x00000004 Data RO 1281 .constdata mc_p.l(ctype_o.o)
0x01003550 0x01003550 0x000002da Data RO 310 .conststring boot_cli.o
0x0100382a 0x0100382a 0x00000002 PAD
0x0100382c 0x0100382c 0x00000091 Data RO 534 .conststring app_bootset.o
0x010038bd 0x010038bd 0x00000003 PAD
0x010038c0 0x010038c0 0x00000020 Data RO 1320 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x010035c0, Size: 0x00001cd8, Max: 0x0000c000, ABSOLUTE) Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x010038e0, Size: 0x00001cd8, 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 0x010035c0 0x00000004 Data RW 24 .data system_n32wb03x.o 0x20004000 0x010038e0 0x00000004 Data RW 24 .data system_n32wb03x.o
0x20004004 0x010035c4 0x00000008 Data RW 246 .data boot_usart.o 0x20004004 0x010038e4 0x00000008 Data RW 246 .data boot_usart.o
0x2000400c 0x010035cc 0x00000003 Data RW 309 .data boot_cli.o 0x2000400c 0x010038ec 0x00000003 Data RW 311 .data boot_cli.o
0x2000400f 0x010035cf 0x00000001 PAD 0x2000400f 0x010038ef 0x00000001 PAD
0x20004010 0x010035d0 0x0000003d Data RW 424 .data app_ota.o 0x20004010 0x010038f0 0x0000003d Data RW 434 .data app_ota.o
0x2000404d 0x0100360d 0x00000001 Data RW 525 .data app_bootset.o 0x2000404d 0x0100392d 0x00000001 Data RW 535 .data app_bootset.o
0x2000404e 0x0100360e 0x00000002 PAD 0x2000404e 0x0100392e 0x00000002 PAD
0x20004050 0x01003610 0x0000000c Data RW 1194 .data n32wb03x_qflash.o 0x20004050 0x01003930 0x0000000c Data RW 1204 .data n32wb03x_qflash.o
0x2000405c 0x0100361c 0x00000004 Data RW 1300 .data mc_p.l(errno.o) 0x2000405c 0x0100393c 0x00000004 Data RW 1310 .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 245 .bss boot_usart.o
0x20004c94 - 0x00000330 Zero RW 306 .bss boot_cli.o 0x20004c94 - 0x00000330 Zero RW 308 .bss boot_cli.o
0x20004fc4 - 0x000001e7 Zero RW 423 .bss app_ota.o 0x20004fc4 - 0x000001e7 Zero RW 433 .bss app_ota.o
0x200051ab 0x01003620 0x00000001 PAD 0x200051ab 0x01003940 0x00000001 PAD
0x200051ac - 0x00000328 Zero RW 1192 .bss n32wb03x_qflash.o 0x200051ac - 0x00000328 Zero RW 1202 .bss n32wb03x_qflash.o
0x200054d4 0x01003620 0x00000004 PAD 0x200054d4 0x01003940 0x00000004 PAD
0x200054d8 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o 0x200054d8 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o
@ -991,12 +1013,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
2796 756 774 3 816 18440 boot_cli.o 3492 1014 850 3 816 20012 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
500 208 0 0 0 5019 main.o 500 208 0 0 0 5019 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 318 4 0 0 0 4160 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
@ -1004,7 +1026,7 @@ Image component sizes
900 60 472 4 52 124580 system_n32wb03x.o 900 60 472 4 52 124580 system_n32wb03x.o
---------------------------------------------------------------------- ----------------------------------------------------------------------
10512 2684 2438 92 7288 191977 Object Totals 11236 2942 2514 92 7288 195457 Object Totals
0 0 32 0 0 0 (incl. Generated) 0 0 32 0 0 0 (incl. Generated)
14 0 7 3 5 0 (incl. Padding) 14 0 7 3 5 0 (incl. Padding)
@ -1057,15 +1079,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug Code (inc. data) RO Data RW Data ZI Data Debug
11186 2708 2574 96 7288 189377 Grand Totals 11910 2966 2650 96 7288 192637 Grand Totals
11186 2708 2574 96 7288 189377 ELF Image Totals 11910 2966 2650 96 7288 192637 ELF Image Totals
11186 2708 2574 96 0 0 ROM Totals 11910 2966 2650 96 0 0 ROM Totals
============================================================================== ==============================================================================
Total RO Size (Code + RO Data) 13760 ( 13.44kB) Total RO Size (Code + RO Data) 14560 ( 14.22kB)
Total RW Size (RW Data + ZI Data) 7384 ( 7.21kB) Total RW Size (RW Data + ZI Data) 7384 ( 7.21kB)
Total ROM Size (Code + RO Data + RW Data) 13856 ( 13.53kB) Total ROM Size (Code + RO Data + RW Data) 14656 ( 14.31kB)
============================================================================== ==============================================================================

Binary file not shown.

View File

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

View File

@ -268,6 +268,132 @@ static void CmdUartInfo(int argc, char* argv[])
cli_write("flow control: none; tx: polled; rx: DMA ring (3KB, polled)\r\n"); cli_write("flow control: none; tx: polled; rx: DMA ring (3KB, polled)\r\n");
} }
/**
* @brief Parse a "pxN" pin name (e.g. "pb0", "PA3", "PB13") into a GPIO port
* and pin mask. @return 1 on success, 0 on bad name/out-of-range pin.
*/
static int pinset_parse(const char* name, GPIO_Module** port, uint16_t* mask)
{
const char* p;
int pin = 0;
if (name[0] != 'p' && name[0] != 'P')
{
return 0;
}
if (name[1] == 'a' || name[1] == 'A')
{
*port = GPIOA;
}
else if (name[1] == 'b' || name[1] == 'B')
{
*port = GPIOB;
}
else
{
return 0;
}
p = &name[2];
if (*p < '0' || *p > '9')
{
return 0;
}
while (*p >= '0' && *p <= '9')
{
pin = pin * 10 + (*p - '0');
if (pin > 15)
{
return 0;
}
p++;
}
if (*p != '\0')
{
return 0;
}
if (*port == GPIOA && pin > 6) /* PA7 not bonded on this chip */
{
return 0;
}
if (*port == GPIOB && pin > 13) /* PB14/PB15 not bonded */
{
return 0;
}
*mask = (uint16_t)(1u << pin);
return 1;
}
/**
* @brief "pinset <pxN> [0|1]": set a GPIO output high/low, or read its level.
* e.g. "pinset pb0 1", "pinset pa0 0", "pinset pb0" (read level).
*/
static void CmdPinSet(int argc, char* argv[])
{
GPIO_Module* port = NULL;
uint16_t mask = 0;
GPIO_InitType s;
if (argc < 2)
{
cli_write("usage: pinset <pxN> [0|1] (e.g. pinset pb0 1)\r\n");
return;
}
if (!pinset_parse(argv[1], &port, &mask))
{
cli_printf("bad pin: %s (use pa0..pa6 / pb0..pb13)\r\n", argv[1]);
return;
}
if (port == GPIOA)
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA, ENABLE);
}
else
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB, ENABLE);
}
if (argc >= 3)
{
/* reserved-pin guard: warn before reconfiguring SWD / console pins */
if ((port == GPIOA && (mask & (GPIO_PIN_4 | GPIO_PIN_5)) != 0u) ||
(port == GPIOB && (mask & (GPIO_PIN_6 | GPIO_PIN_7)) != 0u))
{
cli_write("warning: SWD/console pin - reconfigure may break the link\r\n");
}
GPIO_InitStruct(&s);
s.Pin = mask;
s.GPIO_Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitPeripheral(port, &s);
if (argv[2][0] == '1' && argv[2][1] == '\0')
{
GPIO_SetBits(port, mask);
cli_printf("%s = 1\r\n", argv[1]);
}
else if (argv[2][0] == '0' && argv[2][1] == '\0')
{
GPIO_ResetBits(port, mask);
cli_printf("%s = 0\r\n", argv[1]);
}
else
{
cli_write("usage: pinset <pxN> [0|1] (0=low, 1=high)\r\n");
}
}
else
{
/* read: the input data register reflects the actual pin level */
cli_printf("%s = %u\r\n", argv[1],
(unsigned)(GPIO_ReadInputDataBit(port, mask) ? 1u : 0u));
}
}
static const CliCmd_t s_cmds[] = { static const CliCmd_t s_cmds[] = {
{"help", "help [cmd]: list commands / show one command's help", CmdHelp}, {"help", "help [cmd]: list commands / show one command's help", CmdHelp},
{"version", "show bootloader version", CmdVersion}, {"version", "show bootloader version", CmdVersion},
@ -277,6 +403,7 @@ static const CliCmd_t s_cmds[] = {
{"appsw", "appsw [1|2]: switch boot bank (crc verified) + reboot", AppBootset_CmdAppswitch}, {"appsw", "appsw [1|2]: switch boot bank (crc verified) + reboot", AppBootset_CmdAppswitch},
{"ota", "ota: UART enters OTA binary frame mode (see help ota)", CmdOta}, {"ota", "ota: UART enters OTA binary frame mode (see help ota)", CmdOta},
{"reset", "reset: system reset (reboot)", CmdReset}, {"reset", "reset: system reset (reboot)", CmdReset},
{"pinset", "pinset <pxN> [0|1]: set/read GPIO level (pa0-6/pb0-13)", CmdPinSet},
{"uartinfo", "uartinfo: show USART1 pins/baud/format", CmdUartInfo}, {"uartinfo", "uartinfo: show USART1 pins/baud/format", CmdUartInfo},
}; };

View File

@ -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.00.06" #define BOOT_FW_VERSION "V1.00.07"
#endif /* __BOOT_VERSION_H__ */ #endif /* __BOOT_VERSION_H__ */

View File

@ -1489,3 +1489,22 @@ APP2 链接的镜像发向 APP1 区。设备端 END 校验(向量表 Reset PC
(16KB 区内);整包 + OTA 包已更新。APP ZI 不变(30140),`__initial_sp` (16KB 区内);整包 + OTA 包已更新。APP ZI 不变(30140),`__initial_sp`
0x2000BDF0 距 0x2000C000 悬崖 528B(merge_image.py 报 within 1KB 警告, 0x2000BDF0 距 0x2000C000 悬崖 528B(merge_image.py 报 within 1KB 警告,
为既有状态,非本次引入,后续加 ZI 需注意)。 为既有状态,非本次引入,后续加 ZI 需注意)。
## 59. CLI 新增 `pinset` 管脚高低电平命令(2026-09-06,APP V1.00.31 / Boot V1.00.07)
- 需求:加一条 CLI 命令直接设置/读取 GPIO 高低电平,便于硬件联调:
`pinset pb0 1` / `pinset pa0 0`(设置输出),`pinset pb0`(读当前电平)。
- 实现(`Boot/src/boot_cli.c` 与 `mcm-ddc-ble/src/cli_core.c` 各加一份,
逻辑相同):
- `pinset_parse()`:解析 `pxN`(大小写不敏感,p+a/b+数字),映射到
`GPIOA/GPIOB` + `1<<n` 位掩码;范围校验 PA0~6(PA7 未引出)、PB0~13
(PB14/15 未引出),非法名/越界报错;
- `CmdPinSet`:带值 → 使能端口时钟 + 配输出推挽 + `GPIO_SetBits/ResetBits`;
不带值 → 读 `GPIO_ReadInputDataBit`(输入数据寄存器反映实际电平);
对 PA4/PA5(SWD)、PB6/PB7(USART1 控制台)在重配前打印 warning;
- 命令表注册:`pinset <pxN> [0|1]: set/read GPIO level (pa0-6/pb0-13)`。
- 与 §58 数码管驱动的共存:数码管占用 PB0/PB1/PA0/PA1/PB11/PB13/PA6,
APP 下 `pinset` 点这些脚会被 `display_task`(20ms 周期)覆盖,属预期
(调试工具);其余空闲脚(PB2~5/PB10/PB12/PA2/PA3)可稳定读写。
- 版本:Boot `V1.00.06` → `V1.00.07`;APP `V1.00.30` → `V1.00.31`
(`APP_FW_VERSION_NUM` 0x0001001E → 0x0001001F)。

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -9,12 +9,12 @@
#define __APP_VERSION_H__ #define __APP_VERSION_H__
#ifndef APP_FW_VERSION #ifndef APP_FW_VERSION
#define APP_FW_VERSION "V1.00.30" #define APP_FW_VERSION "V1.00.31"
#endif #endif
/* Numeric form used by the BLE info query / OTA records: 0x00MMmmpp */ /* Numeric form used by the BLE info query / OTA records: 0x00MMmmpp */
#ifndef APP_FW_VERSION_NUM #ifndef APP_FW_VERSION_NUM
#define APP_FW_VERSION_NUM 0x0001001Eu #define APP_FW_VERSION_NUM 0x0001001Fu
#endif #endif
#endif /* __APP_VERSION_H__ */ #endif /* __APP_VERSION_H__ */

View File

@ -342,6 +342,132 @@ static void CmdOta(int argc, char* argv[])
app_cli_ota_mode_enter(); app_cli_ota_mode_enter();
} }
/**
* @brief Parse a "pxN" pin name (e.g. "pb0", "PA3", "PB13") into a GPIO port
* and pin mask. @return 1 on success, 0 on bad name/out-of-range pin.
*/
static int pinset_parse(const char* name, GPIO_Module** port, uint16_t* mask)
{
const char* p;
int pin = 0;
if (name[0] != 'p' && name[0] != 'P')
{
return 0;
}
if (name[1] == 'a' || name[1] == 'A')
{
*port = GPIOA;
}
else if (name[1] == 'b' || name[1] == 'B')
{
*port = GPIOB;
}
else
{
return 0;
}
p = &name[2];
if (*p < '0' || *p > '9')
{
return 0;
}
while (*p >= '0' && *p <= '9')
{
pin = pin * 10 + (*p - '0');
if (pin > 15)
{
return 0;
}
p++;
}
if (*p != '\0')
{
return 0;
}
if (*port == GPIOA && pin > 6) /* PA7 not bonded on this chip */
{
return 0;
}
if (*port == GPIOB && pin > 13) /* PB14/PB15 not bonded */
{
return 0;
}
*mask = (uint16_t)(1u << pin);
return 1;
}
/**
* @brief "pinset <pxN> [0|1]": set a GPIO output high/low, or read its level.
* e.g. "pinset pb0 1", "pinset pa0 0", "pinset pb0" (read level).
*/
static void CmdPinSet(int argc, char* argv[])
{
GPIO_Module* port = NULL;
uint16_t mask = 0;
GPIO_InitType s;
if (argc < 2)
{
cli_write("usage: pinset <pxN> [0|1] (e.g. pinset pb0 1)\r\n");
return;
}
if (!pinset_parse(argv[1], &port, &mask))
{
cli_printf("bad pin: %s (use pa0..pa6 / pb0..pb13)\r\n", argv[1]);
return;
}
if (port == GPIOA)
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA, ENABLE);
}
else
{
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB, ENABLE);
}
if (argc >= 3)
{
/* reserved-pin guard: warn before reconfiguring SWD / console pins */
if ((port == GPIOA && (mask & (GPIO_PIN_4 | GPIO_PIN_5)) != 0u) ||
(port == GPIOB && (mask & (GPIO_PIN_6 | GPIO_PIN_7)) != 0u))
{
cli_write("warning: SWD/console pin - reconfigure may break the link\r\n");
}
GPIO_InitStruct(&s);
s.Pin = mask;
s.GPIO_Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitPeripheral(port, &s);
if (argv[2][0] == '1' && argv[2][1] == '\0')
{
GPIO_SetBits(port, mask);
cli_printf("%s = 1\r\n", argv[1]);
}
else if (argv[2][0] == '0' && argv[2][1] == '\0')
{
GPIO_ResetBits(port, mask);
cli_printf("%s = 0\r\n", argv[1]);
}
else
{
cli_write("usage: pinset <pxN> [0|1] (0=low, 1=high)\r\n");
}
}
else
{
/* read: the input data register reflects the actual pin level */
cli_printf("%s = %u\r\n", argv[1],
(unsigned)(GPIO_ReadInputDataBit(port, mask) ? 1u : 0u));
}
}
/* Command table; add new commands here */ /* Command table; add new commands here */
static const CliCmd_t s_cmds[] = { static const CliCmd_t s_cmds[] = {
{"help", "help [cmd]: list commands / show one command's help", CmdHelp}, {"help", "help [cmd]: list commands / show one command's help", CmdHelp},
@ -357,6 +483,7 @@ static const CliCmd_t s_cmds[] = {
{"appsw", "appsw [1|2]: switch boot bank (crc verified) + reboot", AppBootset_CmdAppswitch}, {"appsw", "appsw [1|2]: switch boot bank (crc verified) + reboot", AppBootset_CmdAppswitch},
{"ota", "ota: UART enters OTA binary frame mode (see help ota)", CmdOta}, {"ota", "ota: UART enters OTA binary frame mode (see help ota)", CmdOta},
{"reset", "reset: system reset (reboot)", CmdReset}, {"reset", "reset: system reset (reboot)", CmdReset},
{"pinset", "pinset <pxN> [0|1]: set/read GPIO level (pa0-6/pb0-13)", CmdPinSet},
{"factory", "factory: restore params to defaults and reboot", CmdFactory}, {"factory", "factory: restore params to defaults and reboot", CmdFactory},
{"uartrst", "uartrst: re-init USART1 (460800 8N1), flush rx queue", CmdUartRst}, {"uartrst", "uartrst: re-init USART1 (460800 8N1), flush rx queue", CmdUartRst},
{"uartinfo", "uartinfo: show USART1 pins/baud/format", CmdUartInfo}, {"uartinfo", "uartinfo: show USART1 pins/baud/format", CmdUartInfo},

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,7 +1,7 @@
{ {
"file": "mothercup_ble_prod_ota.bin", "file": "mothercup_ble_prod_ota.bin",
"target_bank": 1, "target_bank": 1,
"size": 56584, "size": 57264,
"crc32": "0xEE8BBF75", "crc32": "0xCA35C291",
"version": 65566 "version": 65567
} }

View File

@ -1,7 +1,7 @@
{ {
"file": "mothercup_ble_prod_ota_app2.bin", "file": "mothercup_ble_prod_ota_app2.bin",
"target_bank": 2, "target_bank": 2,
"size": 56888, "size": 57572,
"crc32": "0x7D11C1E5", "crc32": "0x5A93FD89",
"version": 65566 "version": 65567
} }