From 17e814a883309fadc8dbc6c72ed72b11709a0ce8 Mon Sep 17 00:00:00 2001 From: "evan.liu" <583229071@qq.com> Date: Sun, 6 Sep 2026 08:50:00 +0800 Subject: [PATCH] =?UTF-8?q?boot=20V1.01.03:=20download=20CLI=20help=20?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=20'keys:=20TAB=20=3D=20complete'=20=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Boot/src/boot_cli.c: CmdHelp 无参分支在命令表后打印 keys 提示串(对齐 APP 的 help) - 撤回 ready banner 临时加的 (TAB = complete),提示只放 help,与 APP 风格一致 - Boot/src/boot_version.h: V1.01.02 -> V1.01.03 - docs/开发日志.md: 新增 §55 --- Boot/MDK-ARM/Listings/caiic_boot.map | 578 +++++------ Boot/MDK-ARM/bin/caiic_boot.bin | Bin 13580 -> 13592 bytes Boot/MDK-ARM/build.log | 12 +- Boot/src/boot_cli.c | 5 +- Boot/src/boot_version.h | 2 +- docs/开发日志.md | 13 + tools/out/mothercup_ble_prod.bin | Bin 88868 -> 88868 bytes tools/out/mothercup_ble_prod.hex | 1437 +++++++++++++------------- 8 files changed, 1031 insertions(+), 1016 deletions(-) diff --git a/Boot/MDK-ARM/Listings/caiic_boot.map b/Boot/MDK-ARM/Listings/caiic_boot.map index 4fb211a..dc2aafe 100644 --- a/Boot/MDK-ARM/Listings/caiic_boot.map +++ b/Boot/MDK-ARM/Listings/caiic_boot.map @@ -487,129 +487,129 @@ Image Symbol Table i.CmdDevInfo 0x01000958 Section 0 boot_cli.o(i.CmdDevInfo) CmdDevInfo 0x01000959 Thumb Code 90 boot_cli.o(i.CmdDevInfo) i.CmdHelp 0x01000a38 Section 0 boot_cli.o(i.CmdHelp) - CmdHelp 0x01000a39 Thumb Code 114 boot_cli.o(i.CmdHelp) - i.CmdOta 0x01000aec Section 0 boot_cli.o(i.CmdOta) - CmdOta 0x01000aed Thumb Code 20 boot_cli.o(i.CmdOta) - i.CmdReset 0x01000b08 Section 0 boot_cli.o(i.CmdReset) - CmdReset 0x01000b09 Thumb Code 34 boot_cli.o(i.CmdReset) - i.CmdUartInfo 0x01000b44 Section 0 boot_cli.o(i.CmdUartInfo) - CmdUartInfo 0x01000b45 Thumb Code 26 boot_cli.o(i.CmdUartInfo) - i.CmdVersion 0x01000bf4 Section 0 boot_cli.o(i.CmdVersion) - CmdVersion 0x01000bf5 Thumb Code 26 boot_cli.o(i.CmdVersion) - i.DMA_DeInit 0x01000c68 Section 0 n32wb03x_dma.o(i.DMA_DeInit) - i.DMA_EnableChannel 0x01000d08 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel) - i.DMA_GetCurrDataCounter 0x01000d24 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) - i.DMA_Init 0x01000d2c Section 0 n32wb03x_dma.o(i.DMA_Init) - i.DMA_RequestRemap 0x01000d6c Section 0 n32wb03x_dma.o(i.DMA_RequestRemap) - i.GPIO_InitPeripheral 0x01000d7c Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral) - i.GPIO_InitStruct 0x01000e84 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct) - i.GPIO_ReadInputDataBit 0x01000ea0 Section 0 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) - i.OTPTrim_Read 0x01000eb4 Section 0 system_n32wb03x.o(i.OTPTrim_Read) - i.Qflash_Erase_Sector 0x01000f80 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector) - i.Qflash_Init 0x01000fbc Section 0 n32wb03x_qflash.o(i.Qflash_Init) - i.Qflash_Write 0x01000ff4 Section 0 n32wb03x_qflash.o(i.Qflash_Write) - i.RCC_EnableAHBPeriphClk 0x01001038 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) - i.RCC_EnableAPB2PeriphClk 0x01001058 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) - i.RCC_GetClocksFreqValue 0x01001078 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) - i.RCC_HsiCalib 0x0100111c Section 0 system_n32wb03x.o(i.RCC_HsiCalib) - RCC_HsiCalib 0x0100111d Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib) - i.SystemInit 0x0100124c Section 0 system_n32wb03x.o(i.SystemInit) - i.SystemTrimValueRead 0x01001368 Section 0 system_n32wb03x.o(i.SystemTrimValueRead) - i.USART_Enable 0x0100137c Section 0 n32wb03x_usart.o(i.USART_Enable) - i.USART_EnableDMA 0x0100139c Section 0 n32wb03x_usart.o(i.USART_EnableDMA) - i.USART_GetFlagStatus 0x010013b0 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus) - i.USART_Init 0x010013d0 Section 0 n32wb03x_usart.o(i.USART_Init) - i.USART_SendData 0x01001484 Section 0 n32wb03x_usart.o(i.USART_SendData) - i.__aeabi_errno_addr 0x0100148c Section 0 errno.o(i.__aeabi_errno_addr) - i.__scatterload_copy 0x01001494 Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x010014a2 Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x010014a4 Section 14 handlers.o(i.__scatterload_zeroinit) - i.__set_PRIMASK 0x010014b2 Section 0 system_n32wb03x.o(i.__set_PRIMASK) - __set_PRIMASK 0x010014b3 Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK) - i.__set_PRIMASK 0x010014b8 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK) - __set_PRIMASK 0x010014b9 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK) - i.app_ota_abort 0x010014c0 Section 0 app_ota.o(i.app_ota_abort) - i.app_ota_chan_idle 0x010014fc Section 0 app_ota.o(i.app_ota_chan_idle) - i.app_ota_chan_rx 0x01001510 Section 0 app_ota.o(i.app_ota_chan_rx) - i.app_ota_chan_rx_uart 0x01001650 Section 0 app_ota.o(i.app_ota_chan_rx_uart) - i.app_ota_handle_frame 0x01001674 Section 0 app_ota.o(i.app_ota_handle_frame) - i.app_ota_reset_poll 0x010016f0 Section 0 app_ota.o(i.app_ota_reset_poll) - i.boot_cli_redraw 0x0100174c Section 0 boot_cli.o(i.boot_cli_redraw) - boot_cli_redraw 0x0100174d Thumb Code 60 boot_cli.o(i.boot_cli_redraw) - i.boot_cli_run 0x01001798 Section 0 boot_cli.o(i.boot_cli_run) - i.boot_cli_tab_complete 0x010018f4 Section 0 boot_cli.o(i.boot_cli_tab_complete) - boot_cli_tab_complete 0x010018f5 Thumb Code 306 boot_cli.o(i.boot_cli_tab_complete) - i.boot_delay_ms 0x01001a38 Section 0 boot_usart.o(i.boot_delay_ms) - i.boot_dl_strap_active 0x01001a50 Section 0 main.o(i.boot_dl_strap_active) - boot_dl_strap_active 0x01001a51 Thumb Code 58 main.o(i.boot_dl_strap_active) - i.boot_millis 0x01001a90 Section 0 boot_usart.o(i.boot_millis) - i.boot_usart_init 0x01001ab8 Section 0 boot_usart.o(i.boot_usart_init) - i.boot_usart_read 0x01001bc8 Section 0 boot_usart.o(i.boot_usart_read) - i.boot_usart_rx_head 0x01001c08 Section 0 boot_usart.o(i.boot_usart_rx_head) - boot_usart_rx_head 0x01001c09 Thumb Code 18 boot_usart.o(i.boot_usart_rx_head) - i.boot_usart_write 0x01001c20 Section 0 boot_usart.o(i.boot_usart_write) - i.bootset_commit 0x01001c50 Section 0 app_bootset.o(i.bootset_commit) - bootset_commit 0x01001c51 Thumb Code 74 app_bootset.o(i.bootset_commit) - i.bootset_crc 0x01001ca4 Section 0 app_bootset.o(i.bootset_crc) - bootset_crc 0x01001ca5 Thumb Code 14 app_bootset.o(i.bootset_crc) - i.bootset_ensure_qflash 0x01001cb4 Section 0 app_bootset.o(i.bootset_ensure_qflash) - bootset_ensure_qflash 0x01001cb5 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash) - i.bootset_print 0x01001cd0 Section 0 app_bootset.o(i.bootset_print) - bootset_print 0x01001cd1 Thumb Code 98 app_bootset.o(i.bootset_print) - i.bootset_valid 0x01001e3c Section 0 app_bootset.o(i.bootset_valid) - bootset_valid 0x01001e3d Thumb Code 32 app_bootset.o(i.bootset_valid) - i.caiic_crc32 0x01001e60 Section 0 boot_crc32.o(i.caiic_crc32) - i.cli_exec_line 0x01001ea4 Section 0 boot_cli.o(i.cli_exec_line) - cli_exec_line 0x01001ea5 Thumb Code 162 boot_cli.o(i.cli_exec_line) - i.cli_printf 0x01001f70 Section 0 boot_cli.o(i.cli_printf) - i.cli_write 0x0100210c Section 0 boot_cli.o(i.cli_write) - i.image_sane 0x01002124 Section 0 main.o(i.image_sane) - image_sane 0x01002125 Thumb Code 44 main.o(i.image_sane) - i.jump_to_app 0x01002158 Section 0 main.o(i.jump_to_app) - jump_to_app 0x01002159 Thumb Code 30 main.o(i.jump_to_app) - i.main 0x0100217c Section 0 main.o(i.main) - i.ota_crc16 0x01002340 Section 0 app_ota.o(i.ota_crc16) - ota_crc16 0x01002341 Thumb Code 68 app_ota.o(i.ota_crc16) - i.ota_erase_up_to 0x0100238c Section 0 app_ota.o(i.ota_erase_up_to) - ota_erase_up_to 0x0100238d Thumb Code 54 app_ota.o(i.ota_erase_up_to) - i.ota_on_begin 0x010023cc Section 0 app_ota.o(i.ota_on_begin) - ota_on_begin 0x010023cd Thumb Code 294 app_ota.o(i.ota_on_begin) - i.ota_on_data 0x0100253c Section 0 app_ota.o(i.ota_on_data) - ota_on_data 0x0100253d Thumb Code 396 app_ota.o(i.ota_on_data) - i.ota_on_end 0x010026e4 Section 0 app_ota.o(i.ota_on_end) - ota_on_end 0x010026e5 Thumb Code 326 app_ota.o(i.ota_on_end) - i.ota_program 0x01002854 Section 0 app_ota.o(i.ota_program) - ota_program 0x01002855 Thumb Code 46 app_ota.o(i.ota_program) - i.ota_rd32 0x0100288c Section 0 app_ota.o(i.ota_rd32) - ota_rd32 0x0100288d Thumb Code 24 app_ota.o(i.ota_rd32) - i.ota_respond 0x010028a4 Section 0 app_ota.o(i.ota_respond) - ota_respond 0x010028a5 Thumb Code 118 app_ota.o(i.ota_respond) - i.ota_uart_sink 0x01002920 Section 0 app_ota.o(i.ota_uart_sink) - ota_uart_sink 0x01002921 Thumb Code 22 app_ota.o(i.ota_uart_sink) - i.ota_update_bootsetting 0x0100293c Section 0 app_ota.o(i.ota_update_bootsetting) - ota_update_bootsetting 0x0100293d Thumb Code 174 app_ota.o(i.ota_update_bootsetting) - i.parse_u32 0x01002a08 Section 0 app_bootset.o(i.parse_u32) - parse_u32 0x01002a09 Thumb Code 46 app_bootset.o(i.parse_u32) - i.puts_boot 0x01002a36 Section 0 main.o(i.puts_boot) - puts_boot 0x01002a37 Thumb Code 24 main.o(i.puts_boot) - i.read_flash_ID 0x01002a50 Section 0 system_n32wb03x.o(i.read_flash_ID) - read_flash_ID 0x01002a51 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID) - i.str_pad 0x01002a94 Section 0 boot_cli.o(i.str_pad) - str_pad 0x01002a95 Thumb Code 78 boot_cli.o(i.str_pad) - i.u32_to_str 0x01002ae2 Section 0 boot_cli.o(i.u32_to_str) - u32_to_str 0x01002ae3 Thumb Code 108 boot_cli.o(i.u32_to_str) - .constdata 0x01002b4e Section 472 system_n32wb03x.o(.constdata) - .constdata 0x01002d28 Section 108 boot_cli.o(.constdata) - s_cmds 0x01002d28 Data 108 boot_cli.o(.constdata) - .constdata 0x01002d94 Section 12 n32wb03x_rcc.o(.constdata) - s_ApbPresTable 0x01002d94 Data 8 n32wb03x_rcc.o(.constdata) - s_AhbPresTable 0x01002d9c Data 4 n32wb03x_rcc.o(.constdata) - .constdata 0x01002da0 Section 804 n32wb03x_qflash.o(.constdata) - .constdata 0x010030c4 Section 129 ctype_o.o(.constdata) - .constdata 0x01003148 Section 4 ctype_o.o(.constdata) - table 0x01003148 Data 4 ctype_o.o(.constdata) - .conststring 0x0100314c Section 682 boot_cli.o(.conststring) - .conststring 0x010033f8 Section 145 app_bootset.o(.conststring) + CmdHelp 0x01000a39 Thumb Code 120 boot_cli.o(i.CmdHelp) + i.CmdOta 0x01000b08 Section 0 boot_cli.o(i.CmdOta) + CmdOta 0x01000b09 Thumb Code 20 boot_cli.o(i.CmdOta) + i.CmdReset 0x01000b24 Section 0 boot_cli.o(i.CmdReset) + CmdReset 0x01000b25 Thumb Code 34 boot_cli.o(i.CmdReset) + i.CmdUartInfo 0x01000b60 Section 0 boot_cli.o(i.CmdUartInfo) + CmdUartInfo 0x01000b61 Thumb Code 26 boot_cli.o(i.CmdUartInfo) + i.CmdVersion 0x01000c10 Section 0 boot_cli.o(i.CmdVersion) + CmdVersion 0x01000c11 Thumb Code 26 boot_cli.o(i.CmdVersion) + i.DMA_DeInit 0x01000c84 Section 0 n32wb03x_dma.o(i.DMA_DeInit) + i.DMA_EnableChannel 0x01000d24 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel) + i.DMA_GetCurrDataCounter 0x01000d40 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) + i.DMA_Init 0x01000d48 Section 0 n32wb03x_dma.o(i.DMA_Init) + i.DMA_RequestRemap 0x01000d88 Section 0 n32wb03x_dma.o(i.DMA_RequestRemap) + i.GPIO_InitPeripheral 0x01000d98 Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral) + i.GPIO_InitStruct 0x01000ea0 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct) + i.GPIO_ReadInputDataBit 0x01000ebc Section 0 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) + i.OTPTrim_Read 0x01000ed0 Section 0 system_n32wb03x.o(i.OTPTrim_Read) + i.Qflash_Erase_Sector 0x01000f9c Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector) + i.Qflash_Init 0x01000fd8 Section 0 n32wb03x_qflash.o(i.Qflash_Init) + i.Qflash_Write 0x01001010 Section 0 n32wb03x_qflash.o(i.Qflash_Write) + i.RCC_EnableAHBPeriphClk 0x01001054 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) + i.RCC_EnableAPB2PeriphClk 0x01001074 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) + i.RCC_GetClocksFreqValue 0x01001094 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) + i.RCC_HsiCalib 0x01001138 Section 0 system_n32wb03x.o(i.RCC_HsiCalib) + RCC_HsiCalib 0x01001139 Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib) + i.SystemInit 0x01001268 Section 0 system_n32wb03x.o(i.SystemInit) + i.SystemTrimValueRead 0x01001384 Section 0 system_n32wb03x.o(i.SystemTrimValueRead) + i.USART_Enable 0x01001398 Section 0 n32wb03x_usart.o(i.USART_Enable) + i.USART_EnableDMA 0x010013b8 Section 0 n32wb03x_usart.o(i.USART_EnableDMA) + i.USART_GetFlagStatus 0x010013cc Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus) + i.USART_Init 0x010013ec Section 0 n32wb03x_usart.o(i.USART_Init) + i.USART_SendData 0x010014a0 Section 0 n32wb03x_usart.o(i.USART_SendData) + i.__aeabi_errno_addr 0x010014a8 Section 0 errno.o(i.__aeabi_errno_addr) + i.__scatterload_copy 0x010014b0 Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x010014be Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x010014c0 Section 14 handlers.o(i.__scatterload_zeroinit) + i.__set_PRIMASK 0x010014ce Section 0 system_n32wb03x.o(i.__set_PRIMASK) + __set_PRIMASK 0x010014cf Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK) + i.__set_PRIMASK 0x010014d4 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK) + __set_PRIMASK 0x010014d5 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK) + i.app_ota_abort 0x010014dc Section 0 app_ota.o(i.app_ota_abort) + i.app_ota_chan_idle 0x01001518 Section 0 app_ota.o(i.app_ota_chan_idle) + i.app_ota_chan_rx 0x0100152c Section 0 app_ota.o(i.app_ota_chan_rx) + i.app_ota_chan_rx_uart 0x0100166c Section 0 app_ota.o(i.app_ota_chan_rx_uart) + i.app_ota_handle_frame 0x01001690 Section 0 app_ota.o(i.app_ota_handle_frame) + i.app_ota_reset_poll 0x0100170c Section 0 app_ota.o(i.app_ota_reset_poll) + i.boot_cli_redraw 0x01001768 Section 0 boot_cli.o(i.boot_cli_redraw) + boot_cli_redraw 0x01001769 Thumb Code 60 boot_cli.o(i.boot_cli_redraw) + i.boot_cli_run 0x010017b4 Section 0 boot_cli.o(i.boot_cli_run) + i.boot_cli_tab_complete 0x01001910 Section 0 boot_cli.o(i.boot_cli_tab_complete) + boot_cli_tab_complete 0x01001911 Thumb Code 306 boot_cli.o(i.boot_cli_tab_complete) + i.boot_delay_ms 0x01001a54 Section 0 boot_usart.o(i.boot_delay_ms) + i.boot_dl_strap_active 0x01001a6c Section 0 main.o(i.boot_dl_strap_active) + boot_dl_strap_active 0x01001a6d Thumb Code 58 main.o(i.boot_dl_strap_active) + i.boot_millis 0x01001aac Section 0 boot_usart.o(i.boot_millis) + i.boot_usart_init 0x01001ad4 Section 0 boot_usart.o(i.boot_usart_init) + i.boot_usart_read 0x01001be4 Section 0 boot_usart.o(i.boot_usart_read) + i.boot_usart_rx_head 0x01001c24 Section 0 boot_usart.o(i.boot_usart_rx_head) + boot_usart_rx_head 0x01001c25 Thumb Code 18 boot_usart.o(i.boot_usart_rx_head) + i.boot_usart_write 0x01001c3c Section 0 boot_usart.o(i.boot_usart_write) + i.bootset_commit 0x01001c6c Section 0 app_bootset.o(i.bootset_commit) + bootset_commit 0x01001c6d Thumb Code 74 app_bootset.o(i.bootset_commit) + i.bootset_crc 0x01001cc0 Section 0 app_bootset.o(i.bootset_crc) + bootset_crc 0x01001cc1 Thumb Code 14 app_bootset.o(i.bootset_crc) + i.bootset_ensure_qflash 0x01001cd0 Section 0 app_bootset.o(i.bootset_ensure_qflash) + bootset_ensure_qflash 0x01001cd1 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash) + i.bootset_print 0x01001cec Section 0 app_bootset.o(i.bootset_print) + bootset_print 0x01001ced Thumb Code 98 app_bootset.o(i.bootset_print) + i.bootset_valid 0x01001e58 Section 0 app_bootset.o(i.bootset_valid) + bootset_valid 0x01001e59 Thumb Code 32 app_bootset.o(i.bootset_valid) + i.caiic_crc32 0x01001e7c Section 0 boot_crc32.o(i.caiic_crc32) + i.cli_exec_line 0x01001ec0 Section 0 boot_cli.o(i.cli_exec_line) + cli_exec_line 0x01001ec1 Thumb Code 162 boot_cli.o(i.cli_exec_line) + i.cli_printf 0x01001f8c Section 0 boot_cli.o(i.cli_printf) + i.cli_write 0x01002128 Section 0 boot_cli.o(i.cli_write) + i.image_sane 0x01002140 Section 0 main.o(i.image_sane) + image_sane 0x01002141 Thumb Code 44 main.o(i.image_sane) + i.jump_to_app 0x01002174 Section 0 main.o(i.jump_to_app) + jump_to_app 0x01002175 Thumb Code 30 main.o(i.jump_to_app) + i.main 0x01002198 Section 0 main.o(i.main) + i.ota_crc16 0x0100235c Section 0 app_ota.o(i.ota_crc16) + ota_crc16 0x0100235d Thumb Code 68 app_ota.o(i.ota_crc16) + i.ota_erase_up_to 0x010023a8 Section 0 app_ota.o(i.ota_erase_up_to) + ota_erase_up_to 0x010023a9 Thumb Code 54 app_ota.o(i.ota_erase_up_to) + i.ota_on_begin 0x010023e8 Section 0 app_ota.o(i.ota_on_begin) + ota_on_begin 0x010023e9 Thumb Code 294 app_ota.o(i.ota_on_begin) + i.ota_on_data 0x01002558 Section 0 app_ota.o(i.ota_on_data) + ota_on_data 0x01002559 Thumb Code 396 app_ota.o(i.ota_on_data) + i.ota_on_end 0x01002700 Section 0 app_ota.o(i.ota_on_end) + ota_on_end 0x01002701 Thumb Code 326 app_ota.o(i.ota_on_end) + i.ota_program 0x01002870 Section 0 app_ota.o(i.ota_program) + ota_program 0x01002871 Thumb Code 46 app_ota.o(i.ota_program) + i.ota_rd32 0x010028a8 Section 0 app_ota.o(i.ota_rd32) + ota_rd32 0x010028a9 Thumb Code 24 app_ota.o(i.ota_rd32) + i.ota_respond 0x010028c0 Section 0 app_ota.o(i.ota_respond) + ota_respond 0x010028c1 Thumb Code 118 app_ota.o(i.ota_respond) + i.ota_uart_sink 0x0100293c Section 0 app_ota.o(i.ota_uart_sink) + ota_uart_sink 0x0100293d Thumb Code 22 app_ota.o(i.ota_uart_sink) + i.ota_update_bootsetting 0x01002958 Section 0 app_ota.o(i.ota_update_bootsetting) + ota_update_bootsetting 0x01002959 Thumb Code 174 app_ota.o(i.ota_update_bootsetting) + i.parse_u32 0x01002a24 Section 0 app_bootset.o(i.parse_u32) + parse_u32 0x01002a25 Thumb Code 46 app_bootset.o(i.parse_u32) + i.puts_boot 0x01002a52 Section 0 main.o(i.puts_boot) + puts_boot 0x01002a53 Thumb Code 24 main.o(i.puts_boot) + i.read_flash_ID 0x01002a6c Section 0 system_n32wb03x.o(i.read_flash_ID) + read_flash_ID 0x01002a6d Thumb Code 62 system_n32wb03x.o(i.read_flash_ID) + i.str_pad 0x01002ab0 Section 0 boot_cli.o(i.str_pad) + str_pad 0x01002ab1 Thumb Code 78 boot_cli.o(i.str_pad) + i.u32_to_str 0x01002afe Section 0 boot_cli.o(i.u32_to_str) + u32_to_str 0x01002aff Thumb Code 108 boot_cli.o(i.u32_to_str) + .constdata 0x01002b6a Section 472 system_n32wb03x.o(.constdata) + .constdata 0x01002d44 Section 108 boot_cli.o(.constdata) + s_cmds 0x01002d44 Data 108 boot_cli.o(.constdata) + .constdata 0x01002db0 Section 12 n32wb03x_rcc.o(.constdata) + s_ApbPresTable 0x01002db0 Data 8 n32wb03x_rcc.o(.constdata) + s_AhbPresTable 0x01002db8 Data 4 n32wb03x_rcc.o(.constdata) + .constdata 0x01002dbc Section 804 n32wb03x_qflash.o(.constdata) + .constdata 0x010030e0 Section 129 ctype_o.o(.constdata) + .constdata 0x01003164 Section 4 ctype_o.o(.constdata) + table 0x01003164 Data 4 ctype_o.o(.constdata) + .conststring 0x01003168 Section 666 boot_cli.o(.conststring) + .conststring 0x01003404 Section 145 app_bootset.o(.conststring) .data 0x20004000 Section 4 system_n32wb03x.o(.data) .data 0x20004004 Section 8 boot_usart.o(.data) s_rxTail 0x20004004 Data 2 boot_usart.o(.data) @@ -747,55 +747,55 @@ Image Symbol Table AppBootset_CmdAppswitch 0x01000369 Thumb Code 282 app_bootset.o(i.AppBootset_CmdAppswitch) AppBootset_CmdBsdump 0x01000641 Thumb Code 28 app_bootset.o(i.AppBootset_CmdBsdump) AppBootset_CmdBsset 0x01000661 Thumb Code 348 app_bootset.o(i.AppBootset_CmdBsset) - DMA_DeInit 0x01000c69 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit) - DMA_EnableChannel 0x01000d09 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel) - DMA_GetCurrDataCounter 0x01000d25 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) - DMA_Init 0x01000d2d Thumb Code 58 n32wb03x_dma.o(i.DMA_Init) - DMA_RequestRemap 0x01000d6d Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap) - GPIO_InitPeripheral 0x01000d7d Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral) - GPIO_InitStruct 0x01000e85 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct) - GPIO_ReadInputDataBit 0x01000ea1 Thumb Code 20 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) - OTPTrim_Read 0x01000eb5 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read) - Qflash_Erase_Sector 0x01000f81 Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector) - Qflash_Init 0x01000fbd Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init) - Qflash_Write 0x01000ff5 Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write) - RCC_EnableAHBPeriphClk 0x01001039 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) - RCC_EnableAPB2PeriphClk 0x01001059 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) - RCC_GetClocksFreqValue 0x01001079 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) - SystemInit 0x0100124d Thumb Code 250 system_n32wb03x.o(i.SystemInit) - SystemTrimValueRead 0x01001369 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead) - USART_Enable 0x0100137d Thumb Code 26 n32wb03x_usart.o(i.USART_Enable) - USART_EnableDMA 0x0100139d Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA) - USART_GetFlagStatus 0x010013b1 Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus) - USART_Init 0x010013d1 Thumb Code 162 n32wb03x_usart.o(i.USART_Init) - USART_SendData 0x01001485 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData) - __aeabi_errno_addr 0x0100148d Thumb Code 4 errno.o(i.__aeabi_errno_addr) - __rt_errno_addr 0x0100148d Thumb Code 0 errno.o(i.__aeabi_errno_addr) - __scatterload_copy 0x01001495 Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x010014a3 Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x010014a5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - app_ota_abort 0x010014c1 Thumb Code 32 app_ota.o(i.app_ota_abort) - app_ota_chan_idle 0x010014fd Thumb Code 12 app_ota.o(i.app_ota_chan_idle) - app_ota_chan_rx 0x01001511 Thumb Code 298 app_ota.o(i.app_ota_chan_rx) - app_ota_chan_rx_uart 0x01001651 Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart) - app_ota_handle_frame 0x01001675 Thumb Code 106 app_ota.o(i.app_ota_handle_frame) - app_ota_reset_poll 0x010016f1 Thumb Code 70 app_ota.o(i.app_ota_reset_poll) - boot_cli_run 0x01001799 Thumb Code 240 boot_cli.o(i.boot_cli_run) - boot_delay_ms 0x01001a39 Thumb Code 24 boot_usart.o(i.boot_delay_ms) - boot_millis 0x01001a91 Thumb Code 30 boot_usart.o(i.boot_millis) - boot_usart_init 0x01001ab9 Thumb Code 238 boot_usart.o(i.boot_usart_init) - boot_usart_read 0x01001bc9 Thumb Code 54 boot_usart.o(i.boot_usart_read) - boot_usart_write 0x01001c21 Thumb Code 42 boot_usart.o(i.boot_usart_write) - caiic_crc32 0x01001e61 Thumb Code 62 boot_crc32.o(i.caiic_crc32) - cli_printf 0x01001f71 Thumb Code 408 boot_cli.o(i.cli_printf) - cli_write 0x0100210d Thumb Code 22 boot_cli.o(i.cli_write) - main 0x0100217d Thumb Code 210 main.o(i.main) - TRIM_READ_CMD_CODE 0x01002b4e Data 320 system_n32wb03x.o(.constdata) - CMD_RDID 0x01002c8e Data 152 system_n32wb03x.o(.constdata) - const_qflash_cmd 0x01002da0 Data 804 n32wb03x_qflash.o(.constdata) - __ctype_table 0x010030c4 Data 129 ctype_o.o(.constdata) - Region$$Table$$Base 0x0100348c Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x010034ac Number 0 anon$$obj.o(Region$$Table) + DMA_DeInit 0x01000c85 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit) + DMA_EnableChannel 0x01000d25 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel) + DMA_GetCurrDataCounter 0x01000d41 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter) + DMA_Init 0x01000d49 Thumb Code 58 n32wb03x_dma.o(i.DMA_Init) + DMA_RequestRemap 0x01000d89 Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap) + GPIO_InitPeripheral 0x01000d99 Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral) + GPIO_InitStruct 0x01000ea1 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct) + GPIO_ReadInputDataBit 0x01000ebd Thumb Code 20 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) + OTPTrim_Read 0x01000ed1 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read) + Qflash_Erase_Sector 0x01000f9d Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector) + Qflash_Init 0x01000fd9 Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init) + Qflash_Write 0x01001011 Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write) + RCC_EnableAHBPeriphClk 0x01001055 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) + RCC_EnableAPB2PeriphClk 0x01001075 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) + RCC_GetClocksFreqValue 0x01001095 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) + SystemInit 0x01001269 Thumb Code 250 system_n32wb03x.o(i.SystemInit) + SystemTrimValueRead 0x01001385 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead) + USART_Enable 0x01001399 Thumb Code 26 n32wb03x_usart.o(i.USART_Enable) + USART_EnableDMA 0x010013b9 Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA) + USART_GetFlagStatus 0x010013cd Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus) + USART_Init 0x010013ed Thumb Code 162 n32wb03x_usart.o(i.USART_Init) + USART_SendData 0x010014a1 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData) + __aeabi_errno_addr 0x010014a9 Thumb Code 4 errno.o(i.__aeabi_errno_addr) + __rt_errno_addr 0x010014a9 Thumb Code 0 errno.o(i.__aeabi_errno_addr) + __scatterload_copy 0x010014b1 Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x010014bf Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x010014c1 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + app_ota_abort 0x010014dd Thumb Code 32 app_ota.o(i.app_ota_abort) + app_ota_chan_idle 0x01001519 Thumb Code 12 app_ota.o(i.app_ota_chan_idle) + app_ota_chan_rx 0x0100152d Thumb Code 298 app_ota.o(i.app_ota_chan_rx) + app_ota_chan_rx_uart 0x0100166d Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart) + app_ota_handle_frame 0x01001691 Thumb Code 106 app_ota.o(i.app_ota_handle_frame) + app_ota_reset_poll 0x0100170d Thumb Code 70 app_ota.o(i.app_ota_reset_poll) + boot_cli_run 0x010017b5 Thumb Code 240 boot_cli.o(i.boot_cli_run) + boot_delay_ms 0x01001a55 Thumb Code 24 boot_usart.o(i.boot_delay_ms) + boot_millis 0x01001aad Thumb Code 30 boot_usart.o(i.boot_millis) + boot_usart_init 0x01001ad5 Thumb Code 238 boot_usart.o(i.boot_usart_init) + boot_usart_read 0x01001be5 Thumb Code 54 boot_usart.o(i.boot_usart_read) + boot_usart_write 0x01001c3d Thumb Code 42 boot_usart.o(i.boot_usart_write) + caiic_crc32 0x01001e7d Thumb Code 62 boot_crc32.o(i.caiic_crc32) + cli_printf 0x01001f8d Thumb Code 408 boot_cli.o(i.cli_printf) + cli_write 0x01002129 Thumb Code 22 boot_cli.o(i.cli_write) + main 0x01002199 Thumb Code 210 main.o(i.main) + TRIM_READ_CMD_CODE 0x01002b6a Data 320 system_n32wb03x.o(.constdata) + CMD_RDID 0x01002caa Data 152 system_n32wb03x.o(.constdata) + const_qflash_cmd 0x01002dbc Data 804 n32wb03x_qflash.o(.constdata) + __ctype_table 0x010030e0 Data 129 ctype_o.o(.constdata) + Region$$Table$$Base 0x01003498 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x010034b8 Number 0 anon$$obj.o(Region$$Table) SystemCoreClock 0x20004000 Data 4 system_n32wb03x.o(.data) CMD_FLASH_SE 0x20004050 Data 4 n32wb03x_qflash.o(.data) CMD_FLASH_WRITE 0x20004054 Data 4 n32wb03x_qflash.o(.data) @@ -811,9 +811,9 @@ Memory Map of the image Image Entry point : 0x010000c1 - Load Region LR_IROM1 (Base: 0x01000000, Size: 0x0000350c, Max: 0x00004000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x01000000, Size: 0x00003518, Max: 0x00004000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x000034ac, Max: 0x00004000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x000034b8, Max: 0x00004000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object @@ -851,124 +851,124 @@ Memory Map of the image 0x01000640 0x01000640 0x00000020 Code RO 511 i.AppBootset_CmdBsdump app_bootset.o 0x01000660 0x01000660 0x000002f8 Code RO 512 i.AppBootset_CmdBsset app_bootset.o 0x01000958 0x01000958 0x000000e0 Code RO 295 i.CmdDevInfo boot_cli.o - 0x01000a38 0x01000a38 0x000000b4 Code RO 296 i.CmdHelp boot_cli.o - 0x01000aec 0x01000aec 0x0000001c Code RO 297 i.CmdOta boot_cli.o - 0x01000b08 0x01000b08 0x0000003c Code RO 298 i.CmdReset boot_cli.o - 0x01000b44 0x01000b44 0x000000b0 Code RO 299 i.CmdUartInfo boot_cli.o - 0x01000bf4 0x01000bf4 0x00000074 Code RO 300 i.CmdVersion boot_cli.o - 0x01000c68 0x01000c68 0x000000a0 Code RO 1103 i.DMA_DeInit n32wb03x_dma.o - 0x01000d08 0x01000d08 0x0000001c Code RO 1104 i.DMA_EnableChannel n32wb03x_dma.o - 0x01000d24 0x01000d24 0x00000008 Code RO 1105 i.DMA_GetCurrDataCounter n32wb03x_dma.o - 0x01000d2c 0x01000d2c 0x00000040 Code RO 1108 i.DMA_Init n32wb03x_dma.o - 0x01000d6c 0x01000d6c 0x00000010 Code RO 1109 i.DMA_RequestRemap n32wb03x_dma.o - 0x01000d7c 0x01000d7c 0x00000106 Code RO 815 i.GPIO_InitPeripheral n32wb03x_gpio.o - 0x01000e82 0x01000e82 0x00000002 PAD - 0x01000e84 0x01000e84 0x0000001c Code RO 816 i.GPIO_InitStruct n32wb03x_gpio.o - 0x01000ea0 0x01000ea0 0x00000014 Code RO 818 i.GPIO_ReadInputDataBit n32wb03x_gpio.o - 0x01000eb4 0x01000eb4 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o - 0x01000f80 0x01000f80 0x0000003c Code RO 1182 i.Qflash_Erase_Sector n32wb03x_qflash.o - 0x01000fbc 0x01000fbc 0x00000038 Code RO 1183 i.Qflash_Init n32wb03x_qflash.o - 0x01000ff4 0x01000ff4 0x00000044 Code RO 1185 i.Qflash_Write n32wb03x_qflash.o - 0x01001038 0x01001038 0x00000020 Code RO 591 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o - 0x01001058 0x01001058 0x00000020 Code RO 595 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o - 0x01001078 0x01001078 0x000000a4 Code RO 603 i.RCC_GetClocksFreqValue n32wb03x_rcc.o - 0x0100111c 0x0100111c 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o - 0x0100124c 0x0100124c 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o - 0x01001368 0x01001368 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o - 0x0100137c 0x0100137c 0x00000020 Code RO 937 i.USART_Enable n32wb03x_usart.o - 0x0100139c 0x0100139c 0x00000014 Code RO 938 i.USART_EnableDMA n32wb03x_usart.o - 0x010013b0 0x010013b0 0x0000001e Code RO 944 i.USART_GetFlagStatus n32wb03x_usart.o - 0x010013ce 0x010013ce 0x00000002 PAD - 0x010013d0 0x010013d0 0x000000b4 Code RO 946 i.USART_Init n32wb03x_usart.o - 0x01001484 0x01001484 0x00000008 Code RO 949 i.USART_SendData n32wb03x_usart.o - 0x0100148c 0x0100148c 0x00000008 Code RO 1292 i.__aeabi_errno_addr mc_p.l(errno.o) - 0x01001494 0x01001494 0x0000000e Code RO 1307 i.__scatterload_copy mc_p.l(handlers.o) - 0x010014a2 0x010014a2 0x00000002 Code RO 1308 i.__scatterload_null mc_p.l(handlers.o) - 0x010014a4 0x010014a4 0x0000000e Code RO 1309 i.__scatterload_zeroinit mc_p.l(handlers.o) - 0x010014b2 0x010014b2 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o - 0x010014b8 0x010014b8 0x00000006 Code RO 1186 i.__set_PRIMASK n32wb03x_qflash.o - 0x010014be 0x010014be 0x00000002 PAD - 0x010014c0 0x010014c0 0x0000003c Code RO 401 i.app_ota_abort app_ota.o - 0x010014fc 0x010014fc 0x00000014 Code RO 402 i.app_ota_chan_idle app_ota.o - 0x01001510 0x01001510 0x00000140 Code RO 403 i.app_ota_chan_rx app_ota.o - 0x01001650 0x01001650 0x00000024 Code RO 404 i.app_ota_chan_rx_uart app_ota.o - 0x01001674 0x01001674 0x0000007c Code RO 406 i.app_ota_handle_frame app_ota.o - 0x010016f0 0x010016f0 0x0000005c Code RO 407 i.app_ota_reset_poll app_ota.o - 0x0100174c 0x0100174c 0x0000004c Code RO 301 i.boot_cli_redraw boot_cli.o - 0x01001798 0x01001798 0x0000015c Code RO 302 i.boot_cli_run boot_cli.o - 0x010018f4 0x010018f4 0x00000144 Code RO 303 i.boot_cli_tab_complete boot_cli.o - 0x01001a38 0x01001a38 0x00000018 Code RO 244 i.boot_delay_ms boot_usart.o - 0x01001a50 0x01001a50 0x00000040 Code RO 174 i.boot_dl_strap_active main.o - 0x01001a90 0x01001a90 0x00000028 Code RO 245 i.boot_millis boot_usart.o - 0x01001ab8 0x01001ab8 0x00000110 Code RO 246 i.boot_usart_init boot_usart.o - 0x01001bc8 0x01001bc8 0x00000040 Code RO 247 i.boot_usart_read boot_usart.o - 0x01001c08 0x01001c08 0x00000018 Code RO 248 i.boot_usart_rx_head boot_usart.o - 0x01001c20 0x01001c20 0x00000030 Code RO 249 i.boot_usart_write boot_usart.o - 0x01001c50 0x01001c50 0x00000054 Code RO 513 i.bootset_commit app_bootset.o - 0x01001ca4 0x01001ca4 0x0000000e Code RO 514 i.bootset_crc app_bootset.o - 0x01001cb2 0x01001cb2 0x00000002 PAD - 0x01001cb4 0x01001cb4 0x0000001c Code RO 515 i.bootset_ensure_qflash app_bootset.o - 0x01001cd0 0x01001cd0 0x0000016c Code RO 516 i.bootset_print app_bootset.o - 0x01001e3c 0x01001e3c 0x00000024 Code RO 517 i.bootset_valid app_bootset.o - 0x01001e60 0x01001e60 0x00000044 Code RO 231 i.caiic_crc32 boot_crc32.o - 0x01001ea4 0x01001ea4 0x000000cc Code RO 304 i.cli_exec_line boot_cli.o - 0x01001f70 0x01001f70 0x0000019c Code RO 305 i.cli_printf boot_cli.o - 0x0100210c 0x0100210c 0x00000016 Code RO 306 i.cli_write boot_cli.o - 0x01002122 0x01002122 0x00000002 PAD - 0x01002124 0x01002124 0x00000034 Code RO 175 i.image_sane main.o - 0x01002158 0x01002158 0x00000024 Code RO 176 i.jump_to_app main.o - 0x0100217c 0x0100217c 0x000001c4 Code RO 177 i.main main.o - 0x01002340 0x01002340 0x0000004c Code RO 408 i.ota_crc16 app_ota.o - 0x0100238c 0x0100238c 0x00000040 Code RO 409 i.ota_erase_up_to app_ota.o - 0x010023cc 0x010023cc 0x00000170 Code RO 410 i.ota_on_begin app_ota.o - 0x0100253c 0x0100253c 0x000001a8 Code RO 411 i.ota_on_data app_ota.o - 0x010026e4 0x010026e4 0x00000170 Code RO 412 i.ota_on_end app_ota.o - 0x01002854 0x01002854 0x00000038 Code RO 413 i.ota_program app_ota.o - 0x0100288c 0x0100288c 0x00000018 Code RO 414 i.ota_rd32 app_ota.o - 0x010028a4 0x010028a4 0x0000007c Code RO 415 i.ota_respond app_ota.o - 0x01002920 0x01002920 0x0000001c Code RO 416 i.ota_uart_sink app_ota.o - 0x0100293c 0x0100293c 0x000000cc Code RO 417 i.ota_update_bootsetting app_ota.o - 0x01002a08 0x01002a08 0x0000002e Code RO 518 i.parse_u32 app_bootset.o - 0x01002a36 0x01002a36 0x00000018 Code RO 178 i.puts_boot main.o - 0x01002a4e 0x01002a4e 0x00000002 PAD - 0x01002a50 0x01002a50 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o - 0x01002a94 0x01002a94 0x0000004e Code RO 307 i.str_pad boot_cli.o - 0x01002ae2 0x01002ae2 0x0000006c Code RO 308 i.u32_to_str boot_cli.o - 0x01002b4e 0x01002b4e 0x000001d8 Data RO 23 .constdata system_n32wb03x.o - 0x01002d26 0x01002d26 0x00000002 PAD - 0x01002d28 0x01002d28 0x0000006c Data RO 310 .constdata boot_cli.o - 0x01002d94 0x01002d94 0x0000000c Data RO 611 .constdata n32wb03x_rcc.o - 0x01002da0 0x01002da0 0x00000324 Data RO 1188 .constdata n32wb03x_qflash.o - 0x010030c4 0x010030c4 0x00000081 Data RO 1265 .constdata mc_p.l(ctype_o.o) - 0x01003145 0x01003145 0x00000003 PAD - 0x01003148 0x01003148 0x00000004 Data RO 1266 .constdata mc_p.l(ctype_o.o) - 0x0100314c 0x0100314c 0x000002aa Data RO 311 .conststring boot_cli.o - 0x010033f6 0x010033f6 0x00000002 PAD - 0x010033f8 0x010033f8 0x00000091 Data RO 519 .conststring app_bootset.o - 0x01003489 0x01003489 0x00000003 PAD - 0x0100348c 0x0100348c 0x00000020 Data RO 1305 Region$$Table anon$$obj.o + 0x01000a38 0x01000a38 0x000000d0 Code RO 296 i.CmdHelp boot_cli.o + 0x01000b08 0x01000b08 0x0000001c Code RO 297 i.CmdOta boot_cli.o + 0x01000b24 0x01000b24 0x0000003c Code RO 298 i.CmdReset boot_cli.o + 0x01000b60 0x01000b60 0x000000b0 Code RO 299 i.CmdUartInfo boot_cli.o + 0x01000c10 0x01000c10 0x00000074 Code RO 300 i.CmdVersion boot_cli.o + 0x01000c84 0x01000c84 0x000000a0 Code RO 1103 i.DMA_DeInit n32wb03x_dma.o + 0x01000d24 0x01000d24 0x0000001c Code RO 1104 i.DMA_EnableChannel n32wb03x_dma.o + 0x01000d40 0x01000d40 0x00000008 Code RO 1105 i.DMA_GetCurrDataCounter n32wb03x_dma.o + 0x01000d48 0x01000d48 0x00000040 Code RO 1108 i.DMA_Init n32wb03x_dma.o + 0x01000d88 0x01000d88 0x00000010 Code RO 1109 i.DMA_RequestRemap n32wb03x_dma.o + 0x01000d98 0x01000d98 0x00000106 Code RO 815 i.GPIO_InitPeripheral n32wb03x_gpio.o + 0x01000e9e 0x01000e9e 0x00000002 PAD + 0x01000ea0 0x01000ea0 0x0000001c Code RO 816 i.GPIO_InitStruct n32wb03x_gpio.o + 0x01000ebc 0x01000ebc 0x00000014 Code RO 818 i.GPIO_ReadInputDataBit n32wb03x_gpio.o + 0x01000ed0 0x01000ed0 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o + 0x01000f9c 0x01000f9c 0x0000003c Code RO 1182 i.Qflash_Erase_Sector n32wb03x_qflash.o + 0x01000fd8 0x01000fd8 0x00000038 Code RO 1183 i.Qflash_Init n32wb03x_qflash.o + 0x01001010 0x01001010 0x00000044 Code RO 1185 i.Qflash_Write n32wb03x_qflash.o + 0x01001054 0x01001054 0x00000020 Code RO 591 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o + 0x01001074 0x01001074 0x00000020 Code RO 595 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o + 0x01001094 0x01001094 0x000000a4 Code RO 603 i.RCC_GetClocksFreqValue n32wb03x_rcc.o + 0x01001138 0x01001138 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o + 0x01001268 0x01001268 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o + 0x01001384 0x01001384 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o + 0x01001398 0x01001398 0x00000020 Code RO 937 i.USART_Enable n32wb03x_usart.o + 0x010013b8 0x010013b8 0x00000014 Code RO 938 i.USART_EnableDMA n32wb03x_usart.o + 0x010013cc 0x010013cc 0x0000001e Code RO 944 i.USART_GetFlagStatus n32wb03x_usart.o + 0x010013ea 0x010013ea 0x00000002 PAD + 0x010013ec 0x010013ec 0x000000b4 Code RO 946 i.USART_Init n32wb03x_usart.o + 0x010014a0 0x010014a0 0x00000008 Code RO 949 i.USART_SendData n32wb03x_usart.o + 0x010014a8 0x010014a8 0x00000008 Code RO 1292 i.__aeabi_errno_addr mc_p.l(errno.o) + 0x010014b0 0x010014b0 0x0000000e Code RO 1307 i.__scatterload_copy mc_p.l(handlers.o) + 0x010014be 0x010014be 0x00000002 Code RO 1308 i.__scatterload_null mc_p.l(handlers.o) + 0x010014c0 0x010014c0 0x0000000e Code RO 1309 i.__scatterload_zeroinit mc_p.l(handlers.o) + 0x010014ce 0x010014ce 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o + 0x010014d4 0x010014d4 0x00000006 Code RO 1186 i.__set_PRIMASK n32wb03x_qflash.o + 0x010014da 0x010014da 0x00000002 PAD + 0x010014dc 0x010014dc 0x0000003c Code RO 401 i.app_ota_abort app_ota.o + 0x01001518 0x01001518 0x00000014 Code RO 402 i.app_ota_chan_idle app_ota.o + 0x0100152c 0x0100152c 0x00000140 Code RO 403 i.app_ota_chan_rx app_ota.o + 0x0100166c 0x0100166c 0x00000024 Code RO 404 i.app_ota_chan_rx_uart app_ota.o + 0x01001690 0x01001690 0x0000007c Code RO 406 i.app_ota_handle_frame app_ota.o + 0x0100170c 0x0100170c 0x0000005c Code RO 407 i.app_ota_reset_poll app_ota.o + 0x01001768 0x01001768 0x0000004c Code RO 301 i.boot_cli_redraw boot_cli.o + 0x010017b4 0x010017b4 0x0000015c Code RO 302 i.boot_cli_run boot_cli.o + 0x01001910 0x01001910 0x00000144 Code RO 303 i.boot_cli_tab_complete boot_cli.o + 0x01001a54 0x01001a54 0x00000018 Code RO 244 i.boot_delay_ms boot_usart.o + 0x01001a6c 0x01001a6c 0x00000040 Code RO 174 i.boot_dl_strap_active main.o + 0x01001aac 0x01001aac 0x00000028 Code RO 245 i.boot_millis boot_usart.o + 0x01001ad4 0x01001ad4 0x00000110 Code RO 246 i.boot_usart_init boot_usart.o + 0x01001be4 0x01001be4 0x00000040 Code RO 247 i.boot_usart_read boot_usart.o + 0x01001c24 0x01001c24 0x00000018 Code RO 248 i.boot_usart_rx_head boot_usart.o + 0x01001c3c 0x01001c3c 0x00000030 Code RO 249 i.boot_usart_write boot_usart.o + 0x01001c6c 0x01001c6c 0x00000054 Code RO 513 i.bootset_commit app_bootset.o + 0x01001cc0 0x01001cc0 0x0000000e Code RO 514 i.bootset_crc app_bootset.o + 0x01001cce 0x01001cce 0x00000002 PAD + 0x01001cd0 0x01001cd0 0x0000001c Code RO 515 i.bootset_ensure_qflash app_bootset.o + 0x01001cec 0x01001cec 0x0000016c Code RO 516 i.bootset_print app_bootset.o + 0x01001e58 0x01001e58 0x00000024 Code RO 517 i.bootset_valid app_bootset.o + 0x01001e7c 0x01001e7c 0x00000044 Code RO 231 i.caiic_crc32 boot_crc32.o + 0x01001ec0 0x01001ec0 0x000000cc Code RO 304 i.cli_exec_line boot_cli.o + 0x01001f8c 0x01001f8c 0x0000019c Code RO 305 i.cli_printf boot_cli.o + 0x01002128 0x01002128 0x00000016 Code RO 306 i.cli_write boot_cli.o + 0x0100213e 0x0100213e 0x00000002 PAD + 0x01002140 0x01002140 0x00000034 Code RO 175 i.image_sane main.o + 0x01002174 0x01002174 0x00000024 Code RO 176 i.jump_to_app main.o + 0x01002198 0x01002198 0x000001c4 Code RO 177 i.main main.o + 0x0100235c 0x0100235c 0x0000004c Code RO 408 i.ota_crc16 app_ota.o + 0x010023a8 0x010023a8 0x00000040 Code RO 409 i.ota_erase_up_to app_ota.o + 0x010023e8 0x010023e8 0x00000170 Code RO 410 i.ota_on_begin app_ota.o + 0x01002558 0x01002558 0x000001a8 Code RO 411 i.ota_on_data app_ota.o + 0x01002700 0x01002700 0x00000170 Code RO 412 i.ota_on_end app_ota.o + 0x01002870 0x01002870 0x00000038 Code RO 413 i.ota_program app_ota.o + 0x010028a8 0x010028a8 0x00000018 Code RO 414 i.ota_rd32 app_ota.o + 0x010028c0 0x010028c0 0x0000007c Code RO 415 i.ota_respond app_ota.o + 0x0100293c 0x0100293c 0x0000001c Code RO 416 i.ota_uart_sink app_ota.o + 0x01002958 0x01002958 0x000000cc Code RO 417 i.ota_update_bootsetting app_ota.o + 0x01002a24 0x01002a24 0x0000002e Code RO 518 i.parse_u32 app_bootset.o + 0x01002a52 0x01002a52 0x00000018 Code RO 178 i.puts_boot main.o + 0x01002a6a 0x01002a6a 0x00000002 PAD + 0x01002a6c 0x01002a6c 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o + 0x01002ab0 0x01002ab0 0x0000004e Code RO 307 i.str_pad boot_cli.o + 0x01002afe 0x01002afe 0x0000006c Code RO 308 i.u32_to_str boot_cli.o + 0x01002b6a 0x01002b6a 0x000001d8 Data RO 23 .constdata system_n32wb03x.o + 0x01002d42 0x01002d42 0x00000002 PAD + 0x01002d44 0x01002d44 0x0000006c Data RO 310 .constdata boot_cli.o + 0x01002db0 0x01002db0 0x0000000c Data RO 611 .constdata n32wb03x_rcc.o + 0x01002dbc 0x01002dbc 0x00000324 Data RO 1188 .constdata n32wb03x_qflash.o + 0x010030e0 0x010030e0 0x00000081 Data RO 1265 .constdata mc_p.l(ctype_o.o) + 0x01003161 0x01003161 0x00000003 PAD + 0x01003164 0x01003164 0x00000004 Data RO 1266 .constdata mc_p.l(ctype_o.o) + 0x01003168 0x01003168 0x0000029a Data RO 311 .conststring boot_cli.o + 0x01003402 0x01003402 0x00000002 PAD + 0x01003404 0x01003404 0x00000091 Data RO 519 .conststring app_bootset.o + 0x01003495 0x01003495 0x00000003 PAD + 0x01003498 0x01003498 0x00000020 Data RO 1305 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x010034ac, Size: 0x00001a58, Max: 0x0000c000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x010034b8, Size: 0x00001a58, Max: 0x0000c000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20004000 0x010034ac 0x00000004 Data RW 24 .data system_n32wb03x.o - 0x20004004 0x010034b0 0x00000008 Data RW 251 .data boot_usart.o - 0x2000400c 0x010034b8 0x00000001 Data RW 312 .data boot_cli.o - 0x2000400d 0x010034b9 0x00000003 PAD - 0x20004010 0x010034bc 0x0000003d Data RW 419 .data app_ota.o - 0x2000404d 0x010034f9 0x00000001 Data RW 520 .data app_bootset.o - 0x2000404e 0x010034fa 0x00000002 PAD - 0x20004050 0x010034fc 0x0000000c Data RW 1189 .data n32wb03x_qflash.o - 0x2000405c 0x01003508 0x00000004 Data RW 1295 .data mc_p.l(errno.o) + 0x20004000 0x010034b8 0x00000004 Data RW 24 .data system_n32wb03x.o + 0x20004004 0x010034bc 0x00000008 Data RW 251 .data boot_usart.o + 0x2000400c 0x010034c4 0x00000001 Data RW 312 .data boot_cli.o + 0x2000400d 0x010034c5 0x00000003 PAD + 0x20004010 0x010034c8 0x0000003d Data RW 419 .data app_ota.o + 0x2000404d 0x01003505 0x00000001 Data RW 520 .data app_bootset.o + 0x2000404e 0x01003506 0x00000002 PAD + 0x20004050 0x01003508 0x0000000c Data RW 1189 .data n32wb03x_qflash.o + 0x2000405c 0x01003514 0x00000004 Data RW 1295 .data mc_p.l(errno.o) 0x20004060 - 0x00000034 Zero RW 22 .bss system_n32wb03x.o 0x20004094 - 0x00000c00 Zero RW 250 .bss boot_usart.o 0x20004c94 - 0x000000b0 Zero RW 309 .bss boot_cli.o 0x20004d44 - 0x000001e7 Zero RW 418 .bss app_ota.o - 0x20004f2b 0x0100350c 0x00000001 PAD + 0x20004f2b 0x01003518 0x00000001 PAD 0x20004f2c - 0x00000328 Zero RW 1187 .bss n32wb03x_qflash.o - 0x20005254 0x0100350c 0x00000004 PAD + 0x20005254 0x01003518 0x00000004 PAD 0x20005258 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o @@ -981,7 +981,7 @@ Image component sizes 2092 1148 145 1 0 6739 app_bootset.o 2388 322 0 61 487 12597 app_ota.o - 2356 662 790 1 176 17108 boot_cli.o + 2384 684 774 1 176 17112 boot_cli.o 68 6 0 0 0 874 boot_crc32.o 472 66 0 8 3072 4161 boot_usart.o 628 262 0 0 0 5643 main.o @@ -994,7 +994,7 @@ Image component sizes 900 60 472 4 52 124580 system_n32wb03x.o ---------------------------------------------------------------------- - 10220 2644 2454 92 6648 191965 Object Totals + 10248 2666 2438 92 6648 191969 Object Totals 0 0 32 0 0 0 (incl. Generated) 14 0 7 5 5 0 (incl. Padding) @@ -1047,15 +1047,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 10894 2668 2590 96 6648 189365 Grand Totals - 10894 2668 2590 96 6648 189365 ELF Image Totals - 10894 2668 2590 96 0 0 ROM Totals + 10922 2690 2574 96 6648 189369 Grand Totals + 10922 2690 2574 96 6648 189369 ELF Image Totals + 10922 2690 2574 96 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 13484 ( 13.17kB) + Total RO Size (Code + RO Data) 13496 ( 13.18kB) Total RW Size (RW Data + ZI Data) 6744 ( 6.59kB) - Total ROM Size (Code + RO Data + RW Data) 13580 ( 13.26kB) + Total ROM Size (Code + RO Data + RW Data) 13592 ( 13.27kB) ============================================================================== diff --git a/Boot/MDK-ARM/bin/caiic_boot.bin b/Boot/MDK-ARM/bin/caiic_boot.bin index 74d9089f12b31fa25710ee372c6a0ba14e8a2261..f0d3351bc7821cadda6434047a713f8f8177b710 100644 GIT binary patch delta 1186 zcmYjRYfKzf6uxH$cG(9kTY<6#+yT307g)j;s$xS6SVp#w&^M1(Wrek~JnSY~Y^{wp zX_ZErQm;*y_RkX2gsQ})V}&T2@`E2fO3KEVSZgcRn2kv_)6{lgcW2f!?H`l*?)~m} zzB%`vJ0~;T8|odo2BT-@DtT!dKz|TA zhZ1AGLro9^jw}*R$NL4#*b1~}BuNz;Td5^ZG7cBdAxk7c8d^G9`W+!7X?Y^4=j(Vo z>i;B`qJ(IrTW77`@9|Vs<5NTD4Dau^Z60kGgtUAP>oLX5T-OVEn`aA~1dZ9+wT(_E zg3+F0LuLHO72$w@UncP|UWoekBw1}*)O=b0dqanj!Gz|&hklUOC&|^@@r`uCxWV1$ zKm5k?+^)tZuAb{YFc9qbzv<655)!o)cmO8)3lZgjqtaN8OPw+qpZm=W(;?2tL_CJ>?dR-fss^y9lwqWC@>c52D}oK8KTpp?P%<1nhq&!pIKRo16YT+Ug9Md8U4moGNyZk6+oqt(=B zy8w5nVyl3SqHEO;0B_L;Md#qSc&hjm0}fhbcVonB$4IG|U;3(6_Mx(AJc;OWH~{vE zZBJidAcx*}?uI|8*Hr?4)BUc4@GHILs>jqtoBdUW9hyq$OQirh&*Dc{b>3Hq?S4E_{t6&5D&P7Q$;M4gd9 zCCK9rmrE;VIXiExrDq?M_>l|&mICkg- zVT4aS)c}#Cnz`uDz2_eUWZ5%#K6d+ z1ZQS4&Bh&}6_=ER#gQ->yby@7ZbV2_B(@>`qtR4jY!pr2g7CVw@743*ACq_P`Q3BQ z{hf2}J$d1w@u7+DU}W-k74%$Mwga?N3v&><=uzerd`a!B*Errt-~#Pro4xx~!W$B8 zQIM}|h4XTZskQ$E=Z}bt+>|A}F#%!V3*!)Gcx${9qdub-StrEl_iVf4qWXDi2ilHm zevuPFc2bvNbS4pp$Ho^w_gJ~x$QIFXTztHXG z%?)4WhEscxV-2>WpsY*M!u92QvuX-Io&=^ubNw-O}cMB410$& zXNSgokN}P(31<=pMf=%R82TVXYT3kkojA+5Jpza5?+nPp=@HjAgiPd>xvW`e7My5L zX3{Z2^wu4Vj&FOtwRQN_(;Jre2a2~v`b06WoW_1^i2|;_WA(PhVxOp^l0F9>KAs81 z0%ex!)E!4ODB{ax9;EcN9a&OgOX_jv|D7$9jTS$e{A82+Nmo>t7? za275=W4PRm)2k|b@%A;PRE=&m3Uvb3uJXc*IPrvhR81iL@RimHPJtIxMWhRrFEGX| zT~$>M_oU5Lb|x5VAkc!+Y$d>Uo4}{(rd~48C zTWB5d2ZIAOTco@7b5L;se?Bn+f#eK3zh{Ioy+pI7_cL?w;g~{{cW0 B!x8`h diff --git a/Boot/MDK-ARM/build.log b/Boot/MDK-ARM/build.log index f22da89..99e2ef2 100644 --- a/Boot/MDK-ARM/build.log +++ b/Boot/MDK-ARM/build.log @@ -2,19 +2,19 @@ Rebuild target 'caiic_boot' assembling startup_n32wb03x.s... compiling boot_crc32.c... -compiling system_n32wb03x.c... -compiling boot_cli.c... -compiling app_ota.c... compiling app_bootset.c... +compiling n32wb03x_gpio.c... compiling main.c... compiling boot_usart.c... -compiling n32wb03x_gpio.c... -compiling n32wb03x_rcc.c... compiling n32wb03x_usart.c... +compiling boot_cli.c... compiling n32wb03x_dma.c... +compiling system_n32wb03x.c... +compiling app_ota.c... +compiling n32wb03x_rcc.c... compiling n32wb03x_qflash.c... linking... -Program Size: Code=10894 RO-data=2590 RW-data=96 ZI-data=6648 +Program Size: Code=10922 RO-data=2574 RW-data=96 ZI-data=6648 FromELF: creating hex file... After Build - User command #1: fromelf --bin --output=.\bin\caiic_boot.bin .\Objects\caiic_boot.axf ".\Objects\caiic_boot.axf" - 0 Error(s), 0 Warning(s). diff --git a/Boot/src/boot_cli.c b/Boot/src/boot_cli.c index 0b7f3f5..e48dfb5 100644 --- a/Boot/src/boot_cli.c +++ b/Boot/src/boot_cli.c @@ -303,6 +303,7 @@ static void CmdHelp(int argc, char* argv[]) { cli_printf(" %-8s %s\r\n", s_cmds[i].name, s_cmds[i].help); } + cli_write("keys: TAB = complete\r\n"); } /* ------------------------------------------------------------------ */ @@ -487,8 +488,8 @@ void boot_cli_run(void) uint16_t len = 0; uint32_t otaLastRx = 0; - cli_write("\r\nCLI ready (bootloader download mode). Type 'help' for commands " - "(TAB = complete).\r\n" BOOT_CLI_PROMPT); + cli_write("\r\nCLI ready (bootloader download mode). Type 'help' for commands.\r\n" + BOOT_CLI_PROMPT); for (;;) { diff --git a/Boot/src/boot_version.h b/Boot/src/boot_version.h index 92bb264..fd410f9 100644 --- a/Boot/src/boot_version.h +++ b/Boot/src/boot_version.h @@ -6,6 +6,6 @@ #ifndef __BOOT_VERSION_H__ #define __BOOT_VERSION_H__ -#define BOOT_FW_VERSION "V1.01.02" +#define BOOT_FW_VERSION "V1.01.03" #endif /* __BOOT_VERSION_H__ */ diff --git a/docs/开发日志.md b/docs/开发日志.md index 90b2719..835f961 100644 --- a/docs/开发日志.md +++ b/docs/开发日志.md @@ -1418,3 +1418,16 @@ APP2 链接的镜像发向 APP1 区。设备端 END 校验(向量表 Reset PC `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 区内)。 + +## 55. Boot download CLI `help` 补全提示串对齐 APP(2026-09-06,Boot V1.01.03) + +- 问题:APP 的 `help` 末尾有一行 `keys: TAB = complete, UP/DOWN = history` + (`cli_core.c` 的 CmdHelp 打印,是 APP 运行时显示的字符串);Boot 的 `help` + 只有命令表,没有这行提示,与 APP 不一致。 +- 修改(`Boot/src/boot_cli.c`): + - `CmdHelp` 无参数分支在命令表后追加 `keys: TAB = complete`(Boot 只移植了 + TAB 补全,无 UP/DOWN 历史,故提示串如实只写 TAB); + - 撤回 ready banner 里临时加的 `(TAB = complete)`,保持与 APP banner 风格 + 一致(提示只放在 `help` 里)。 +- 版本:`Boot/src/boot_version.h` V1.01.02 → V1.01.03;构建 0E/0W, + `Code=10922 RO-data=2574 RW-data=96 ZI-data=6648`。 diff --git a/tools/out/mothercup_ble_prod.bin b/tools/out/mothercup_ble_prod.bin index 43b64abeac5113e0824ec77bc2b7d8caeb051f85..4728338a6f7c869ffb321e312daf4913da49af41 100644 GIT binary patch delta 1185 zcmYjReQZ-z6u;-aeyn}ny5crgw%K;BrrlRo*69|4l*yhe9~mFQK0sY{lQ%xJ|2R=3 ziUFMg!thGyK$9+l8RBBcldFVN%|%0fSdFxyV@34zD{mL z?R_;QI0cYus7v?AlNXeB)cVzP$(Mv%LMRGDAPp-JVF#HJkSrPEVdr*ZM6dc$@)fip z^;;)M|A@PFZeVnN`k{U%v^LGf>f$6oAbja)%)ncCw$}X17L4Ambm7>cJl_h^R>cwv z$NTswo_2Oo%d7d;D)*ArZ*D3<=Lg$!U-l(^`&~Q(AtkMw-e9$sV-dWHkMBicEDU>D7H9X< z1?#4Zn+1*8JG70Cr^4}`Qd4#E$0gA|0Us%KKUs|WrZlPG=C!z-|E(~fr$42|-^F;4 zo=TIco5?kF)VzweUMR5Vnh6PC(($=G+X|974NfMQ6As4(5x63Nda>9t&48a?%X=HH z(@yJSu!|nBzEC){kRP9IBhHNh;(Qj-ftVEUS{|nRw;N!G*#7t# z2J+}V&sO+@2EAqQ7v1T74SuCJyelzvN#%wWd(!X)_#@>;>`z5rj~A)R%arIddcKZV z5hr?} zVY3hjX!>#johAZ@kW0u{8wgAy|Jg?%ggk?M2GPe7xP$(Dgoz{Y6>9GwcO&;BKZ*#6 zCu%OU@VglF?FTyg87Ka>d=x4s@Hc|(>FmZXjTI0mZXnQ&^94I0(>N!Cb1WV6Zx^|S N+vaxz;{m8B`44#6w>$s< delta 1257 zcmYjReQZ-z6u;-awO!kdu6(Xz*w?wr>%Lq^mq7$vJNMYc2|65ODz2_e-aw=YVqk<{<*|;OL!jh7VI1(lsFAQR=8xax}iEW7gXf)LrtD?yx2ye7~Z=MJLn7nh(@BYrY z=i}a!H$Gz+pD_%73x`K;RzlnK0~>&!nwh=OLJu-0;0tPFy@nwlf%CMPUFY4Y5sQis~C(y6lAJGgdJukK-MrSo7jyW+qKd3o2c8huQ-r@ zmv-m5ftg=Jj~lK9*JrI$wQnlIcJyvjyKsG0-Pr>2CbeKH9Pbli zSnccsJ+5wBuii~pmA%pm6AOx<0_MDdIgQCGm(FxNtgeDyHm-t|^m}7F+@T(m8-Au+ zO!aHO%=M>tV2s(^+v%YAYK(jg^6ji1qcfw&$8O~5oR|)wp3Ld|P=?HQr)lE!TDH+g zsCCRC73Ft9SAXWruE78#fg>rx8HHZac4jf2x}PC6Y;uL3Bg?ow0*C1D49NZShh1M2 zGQ6NnW=+C6!HIk-Gan~JzXki8{hJPNO)Y+P^qTpDp5o2XPElM?PGW1;WC7RRv}E&K zaX{3OqtlLuk7UB}P^q~peajx}6Y-HU_tSdXrYtG9rgT5k|4tatB4%{|JGaQ}FKI$} zI&FD+S@=?(P$;l1AX~D)F|GOGaQr!Gm328lo#ZQ+V<159EqVw3r2B1;!}Bz1du`b# z^F{HSTL`zck#O5kI#FU$VUZIIr>hB!Qm;K|y|(bEUrm{%V|J%`Y@sLxoTfyj>-H1O z>Tb<69CDc=n)0%i2QG7n^Ea6y{u1MeF=~cv zI~gszf(1!!Za2U#Y2Op47$~JS&r8lbSx+lO1_Q<+C`U8a=wN_N=wqoWS$fp7 zAO4~bJR2}`Lq*$D{aH8LQeTRsufMRdob*m