boot V1.01.00: UART download mode (CLI + OTA frame upgrade in bootloader)

- boot_usart: bare-metal USART1 460800, polled TX, 3KB DMA ring RX, SysTick millis
- boot_cli: polled line editor + mini printf + command subset; wire-compatible
  with the app UART CLI (prompt/devinfo cur bank/ota marker) so
  ble_ota_update.py --uart works unchanged against the bootloader
- share app_ota.c/app_bootset.c into the Boot build via BOOT_FIRMWARE ifdef
  (single OTA engine source); frame constants moved to shared Boot/src/ota_wire.h
- entry: 2s Enter window after the boot banner, or forced when no jumpable
  image (invalid bootsetting + APP1 vector sanity fail) - brick recovery path
- OTA target in boot = inactive bank per bootsetting (APP1 when invalid)
- merge_image.py: hard-fail when boot bin exceeds the 16KB region
- APP V1.00.28 (shared-source touch only, behavior unchanged)
- tested: normal boot / download CLI / OTA APP1<->APP2 round trip / bricked
  recovery (bootsetting+APP1 sector erased -> forced download -> OTA restore)
- docs: dev log sec.52, ble_protocol sec.6.8, AGENTS.md
This commit is contained in:
evan.liu 2026-09-05 17:25:53 +08:00
parent 15ae64172a
commit f4faf68ed8
30 changed files with 3244 additions and 934 deletions

View File

@ -5,14 +5,14 @@
本仓库是 **mothercup(母乳杯)** 产品的完整代码仓库,包含三大部分:
1. **设备固件** — 基于国民技术(Nations)**N32WB031 BLE SoC**(Cortex-M0,64MHz HSI,**板载硅片实测 256KB Flash**(0x01000000~0x0103FFFF,开发日志 §37),RAM 48KB+16KB):
- **`mcm-ddc-ble/`** — 唯一活跃的应用固件工程(APP,链接在 APP1 bank `0x01008000`/112KB)。以 SDK rdtss 例程为蓝本,集成 FreeRTOS、UART CLI、BLE 自定义 GATT 服务(CLI 透传 / 设备信息查询 / BLE OTA 双 bank 直写升级)、bootsetting 与 APP_DATA 参数区结构化读写命令。当前版本 **V1.00.27**(`mcm-ddc-ble/inc/app_version.h`)。历史上曾有 `mcm-ddc-04/` 主工程,**已删除**,其功能已全部并入本工程。
- **`Boot/`** — 自写精简 bootloader(链接在 `0x01000000`/16KB):校验 bootsetting 记录自身完整性(magic + 结构体 CRC32)后按 active bank 的 `start_address` 直接跳转;**不校验镜像 CRC(CRC 校验在 OTA 升级过程中完成)**;记录无效或地址越界回退 APP1。
- **`mcm-ddc-ble/`** — 唯一活跃的应用固件工程(APP,链接在 APP1 bank `0x01008000`/112KB)。以 SDK rdtss 例程为蓝本,集成 FreeRTOS、UART CLI、BLE 自定义 GATT 服务(CLI 透传 / 设备信息查询 / BLE OTA 双 bank 直写升级)、bootsetting 与 APP_DATA 参数区结构化读写命令、IWDG 看门狗。当前版本 **V1.00.28**(`mcm-ddc-ble/inc/app_version.h`)。历史上曾有 `mcm-ddc-04/` 主工程,**已删除**,其功能已全部并入本工程。
- **`Boot/`** — 自写 bootloader(链接在 `0x01000000`/16KB,当前 ~12.9KB,版本 **V1.01.00** `Boot/src/boot_version.h`):校验 bootsetting 记录自身完整性(magic + 结构体 CRC32)后按 active bank 的 `start_address` 直接跳转;**不校验镜像 CRC(CRC 校验在 OTA 升级过程中完成)**;记录无效或地址越界回退 APP1。**V1.01.00 起带 download 模式**:复位后 USART1(460800)banner + 2s 回车窗口进入,或无有效镜像(bootsetting 无效且 APP1 向量不过 sanity)自动进入;模式内为裸机 UART CLI 子集 + OTA 帧升级(共享编译 APP 的 `app_ota.c`/`app_bootset.c`,`BOOT_FIRMWARE` 宏隔离),目标 bank = 非活动区,`tools/ble_ota_update.py --uart` 零改动可用。详见 `docs/ble_protocol.md` §6.8。
2. **手机 App `SmartAssiter/`** — uni-app **Vue3 + TypeScript** 工程(HBuilderX 项目管理,无 package.json),通过 BLE 连接设备:查看运行参数(温度/电压/转速/bank/堆等)、CLI 终端、参数读写(appget/appset)、OTA 升级页(e0005 锁步,已恢复)。另有登录/注册/用户信息等云端业务页面。
3. **PC 工具 `tools/`** — 整片烧录包制作/烧录脚本 + bleak 蓝牙测试客户端。
关键文档:
- `docs/开发日志.md` — 固件全程开发日志(45 节,含所有踩坑根因与设计决策,排查问题先查这里)
- `docs/开发日志.md` — 固件全程开发日志(52 节,含所有踩坑根因与设计决策,排查问题先查这里)
- `docs/ble_protocol.md` — CAIIC BLE 通信协议 V1.1(帧格式/GATT UUID/三类业务流程/维护命令/手机端开发指南)
- `SmartAssiter/docs/修改记录_*.md` — App 侧每次改造的详细记录
@ -29,7 +29,7 @@ mothercup/
└── tools/out/ # 出包产物(mothercup_ble_prod.{hex,bin} 生产整包 + mothercup_ble_ota.bin 单文件升级包 + 调试用 _ota.bin/_ota_app2.bin 及 json)
```
SDK 源码(固件库、CMSIS、FreeRTOS V9.0.0、BLE 协议栈/profile/ns_library、启动文件)通过相对路径 `..\..\nations-tec\N32WB03x_SDK_V2.0.0` 被 uvprojx 引用,**不复制进工程**;Bootloader 共享代码(`Boot/src/dfu_layout.h`、`boot_crc32.c`)经 `..\..\Boot\src` 被 APP 工程引用。因此各工程目录不能脱离仓库根单独移动。
SDK 源码(固件库、CMSIS、FreeRTOS V9.0.0、BLE 协议栈/profile/ns_library、启动文件)通过相对路径 `..\..\nations-tec\N32WB03x_SDK_V2.0.0` 被 uvprojx 引用,**不复制进工程**;Bootloader 共享代码(`Boot/src/dfu_layout.h`、`boot_crc32.c`、`ota_wire.h`)经 `..\..\Boot\src` 被 APP 工程引用,反向地 Boot 工程也共享编译 APP 的 `mcm-ddc-ble/src/app_ota.c`/`app_bootset.c`(全局宏 `BOOT_FIRMWARE` 隔离 RTOS/BLE 依赖,Boot 侧 `cli_core.h` 为 shim,include 顺序 `..\src` 优先)。因此各工程目录不能脱离仓库根单独移动。
## Flash / RAM 布局(铁律)
@ -95,7 +95,7 @@ mcm-ddc-ble/
"D:\Keil_v5\UV4\UV4.exe" -b caiic_boot.uvprojx -j0 -o build.log # Boot 增量构建
```
要求保持 **0 Error(s), 0 Warning(s)**。当前基线(V1.00.27):`Code=49408 RO-data=5132 RW-data=2092 ZI-data=30140`。
要求保持 **0 Error(s), 0 Warning(s)**。当前基线(V1.00.28):`Code=49408 RO-data=5132 RW-data=2092 ZI-data=30140`;Boot 基线(V1.01.00):`Code=10254 RO-data=2574 RW-data=96 ZI-data=6648`(bin 12.9KB,16KB 区内;`merge_image.py` 对 boot bin 超 16KB 硬卡)。
**固件版本号约定(重要)**:每次修改固件代码必须递增 `mcm-ddc-ble/inc/app_version.h` 中的 `APP_FW_VERSION` 与 `APP_FW_VERSION_NUM`(格式 `0x00MMmmpp`,通常补丁位 +1),用于识别板上实际运行的固件;工程名与出包文件名保持不变。
@ -113,7 +113,7 @@ mcm-ddc-ble/
3. 日常开发调试:Keil F7 编译、F8 下载即可(Boot 不校验镜像 CRC,可直接下载 APP 调试);**Keil 下载选项必须是 "Erase Sectors",整片擦除会杀掉 Boot/bootsetting**(杀掉后需重烧整片包恢复)。板子上烧过其他 0x01000000 起步的程序同样会覆盖 Boot,恢复也是重烧整片包。
4. 日常固件升级设计路径是 BLE OTA(手机 App 或 PC bleak 客户端)。
验证运行:串口助手接 PB6(TX)/PB7(RX),460800 8N1(V1.00.26 起),复位后应看到 banner 与 `caiic->` 提示符(`help` 查看命令);手机应能搜到广播名 `CAIIC-MCM-20260902`。
验证运行:串口助手接 PB6(TX)/PB7(RX),460800 8N1(V1.00.26 起),复位后应先看到 boot banner `[boot] CAIIC-BOOT ...`(Boot V1.01.00 起;2s 内按回车进入 download 模式,可 CLI + `ble_ota_update.py --uart` 直接升级,协议见 ble_protocol.md §6.8),随后是 APP banner 与 `caiic->` 提示符(`help` 查看命令);手机应能搜到广播名 `CAIIC-MCM-20260902`。
## BLE 接口与协议

View File

@ -32,7 +32,193 @@ Section Cross References
system_n32wb03x.o(i.read_flash_ID) refers to system_n32wb03x.o(.constdata) for CMD_RDID
system_n32wb03x.o(i.system_delay_n_10us) refers to system_n32wb03x.o(.emb_text) for system_delay_cycles
main.o(i.main) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32
main.o(i.main) refers to boot_usart.o(i.boot_usart_init) for boot_usart_init
main.o(i.main) refers to main.o(i.puts_boot) for puts_boot
main.o(i.main) refers to boot_usart.o(i.boot_millis) for boot_millis
main.o(i.main) refers to boot_usart.o(i.boot_usart_read) for boot_usart_read
main.o(i.main) refers to main.o(i.image_sane) for image_sane
main.o(i.main) refers to boot_cli.o(i.boot_cli_run) for boot_cli_run
main.o(i.main) refers to main.o(i.jump_to_app) for jump_to_app
main.o(i.puts_boot) refers to boot_usart.o(i.boot_usart_write) for boot_usart_write
boot_usart.o(i.boot_delay_ms) refers to boot_usart.o(i.boot_millis) for boot_millis
boot_usart.o(i.boot_millis) refers to boot_usart.o(.data) for s_millis
boot_usart.o(i.boot_usart_init) refers to n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) for RCC_EnableAPB2PeriphClk
boot_usart.o(i.boot_usart_init) refers to n32wb03x_gpio.o(i.GPIO_InitStruct) for GPIO_InitStruct
boot_usart.o(i.boot_usart_init) refers to n32wb03x_gpio.o(i.GPIO_InitPeripheral) for GPIO_InitPeripheral
boot_usart.o(i.boot_usart_init) refers to n32wb03x_usart.o(i.USART_Init) for USART_Init
boot_usart.o(i.boot_usart_init) refers to n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) for RCC_EnableAHBPeriphClk
boot_usart.o(i.boot_usart_init) refers to n32wb03x_dma.o(i.DMA_EnableChannel) for DMA_EnableChannel
boot_usart.o(i.boot_usart_init) refers to n32wb03x_dma.o(i.DMA_DeInit) for DMA_DeInit
boot_usart.o(i.boot_usart_init) refers to n32wb03x_dma.o(i.DMA_RequestRemap) for DMA_RequestRemap
boot_usart.o(i.boot_usart_init) refers to n32wb03x_dma.o(i.DMA_Init) for DMA_Init
boot_usart.o(i.boot_usart_init) refers to n32wb03x_usart.o(i.USART_EnableDMA) for USART_EnableDMA
boot_usart.o(i.boot_usart_init) refers to n32wb03x_usart.o(i.USART_Enable) for USART_Enable
boot_usart.o(i.boot_usart_init) refers to boot_usart.o(.bss) for s_rxRing
boot_usart.o(i.boot_usart_init) refers to boot_usart.o(.data) for s_rxTail
boot_usart.o(i.boot_usart_read) refers to boot_usart.o(i.boot_usart_rx_head) for boot_usart_rx_head
boot_usart.o(i.boot_usart_read) refers to uidiv.o(.text) for __aeabi_uidivmod
boot_usart.o(i.boot_usart_read) refers to boot_usart.o(.data) for s_rxTail
boot_usart.o(i.boot_usart_read) refers to boot_usart.o(.bss) for s_rxRing
boot_usart.o(i.boot_usart_rx_head) refers to n32wb03x_dma.o(i.DMA_GetCurrDataCounter) for DMA_GetCurrDataCounter
boot_usart.o(i.boot_usart_write) refers to n32wb03x_usart.o(i.USART_SendData) for USART_SendData
boot_usart.o(i.boot_usart_write) refers to n32wb03x_usart.o(i.USART_GetFlagStatus) for USART_GetFlagStatus
boot_cli.o(i.CmdDevInfo) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32
boot_cli.o(i.CmdDevInfo) refers to boot_cli.o(i.cli_printf) for cli_printf
boot_cli.o(i.CmdDevInfo) refers to boot_cli.o(i.cli_write) for cli_write
boot_cli.o(i.CmdDevInfo) refers to boot_usart.o(i.boot_millis) for boot_millis
boot_cli.o(i.CmdDevInfo) refers to uidiv.o(.text) for __aeabi_uidivmod
boot_cli.o(i.CmdHelp) refers to strcmp.o(.text) for strcmp
boot_cli.o(i.CmdHelp) refers to boot_cli.o(i.cli_printf) for cli_printf
boot_cli.o(i.CmdHelp) refers to boot_cli.o(i.cli_write) for cli_write
boot_cli.o(i.CmdHelp) refers to boot_cli.o(.constdata) for s_cmds
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(.data) for s_otaMode
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.CmdUartInfo) refers to boot_cli.o(i.cli_write) for cli_write
boot_cli.o(i.CmdVersion) refers to boot_cli.o(i.cli_printf) for cli_printf
boot_cli.o(i.CmdVersion) refers to system_n32wb03x.o(.data) for SystemCoreClock
boot_cli.o(i.boot_cli_run) refers to boot_cli.o(i.cli_write) for cli_write
boot_cli.o(i.boot_cli_run) refers to app_ota.o(i.app_ota_reset_poll) for app_ota_reset_poll
boot_cli.o(i.boot_cli_run) refers to boot_usart.o(i.boot_millis) for boot_millis
boot_cli.o(i.boot_cli_run) refers to app_ota.o(i.app_ota_chan_idle) for app_ota_chan_idle
boot_cli.o(i.boot_cli_run) refers to boot_usart.o(i.boot_usart_read) for boot_usart_read
boot_cli.o(i.boot_cli_run) refers to app_ota.o(i.app_ota_chan_rx_uart) for app_ota_chan_rx_uart
boot_cli.o(i.boot_cli_run) refers to boot_cli.o(i.cli_exec_line) for cli_exec_line
boot_cli.o(i.boot_cli_run) refers to boot_usart.o(i.boot_usart_write) for boot_usart_write
boot_cli.o(i.boot_cli_run) refers to boot_cli.o(.conststring) for .conststring
boot_cli.o(i.boot_cli_run) refers to boot_cli.o(.data) for s_otaMode
boot_cli.o(i.boot_cli_run) refers to boot_cli.o(.bss) for s_line
boot_cli.o(i.cli_exec_line) refers to strcmp.o(.text) for strcmp
boot_cli.o(i.cli_exec_line) refers to boot_cli.o(i.cli_printf) for cli_printf
boot_cli.o(i.cli_exec_line) refers to boot_cli.o(.constdata) for s_cmds
boot_cli.o(i.cli_printf) refers to boot_cli.o(i.str_pad) for str_pad
boot_cli.o(i.cli_printf) refers to boot_cli.o(i.u32_to_str) for u32_to_str
boot_cli.o(i.cli_printf) refers to boot_cli.o(i.cli_write) for cli_write
boot_cli.o(i.cli_printf) refers to boot_cli.o(.bss) for s_txBuf
boot_cli.o(i.cli_write) refers to strlen.o(.text) for strlen
boot_cli.o(i.cli_write) refers to boot_usart.o(i.boot_usart_write) for boot_usart_write
boot_cli.o(i.str_pad) refers to strlen.o(.text) for strlen
boot_cli.o(i.u32_to_str) refers to uidiv.o(.text) for __aeabi_uidivmod
boot_cli.o(.constdata) refers to boot_cli.o(.conststring) for .conststring
boot_cli.o(.constdata) refers to boot_cli.o(i.CmdHelp) for CmdHelp
boot_cli.o(.constdata) refers to boot_cli.o(i.CmdVersion) for CmdVersion
boot_cli.o(.constdata) refers to boot_cli.o(i.CmdDevInfo) for CmdDevInfo
boot_cli.o(.constdata) refers to app_bootset.o(i.AppBootset_CmdBsdump) for AppBootset_CmdBsdump
boot_cli.o(.constdata) refers to app_bootset.o(i.AppBootset_CmdBsset) for AppBootset_CmdBsset
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.CmdReset) for CmdReset
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_chan_idle) refers to app_ota.o(.data) for s_chanState
app_ota.o(i.app_ota_chan_rx) refers to app_ota.o(i.ota_crc16) for ota_crc16
app_ota.o(i.app_ota_chan_rx) refers to app_ota.o(i.app_ota_handle_frame) for app_ota_handle_frame
app_ota.o(i.app_ota_chan_rx) refers to app_ota.o(.data) for s_rsp_sink
app_ota.o(i.app_ota_chan_rx) refers to app_ota.o(.bss) for s_chanBuf
app_ota.o(i.app_ota_chan_rx_uart) refers to app_ota.o(i.app_ota_chan_rx) for app_ota_chan_rx
app_ota.o(i.app_ota_chan_rx_uart) refers to app_ota.o(i.ota_uart_sink) for ota_uart_sink
app_ota.o(i.app_ota_chan_rx_uart) refers to app_ota.o(.data) for s_uart_exit_req
app_ota.o(i.app_ota_handle_frame) refers to app_ota.o(i.ota_on_begin) for ota_on_begin
app_ota.o(i.app_ota_handle_frame) refers to app_ota.o(i.ota_on_data) for ota_on_data
app_ota.o(i.app_ota_handle_frame) refers to app_ota.o(i.ota_on_end) for ota_on_end
app_ota.o(i.app_ota_handle_frame) refers to app_ota.o(i.app_ota_abort) for app_ota_abort
app_ota.o(i.app_ota_handle_frame) refers to app_ota.o(i.ota_respond) for ota_respond
app_ota.o(i.app_ota_handle_frame) refers to app_ota.o(.data) for s_offset
app_ota.o(i.app_ota_handle_frame) refers to app_ota.o(i.ota_uart_sink) for ota_uart_sink
app_ota.o(i.app_ota_reset_poll) refers to boot_usart.o(i.boot_millis) for boot_millis
app_ota.o(i.app_ota_reset_poll) refers to app_ota.o(.data) for s_reset_pending
app_ota.o(i.ota_erase_up_to) refers to n32wb03x_qflash.o(i.Qflash_Erase_Sector) for Qflash_Erase_Sector
app_ota.o(i.ota_erase_up_to) refers to app_ota.o(.data) for s_target_base
app_ota.o(i.ota_on_begin) refers to app_ota.o(i.ota_respond) for ota_respond
app_ota.o(i.ota_on_begin) refers to app_ota.o(i.ota_rd32) for ota_rd32
app_ota.o(i.ota_on_begin) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32
app_ota.o(i.ota_on_begin) refers to n32wb03x_qflash.o(i.Qflash_Init) for Qflash_Init
app_ota.o(i.ota_on_begin) refers to app_ota.o(.data) for s_active
app_ota.o(i.ota_on_begin) refers to app_ota.o(i.ota_uart_sink) for ota_uart_sink
app_ota.o(i.ota_on_data) refers to app_ota.o(i.ota_respond) for ota_respond
app_ota.o(i.ota_on_data) refers to app_ota.o(i.ota_rd32) for ota_rd32
app_ota.o(i.ota_on_data) refers to app_ota.o(i.ota_erase_up_to) for ota_erase_up_to
app_ota.o(i.ota_on_data) refers to app_ota.o(i.ota_program) for ota_program
app_ota.o(i.ota_on_data) refers to memcpya.o(.text) for __aeabi_memcpy
app_ota.o(i.ota_on_data) refers to app_ota.o(i.app_ota_abort) for app_ota_abort
app_ota.o(i.ota_on_data) refers to app_ota.o(.data) for s_active
app_ota.o(i.ota_on_end) refers to app_ota.o(i.ota_respond) for ota_respond
app_ota.o(i.ota_on_end) refers to app_ota.o(i.ota_rd32) for ota_rd32
app_ota.o(i.ota_on_end) refers to app_ota.o(i.ota_program) for ota_program
app_ota.o(i.ota_on_end) refers to app_ota.o(i.app_ota_abort) for app_ota_abort
app_ota.o(i.ota_on_end) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32
app_ota.o(i.ota_on_end) refers to app_ota.o(i.ota_update_bootsetting) for ota_update_bootsetting
app_ota.o(i.ota_on_end) refers to boot_usart.o(i.boot_millis) for boot_millis
app_ota.o(i.ota_on_end) refers to app_ota.o(.data) for s_active
app_ota.o(i.ota_program) refers to n32wb03x_qflash.o(i.Qflash_Write) for Qflash_Write
app_ota.o(i.ota_program) refers to app_ota.o(.data) for s_target_base
app_ota.o(i.ota_respond) refers to memcpya.o(.text) for __aeabi_memcpy
app_ota.o(i.ota_respond) refers to app_ota.o(i.ota_crc16) for ota_crc16
app_ota.o(i.ota_respond) refers to app_ota.o(.data) for s_rsp_sink
app_ota.o(i.ota_uart_sink) refers to boot_usart.o(i.boot_usart_write) for boot_usart_write
app_ota.o(i.ota_uart_sink) refers to app_ota.o(.data) for s_rsp_consumed
app_ota.o(i.ota_update_bootsetting) refers to memcpya.o(.text) for __aeabi_memcpy4
app_ota.o(i.ota_update_bootsetting) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32
app_ota.o(i.ota_update_bootsetting) refers to memseta.o(.text) for __aeabi_memclr4
app_ota.o(i.ota_update_bootsetting) refers to n32wb03x_qflash.o(i.Qflash_Erase_Sector) for Qflash_Erase_Sector
app_ota.o(i.ota_update_bootsetting) refers to n32wb03x_qflash.o(i.Qflash_Write) for Qflash_Write
app_ota.o(i.ota_update_bootsetting) refers to memcmp.o(.text) for memcmp
app_ota.o(i.ota_update_bootsetting) refers to app_ota.o(.data) for s_target_base
app_bootset.o(i.AppBootset_CmdAppswitch) refers to memcpya.o(.text) for __aeabi_memcpy4
app_bootset.o(i.AppBootset_CmdAppswitch) refers to app_bootset.o(i.bootset_valid) for bootset_valid
app_bootset.o(i.AppBootset_CmdAppswitch) refers to boot_cli.o(i.cli_write) for cli_write
app_bootset.o(i.AppBootset_CmdAppswitch) refers to app_bootset.o(i.parse_u32) for parse_u32
app_bootset.o(i.AppBootset_CmdAppswitch) refers to boot_cli.o(i.cli_printf) for cli_printf
app_bootset.o(i.AppBootset_CmdAppswitch) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32
app_bootset.o(i.AppBootset_CmdAppswitch) refers to app_bootset.o(i.bootset_commit) for bootset_commit
app_bootset.o(i.AppBootset_CmdAppswitch) refers to boot_usart.o(i.boot_delay_ms) for boot_delay_ms
app_bootset.o(i.AppBootset_CmdAppswitch) refers to app_bootset.o(.conststring) for .conststring
app_bootset.o(i.AppBootset_CmdBsdump) refers to memcpya.o(.text) for __aeabi_memcpy4
app_bootset.o(i.AppBootset_CmdBsdump) refers to app_bootset.o(i.bootset_print) for bootset_print
app_bootset.o(i.AppBootset_CmdBsset) refers to boot_cli.o(i.cli_write) for cli_write
app_bootset.o(i.AppBootset_CmdBsset) refers to app_bootset.o(i.parse_u32) for parse_u32
app_bootset.o(i.AppBootset_CmdBsset) refers to memcpya.o(.text) for __aeabi_memcpy4
app_bootset.o(i.AppBootset_CmdBsset) refers to app_bootset.o(i.bootset_valid) for bootset_valid
app_bootset.o(i.AppBootset_CmdBsset) refers to memseta.o(.text) for __aeabi_memclr4
app_bootset.o(i.AppBootset_CmdBsset) refers to strcmp.o(.text) for strcmp
app_bootset.o(i.AppBootset_CmdBsset) refers to boot_cli.o(i.cli_printf) for cli_printf
app_bootset.o(i.AppBootset_CmdBsset) refers to app_bootset.o(i.bootset_commit) for bootset_commit
app_bootset.o(i.AppBootset_CmdBsset) refers to app_bootset.o(i.bootset_print) for bootset_print
app_bootset.o(i.AppBootset_CmdBsset) refers to app_bootset.o(.conststring) for .conststring
app_bootset.o(i.bootset_commit) refers to app_bootset.o(i.bootset_ensure_qflash) for bootset_ensure_qflash
app_bootset.o(i.bootset_commit) refers to app_bootset.o(i.bootset_crc) for bootset_crc
app_bootset.o(i.bootset_commit) refers to n32wb03x_qflash.o(i.Qflash_Erase_Sector) for Qflash_Erase_Sector
app_bootset.o(i.bootset_commit) refers to n32wb03x_qflash.o(i.Qflash_Write) for Qflash_Write
app_bootset.o(i.bootset_commit) refers to memcmp.o(.text) for memcmp
app_bootset.o(i.bootset_crc) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32
app_bootset.o(i.bootset_ensure_qflash) refers to n32wb03x_qflash.o(i.Qflash_Init) for Qflash_Init
app_bootset.o(i.bootset_ensure_qflash) refers to app_bootset.o(.data) for s_qflash_ready
app_bootset.o(i.bootset_print) refers to app_bootset.o(i.bootset_valid) for bootset_valid
app_bootset.o(i.bootset_print) refers to boot_cli.o(i.cli_printf) for cli_printf
app_bootset.o(i.bootset_valid) refers to app_bootset.o(i.bootset_crc) for bootset_crc
app_bootset.o(i.parse_u32) refers to strtoul.o(.text) for strtoul
n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) refers to n32wb03x_rcc.o(.constdata) for s_AhbPresTable
n32wb03x_rcc.o(i.RCC_WaitHseStable) refers to n32wb03x_rcc.o(i.RCC_GetFlagStatus) for RCC_GetFlagStatus
n32wb03x_rcc.o(i.RCC_WaitHsiStable) refers to n32wb03x_rcc.o(i.RCC_GetFlagStatus) for RCC_GetFlagStatus
n32wb03x_gpio.o(i.GPIO_AFIOInitDefault) refers to n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphReset) for RCC_EnableAPB2PeriphReset
n32wb03x_gpio.o(i.GPIO_ConfigEXTILine) refers to n32wb03x_gpio.o(i.__ARM_common_switch8) for __ARM_common_switch8
n32wb03x_gpio.o(i.GPIO_DeInit) refers to n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphReset) for RCC_EnableAPB2PeriphReset
n32wb03x_usart.o(i.USART_DeInit) refers to n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphReset) for RCC_EnableAPB2PeriphReset
n32wb03x_usart.o(i.USART_DeInit) refers to n32wb03x_rcc.o(i.RCC_EnableAPB1PeriphReset) for RCC_EnableAPB1PeriphReset
n32wb03x_usart.o(i.USART_Init) refers to n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) for RCC_GetClocksFreqValue
n32wb03x_usart.o(i.USART_Init) refers to uidiv.o(.text) for __aeabi_uidivmod
n32wb03x_qflash.o(i.Qflash_Erase_Sector) refers to n32wb03x_qflash.o(i.__set_PRIMASK) for __set_PRIMASK
n32wb03x_qflash.o(i.Qflash_Erase_Sector) refers to n32wb03x_qflash.o(.data) for CMD_FLASH_SE
n32wb03x_qflash.o(i.Qflash_Init) refers to memcpya.o(.text) for __aeabi_memcpy
n32wb03x_qflash.o(i.Qflash_Init) refers to n32wb03x_qflash.o(.bss) for ram_qflash_cmd
n32wb03x_qflash.o(i.Qflash_Init) refers to n32wb03x_qflash.o(.data) for CMD_FLASH_SE
n32wb03x_qflash.o(i.Qflash_Init) refers to n32wb03x_qflash.o(.constdata) for const_qflash_cmd
n32wb03x_qflash.o(i.Qflash_Read) refers to n32wb03x_qflash.o(i.__set_PRIMASK) for __set_PRIMASK
n32wb03x_qflash.o(i.Qflash_Read) refers to n32wb03x_qflash.o(.data) for CMD_FLASH_READ
n32wb03x_qflash.o(i.Qflash_Write) refers to n32wb03x_qflash.o(i.__set_PRIMASK) for __set_PRIMASK
n32wb03x_qflash.o(i.Qflash_Write) refers to n32wb03x_qflash.o(.data) for CMD_FLASH_WRITE
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry10a.o(.ARM.Collect$$$$0000000D) for __rt_final_cpp
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry11a.o(.ARM.Collect$$$$0000000F) for __rt_final_exit
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry7b.o(.ARM.Collect$$$$00000008) for _main_clock
@ -40,6 +226,9 @@ Section Cross References
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry9a.o(.ARM.Collect$$$$0000000B) for _main_init
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry5.o(.ARM.Collect$$$$00000004) for _main_scatterload
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry2.o(.ARM.Collect$$$$00000001) for _main_stk
strtoul.o(.text) refers to errno.o(i.__aeabi_errno_addr) for __aeabi_errno_addr
strtoul.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
strtoul.o(.text) refers to _strtoul.o(.text) for _strtoul
entry2.o(.ARM.Collect$$$$00000001) refers to entry2.o(.ARM.Collect$$$$00002712) for __lit__00000000
entry2.o(.ARM.Collect$$$$00002712) refers to startup_n32wb03x.o(STACK) for __initial_sp
entry2.o(__vectab_stack_and_reset_area) refers to startup_n32wb03x.o(STACK) for __initial_sp
@ -47,6 +236,25 @@ Section Cross References
entry5.o(.ARM.Collect$$$$00000004) refers to init.o(.text) for __scatterload
entry9a.o(.ARM.Collect$$$$0000000B) refers to main.o(i.main) for main
entry9b.o(.ARM.Collect$$$$0000000C) refers to main.o(i.main) for main
ctype_o.o(.text) refers to ctype_o.o(.constdata) for .constdata
ctype_o.o(.constdata) refers to ctype_o.o(.constdata) for __ctype_table
isalnum_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
isalpha_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
isblank_o.o(.text) refers to ctype_o.o(.constdata) for __ctype_table
iscntrl_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
isdigit_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
isgraph_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
islower_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
isprint_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
ispunct_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
isspace_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
isupper_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
isxdigit_o.o(.text) refers to ctype_o.o(.text) for __rt_ctype_table
errno.o(i.__aeabi_errno_addr) refers to errno.o(.data) for .data
errno.o(i.__read_errno) refers to errno.o(.data) for .data
errno.o(i.__set_errno) refers to errno.o(.data) for .data
_strtoul.o(.text) refers to _chval.o(.text) for _chval
_strtoul.o(.text) refers to errno.o(i.__aeabi_errno_addr) for __aeabi_errno_addr
init.o(.text) refers to entry5.o(.ARM.Collect$$$$00000004) for __main_after_scatterload
@ -60,10 +268,100 @@ Removing Unused input sections from the image.
Removing system_n32wb03x.o(i.SystemGetUUID), (60 bytes).
Removing system_n32wb03x.o(i.SystemTrimValueGet), (60 bytes).
Removing system_n32wb03x.o(i.system_delay_n_10us), (16 bytes).
Removing system_n32wb03x.o(.data), (4 bytes).
Removing main.o(.emb_text), (8 bytes).
Removing boot_usart.o(.emb_text), (8 bytes).
Removing boot_cli.o(.emb_text), (8 bytes).
Removing app_ota.o(.emb_text), (8 bytes).
Removing app_ota.o(i.app_ota_current_bank_base), (8 bytes).
Removing app_bootset.o(.emb_text), (8 bytes).
Removing n32wb03x_rcc.o(.emb_text), (8 bytes).
Removing n32wb03x_rcc.o(i.DBG_ConfigPeriph), (32 bytes).
Removing n32wb03x_rcc.o(i.RCC_ClrFlag), (28 bytes).
Removing n32wb03x_rcc.o(i.RCC_ClrIntPendingBit), (16 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigAdcClk), (32 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigHclk), (32 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigHse), (48 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigHsi), (40 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigInt), (36 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigLSXSEL), (28 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigLpuartClk), (32 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigLse), (60 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigMco), (32 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigPclk1), (36 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigPclk2), (32 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigSysclk), (28 bytes).
Removing n32wb03x_rcc.o(i.RCC_ConfigTim1Clk), (28 bytes).
Removing n32wb03x_rcc.o(i.RCC_DeInit), (92 bytes).
Removing n32wb03x_rcc.o(i.RCC_EnableAHBPeriphReset), (32 bytes).
Removing n32wb03x_rcc.o(i.RCC_EnableAPB1PeriphClk), (32 bytes).
Removing n32wb03x_rcc.o(i.RCC_EnableAPB1PeriphReset), (32 bytes).
Removing n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphReset), (32 bytes).
Removing n32wb03x_rcc.o(i.RCC_EnableHsi), (36 bytes).
Removing n32wb03x_rcc.o(i.RCC_EnableLpuartClk), (40 bytes).
Removing n32wb03x_rcc.o(i.RCC_EnableLsi), (36 bytes).
Removing n32wb03x_rcc.o(i.RCC_EnableRTCReset), (40 bytes).
Removing n32wb03x_rcc.o(i.RCC_EnableRtcClk), (40 bytes).
Removing n32wb03x_rcc.o(i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL), (40 bytes).
Removing n32wb03x_rcc.o(i.RCC_GetFlagStatus), (64 bytes).
Removing n32wb03x_rcc.o(i.RCC_GetIntStatus), (28 bytes).
Removing n32wb03x_rcc.o(i.RCC_GetLpuartClkSrc), (20 bytes).
Removing n32wb03x_rcc.o(i.RCC_GetRTCClkSrc), (16 bytes).
Removing n32wb03x_rcc.o(i.RCC_GetSysclkSrc), (16 bytes).
Removing n32wb03x_rcc.o(i.RCC_WaitHseStable), (60 bytes).
Removing n32wb03x_rcc.o(i.RCC_WaitHsiStable), (60 bytes).
Removing n32wb03x_gpio.o(.emb_text), (8 bytes).
Removing n32wb03x_gpio.o(i.AFIO_ConfigSPINSSMode), (36 bytes).
Removing n32wb03x_gpio.o(i.GPIO_AFIOInitDefault), (20 bytes).
Removing n32wb03x_gpio.o(i.GPIO_ConfigEXTILine), (528 bytes).
Removing n32wb03x_gpio.o(i.GPIO_ConfigPinLock), (22 bytes).
Removing n32wb03x_gpio.o(i.GPIO_ConfigPinRemap), (100 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_ReadInputData), (8 bytes).
Removing n32wb03x_gpio.o(i.GPIO_ReadInputDataBit), (20 bytes).
Removing n32wb03x_gpio.o(i.GPIO_ReadOutputData), (8 bytes).
Removing n32wb03x_gpio.o(i.GPIO_ReadOutputDataBit), (20 bytes).
Removing n32wb03x_gpio.o(i.GPIO_ResetBits), (4 bytes).
Removing n32wb03x_gpio.o(i.GPIO_SetBits), (4 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_WriteBit), (12 bytes).
Removing n32wb03x_usart.o(.emb_text), (8 bytes).
Removing n32wb03x_usart.o(i.USART_ClockInit), (36 bytes).
Removing n32wb03x_usart.o(i.USART_ClockStructInit), (12 bytes).
Removing n32wb03x_usart.o(i.USART_ClrFlag), (22 bytes).
Removing n32wb03x_usart.o(i.USART_ClrIntPendingBit), (32 bytes).
Removing n32wb03x_usart.o(i.USART_ConfigInt), (84 bytes).
Removing n32wb03x_usart.o(i.USART_ConfigIrDAMode), (20 bytes).
Removing n32wb03x_usart.o(i.USART_ConfigLINBreakDetectLength), (20 bytes).
Removing n32wb03x_usart.o(i.USART_ConfigWakeUpMode), (20 bytes).
Removing n32wb03x_usart.o(i.USART_DeInit), (56 bytes).
Removing n32wb03x_usart.o(i.USART_EnableHalfDuplex), (28 bytes).
Removing n32wb03x_usart.o(i.USART_EnableIrDA), (28 bytes).
Removing n32wb03x_usart.o(i.USART_EnableLIN), (32 bytes).
Removing n32wb03x_usart.o(i.USART_EnableRcvWakeUp), (28 bytes).
Removing n32wb03x_usart.o(i.USART_EnableSmartCard), (28 bytes).
Removing n32wb03x_usart.o(i.USART_GetIntStatus), (92 bytes).
Removing n32wb03x_usart.o(i.USART_ReceiveData), (10 bytes).
Removing n32wb03x_usart.o(i.USART_SendBreak), (10 bytes).
Removing n32wb03x_usart.o(i.USART_SetAddr), (20 bytes).
Removing n32wb03x_usart.o(i.USART_SetGuardTime), (16 bytes).
Removing n32wb03x_usart.o(i.USART_SetPrescaler), (18 bytes).
Removing n32wb03x_usart.o(i.USART_SetSmartCardNACK), (28 bytes).
Removing n32wb03x_usart.o(i.USART_StructInit), (24 bytes).
Removing n32wb03x_dma.o(.emb_text), (8 bytes).
Removing n32wb03x_dma.o(i.DMA_ClearFlag), (4 bytes).
Removing n32wb03x_dma.o(i.DMA_ClrIntPendingBit), (4 bytes).
Removing n32wb03x_dma.o(i.DMA_ConfigInt), (20 bytes).
Removing n32wb03x_dma.o(i.DMA_GetFlagStatus), (26 bytes).
Removing n32wb03x_dma.o(i.DMA_GetIntStatus), (26 bytes).
Removing n32wb03x_dma.o(i.DMA_SetCurrDataCounter), (4 bytes).
Removing n32wb03x_dma.o(i.DMA_StructInit), (26 bytes).
Removing n32wb03x_qflash.o(.emb_text), (8 bytes).
Removing n32wb03x_qflash.o(i.Qflash_Read), (68 bytes).
Removing n32wb03x_gpio.o(i.__ARM_common_switch8), (28 bytes).
8 unused section(s) (total 736 bytes) removed from the image.
98 unused section(s) (total 3926 bytes) removed from the image.
==============================================================================
@ -73,28 +371,66 @@ Image Symbol Table
Symbol Name Value Ov Type Size Object(Section)
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalpha_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 iscntrl_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isprint_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_o.o ABSOLUTE
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE
../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
../clib/microlib/errno.c 0x00000000 Number 0 errno.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
../clib/microlib/string/memcmp.c 0x00000000 Number 0 memcmp.o ABSOLUTE
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE
../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE
../clib/microlib/string/strcmp.c 0x00000000 Number 0 strcmp.o ABSOLUTE
../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE
../clib/scanf.c 0x00000000 Number 0 _strtoul.o ABSOLUTE
../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE
../clib/scanf.c 0x00000000 Number 0 strtoul.o ABSOLUTE
..\..\mcm-ddc-ble\src\app_bootset.c 0x00000000 Number 0 app_bootset.o ABSOLUTE
..\..\mcm-ddc-ble\src\app_ota.c 0x00000000 Number 0 app_ota.o ABSOLUTE
..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\CMSIS\device\startup\startup_n32wb03x.s 0x00000000 Number 0 startup_n32wb03x.o ABSOLUTE
..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\CMSIS\device\system_n32wb03x.c 0x00000000 Number 0 system_n32wb03x.o ABSOLUTE
..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_dma.c 0x00000000 Number 0 n32wb03x_dma.o ABSOLUTE
..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_gpio.c 0x00000000 Number 0 n32wb03x_gpio.o ABSOLUTE
..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_qflash.c 0x00000000 Number 0 n32wb03x_qflash.o ABSOLUTE
..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_rcc.c 0x00000000 Number 0 n32wb03x_rcc.o ABSOLUTE
..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_usart.c 0x00000000 Number 0 n32wb03x_usart.o ABSOLUTE
..\\..\\mcm-ddc-ble\\src\\app_bootset.c 0x00000000 Number 0 app_bootset.o ABSOLUTE
..\\..\\mcm-ddc-ble\\src\\app_ota.c 0x00000000 Number 0 app_ota.o ABSOLUTE
..\\..\\nations-tec\\N32WB03x_SDK_V2.0.0\\firmware\\CMSIS\\device\\system_n32wb03x.c 0x00000000 Number 0 system_n32wb03x.o ABSOLUTE
..\\..\\nations-tec\\N32WB03x_SDK_V2.0.0\\firmware\\n32wb03x_std_periph_driver\\src\\n32wb03x_dma.c 0x00000000 Number 0 n32wb03x_dma.o ABSOLUTE
..\\..\\nations-tec\\N32WB03x_SDK_V2.0.0\\firmware\\n32wb03x_std_periph_driver\\src\\n32wb03x_gpio.c 0x00000000 Number 0 n32wb03x_gpio.o ABSOLUTE
..\\..\\nations-tec\\N32WB03x_SDK_V2.0.0\\firmware\\n32wb03x_std_periph_driver\\src\\n32wb03x_qflash.c 0x00000000 Number 0 n32wb03x_qflash.o ABSOLUTE
..\\..\\nations-tec\\N32WB03x_SDK_V2.0.0\\firmware\\n32wb03x_std_periph_driver\\src\\n32wb03x_rcc.c 0x00000000 Number 0 n32wb03x_rcc.o ABSOLUTE
..\\..\\nations-tec\\N32WB03x_SDK_V2.0.0\\firmware\\n32wb03x_std_periph_driver\\src\\n32wb03x_usart.c 0x00000000 Number 0 n32wb03x_usart.o ABSOLUTE
..\\src\\boot_cli.c 0x00000000 Number 0 boot_cli.o ABSOLUTE
..\\src\\boot_usart.c 0x00000000 Number 0 boot_usart.o ABSOLUTE
..\\src\\main.c 0x00000000 Number 0 main.o ABSOLUTE
..\src\boot_cli.c 0x00000000 Number 0 boot_cli.o ABSOLUTE
..\src\boot_crc32.c 0x00000000 Number 0 boot_crc32.o ABSOLUTE
..\src\boot_usart.c 0x00000000 Number 0 boot_usart.o ABSOLUTE
..\src\main.c 0x00000000 Number 0 main.o ABSOLUTE
dc.s 0x00000000 Number 0 dc.o ABSOLUTE
handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE
@ -115,26 +451,180 @@ Image Symbol Table
.text 0x01000100 Section 0 uidiv.o(.text)
.text 0x0100012c Section 0 memcpya.o(.text)
.text 0x01000150 Section 0 memseta.o(.text)
.text 0x01000174 Section 36 init.o(.text)
i.OTPTrim_Read 0x01000198 Section 0 system_n32wb03x.o(i.OTPTrim_Read)
i.RCC_HsiCalib 0x01000264 Section 0 system_n32wb03x.o(i.RCC_HsiCalib)
RCC_HsiCalib 0x01000265 Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib)
i.SystemInit 0x01000394 Section 0 system_n32wb03x.o(i.SystemInit)
i.SystemTrimValueRead 0x010004b0 Section 0 system_n32wb03x.o(i.SystemTrimValueRead)
i.__scatterload_copy 0x010004c4 Section 14 handlers.o(i.__scatterload_copy)
i.__scatterload_null 0x010004d2 Section 2 handlers.o(i.__scatterload_null)
i.__scatterload_zeroinit 0x010004d4 Section 14 handlers.o(i.__scatterload_zeroinit)
i.__set_PRIMASK 0x010004e2 Section 0 system_n32wb03x.o(i.__set_PRIMASK)
__set_PRIMASK 0x010004e3 Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK)
i.caiic_crc32 0x010004e8 Section 0 boot_crc32.o(i.caiic_crc32)
i.jump_to_app 0x0100052c Section 0 main.o(i.jump_to_app)
jump_to_app 0x0100052d Thumb Code 30 main.o(i.jump_to_app)
i.main 0x01000550 Section 0 main.o(i.main)
i.read_flash_ID 0x010005a4 Section 0 system_n32wb03x.o(i.read_flash_ID)
read_flash_ID 0x010005a5 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID)
.constdata 0x010005e8 Section 472 system_n32wb03x.o(.constdata)
.bss 0x20004000 Section 52 system_n32wb03x.o(.bss)
STACK 0x20004038 Section 2048 startup_n32wb03x.o(STACK)
.text 0x01000174 Section 0 strlen.o(.text)
.text 0x01000182 Section 0 strcmp.o(.text)
.text 0x0100019e Section 0 memcmp.o(.text)
.text 0x010001b8 Section 0 strtoul.o(.text)
.text 0x01000230 Section 0 ctype_o.o(.text)
.text 0x01000238 Section 0 _strtoul.o(.text)
.text 0x010002e0 Section 36 init.o(.text)
.text 0x01000304 Section 0 _chval.o(.text)
i.AppBootset_CmdAppswitch 0x01000324 Section 0 app_bootset.o(i.AppBootset_CmdAppswitch)
i.AppBootset_CmdBsdump 0x010005fc Section 0 app_bootset.o(i.AppBootset_CmdBsdump)
i.AppBootset_CmdBsset 0x0100061c Section 0 app_bootset.o(i.AppBootset_CmdBsset)
i.CmdDevInfo 0x01000914 Section 0 boot_cli.o(i.CmdDevInfo)
CmdDevInfo 0x01000915 Thumb Code 90 boot_cli.o(i.CmdDevInfo)
i.CmdHelp 0x010009f4 Section 0 boot_cli.o(i.CmdHelp)
CmdHelp 0x010009f5 Thumb Code 114 boot_cli.o(i.CmdHelp)
i.CmdOta 0x01000aa8 Section 0 boot_cli.o(i.CmdOta)
CmdOta 0x01000aa9 Thumb Code 20 boot_cli.o(i.CmdOta)
i.CmdReset 0x01000ac4 Section 0 boot_cli.o(i.CmdReset)
CmdReset 0x01000ac5 Thumb Code 34 boot_cli.o(i.CmdReset)
i.CmdUartInfo 0x01000b00 Section 0 boot_cli.o(i.CmdUartInfo)
CmdUartInfo 0x01000b01 Thumb Code 26 boot_cli.o(i.CmdUartInfo)
i.CmdVersion 0x01000bb0 Section 0 boot_cli.o(i.CmdVersion)
CmdVersion 0x01000bb1 Thumb Code 26 boot_cli.o(i.CmdVersion)
i.DMA_DeInit 0x01000c24 Section 0 n32wb03x_dma.o(i.DMA_DeInit)
i.DMA_EnableChannel 0x01000cc4 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel)
i.DMA_GetCurrDataCounter 0x01000ce0 Section 0 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
i.DMA_Init 0x01000ce8 Section 0 n32wb03x_dma.o(i.DMA_Init)
i.DMA_RequestRemap 0x01000d28 Section 0 n32wb03x_dma.o(i.DMA_RequestRemap)
i.GPIO_InitPeripheral 0x01000d38 Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
i.GPIO_InitStruct 0x01000e40 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct)
i.OTPTrim_Read 0x01000e5c Section 0 system_n32wb03x.o(i.OTPTrim_Read)
i.Qflash_Erase_Sector 0x01000f28 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
i.Qflash_Init 0x01000f64 Section 0 n32wb03x_qflash.o(i.Qflash_Init)
i.Qflash_Write 0x01000f9c Section 0 n32wb03x_qflash.o(i.Qflash_Write)
i.RCC_EnableAHBPeriphClk 0x01000fe0 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
i.RCC_EnableAPB2PeriphClk 0x01001000 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
i.RCC_GetClocksFreqValue 0x01001020 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
i.RCC_HsiCalib 0x010010c4 Section 0 system_n32wb03x.o(i.RCC_HsiCalib)
RCC_HsiCalib 0x010010c5 Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib)
i.SystemInit 0x010011f4 Section 0 system_n32wb03x.o(i.SystemInit)
i.SystemTrimValueRead 0x01001310 Section 0 system_n32wb03x.o(i.SystemTrimValueRead)
i.USART_Enable 0x01001324 Section 0 n32wb03x_usart.o(i.USART_Enable)
i.USART_EnableDMA 0x01001344 Section 0 n32wb03x_usart.o(i.USART_EnableDMA)
i.USART_GetFlagStatus 0x01001358 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus)
i.USART_Init 0x01001378 Section 0 n32wb03x_usart.o(i.USART_Init)
i.USART_SendData 0x0100142c Section 0 n32wb03x_usart.o(i.USART_SendData)
i.__aeabi_errno_addr 0x01001434 Section 0 errno.o(i.__aeabi_errno_addr)
i.__scatterload_copy 0x0100143c Section 14 handlers.o(i.__scatterload_copy)
i.__scatterload_null 0x0100144a Section 2 handlers.o(i.__scatterload_null)
i.__scatterload_zeroinit 0x0100144c Section 14 handlers.o(i.__scatterload_zeroinit)
i.__set_PRIMASK 0x0100145a Section 0 system_n32wb03x.o(i.__set_PRIMASK)
__set_PRIMASK 0x0100145b Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK)
i.__set_PRIMASK 0x01001460 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK)
__set_PRIMASK 0x01001461 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK)
i.app_ota_abort 0x01001468 Section 0 app_ota.o(i.app_ota_abort)
i.app_ota_chan_idle 0x010014a4 Section 0 app_ota.o(i.app_ota_chan_idle)
i.app_ota_chan_rx 0x010014b8 Section 0 app_ota.o(i.app_ota_chan_rx)
i.app_ota_chan_rx_uart 0x010015f8 Section 0 app_ota.o(i.app_ota_chan_rx_uart)
i.app_ota_handle_frame 0x0100161c Section 0 app_ota.o(i.app_ota_handle_frame)
i.app_ota_reset_poll 0x01001698 Section 0 app_ota.o(i.app_ota_reset_poll)
i.boot_cli_run 0x010016f4 Section 0 boot_cli.o(i.boot_cli_run)
i.boot_delay_ms 0x0100183c Section 0 boot_usart.o(i.boot_delay_ms)
i.boot_millis 0x01001854 Section 0 boot_usart.o(i.boot_millis)
i.boot_usart_init 0x0100187c Section 0 boot_usart.o(i.boot_usart_init)
i.boot_usart_read 0x0100198c Section 0 boot_usart.o(i.boot_usart_read)
i.boot_usart_rx_head 0x010019cc Section 0 boot_usart.o(i.boot_usart_rx_head)
boot_usart_rx_head 0x010019cd Thumb Code 18 boot_usart.o(i.boot_usart_rx_head)
i.boot_usart_write 0x010019e4 Section 0 boot_usart.o(i.boot_usart_write)
i.bootset_commit 0x01001a14 Section 0 app_bootset.o(i.bootset_commit)
bootset_commit 0x01001a15 Thumb Code 74 app_bootset.o(i.bootset_commit)
i.bootset_crc 0x01001a68 Section 0 app_bootset.o(i.bootset_crc)
bootset_crc 0x01001a69 Thumb Code 14 app_bootset.o(i.bootset_crc)
i.bootset_ensure_qflash 0x01001a78 Section 0 app_bootset.o(i.bootset_ensure_qflash)
bootset_ensure_qflash 0x01001a79 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash)
i.bootset_print 0x01001a94 Section 0 app_bootset.o(i.bootset_print)
bootset_print 0x01001a95 Thumb Code 98 app_bootset.o(i.bootset_print)
i.bootset_valid 0x01001c00 Section 0 app_bootset.o(i.bootset_valid)
bootset_valid 0x01001c01 Thumb Code 32 app_bootset.o(i.bootset_valid)
i.caiic_crc32 0x01001c24 Section 0 boot_crc32.o(i.caiic_crc32)
i.cli_exec_line 0x01001c68 Section 0 boot_cli.o(i.cli_exec_line)
cli_exec_line 0x01001c69 Thumb Code 162 boot_cli.o(i.cli_exec_line)
i.cli_printf 0x01001d34 Section 0 boot_cli.o(i.cli_printf)
i.cli_write 0x01001ed0 Section 0 boot_cli.o(i.cli_write)
i.image_sane 0x01001ee8 Section 0 main.o(i.image_sane)
image_sane 0x01001ee9 Thumb Code 44 main.o(i.image_sane)
i.jump_to_app 0x01001f1c Section 0 main.o(i.jump_to_app)
jump_to_app 0x01001f1d Thumb Code 30 main.o(i.jump_to_app)
i.main 0x01001f40 Section 0 main.o(i.main)
i.ota_crc16 0x010020c0 Section 0 app_ota.o(i.ota_crc16)
ota_crc16 0x010020c1 Thumb Code 68 app_ota.o(i.ota_crc16)
i.ota_erase_up_to 0x0100210c Section 0 app_ota.o(i.ota_erase_up_to)
ota_erase_up_to 0x0100210d Thumb Code 54 app_ota.o(i.ota_erase_up_to)
i.ota_on_begin 0x0100214c Section 0 app_ota.o(i.ota_on_begin)
ota_on_begin 0x0100214d Thumb Code 294 app_ota.o(i.ota_on_begin)
i.ota_on_data 0x010022bc Section 0 app_ota.o(i.ota_on_data)
ota_on_data 0x010022bd Thumb Code 396 app_ota.o(i.ota_on_data)
i.ota_on_end 0x01002464 Section 0 app_ota.o(i.ota_on_end)
ota_on_end 0x01002465 Thumb Code 326 app_ota.o(i.ota_on_end)
i.ota_program 0x010025d4 Section 0 app_ota.o(i.ota_program)
ota_program 0x010025d5 Thumb Code 46 app_ota.o(i.ota_program)
i.ota_rd32 0x0100260c Section 0 app_ota.o(i.ota_rd32)
ota_rd32 0x0100260d Thumb Code 24 app_ota.o(i.ota_rd32)
i.ota_respond 0x01002624 Section 0 app_ota.o(i.ota_respond)
ota_respond 0x01002625 Thumb Code 118 app_ota.o(i.ota_respond)
i.ota_uart_sink 0x010026a0 Section 0 app_ota.o(i.ota_uart_sink)
ota_uart_sink 0x010026a1 Thumb Code 22 app_ota.o(i.ota_uart_sink)
i.ota_update_bootsetting 0x010026bc Section 0 app_ota.o(i.ota_update_bootsetting)
ota_update_bootsetting 0x010026bd Thumb Code 174 app_ota.o(i.ota_update_bootsetting)
i.parse_u32 0x01002788 Section 0 app_bootset.o(i.parse_u32)
parse_u32 0x01002789 Thumb Code 46 app_bootset.o(i.parse_u32)
i.puts_boot 0x010027b6 Section 0 main.o(i.puts_boot)
puts_boot 0x010027b7 Thumb Code 24 main.o(i.puts_boot)
i.read_flash_ID 0x010027d0 Section 0 system_n32wb03x.o(i.read_flash_ID)
read_flash_ID 0x010027d1 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID)
i.str_pad 0x01002814 Section 0 boot_cli.o(i.str_pad)
str_pad 0x01002815 Thumb Code 78 boot_cli.o(i.str_pad)
i.u32_to_str 0x01002862 Section 0 boot_cli.o(i.u32_to_str)
u32_to_str 0x01002863 Thumb Code 108 boot_cli.o(i.u32_to_str)
.constdata 0x010028ce Section 472 system_n32wb03x.o(.constdata)
.constdata 0x01002aa8 Section 108 boot_cli.o(.constdata)
s_cmds 0x01002aa8 Data 108 boot_cli.o(.constdata)
.constdata 0x01002b14 Section 12 n32wb03x_rcc.o(.constdata)
s_ApbPresTable 0x01002b14 Data 8 n32wb03x_rcc.o(.constdata)
s_AhbPresTable 0x01002b1c Data 4 n32wb03x_rcc.o(.constdata)
.constdata 0x01002b20 Section 804 n32wb03x_qflash.o(.constdata)
.constdata 0x01002e44 Section 129 ctype_o.o(.constdata)
.constdata 0x01002ec8 Section 4 ctype_o.o(.constdata)
table 0x01002ec8 Data 4 ctype_o.o(.constdata)
.conststring 0x01002ecc Section 666 boot_cli.o(.conststring)
.conststring 0x01003168 Section 145 app_bootset.o(.conststring)
.data 0x20004000 Section 4 system_n32wb03x.o(.data)
.data 0x20004004 Section 8 boot_usart.o(.data)
s_rxTail 0x20004004 Data 2 boot_usart.o(.data)
s_millis 0x20004008 Data 4 boot_usart.o(.data)
.data 0x2000400c Section 1 boot_cli.o(.data)
s_otaMode 0x2000400c Data 1 boot_cli.o(.data)
.data 0x20004010 Section 61 app_ota.o(.data)
s_active 0x20004010 Data 1 app_ota.o(.data)
s_target_base 0x20004014 Data 4 app_ota.o(.data)
s_total_size 0x20004018 Data 4 app_ota.o(.data)
s_image_crc32 0x2000401c Data 4 app_ota.o(.data)
s_version 0x20004020 Data 4 app_ota.o(.data)
s_offset 0x20004024 Data 4 app_ota.o(.data)
s_prog 0x20004028 Data 4 app_ota.o(.data)
s_erased 0x2000402c Data 4 app_ota.o(.data)
s_word_buf 0x20004030 Data 4 app_ota.o(.data)
s_word_fill 0x20004034 Data 4 app_ota.o(.data)
s_qflash_ready 0x20004038 Data 1 app_ota.o(.data)
s_rsp_consumed 0x20004039 Data 1 app_ota.o(.data)
s_reset_pending 0x2000403a Data 1 app_ota.o(.data)
s_reset_stamp 0x2000403c Data 4 app_ota.o(.data)
s_rsp_sink 0x20004040 Data 4 app_ota.o(.data)
s_stream 0x20004044 Data 1 app_ota.o(.data)
s_bad_state_sent 0x20004045 Data 1 app_ota.o(.data)
s_uart_exit_req 0x20004046 Data 1 app_ota.o(.data)
s_chanHave 0x20004048 Data 2 app_ota.o(.data)
s_chanNeed 0x2000404a Data 2 app_ota.o(.data)
s_chanState 0x2000404c Data 1 app_ota.o(.data)
.data 0x2000404d Section 1 app_bootset.o(.data)
s_qflash_ready 0x2000404d Data 1 app_bootset.o(.data)
.data 0x20004050 Section 12 n32wb03x_qflash.o(.data)
.data 0x2000405c Section 4 errno.o(.data)
_errno 0x2000405c Data 4 errno.o(.data)
.bss 0x20004060 Section 52 system_n32wb03x.o(.bss)
.bss 0x20004094 Section 3072 boot_usart.o(.bss)
s_rxRing 0x20004094 Data 3072 boot_usart.o(.bss)
.bss 0x20004c94 Section 176 boot_cli.o(.bss)
s_txBuf 0x20004c94 Data 96 boot_cli.o(.bss)
s_line 0x20004cf4 Data 80 boot_cli.o(.bss)
.bss 0x20004d44 Section 487 app_ota.o(.bss)
s_chanBuf 0x20004d44 Data 487 app_ota.o(.bss)
.bss 0x20004f2c Section 808 n32wb03x_qflash.o(.bss)
ram_qflash_cmd 0x20004f2c Data 808 n32wb03x_qflash.o(.bss)
STACK 0x20005258 Section 2048 startup_n32wb03x.o(STACK)
Global Symbols
@ -148,6 +638,7 @@ Image Symbol Table
_clock_init - Undefined Weak Reference
_microlib_exit - Undefined Weak Reference
__Vectors_Size 0x000000c0 Number 0 startup_n32wb03x.o ABSOLUTE
Image$$ER_IROM1$$Base 0x01000000 Number 0 anon$$obj.o ABSOLUTE
__Vectors 0x01000000 Data 4 startup_n32wb03x.o(RESET)
__Vectors_End 0x010000c0 Data 0 startup_n32wb03x.o(RESET)
__main 0x010000c1 Thumb Code 0 entry.o(.ARM.Collect$$$$00000000)
@ -212,22 +703,72 @@ Image Symbol Table
__aeabi_memclr4 0x0100015f Thumb Code 0 memseta.o(.text)
__aeabi_memclr8 0x0100015f Thumb Code 0 memseta.o(.text)
_memset$wrapper 0x01000163 Thumb Code 18 memseta.o(.text)
__scatterload 0x01000175 Thumb Code 28 init.o(.text)
__scatterload_rt2 0x01000175 Thumb Code 0 init.o(.text)
OTPTrim_Read 0x01000199 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read)
SystemInit 0x01000395 Thumb Code 250 system_n32wb03x.o(i.SystemInit)
SystemTrimValueRead 0x010004b1 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead)
__scatterload_copy 0x010004c5 Thumb Code 14 handlers.o(i.__scatterload_copy)
__scatterload_null 0x010004d3 Thumb Code 2 handlers.o(i.__scatterload_null)
__scatterload_zeroinit 0x010004d5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
caiic_crc32 0x010004e9 Thumb Code 62 boot_crc32.o(i.caiic_crc32)
main 0x01000551 Thumb Code 72 main.o(i.main)
TRIM_READ_CMD_CODE 0x010005e8 Data 320 system_n32wb03x.o(.constdata)
CMD_RDID 0x01000728 Data 152 system_n32wb03x.o(.constdata)
Region$$Table$$Base 0x010007c0 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x010007d0 Number 0 anon$$obj.o(Region$$Table)
trim_stored 0x20004000 Data 52 system_n32wb03x.o(.bss)
__initial_sp 0x20004838 Data 0 startup_n32wb03x.o(STACK)
strlen 0x01000175 Thumb Code 14 strlen.o(.text)
strcmp 0x01000183 Thumb Code 28 strcmp.o(.text)
memcmp 0x0100019f Thumb Code 26 memcmp.o(.text)
strtoul 0x010001b9 Thumb Code 118 strtoul.o(.text)
__rt_ctype_table 0x01000231 Thumb Code 4 ctype_o.o(.text)
_strtoul 0x01000239 Thumb Code 166 _strtoul.o(.text)
__scatterload 0x010002e1 Thumb Code 28 init.o(.text)
__scatterload_rt2 0x010002e1 Thumb Code 0 init.o(.text)
_chval 0x01000305 Thumb Code 30 _chval.o(.text)
AppBootset_CmdAppswitch 0x01000325 Thumb Code 282 app_bootset.o(i.AppBootset_CmdAppswitch)
AppBootset_CmdBsdump 0x010005fd Thumb Code 28 app_bootset.o(i.AppBootset_CmdBsdump)
AppBootset_CmdBsset 0x0100061d Thumb Code 348 app_bootset.o(i.AppBootset_CmdBsset)
DMA_DeInit 0x01000c25 Thumb Code 152 n32wb03x_dma.o(i.DMA_DeInit)
DMA_EnableChannel 0x01000cc5 Thumb Code 24 n32wb03x_dma.o(i.DMA_EnableChannel)
DMA_GetCurrDataCounter 0x01000ce1 Thumb Code 8 n32wb03x_dma.o(i.DMA_GetCurrDataCounter)
DMA_Init 0x01000ce9 Thumb Code 58 n32wb03x_dma.o(i.DMA_Init)
DMA_RequestRemap 0x01000d29 Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap)
GPIO_InitPeripheral 0x01000d39 Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
GPIO_InitStruct 0x01000e41 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct)
OTPTrim_Read 0x01000e5d Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read)
Qflash_Erase_Sector 0x01000f29 Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
Qflash_Init 0x01000f65 Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init)
Qflash_Write 0x01000f9d Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write)
RCC_EnableAHBPeriphClk 0x01000fe1 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
RCC_EnableAPB2PeriphClk 0x01001001 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
RCC_GetClocksFreqValue 0x01001021 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
SystemInit 0x010011f5 Thumb Code 250 system_n32wb03x.o(i.SystemInit)
SystemTrimValueRead 0x01001311 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead)
USART_Enable 0x01001325 Thumb Code 26 n32wb03x_usart.o(i.USART_Enable)
USART_EnableDMA 0x01001345 Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA)
USART_GetFlagStatus 0x01001359 Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus)
USART_Init 0x01001379 Thumb Code 162 n32wb03x_usart.o(i.USART_Init)
USART_SendData 0x0100142d Thumb Code 8 n32wb03x_usart.o(i.USART_SendData)
__aeabi_errno_addr 0x01001435 Thumb Code 4 errno.o(i.__aeabi_errno_addr)
__rt_errno_addr 0x01001435 Thumb Code 0 errno.o(i.__aeabi_errno_addr)
__scatterload_copy 0x0100143d Thumb Code 14 handlers.o(i.__scatterload_copy)
__scatterload_null 0x0100144b Thumb Code 2 handlers.o(i.__scatterload_null)
__scatterload_zeroinit 0x0100144d Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
app_ota_abort 0x01001469 Thumb Code 32 app_ota.o(i.app_ota_abort)
app_ota_chan_idle 0x010014a5 Thumb Code 12 app_ota.o(i.app_ota_chan_idle)
app_ota_chan_rx 0x010014b9 Thumb Code 298 app_ota.o(i.app_ota_chan_rx)
app_ota_chan_rx_uart 0x010015f9 Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart)
app_ota_handle_frame 0x0100161d Thumb Code 106 app_ota.o(i.app_ota_handle_frame)
app_ota_reset_poll 0x01001699 Thumb Code 70 app_ota.o(i.app_ota_reset_poll)
boot_cli_run 0x010016f5 Thumb Code 220 boot_cli.o(i.boot_cli_run)
boot_delay_ms 0x0100183d Thumb Code 24 boot_usart.o(i.boot_delay_ms)
boot_millis 0x01001855 Thumb Code 30 boot_usart.o(i.boot_millis)
boot_usart_init 0x0100187d Thumb Code 238 boot_usart.o(i.boot_usart_init)
boot_usart_read 0x0100198d Thumb Code 54 boot_usart.o(i.boot_usart_read)
boot_usart_write 0x010019e5 Thumb Code 42 boot_usart.o(i.boot_usart_write)
caiic_crc32 0x01001c25 Thumb Code 62 boot_crc32.o(i.caiic_crc32)
cli_printf 0x01001d35 Thumb Code 408 boot_cli.o(i.cli_printf)
cli_write 0x01001ed1 Thumb Code 22 boot_cli.o(i.cli_write)
main 0x01001f41 Thumb Code 190 main.o(i.main)
TRIM_READ_CMD_CODE 0x010028ce Data 320 system_n32wb03x.o(.constdata)
CMD_RDID 0x01002a0e Data 152 system_n32wb03x.o(.constdata)
const_qflash_cmd 0x01002b20 Data 804 n32wb03x_qflash.o(.constdata)
__ctype_table 0x01002e44 Data 129 ctype_o.o(.constdata)
Region$$Table$$Base 0x010031fc Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x0100321c Number 0 anon$$obj.o(Region$$Table)
SystemCoreClock 0x20004000 Data 4 system_n32wb03x.o(.data)
CMD_FLASH_SE 0x20004050 Data 4 n32wb03x_qflash.o(.data)
CMD_FLASH_WRITE 0x20004054 Data 4 n32wb03x_qflash.o(.data)
CMD_FLASH_READ 0x20004058 Data 4 n32wb03x_qflash.o(.data)
trim_stored 0x20004060 Data 52 system_n32wb03x.o(.bss)
__initial_sp 0x20005a58 Data 0 startup_n32wb03x.o(STACK)
@ -237,52 +778,158 @@ Memory Map of the image
Image Entry point : 0x010000c1
Load Region LR_IROM1 (Base: 0x01000000, Size: 0x000007d0, Max: 0x00004000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x01000000, Size: 0x0000327c, Max: 0x00004000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x000007d0, Max: 0x00004000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x0000321c, Max: 0x00004000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x01000000 0x01000000 0x000000c0 Data RO 3 RESET startup_n32wb03x.o
0x010000c0 0x010000c0 0x00000000 Code RO 222 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x010000c0 0x010000c0 0x00000004 Code RO 233 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x010000c4 0x010000c4 0x00000004 Code RO 236 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x010000c8 0x010000c8 0x00000000 Code RO 238 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x010000c8 0x010000c8 0x00000000 Code RO 240 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x010000c8 0x010000c8 0x00000008 Code RO 241 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x010000d0 0x010000d0 0x00000000 Code RO 243 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x010000d0 0x010000d0 0x00000000 Code RO 245 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x010000d0 0x010000d0 0x00000004 Code RO 234 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x010000c0 0x010000c0 0x00000000 Code RO 1210 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x010000c0 0x010000c0 0x00000004 Code RO 1229 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x010000c4 0x010000c4 0x00000004 Code RO 1232 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x010000c8 0x010000c8 0x00000000 Code RO 1234 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x010000c8 0x010000c8 0x00000000 Code RO 1236 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x010000c8 0x010000c8 0x00000008 Code RO 1237 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x010000d0 0x010000d0 0x00000000 Code RO 1239 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x010000d0 0x010000d0 0x00000000 Code RO 1241 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x010000d0 0x010000d0 0x00000004 Code RO 1230 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x010000d4 0x010000d4 0x0000000e Code RO 10 .emb_text system_n32wb03x.o
0x010000e2 0x010000e2 0x00000002 PAD
0x010000e4 0x010000e4 0x0000001c Code RO 4 .text startup_n32wb03x.o
0x01000100 0x01000100 0x0000002c Code RO 225 .text mc_p.l(uidiv.o)
0x0100012c 0x0100012c 0x00000024 Code RO 227 .text mc_p.l(memcpya.o)
0x01000150 0x01000150 0x00000024 Code RO 229 .text mc_p.l(memseta.o)
0x01000174 0x01000174 0x00000024 Code RO 247 .text mc_p.l(init.o)
0x01000198 0x01000198 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o
0x01000264 0x01000264 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o
0x01000394 0x01000394 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o
0x010004b0 0x010004b0 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o
0x010004c4 0x010004c4 0x0000000e Code RO 251 i.__scatterload_copy mc_p.l(handlers.o)
0x010004d2 0x010004d2 0x00000002 Code RO 252 i.__scatterload_null mc_p.l(handlers.o)
0x010004d4 0x010004d4 0x0000000e Code RO 253 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x010004e2 0x010004e2 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o
0x010004e8 0x010004e8 0x00000044 Code RO 210 i.caiic_crc32 boot_crc32.o
0x0100052c 0x0100052c 0x00000024 Code RO 174 i.jump_to_app main.o
0x01000550 0x01000550 0x00000054 Code RO 175 i.main main.o
0x010005a4 0x010005a4 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o
0x010005e8 0x010005e8 0x000001d8 Data RO 23 .constdata system_n32wb03x.o
0x010007c0 0x010007c0 0x00000010 Data RO 249 Region$$Table anon$$obj.o
0x01000100 0x01000100 0x0000002c Code RO 1213 .text mc_p.l(uidiv.o)
0x0100012c 0x0100012c 0x00000024 Code RO 1215 .text mc_p.l(memcpya.o)
0x01000150 0x01000150 0x00000024 Code RO 1217 .text mc_p.l(memseta.o)
0x01000174 0x01000174 0x0000000e Code RO 1219 .text mc_p.l(strlen.o)
0x01000182 0x01000182 0x0000001c Code RO 1221 .text mc_p.l(strcmp.o)
0x0100019e 0x0100019e 0x0000001a Code RO 1223 .text mc_p.l(memcmp.o)
0x010001b8 0x010001b8 0x00000076 Code RO 1227 .text mc_p.l(strtoul.o)
0x0100022e 0x0100022e 0x00000002 PAD
0x01000230 0x01000230 0x00000008 Code RO 1243 .text mc_p.l(ctype_o.o)
0x01000238 0x01000238 0x000000a6 Code RO 1278 .text mc_p.l(_strtoul.o)
0x010002de 0x010002de 0x00000002 PAD
0x010002e0 0x010002e0 0x00000024 Code RO 1280 .text mc_p.l(init.o)
0x01000304 0x01000304 0x0000001e Code RO 1282 .text mc_p.l(_chval.o)
0x01000322 0x01000322 0x00000002 PAD
0x01000324 0x01000324 0x000002d8 Code RO 495 i.AppBootset_CmdAppswitch app_bootset.o
0x010005fc 0x010005fc 0x00000020 Code RO 496 i.AppBootset_CmdBsdump app_bootset.o
0x0100061c 0x0100061c 0x000002f8 Code RO 497 i.AppBootset_CmdBsset app_bootset.o
0x01000914 0x01000914 0x000000e0 Code RO 290 i.CmdDevInfo boot_cli.o
0x010009f4 0x010009f4 0x000000b4 Code RO 291 i.CmdHelp boot_cli.o
0x01000aa8 0x01000aa8 0x0000001c Code RO 292 i.CmdOta boot_cli.o
0x01000ac4 0x01000ac4 0x0000003c Code RO 293 i.CmdReset boot_cli.o
0x01000b00 0x01000b00 0x000000b0 Code RO 294 i.CmdUartInfo boot_cli.o
0x01000bb0 0x01000bb0 0x00000074 Code RO 295 i.CmdVersion boot_cli.o
0x01000c24 0x01000c24 0x000000a0 Code RO 1088 i.DMA_DeInit n32wb03x_dma.o
0x01000cc4 0x01000cc4 0x0000001c Code RO 1089 i.DMA_EnableChannel n32wb03x_dma.o
0x01000ce0 0x01000ce0 0x00000008 Code RO 1090 i.DMA_GetCurrDataCounter n32wb03x_dma.o
0x01000ce8 0x01000ce8 0x00000040 Code RO 1093 i.DMA_Init n32wb03x_dma.o
0x01000d28 0x01000d28 0x00000010 Code RO 1094 i.DMA_RequestRemap n32wb03x_dma.o
0x01000d38 0x01000d38 0x00000106 Code RO 800 i.GPIO_InitPeripheral n32wb03x_gpio.o
0x01000e3e 0x01000e3e 0x00000002 PAD
0x01000e40 0x01000e40 0x0000001c Code RO 801 i.GPIO_InitStruct n32wb03x_gpio.o
0x01000e5c 0x01000e5c 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o
0x01000f28 0x01000f28 0x0000003c Code RO 1167 i.Qflash_Erase_Sector n32wb03x_qflash.o
0x01000f64 0x01000f64 0x00000038 Code RO 1168 i.Qflash_Init n32wb03x_qflash.o
0x01000f9c 0x01000f9c 0x00000044 Code RO 1170 i.Qflash_Write n32wb03x_qflash.o
0x01000fe0 0x01000fe0 0x00000020 Code RO 576 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o
0x01001000 0x01001000 0x00000020 Code RO 580 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o
0x01001020 0x01001020 0x000000a4 Code RO 588 i.RCC_GetClocksFreqValue n32wb03x_rcc.o
0x010010c4 0x010010c4 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o
0x010011f4 0x010011f4 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o
0x01001310 0x01001310 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o
0x01001324 0x01001324 0x00000020 Code RO 922 i.USART_Enable n32wb03x_usart.o
0x01001344 0x01001344 0x00000014 Code RO 923 i.USART_EnableDMA n32wb03x_usart.o
0x01001358 0x01001358 0x0000001e Code RO 929 i.USART_GetFlagStatus n32wb03x_usart.o
0x01001376 0x01001376 0x00000002 PAD
0x01001378 0x01001378 0x000000b4 Code RO 931 i.USART_Init n32wb03x_usart.o
0x0100142c 0x0100142c 0x00000008 Code RO 934 i.USART_SendData n32wb03x_usart.o
0x01001434 0x01001434 0x00000008 Code RO 1271 i.__aeabi_errno_addr mc_p.l(errno.o)
0x0100143c 0x0100143c 0x0000000e Code RO 1286 i.__scatterload_copy mc_p.l(handlers.o)
0x0100144a 0x0100144a 0x00000002 Code RO 1287 i.__scatterload_null mc_p.l(handlers.o)
0x0100144c 0x0100144c 0x0000000e Code RO 1288 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x0100145a 0x0100145a 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o
0x01001460 0x01001460 0x00000006 Code RO 1171 i.__set_PRIMASK n32wb03x_qflash.o
0x01001466 0x01001466 0x00000002 PAD
0x01001468 0x01001468 0x0000003c Code RO 386 i.app_ota_abort app_ota.o
0x010014a4 0x010014a4 0x00000014 Code RO 387 i.app_ota_chan_idle app_ota.o
0x010014b8 0x010014b8 0x00000140 Code RO 388 i.app_ota_chan_rx app_ota.o
0x010015f8 0x010015f8 0x00000024 Code RO 389 i.app_ota_chan_rx_uart app_ota.o
0x0100161c 0x0100161c 0x0000007c Code RO 391 i.app_ota_handle_frame app_ota.o
0x01001698 0x01001698 0x0000005c Code RO 392 i.app_ota_reset_poll app_ota.o
0x010016f4 0x010016f4 0x00000148 Code RO 296 i.boot_cli_run boot_cli.o
0x0100183c 0x0100183c 0x00000018 Code RO 239 i.boot_delay_ms boot_usart.o
0x01001854 0x01001854 0x00000028 Code RO 240 i.boot_millis boot_usart.o
0x0100187c 0x0100187c 0x00000110 Code RO 241 i.boot_usart_init boot_usart.o
0x0100198c 0x0100198c 0x00000040 Code RO 242 i.boot_usart_read boot_usart.o
0x010019cc 0x010019cc 0x00000018 Code RO 243 i.boot_usart_rx_head boot_usart.o
0x010019e4 0x010019e4 0x00000030 Code RO 244 i.boot_usart_write boot_usart.o
0x01001a14 0x01001a14 0x00000054 Code RO 498 i.bootset_commit app_bootset.o
0x01001a68 0x01001a68 0x0000000e Code RO 499 i.bootset_crc app_bootset.o
0x01001a76 0x01001a76 0x00000002 PAD
0x01001a78 0x01001a78 0x0000001c Code RO 500 i.bootset_ensure_qflash app_bootset.o
0x01001a94 0x01001a94 0x0000016c Code RO 501 i.bootset_print app_bootset.o
0x01001c00 0x01001c00 0x00000024 Code RO 502 i.bootset_valid app_bootset.o
0x01001c24 0x01001c24 0x00000044 Code RO 226 i.caiic_crc32 boot_crc32.o
0x01001c68 0x01001c68 0x000000cc Code RO 297 i.cli_exec_line boot_cli.o
0x01001d34 0x01001d34 0x0000019c Code RO 298 i.cli_printf boot_cli.o
0x01001ed0 0x01001ed0 0x00000016 Code RO 299 i.cli_write boot_cli.o
0x01001ee6 0x01001ee6 0x00000002 PAD
0x01001ee8 0x01001ee8 0x00000034 Code RO 174 i.image_sane main.o
0x01001f1c 0x01001f1c 0x00000024 Code RO 175 i.jump_to_app main.o
0x01001f40 0x01001f40 0x00000180 Code RO 176 i.main main.o
0x010020c0 0x010020c0 0x0000004c Code RO 393 i.ota_crc16 app_ota.o
0x0100210c 0x0100210c 0x00000040 Code RO 394 i.ota_erase_up_to app_ota.o
0x0100214c 0x0100214c 0x00000170 Code RO 395 i.ota_on_begin app_ota.o
0x010022bc 0x010022bc 0x000001a8 Code RO 396 i.ota_on_data app_ota.o
0x01002464 0x01002464 0x00000170 Code RO 397 i.ota_on_end app_ota.o
0x010025d4 0x010025d4 0x00000038 Code RO 398 i.ota_program app_ota.o
0x0100260c 0x0100260c 0x00000018 Code RO 399 i.ota_rd32 app_ota.o
0x01002624 0x01002624 0x0000007c Code RO 400 i.ota_respond app_ota.o
0x010026a0 0x010026a0 0x0000001c Code RO 401 i.ota_uart_sink app_ota.o
0x010026bc 0x010026bc 0x000000cc Code RO 402 i.ota_update_bootsetting app_ota.o
0x01002788 0x01002788 0x0000002e Code RO 503 i.parse_u32 app_bootset.o
0x010027b6 0x010027b6 0x00000018 Code RO 177 i.puts_boot main.o
0x010027ce 0x010027ce 0x00000002 PAD
0x010027d0 0x010027d0 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o
0x01002814 0x01002814 0x0000004e Code RO 300 i.str_pad boot_cli.o
0x01002862 0x01002862 0x0000006c Code RO 301 i.u32_to_str boot_cli.o
0x010028ce 0x010028ce 0x000001d8 Data RO 23 .constdata system_n32wb03x.o
0x01002aa6 0x01002aa6 0x00000002 PAD
0x01002aa8 0x01002aa8 0x0000006c Data RO 303 .constdata boot_cli.o
0x01002b14 0x01002b14 0x0000000c Data RO 596 .constdata n32wb03x_rcc.o
0x01002b20 0x01002b20 0x00000324 Data RO 1173 .constdata n32wb03x_qflash.o
0x01002e44 0x01002e44 0x00000081 Data RO 1244 .constdata mc_p.l(ctype_o.o)
0x01002ec5 0x01002ec5 0x00000003 PAD
0x01002ec8 0x01002ec8 0x00000004 Data RO 1245 .constdata mc_p.l(ctype_o.o)
0x01002ecc 0x01002ecc 0x0000029a Data RO 304 .conststring boot_cli.o
0x01003166 0x01003166 0x00000002 PAD
0x01003168 0x01003168 0x00000091 Data RO 504 .conststring app_bootset.o
0x010031f9 0x010031f9 0x00000003 PAD
0x010031fc 0x010031fc 0x00000020 Data RO 1284 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x010007d0, Size: 0x00000838, Max: 0x0000c000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x0100321c, Size: 0x00001a58, Max: 0x0000c000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20004000 - 0x00000034 Zero RW 22 .bss system_n32wb03x.o
0x20004034 0x010007d0 0x00000004 PAD
0x20004038 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o
0x20004000 0x0100321c 0x00000004 Data RW 24 .data system_n32wb03x.o
0x20004004 0x01003220 0x00000008 Data RW 246 .data boot_usart.o
0x2000400c 0x01003228 0x00000001 Data RW 305 .data boot_cli.o
0x2000400d 0x01003229 0x00000003 PAD
0x20004010 0x0100322c 0x0000003d Data RW 404 .data app_ota.o
0x2000404d 0x01003269 0x00000001 Data RW 505 .data app_bootset.o
0x2000404e 0x0100326a 0x00000002 PAD
0x20004050 0x0100326c 0x0000000c Data RW 1174 .data n32wb03x_qflash.o
0x2000405c 0x01003278 0x00000004 Data RW 1274 .data mc_p.l(errno.o)
0x20004060 - 0x00000034 Zero RW 22 .bss system_n32wb03x.o
0x20004094 - 0x00000c00 Zero RW 245 .bss boot_usart.o
0x20004c94 - 0x000000b0 Zero RW 302 .bss boot_cli.o
0x20004d44 - 0x000001e7 Zero RW 403 .bss app_ota.o
0x20004f2b 0x0100327c 0x00000001 PAD
0x20004f2c - 0x00000328 Zero RW 1172 .bss n32wb03x_qflash.o
0x20005254 0x0100327c 0x00000004 PAD
0x20005258 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o
==============================================================================
@ -292,20 +939,32 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug Object Name
2092 1148 145 1 0 6739 app_bootset.o
2388 322 0 61 487 12597 app_ota.o
1936 628 774 1 176 15380 boot_cli.o
68 6 0 0 0 874 boot_crc32.o
120 18 0 0 0 3627 main.o
472 66 0 8 3072 4161 boot_usart.o
496 208 0 0 0 5011 main.o
276 18 0 0 0 4372 n32wb03x_dma.o
290 4 0 0 0 2252 n32wb03x_gpio.o
190 32 804 12 808 4258 n32wb03x_qflash.o
228 32 12 0 0 2848 n32wb03x_rcc.o
270 24 0 0 0 5093 n32wb03x_usart.o
28 8 192 0 2048 744 startup_n32wb03x.o
900 60 472 0 52 95112 system_n32wb03x.o
900 60 472 4 52 124580 system_n32wb03x.o
----------------------------------------------------------------------
1118 92 680 0 2104 100357 Object Totals
0 0 16 0 0 0 (incl. Generated)
2 0 0 0 4 0 (incl. Padding)
9648 2556 2438 92 6648 188909 Object Totals
0 0 32 0 0 0 (incl. Generated)
14 0 7 5 5 0 (incl. Padding)
----------------------------------------------------------------------
Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name
30 0 0 0 0 60 _chval.o
166 0 0 0 0 84 _strtoul.o
8 4 133 0 0 60 ctype_o.o
0 0 0 0 0 0 entry.o
0 0 0 0 0 0 entry10a.o
0 0 0 0 0 0 entry11a.o
@ -314,24 +973,29 @@ Image component sizes
0 0 0 0 0 0 entry7b.o
0 0 0 0 0 0 entry8b.o
8 4 0 0 0 0 entry9a.o
8 4 0 4 0 60 errno.o
30 0 0 0 0 0 handlers.o
36 8 0 0 0 68 init.o
26 0 0 0 0 72 memcmp.o
36 0 0 0 0 60 memcpya.o
36 0 0 0 0 100 memseta.o
28 0 0 0 0 68 strcmp.o
14 0 0 0 0 60 strlen.o
118 0 0 0 0 84 strtoul.o
44 0 0 0 0 72 uidiv.o
----------------------------------------------------------------------
202 16 0 0 0 300 Library Totals
0 0 0 0 0 0 (incl. Padding)
606 24 136 4 0 848 Library Totals
6 0 3 0 0 0 (incl. Padding)
----------------------------------------------------------------------
Code (inc. data) RO Data RW Data ZI Data Debug Library Name
202 16 0 0 0 300 mc_p.l
600 24 133 4 0 848 mc_p.l
----------------------------------------------------------------------
202 16 0 0 0 300 Library Totals
606 24 136 4 0 848 Library Totals
----------------------------------------------------------------------
@ -340,15 +1004,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
1320 108 680 0 2104 100317 Grand Totals
1320 108 680 0 2104 100317 ELF Image Totals
1320 108 680 0 0 0 ROM Totals
10254 2580 2574 96 6648 186425 Grand Totals
10254 2580 2574 96 6648 186425 ELF Image Totals
10254 2580 2574 96 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 2000 ( 1.95kB)
Total RW Size (RW Data + ZI Data) 2104 ( 2.05kB)
Total ROM Size (Code + RO Data + RW Data) 2000 ( 1.95kB)
Total RO Size (Code + RO Data) 12828 ( 12.53kB)
Total RW Size (RW Data + ZI Data) 6744 ( 6.59kB)
Total ROM Size (Code + RO Data + RW Data) 12924 ( 12.62kB)
==============================================================================

Binary file not shown.

View File

@ -3,9 +3,18 @@ Rebuild target 'caiic_boot'
assembling startup_n32wb03x.s...
compiling boot_crc32.c...
compiling main.c...
compiling boot_usart.c...
compiling system_n32wb03x.c...
compiling app_bootset.c...
compiling n32wb03x_gpio.c...
compiling n32wb03x_usart.c...
compiling n32wb03x_rcc.c...
compiling boot_cli.c...
compiling n32wb03x_dma.c...
compiling app_ota.c...
compiling n32wb03x_qflash.c...
linking...
Program Size: Code=1320 RO-data=680 RW-data=0 ZI-data=2104
Program Size: Code=10254 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).

View File

@ -337,9 +337,9 @@
<v6Rtti>0</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
<Define>N32WB03X, USE_STDPERIPH_DRIVER</Define>
<Define>N32WB03X, USE_STDPERIPH_DRIVER, BOOT_FIRMWARE</Define>
<Undefine></Undefine>
<IncludePath>..\src;..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\CMSIS\core;..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\CMSIS\device;..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\inc</IncludePath>
<IncludePath>..\src;..\..\mcm-ddc-ble\inc;..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\CMSIS\core;..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\CMSIS\device;..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\inc</IncludePath>
</VariousControls>
</Cads>
<Aads>
@ -413,6 +413,61 @@
<FileType>1</FileType>
<FilePath>..\src\boot_crc32.c</FilePath>
</File>
<File>
<FileName>boot_usart.c</FileName>
<FileType>1</FileType>
<FilePath>..\src\boot_usart.c</FilePath>
</File>
<File>
<FileName>boot_cli.c</FileName>
<FileType>1</FileType>
<FilePath>..\src\boot_cli.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>SHARED_APP</GroupName>
<Files>
<File>
<FileName>app_ota.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\mcm-ddc-ble\src\app_ota.c</FilePath>
</File>
<File>
<FileName>app_bootset.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\mcm-ddc-ble\src\app_bootset.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>STD_PERIPH</GroupName>
<Files>
<File>
<FileName>n32wb03x_rcc.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_rcc.c</FilePath>
</File>
<File>
<FileName>n32wb03x_gpio.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_gpio.c</FilePath>
</File>
<File>
<FileName>n32wb03x_usart.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_usart.c</FilePath>
</File>
<File>
<FileName>n32wb03x_dma.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_dma.c</FilePath>
</File>
<File>
<FileName>n32wb03x_qflash.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_qflash.c</FilePath>
</File>
</Files>
</Group>
</Groups>

436
Boot/src/boot_cli.c Normal file
View File

@ -0,0 +1,436 @@
/**
* @file boot_cli.c
* @brief Bootloader download-mode CLI: bare-metal polled line editor +
* command table, and the UART OTA binary frame mode.
*
* Wire-compatible with the application's UART CLI so that
* tools/ble_ota_update.py works unchanged against the bootloader:
* - prompt "caiic->" (the script's PROMPT marker)
* - "devinfo" prints "cur bank: APP<n>" (the boot's OTA target is the
* OTHER bank, exactly like the app's "write the inactive bank" rule)
* - "ota" prints the "[ota] binary mode ON" go-ahead marker, then the
* stream carries 0xCA OTA frames (engine: shared app_ota.c)
*
* No libc printf: cli_printf() below is a minimal formatter (%% %c %s %d
* %u %x %X, width, '-'/'0' pads, 'l' ignored - all integers are 32-bit).
*/
#include "cli_core.h" /* bootloader shim (Boot/src) */
#include "boot_usart.h"
#include "boot_version.h"
#include "app_bootset.h"
#include "app_ota.h"
#include "dfu_layout.h"
#include "boot_crc32.h"
#include "n32wb03x.h"
#include <string.h>
#include <stddef.h>
#include <stdarg.h>
#define CLI_TX_BUF_SIZE 96
#define CLI_LINE_SIZE 80
#define CLI_MAX_ARGS 8
#define OTA_IDLE_EXIT_MS 3000u /* binary mode fallback exit */
/* ------------------------------------------------------------------ */
/* Output (cli_core.h shim implementation) */
/* ------------------------------------------------------------------ */
void cli_write(const char* str)
{
boot_usart_write((const uint8_t*)str, (uint16_t)strlen(str));
}
/** Format v into out (NUL-terminated), least-significant first reversed. */
static void u32_to_str(uint32_t v, char* out, uint8_t base, int neg)
{
char tmp[11]; /* 10 digits + sign */
uint8_t n = 0;
do
{
uint32_t d = v % base;
tmp[n++] = (char)((d < 10u) ? ('0' + d) : ('A' + d - 10u));
v /= base;
} while (v != 0u);
if (neg)
{
tmp[n++] = '-';
}
while (n != 0u)
{
*out++ = tmp[--n];
}
*out = '\0';
}
static char* str_pad(char* out, const char* s, int width, uint8_t left, char pad)
{
int len = (int)strlen(s);
if (!left)
{
while (width-- > len)
{
*out++ = pad;
}
}
while (*s != '\0')
{
*out++ = *s++;
}
while (width-- > len)
{
*out++ = ' ';
}
return out;
}
void cli_printf(const char* fmt, ...)
{
static char s_txBuf[CLI_TX_BUF_SIZE];
char* out = s_txBuf;
va_list args;
va_start(args, fmt);
while (*fmt != '\0' && out < s_txBuf + CLI_TX_BUF_SIZE - 12)
{
char c = *fmt++;
if (c != '%')
{
*out++ = c;
continue;
}
{
uint8_t left = 0;
char pad = ' ';
int width = 0;
char num[12];
char spec;
if (*fmt == '-')
{
left = 1;
fmt++;
}
if (*fmt == '0')
{
pad = '0';
fmt++;
}
while (*fmt >= '0' && *fmt <= '9')
{
width = width * 10 + (*fmt++ - '0');
}
if (*fmt == 'l')
{
fmt++; /* 32-bit already: %lu == %u here */
}
spec = *fmt;
if (spec != '\0')
{
fmt++;
}
switch (spec)
{
case 's':
out = str_pad(out, va_arg(args, const char*), width, left, ' ');
break;
case 'c':
*out++ = (char)va_arg(args, int);
break;
case 'd':
{
long v = va_arg(args, long);
u32_to_str((uint32_t)((v < 0) ? -v : v), num, 10, v < 0);
out = str_pad(out, num, width, left, pad);
break;
}
case 'u':
u32_to_str(va_arg(args, unsigned long), num, 10, 0);
out = str_pad(out, num, width, left, pad);
break;
case 'x':
case 'X':
u32_to_str(va_arg(args, unsigned long), num, 16, 0);
out = str_pad(out, num, width, left, pad);
break;
case '%':
*out++ = '%';
break;
default:
*out++ = '%';
if (spec != '\0')
{
*out++ = spec;
}
break;
}
}
}
va_end(args);
*out = '\0';
cli_write(s_txBuf);
}
/* ------------------------------------------------------------------ */
/* Commands */
/* ------------------------------------------------------------------ */
typedef void (*CliCmdHandler_t)(int argc, char* argv[]);
typedef struct
{
const char* name;
const char* help;
CliCmdHandler_t handler;
} CliCmd_t;
static uint8_t s_otaMode; /* 1 = OTA binary frame mode */
static void CmdHelp(int argc, char* argv[]);
static void CmdVersion(int argc, char* argv[])
{
(void)argc;
(void)argv;
cli_printf("bootloader version: %s (download mode)\r\n", BOOT_FW_VERSION);
cli_printf("SystemCoreClock = %lu Hz\r\n", (unsigned long)SystemCoreClock);
}
/**
* @brief "devinfo": report the bank the NEXT OTA would replace, using the
* same "cur bank: APP<n>" line the application prints - the PC
* updater picks the payload for the other bank, which is exactly
* the boot's OTA target rule (inactive bank; APP1 when the
* bootsetting record is invalid).
*/
static void CmdDevInfo(int argc, char* argv[])
{
const caiic_bootsetting_t* bs = (const caiic_bootsetting_t*)CAIIC_BOOTSETTING_ADDR;
uint32_t active;
uint8_t bs_ok;
(void)argc;
(void)argv;
bs_ok = (bs->magic == CAIIC_BOOT_MAGIC &&
bs->crc32 == caiic_crc32((const uint8_t*)bs,
(uint32_t)offsetof(caiic_bootsetting_t, crc32))) ? 1 : 0;
active = bs->active_bank;
cli_printf("bootloader: %s, download mode\r\n", BOOT_FW_VERSION);
if (!bs_ok)
{
cli_write("bootsetting: INVALID - OTA targets APP1\r\n");
active = CAIIC_ACTIVE_BANK2; /* report the bank NOT targeted */
}
cli_printf("cur bank: APP%lu\r\n", (unsigned long)active);
cli_printf("uptime: %lu s\r\n", (unsigned long)(boot_millis() / 1000u));
}
/**
* @brief "ota": enter the OTA binary frame mode (0xCA frames on the raw
* stream, framed RSP on TX). The marker line is the host's go-ahead.
* Exits: OTA_ABORT frame, 3 s idle, or reset after OTA_END.
*/
static void CmdOta(int argc, char* argv[])
{
(void)argc;
(void)argv;
cli_write("[ota] binary mode ON - send 0xCA OTA frames now\r\n"
"(ble_protocol.md section 6.6; OTA_ABORT or 3s idle exits)\r\n");
s_otaMode = 1;
}
static void CmdReset(int argc, char* argv[])
{
(void)argc;
(void)argv;
cli_write("resetting...\r\n");
boot_delay_ms(200u);
NVIC_SystemReset();
}
static void CmdUartInfo(int argc, char* argv[])
{
(void)argc;
(void)argv;
cli_write("usart1: TX=PB6 RX=PB7 (AF4)\r\n");
cli_write("baud: 460800, 8 data bits, no parity, 1 stop bit\r\n");
cli_write("flow control: none; tx: polled; rx: DMA ring (3KB, polled)\r\n");
}
static const CliCmd_t s_cmds[] = {
{"help", "help [cmd]: list commands / show one command's help", CmdHelp},
{"version", "show bootloader version", CmdVersion},
{"devinfo", "show boot info + cur bank (OTA writes the OTHER bank)", CmdDevInfo},
{"bsdump", "bsdump: show bootsetting record + crc check", AppBootset_CmdBsdump},
{"bsset", "bsset <field> <val>: write bootsetting field (careful!)", AppBootset_CmdBsset},
{"appsw", "appsw [1|2]: switch boot bank (crc verified) + reboot", AppBootset_CmdAppswitch},
{"ota", "ota: UART enters OTA binary frame mode (see help ota)", CmdOta},
{"reset", "reset: system reset (reboot)", CmdReset},
{"uartinfo", "uartinfo: show USART1 pins/baud/format", CmdUartInfo},
};
#define CLI_CMD_COUNT (sizeof(s_cmds) / sizeof(s_cmds[0]))
static void CmdHelp(int argc, char* argv[])
{
uint32_t i;
if (argc >= 2)
{
for (i = 0; i < CLI_CMD_COUNT; i++)
{
if (strcmp(argv[1], s_cmds[i].name) == 0)
{
cli_printf(" %-8s %s\r\n", s_cmds[i].name, s_cmds[i].help);
return;
}
}
cli_printf("unknown command: %s (try 'help')\r\n", argv[1]);
return;
}
cli_write("commands:\r\n");
for (i = 0; i < CLI_CMD_COUNT; i++)
{
cli_printf(" %-8s %s\r\n", s_cmds[i].name, s_cmds[i].help);
}
}
/* ------------------------------------------------------------------ */
/* Line parsing / dispatch */
/* ------------------------------------------------------------------ */
static int cli_exec_line(char* line)
{
char* argv[CLI_MAX_ARGS];
int argc = 0;
char* p = line;
uint32_t i;
while (*p != '\0' && argc < CLI_MAX_ARGS)
{
while (*p == ' ' || *p == '\t')
{
p++;
}
if (*p == '\0')
{
break;
}
argv[argc++] = p;
while (*p != '\0' && *p != ' ' && *p != '\t')
{
p++;
}
if (*p != '\0')
{
*p++ = '\0';
}
}
if (argc == 0)
{
return 0;
}
for (i = 0; i < CLI_CMD_COUNT; i++)
{
if (strcmp(argv[0], s_cmds[i].name) == 0)
{
s_cmds[i].handler(argc, argv);
return 0;
}
}
cli_printf("unknown command: %s (try 'help')\r\n", argv[0]);
return 1;
}
/* ------------------------------------------------------------------ */
/* Download-mode superloop */
/* ------------------------------------------------------------------ */
#define BOOT_CLI_PROMPT "caiic->" /* wire-compatible with the app CLI */
/**
* @brief Download-mode main loop. Never returns (leaves via reset only).
*/
void boot_cli_run(void)
{
static char s_line[CLI_LINE_SIZE];
uint8_t len = 0;
uint32_t otaLastRx = 0;
cli_write("\r\nCLI ready (bootloader download mode). Type 'help' for commands.\r\n"
BOOT_CLI_PROMPT);
for (;;)
{
uint8_t ch;
/* deferred post-OTA_END reset (waits until the RSP drained) */
app_ota_reset_poll();
/* OTA binary-mode fallback exit after 3 s of silence */
if (s_otaMode && (boot_millis() - otaLastRx) > OTA_IDLE_EXIT_MS)
{
s_otaMode = 0;
app_ota_chan_idle();
cli_write("\r\n[ota] binary mode OFF (idle)\r\n" BOOT_CLI_PROMPT);
len = 0;
}
if (boot_usart_read(&ch) == 0)
{
continue;
}
if (s_otaMode)
{
otaLastRx = boot_millis();
if (app_ota_chan_rx_uart(ch) != 0)
{
s_otaMode = 0;
cli_write("\r\n[ota] binary mode OFF (abort)\r\n" BOOT_CLI_PROMPT);
len = 0;
}
continue;
}
switch (ch)
{
case '\r':
case '\n':
cli_write("\r\n");
s_line[len] = '\0';
(void)cli_exec_line(s_line);
len = 0;
cli_write(BOOT_CLI_PROMPT);
break;
case '\b':
case 0x7F:
if (len != 0u)
{
len--;
cli_write("\b \b");
}
break;
default:
if (ch >= 0x20u && len < CLI_LINE_SIZE - 1u)
{
s_line[len++] = (char)ch;
boot_usart_write(&ch, 1); /* echo */
}
break;
}
}
}

152
Boot/src/boot_usart.c Normal file
View File

@ -0,0 +1,152 @@
/**
* @file boot_usart.c
* @brief Bootloader USART1 (bare metal): polling TX, RX DMA circular ring
* (polled, no interrupts) and a SysTick-polled millisecond time base.
*
* The RX DMA ring matters during OTA: Qflash erase/write disables interrupts
* for tens of ms per sector; at 460800 Bd that is ~2KB of inbound bytes the
* DMA keeps sampling while the CPU sits in the flash algorithm.
*/
#include "boot_usart.h"
#include "n32wb03x.h"
#define BOOT_USARTx USART1
#define BOOT_USART_CLK RCC_APB2_PERIPH_USART1
#define BOOT_USART_GPIO GPIOB
#define BOOT_USART_GPIO_CLK RCC_APB2_PERIPH_GPIOB
#define BOOT_USART_TX_PIN GPIO_PIN_6
#define BOOT_USART_RX_PIN GPIO_PIN_7
#define BOOT_USART_TX_GPIO_AF GPIO_AF4_USART1
#define BOOT_USART_RX_GPIO_AF GPIO_AF4_USART1
#define BOOT_USART_BAUDRATE 460800u
/* RX DMA channel: circular into the ring (remap required on this chip) */
#define BOOT_USART_RX_DMA_CH DMA_CH2
#define BOOT_USART_RX_DMA_REMAP DMA_REMAP_USART1_RX
#define BOOT_USART_DAT_ADDR (USART1_BASE + 0x04)
#define RX_RING_SIZE 3072u /* ~69ms @460800, covers flash erase */
static uint8_t s_rxRing[RX_RING_SIZE];
static volatile uint16_t s_rxTail; /* software drain position */
/* SysTick-polled millisecond base (no interrupt: the superloop polls
* boot_millis() far more often than 1ms, COUNTFLAG latches each wrap) */
static volatile uint32_t s_millis;
uint32_t boot_millis(void)
{
if ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0u)
{
/* reading CTRL clears COUNTFLAG; a slow poll (flash erase) can
* undercount - acceptable for the timeouts this drives */
s_millis++;
}
return s_millis;
}
void boot_delay_ms(uint32_t ms)
{
uint32_t start = boot_millis();
while ((boot_millis() - start) < ms)
{
}
}
/**
* @brief DMA ring head (hardware write position).
*/
static uint16_t boot_usart_rx_head(void)
{
return (uint16_t)(RX_RING_SIZE - DMA_GetCurrDataCounter(BOOT_USART_RX_DMA_CH));
}
/**
* @brief Initialize USART1 (460800 8N1) on PB6(TX)/PB7(RX), the RX DMA
* circular ring and the SysTick millisecond base.
*/
void boot_usart_init(void)
{
GPIO_InitType GPIO_InitStructure;
USART_InitType USART_InitStructure;
DMA_InitType DMA_InitStructure;
RCC_EnableAPB2PeriphClk(BOOT_USART_GPIO_CLK, ENABLE);
RCC_EnableAPB2PeriphClk(BOOT_USART_CLK, ENABLE);
GPIO_InitStruct(&GPIO_InitStructure);
GPIO_InitStructure.Pin = BOOT_USART_TX_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP;
GPIO_InitStructure.GPIO_Alternate = BOOT_USART_TX_GPIO_AF;
GPIO_InitPeripheral(BOOT_USART_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.Pin = BOOT_USART_RX_PIN;
GPIO_InitStructure.GPIO_Alternate = BOOT_USART_RX_GPIO_AF;
GPIO_InitPeripheral(BOOT_USART_GPIO, &GPIO_InitStructure);
USART_InitStructure.BaudRate = BOOT_USART_BAUDRATE;
USART_InitStructure.WordLength = USART_WL_8B;
USART_InitStructure.StopBits = USART_STPB_1;
USART_InitStructure.Parity = USART_PE_NO;
USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
USART_InitStructure.Mode = USART_MODE_RX | USART_MODE_TX;
USART_Init(BOOT_USARTx, &USART_InitStructure);
/* RX: DMA circular ring, drained by polling (no IDLE interrupt here) */
RCC_EnableAHBPeriphClk(RCC_AHB_PERIPH_DMA, ENABLE);
DMA_EnableChannel(BOOT_USART_RX_DMA_CH, DISABLE);
DMA_DeInit(BOOT_USART_RX_DMA_CH);
DMA_RequestRemap(BOOT_USART_RX_DMA_REMAP, DMA, BOOT_USART_RX_DMA_CH, ENABLE);
DMA_InitStructure.PeriphAddr = BOOT_USART_DAT_ADDR;
DMA_InitStructure.MemAddr = (uint32_t)s_rxRing;
DMA_InitStructure.Direction = DMA_DIR_PERIPH_SRC;
DMA_InitStructure.BufSize = RX_RING_SIZE;
DMA_InitStructure.PeriphInc = DMA_PERIPH_INC_DISABLE;
DMA_InitStructure.DMA_MemoryInc = DMA_MEM_INC_ENABLE;
DMA_InitStructure.PeriphDataSize = DMA_PERIPH_DATA_SIZE_BYTE;
DMA_InitStructure.MemDataSize = DMA_MemoryDataSize_Byte;
DMA_InitStructure.CircularMode = DMA_MODE_CIRCULAR;
DMA_InitStructure.Priority = DMA_PRIORITY_HIGH;
DMA_InitStructure.Mem2Mem = DMA_M2M_DISABLE;
DMA_Init(BOOT_USART_RX_DMA_CH, &DMA_InitStructure);
s_rxTail = 0;
DMA_EnableChannel(BOOT_USART_RX_DMA_CH, ENABLE);
USART_EnableDMA(BOOT_USARTx, USART_DMAREQ_RX, ENABLE);
USART_Enable(BOOT_USARTx, ENABLE);
/* 1ms tick: 64MHz / 1000; polled via COUNTFLAG, no interrupt */
SysTick->LOAD = 64000u - 1u;
SysTick->VAL = 0u;
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;
s_millis = 0;
}
void boot_usart_write(const uint8_t* data, uint16_t len)
{
uint16_t i;
for (i = 0; i < len; i++)
{
USART_SendData(BOOT_USARTx, data[i]);
while (USART_GetFlagStatus(BOOT_USARTx, USART_FLAG_TXDE) == RESET)
{
}
}
}
int boot_usart_read(uint8_t* ch)
{
uint16_t head = boot_usart_rx_head();
if (s_rxTail == head)
{
return 0;
}
*ch = s_rxRing[s_rxTail];
s_rxTail = (uint16_t)((s_rxTail + 1u) % RX_RING_SIZE);
return 1;
}

38
Boot/src/boot_usart.h Normal file
View File

@ -0,0 +1,38 @@
/**
* @file boot_usart.h
* @brief Bootloader USART1 support (bare metal, no RTOS, no interrupts):
* polling TX, RX via DMA circular ring polled through the DMA write
* pointer (bytes keep landing while Qflash erases with interrupts
* disabled), plus a SysTick-polled millisecond time base.
* TX=PB6, RX=PB7, 460800 8N1 (same as the application CLI).
*/
#ifndef __BOOT_USART_H__
#define __BOOT_USART_H__
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
/** USART1 + RX DMA ring + SysTick 1ms time base. */
void boot_usart_init(void);
/** Blocking polled TX of a buffer. */
void boot_usart_write(const uint8_t* data, uint16_t len);
/** Non-blocking RX: fetch one byte from the DMA ring. @return 1 on success. */
int boot_usart_read(uint8_t* ch);
/** Milliseconds since boot_usart_init() (SysTick COUNTFLAG polled; call
* often - the superloop and the download-mode window both poll it). */
uint32_t boot_millis(void);
/** Busy-wait delay in ms (uses boot_millis()). */
void boot_delay_ms(uint32_t ms);
#ifdef __cplusplus
}
#endif
#endif /* __BOOT_USART_H__ */

11
Boot/src/boot_version.h Normal file
View File

@ -0,0 +1,11 @@
/**
* @file boot_version.h
* @brief Bootloader version (independent from the application version in
* mcm-ddc-ble/inc/app_version.h; bump when the boot code changes).
*/
#ifndef __BOOT_VERSION_H__
#define __BOOT_VERSION_H__
#define BOOT_FW_VERSION "V1.01.00"
#endif /* __BOOT_VERSION_H__ */

24
Boot/src/cli_core.h Normal file
View File

@ -0,0 +1,24 @@
/**
* @file cli_core.h
* @brief Bootloader-side shim of the application's CLI output interface
* (mcm-ddc-ble/inc/cli_core.h). Only the output helpers exist here;
* the download-mode line editor and command table live in
* boot_cli.c. Lets shared modules (app_bootset.c, app_ota.c) compile
* unchanged in the BOOT_FIRMWARE build.
*/
#ifndef __CLI_CORE_H__
#define __CLI_CORE_H__
#ifdef __cplusplus
extern "C" {
#endif
/* Output helpers: straight out on USART1 (polling TX, boot_usart.c) */
void cli_write(const char* str);
void cli_printf(const char* fmt, ...);
#ifdef __cplusplus
}
#endif
#endif /* __CLI_CORE_H__ */

View File

@ -1,21 +1,40 @@
/**
* @file main.c
* @brief CAIIC minimal bootloader: reads the jump address from the
* @brief CAIIC bootloader: normally reads the jump address from the
* bootsetting record, remaps vectors and jumps to the application.
* With this release it also brings up USART1 and offers a
* DOWNLOAD MODE (UART CLI + OTA frame upgrade, see boot_cli.c) for
* production download and bricked-device recovery.
*
* No interrupts, no peripherals: flash is read through the memory map only.
* Download mode entry:
* 1. press Enter within the 2 s window printed in the boot banner, or
* 2. automatic when there is no jumpable image: the bootsetting record
* is invalid AND the APP1 vector table fails sanity (SP outside the
* usable SRAM window / reset PC outside APP1) - the recovery path.
*
* Policy: the application image CRC is verified during the OTA process
* (app_ota.c) BEFORE bootsetting is switched - boot itself never validates
* image contents, it only trusts the bootsetting sector integrity
* (app_ota.c) BEFORE bootsetting is switched - the normal boot path never
* validates image contents, it only trusts the bootsetting sector integrity
* (magic + own CRC32) and jumps straight to the recorded start_address.
* A blank/invalid record or an out-of-range address falls back to APP1.
* A blank/invalid record falls back to APP1.
*/
#include <stddef.h>
#include <stdint.h>
#include "n32wb03x.h"
#include "dfu_layout.h"
#include "boot_crc32.h"
#include "boot_usart.h"
#include "boot_version.h"
/* Download-mode entry window after the banner (ms) */
#define BOOT_DL_WINDOW_MS 2000u
/* Usable SRAM on this silicon: 0x20004000..0x2000BFFF (dev log §47) */
#define SRAM_SP_MIN 0x20004001u
#define SRAM_SP_MAX 0x2000C000u
extern void boot_cli_run(void); /* boot_cli.c - never returns */
/**
* @brief Remap the vector table to the app and jump to it. Never returns.
@ -42,6 +61,27 @@ static void jump_to_app(uint32_t base)
}
}
/**
* @brief Vector-table sanity: word0 = initial SP inside the usable SRAM
* window, word1 = reset PC inside [base, base + bank size).
*/
static int image_sane(uint32_t base)
{
uint32_t sp = *(volatile uint32_t*)base;
uint32_t pc = *(volatile uint32_t*)(base + 4);
return (sp >= SRAM_SP_MIN && sp <= SRAM_SP_MAX &&
pc >= base + 8u && pc < base + CAIIC_APP_BANK_SIZE) ? 1 : 0;
}
static void puts_boot(const char* s)
{
while (*s != '\0')
{
boot_usart_write((const uint8_t*)s++, 1);
}
}
/**
* @brief Main program.
*/
@ -49,6 +89,9 @@ int main(void)
{
const caiic_bootsetting_t* bs = (const caiic_bootsetting_t*)CAIIC_BOOTSETTING_ADDR;
uint32_t target = CAIIC_APP1_BASE; /* default when bootsetting invalid */
uint8_t bs_ok = 0;
uint32_t window_start;
uint8_t enter_dl = 0;
/* The jump address comes from the bootsetting record. Only the record's
* own integrity is checked (magic + its own CRC32); the app image itself
@ -59,13 +102,43 @@ int main(void)
{
const caiic_bank_t* bank = (bs->active_bank == CAIIC_ACTIVE_BANK2) ? &bs->bank2
: &bs->bank1;
bs_ok = 1;
if (bank->start_address >= CAIIC_APP1_BASE &&
bank->start_address < CAIIC_IMAGE_UPDATE_BASE + CAIIC_IMAGE_UPDATE_SIZE)
bank->start_address < CAIIC_APP2_BASE + CAIIC_APP_BANK_SIZE)
{
target = bank->start_address;
}
}
boot_usart_init();
puts_boot("\r\n[boot] CAIIC-BOOT " BOOT_FW_VERSION
" - Enter within 2s: download mode\r\n");
/* Entry 1: Enter key inside the window */
window_start = boot_millis();
while ((boot_millis() - window_start) < BOOT_DL_WINDOW_MS)
{
uint8_t ch;
if (boot_usart_read(&ch) != 0 && (ch == '\r' || ch == '\n'))
{
enter_dl = 1;
break;
}
}
/* Entry 2 (recovery): no jumpable image at all */
if (!enter_dl && !bs_ok && !image_sane(CAIIC_APP1_BASE))
{
enter_dl = 1;
puts_boot("[boot] no valid app image, forced download mode\r\n");
}
if (enter_dl)
{
puts_boot("[boot] DOWNLOAD MODE (ota/cli over UART, 'help' for commands)\r\n");
boot_cli_run(); /* never returns */
}
jump_to_app(target);
for (;;)

42
Boot/src/ota_wire.h Normal file
View File

@ -0,0 +1,42 @@
/**
* @file ota_wire.h
* @brief 0xCA frame protocol wire constants, shared by the application
* (mcm-ddc-ble, see app_ble_proto.h) and the bootloader download
* mode (Boot/). Single source of truth: values are protocol-fixed
* by docs/ble_protocol.md - never change a value, only add new ones.
*/
#ifndef __OTA_WIRE_H__
#define __OTA_WIRE_H__
#ifdef __cplusplus
extern "C" {
#endif
/* Frame types */
#define BLE_FRAME_SOF 0xCA /* frame start byte */
#define BLE_FRAME_HDR_LEN 5u /* SOF+TYPE+SEQ+LEN(2) */
#define BLE_FRAME_CLI_REQ 0x01 /* phone -> device: one command line */
#define BLE_FRAME_CLI_RSP 0x02 /* device -> phone: response text chunk */
#define BLE_FRAME_CLI_RSP_END 0x03 /* device -> phone: {status u8} */
#define BLE_FRAME_OTA_BEGIN 0x10 /* phone -> device: {size, crc32, version} */
#define BLE_FRAME_OTA_DATA 0x11 /* phone -> device: {offset, data...} */
#define BLE_FRAME_OTA_END 0x12 /* phone -> device: {crc32} */
#define BLE_FRAME_OTA_ABORT 0x13 /* phone -> device: abort session (no payload) */
#define BLE_FRAME_OTA_RSP 0x1F /* device -> phone: {cmd, status, offset} */
#define BLE_FRAME_INFO_QUERY 0x20 /* phone -> device: {item_id}*n (empty/0xFF = all) */
#define BLE_FRAME_INFO_RSP 0x21 /* device -> phone: TLV {id, len, value}*n */
/* OTA_RSP / generic status codes */
#define BLE_OTA_ST_OK 0
#define BLE_OTA_ST_BAD_FRAME 1
#define BLE_OTA_ST_BAD_STATE 2 /* bad state / bad offset sequence */
#define BLE_OTA_ST_SIZE_TOO_BIG 3
#define BLE_OTA_ST_CRC_FAIL 4
#define BLE_OTA_ST_FLASH_FAIL 5
#define BLE_OTA_ST_BANK_MISMATCH 6 /* image linked for the wrong bank */
#ifdef __cplusplus
}
#endif
#endif /* __OTA_WIRE_H__ */

View File

@ -217,6 +217,44 @@ version, flags u32}`,`flags` bit0 = STREAM。仅 UART 通道生效(BLE 通
主机参考实现:`tools\ble_ota_update.py` 的 `ota_session_uart_stream()`
(`--uart` 默认流式,`--lockstep` 回旧模式)。
## 6.8 Bootloader download 模式(Boot V1.01.00 起,搭配 APP ≥ V1.00.28)
Boot 不再只是跳转器:复位后初始化 USART1(460800 8N1,与 APP 一致),
打印 boot banner 并给 **2s 窗口**;窗口内收到回车即进入 **download 模式**。
此外当 bootsetting 无效 **且** APP1 向量表 sanity 检查(SP 在可用 SRAM
窗口内、复位 PC 落在 APP1 bank 内)不过时**自动进入**(救砖路径)。
download 模式为裸机 superloop(无 RTOS/BLE),提供 CLI 子集:
| 命令 | 说明 |
|---|---|
| `help` / `version` / `uartinfo` | 与 APP 同义(version 报 boot 自身版本) |
| `devinfo` | 打印 `cur bank: APP<n>`:n = bootsetting 的 active bank(记录无效时报告 APP2,表示 OTA 将写 APP1) |
| `bsdump` / `bsset` / `appsw` | 与 APP 完全相同(复用 app_bootset.c) |
| `ota` | 进入 0xCA 二进制帧模式,语义与 APP 完全一致:先打印 `[ota] binary mode ON` 标记行;OTA_ABORT 立即退出 / 3s 空闲退出 / OTA_END 成功且应答送达后复位 |
| `reset` | 复位 |
**与 APP 侧的唯一语义差异**——目标 bank 选择:Boot 自身不运行在任一
bank,OTA 目标 = bootsetting 的**非活动区**(OTA_END 后翻转 active 指向
新区);bootsetting 无效时目标 = APP1。`devinfo` 按同一规则报告
"cur bank",因此 **`tools\ble_ota_update.py --uart` 对 Boot 零改动可用**:
脚本读到的 cur bank 的"另一侧"恰是 boot 的写入目标。
实现要点(对后续维护者):
- OTA 引擎直接编译共享 `mcm-ddc-ble/src/app_ota.c`(`BOOT_FIRMWARE` 宏隔离
FreeRTOS/BLE 依赖,tick 用 SysTick 轮询 millis,UART sink 用阻塞轮询 TX);
帧常量单一来源为 `Boot/src/ota_wire.h`(APP 的 `app_ble_proto.h` 包含它);
- RX 为 DMA 环形缓冲(3KB,裸机轮询 DMA 写指针,无中断),保证扇区擦除
关中断窗口内不丢字节(§6.7 的同一前提);流式模式在 Boot 同样生效;
- Boot 尺寸预算 16KB:当前 ~12.9KB;`merge_image.py` 对 boot bin 超 16KB
硬卡(出包失败);
- Boot 不启用看门狗(避免 APP 启动早期被 Boot 遗留的 IWDG 误杀,APP 的
IWDG 由 §50 自管);download 模式为有人值守场景,卡死靠断电重启。
注意:**Boot 不能被 OTA 更新**(OTA 只写 APP bank);升级 Boot 只能 SWD
烧整片包。已出厂设备的旧 Boot(无 download 模式)不受影响,照常跳转。
## 6.5 维护命令:bootsetting 与 APP_DATA 参数区(V1.00.09 起,结构化访问;V1.00.10 起参数命令为 appget/appset;V1.00.11 起新增 reset/factory/uartrst/uartinfo)
bootsetting 与 APP_DATA 保留区(0x01006000/8KB)的读写以 CLI 命令形式提供,

View File

@ -1326,3 +1326,49 @@ APP2 链接的镜像发向 APP1 区。设备端 END 校验(向量表 Reset PC
(APP 自理,§50)。
- 风险提示:Boot 16KB 尺寸预算紧张(printf + USART/DMA/GPIO/RCC 驱动 +
qflash + OTA 引擎 + CLI),构建后核对 map 是否越界,越界则裁剪命令。
## 52. Boot download 模式:实现与实测(2026-09-05,Boot V1.01.00 / APP V1.00.28)
- 实现(设计见 §51,一处变更:Boot 内**不启用 IWDG**——download 模式遗留的
IWDG 会在 APP 启动早期(app_wdt_init 之前)误杀,APP 看门狗由 §50 自管;
download 为有人值守场景,卡死靠断电):
- `Boot/src/boot_usart.c/h`:USART1 460800 8N1 裸机驱动——TX 轮询、RX
**DMA CH2 环形 3KB**(裸机轮询 DMA 写指针,无中断;扇区擦除关中断窗口
不丢字节,流式 OTA 的前提)、SysTick 轮询 millis(COUNTFLAG,无中断);
- `Boot/src/ota_wire.h`:0xCA 帧类型/OTA 状态码的**单一来源**共享头,
APP 的 `app_ble_proto.h` 改为包含它(协议常量不再两处定义);
- `mcm-ddc-ble/src/app_ota.c`、`app_bootset.c`:**不复制副本**,加
`BOOT_FIRMWARE` 宏双构建——隔离 FreeRTOS tick(boot 用 millis)/
BLE legacy 应答路径/BLE 通道函数/bsp_usart(boot 用阻塞轮询 TX);
Boot 下 OTA 目标 bank = bootsetting 非活动区(记录无效时 APP1);
- `Boot/src/cli_core.h`(shim,仅 cli_write/cli_printf)+ `boot_cli.c`:
轮询行编辑器(回显/退格)+ 迷你 printf(无 libc printf 依赖,支持
%s/%-8s/%08lX 等)+ 命令子集(help/version/devinfo/bsdump/bsset/appsw/
ota/reset/uartinfo,后三个复用 app_bootset.c);
- `Boot/src/main.c`:banner(`[boot] CAIIC-BOOT V1.01.00 - Enter within
2s: download mode`)→ 2s 回车窗口;bootsetting 无效**且** APP1 向量表
sanity(SP∈0x20004001~0x2000C000、复位 PC∈APP1 bank)不过 → 自动进入
download 模式;否则按原逻辑跳转;
- uvprojx:加 boot_usart/boot_cli + 共享 app_ota/app_bootset + 5 个 SDK
驱动(rcc/gpio/usart/dma/qflash),宏 `BOOT_FIRMWARE`,include 路径
`..\src` 先于 `..\..\mcm-ddc-ble\inc`(shim 生效);
- `merge_image.py`:boot bin 超 16KB 硬卡 + boot 栈顶悬崖校验。
- **PC 脚本零改动兼容**的关键:boot CLI 提示符同为 `caiic->`、`devinfo`
按"OTA 目标的对侧"打印 `cur bank: APP<n>`、`ota` 打印同一
`[ota] binary mode ON` 标记行——`ble_ota_update.py --uart` 的探活/选包/
握手流程原样命中。
- 尺寸:Boot `Code=10254 RO-data=2574 RW-data=96 ZI-data=6648`,bin 12924B
(16KB 区余 3.4KB);`__initial_sp=0x20005A58`,远离 0x2000C000 悬崖。
APP 行为不变(V1.00.28,基线与 V1.00.27 相同)。
- 实测(COM4 460800 + SWD)全部 PASS:
1. 正常启动:窗口超时自动跳 APP(SWD 读 xTickCount 持续增长);
2. 窗口内回车 → download 模式,help/version/devinfo/bsdump 全部正常;
3. download 模式下 `ble_ota_update.py --uart` 流式写 **APP2**:
27.3 kB/s、2.3s、0 回退,复位后运行 APP2(PASS);
4. 再次 download 模式写 **APP1**(往返):同样 PASS,板子回到 APP1;
5. **救砖路径**:SWD 擦除 bootsetting + APP1 首扇区模拟变砖 → 复位后
自动进 download 模式(devinfo 报 "bootsetting: INVALID - OTA targets
APP1")→ 脚本写入 APP1 并重建 bootsetting → 复位进 APP1(PASS)。
- 协议文档:`docs/ble_protocol.md` §6.8。注意 **Boot 本身不能被 OTA 更新**
(OTA 只写 APP bank),升级 Boot 只能 SWD 整片包;已出厂设备的旧 Boot
无 download 模式,功能不受影响。

View File

@ -4879,122 +4879,122 @@ Memory Map of the image
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x01024000 0x01024000 0x000000c0 Data RO 3 RESET startup_n32wb03x.o
0x010240c0 0x010240c0 0x00000000 Code RO 6355 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x010240c0 0x010240c0 0x00000004 Code RO 6724 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x010240c4 0x010240c4 0x00000004 Code RO 6727 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x010240c8 0x010240c8 0x00000000 Code RO 6729 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x010240c8 0x010240c8 0x00000000 Code RO 6731 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x010240c8 0x010240c8 0x00000008 Code RO 6732 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x010240d0 0x010240d0 0x00000000 Code RO 6734 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x010240d0 0x010240d0 0x00000000 Code RO 6736 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x010240d0 0x010240d0 0x00000004 Code RO 6725 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x010240c0 0x010240c0 0x00000000 Code RO 6358 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x010240c0 0x010240c0 0x00000004 Code RO 6727 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x010240c4 0x010240c4 0x00000004 Code RO 6730 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x010240c8 0x010240c8 0x00000000 Code RO 6732 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x010240c8 0x010240c8 0x00000000 Code RO 6734 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x010240c8 0x010240c8 0x00000008 Code RO 6735 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x010240d0 0x010240d0 0x00000000 Code RO 6737 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x010240d0 0x010240d0 0x00000000 Code RO 6739 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x010240d0 0x010240d0 0x00000004 Code RO 6728 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x010240d4 0x010240d4 0x0000000e Code RO 10 .emb_text system_n32wb03x.o
0x010240e2 0x010240e2 0x00000002 PAD
0x010240e4 0x010240e4 0x0000000c Code RO 4672 .emb_text n32wb03x_it.o
0x010240f0 0x010240f0 0x00000078 Code RO 6286 .emb_text port.o
0x010240e4 0x010240e4 0x0000000c Code RO 4675 .emb_text n32wb03x_it.o
0x010240f0 0x010240f0 0x00000078 Code RO 6289 .emb_text port.o
0x01024168 0x01024168 0x0000001c Code RO 4 .text startup_n32wb03x.o
0x01024184 0x01024184 0x0000002c Code RO 6358 .text mc_p.l(uidiv.o)
0x010241b0 0x010241b0 0x00000028 Code RO 6360 .text mc_p.l(idiv.o)
0x010241d8 0x010241d8 0x00000060 Code RO 6362 .text mc_p.l(uldiv.o)
0x01024238 0x01024238 0x0000000c Code RO 6364 .text mc_p.l(tolower.o)
0x01024244 0x01024244 0x00000024 Code RO 6366 .text mc_p.l(rand.o)
0x01024268 0x01024268 0x00000024 Code RO 6369 .text mc_p.l(memcpya.o)
0x0102428c 0x0102428c 0x00000024 Code RO 6371 .text mc_p.l(memseta.o)
0x010242b0 0x010242b0 0x0000000e Code RO 6373 .text mc_p.l(strlen.o)
0x010242be 0x010242be 0x0000001c Code RO 6375 .text mc_p.l(strcmp.o)
0x010242da 0x010242da 0x00000014 Code RO 6377 .text mc_p.l(memchr.o)
0x010242ee 0x010242ee 0x0000001a Code RO 6379 .text mc_p.l(memcmp.o)
0x01024308 0x01024308 0x00000012 Code RO 6381 .text mc_p.l(strcpy.o)
0x0102431a 0x0102431a 0x0000001e Code RO 6383 .text mc_p.l(strncmp.o)
0x01024338 0x01024338 0x0000003c Code RO 6676 .text mc_p.l(__0sscanf.o)
0x01024374 0x01024374 0x00000374 Code RO 6678 .text mc_p.l(scanf_fp.o)
0x010246e8 0x010246e8 0x00000076 Code RO 6682 .text mc_p.l(strtoul.o)
0x0102475e 0x0102475e 0x000000b2 Code RO 6684 .text mf_p.l(fadd.o)
0x01024810 0x01024810 0x0000007a Code RO 6686 .text mf_p.l(fmul.o)
0x01024184 0x01024184 0x0000002c Code RO 6361 .text mc_p.l(uidiv.o)
0x010241b0 0x010241b0 0x00000028 Code RO 6363 .text mc_p.l(idiv.o)
0x010241d8 0x010241d8 0x00000060 Code RO 6365 .text mc_p.l(uldiv.o)
0x01024238 0x01024238 0x0000000c Code RO 6367 .text mc_p.l(tolower.o)
0x01024244 0x01024244 0x00000024 Code RO 6369 .text mc_p.l(rand.o)
0x01024268 0x01024268 0x00000024 Code RO 6372 .text mc_p.l(memcpya.o)
0x0102428c 0x0102428c 0x00000024 Code RO 6374 .text mc_p.l(memseta.o)
0x010242b0 0x010242b0 0x0000000e Code RO 6376 .text mc_p.l(strlen.o)
0x010242be 0x010242be 0x0000001c Code RO 6378 .text mc_p.l(strcmp.o)
0x010242da 0x010242da 0x00000014 Code RO 6380 .text mc_p.l(memchr.o)
0x010242ee 0x010242ee 0x0000001a Code RO 6382 .text mc_p.l(memcmp.o)
0x01024308 0x01024308 0x00000012 Code RO 6384 .text mc_p.l(strcpy.o)
0x0102431a 0x0102431a 0x0000001e Code RO 6386 .text mc_p.l(strncmp.o)
0x01024338 0x01024338 0x0000003c Code RO 6679 .text mc_p.l(__0sscanf.o)
0x01024374 0x01024374 0x00000374 Code RO 6681 .text mc_p.l(scanf_fp.o)
0x010246e8 0x010246e8 0x00000076 Code RO 6685 .text mc_p.l(strtoul.o)
0x0102475e 0x0102475e 0x000000b2 Code RO 6687 .text mf_p.l(fadd.o)
0x01024810 0x01024810 0x0000007a Code RO 6689 .text mf_p.l(fmul.o)
0x0102488a 0x0102488a 0x00000002 PAD
0x0102488c 0x0102488c 0x00000164 Code RO 6690 .text mf_p.l(dadd.o)
0x010249f0 0x010249f0 0x000000d0 Code RO 6692 .text mf_p.l(dmul.o)
0x01024ac0 0x01024ac0 0x000000f0 Code RO 6694 .text mf_p.l(ddiv.o)
0x01024bb0 0x01024bb0 0x0000002c Code RO 6696 .text mf_p.l(dscalb.o)
0x01024bdc 0x01024bdc 0x0000000e Code RO 6700 .text mf_p.l(ffltui.o)
0x0102488c 0x0102488c 0x00000164 Code RO 6693 .text mf_p.l(dadd.o)
0x010249f0 0x010249f0 0x000000d0 Code RO 6695 .text mf_p.l(dmul.o)
0x01024ac0 0x01024ac0 0x000000f0 Code RO 6697 .text mf_p.l(ddiv.o)
0x01024bb0 0x01024bb0 0x0000002c Code RO 6699 .text mf_p.l(dscalb.o)
0x01024bdc 0x01024bdc 0x0000000e Code RO 6703 .text mf_p.l(ffltui.o)
0x01024bea 0x01024bea 0x00000002 PAD
0x01024bec 0x01024bec 0x00000028 Code RO 6702 .text mf_p.l(dflti.o)
0x01024c14 0x01024c14 0x0000001c Code RO 6704 .text mf_p.l(dfltui.o)
0x01024c30 0x01024c30 0x0000001c Code RO 6706 .text mf_p.l(dfltul.o)
0x01024c4c 0x01024c4c 0x00000032 Code RO 6708 .text mf_p.l(ffixi.o)
0x01024bec 0x01024bec 0x00000028 Code RO 6705 .text mf_p.l(dflti.o)
0x01024c14 0x01024c14 0x0000001c Code RO 6707 .text mf_p.l(dfltui.o)
0x01024c30 0x01024c30 0x0000001c Code RO 6709 .text mf_p.l(dfltul.o)
0x01024c4c 0x01024c4c 0x00000032 Code RO 6711 .text mf_p.l(ffixi.o)
0x01024c7e 0x01024c7e 0x00000002 PAD
0x01024c80 0x01024c80 0x00000048 Code RO 6712 .text mf_p.l(dfixi.o)
0x01024cc8 0x01024cc8 0x00000040 Code RO 6714 .text mf_p.l(dfixul.o)
0x01024d08 0x01024d08 0x00000028 Code RO 6716 .text mf_p.l(f2d.o)
0x01024d30 0x01024d30 0x00000028 Code RO 6718 .text mf_p.l(cdcmple.o)
0x01024d58 0x01024d58 0x00000028 Code RO 6720 .text mf_p.l(cdrcmple.o)
0x01024d80 0x01024d80 0x00000038 Code RO 6722 .text mf_p.l(d2f.o)
0x01024db8 0x01024db8 0x0000007a Code RO 6738 .text mc_p.l(llmul.o)
0x01024e32 0x01024e32 0x00000020 Code RO 6740 .text mc_p.l(llshl.o)
0x01024e52 0x01024e52 0x00000022 Code RO 6742 .text mc_p.l(llushr.o)
0x01024e74 0x01024e74 0x00000026 Code RO 6744 .text mc_p.l(llsshr.o)
0x01024c80 0x01024c80 0x00000048 Code RO 6715 .text mf_p.l(dfixi.o)
0x01024cc8 0x01024cc8 0x00000040 Code RO 6717 .text mf_p.l(dfixul.o)
0x01024d08 0x01024d08 0x00000028 Code RO 6719 .text mf_p.l(f2d.o)
0x01024d30 0x01024d30 0x00000028 Code RO 6721 .text mf_p.l(cdcmple.o)
0x01024d58 0x01024d58 0x00000028 Code RO 6723 .text mf_p.l(cdrcmple.o)
0x01024d80 0x01024d80 0x00000038 Code RO 6725 .text mf_p.l(d2f.o)
0x01024db8 0x01024db8 0x0000007a Code RO 6741 .text mc_p.l(llmul.o)
0x01024e32 0x01024e32 0x00000020 Code RO 6743 .text mc_p.l(llshl.o)
0x01024e52 0x01024e52 0x00000022 Code RO 6745 .text mc_p.l(llushr.o)
0x01024e74 0x01024e74 0x00000026 Code RO 6747 .text mc_p.l(llsshr.o)
0x01024e9a 0x01024e9a 0x00000002 PAD
0x01024e9c 0x01024e9c 0x00000008 Code RO 6746 .text mc_p.l(ctype_o.o)
0x01024ea4 0x01024ea4 0x00000012 Code RO 6768 .text mc_p.l(isspace_o.o)
0x01024e9c 0x01024e9c 0x00000008 Code RO 6749 .text mc_p.l(ctype_o.o)
0x01024ea4 0x01024ea4 0x00000012 Code RO 6771 .text mc_p.l(isspace_o.o)
0x01024eb6 0x01024eb6 0x00000002 PAD
0x01024eb8 0x01024eb8 0x0000002c Code RO 6783 .text mc_p.l(scanf_char.o)
0x01024ee4 0x01024ee4 0x00000044 Code RO 6785 .text mc_p.l(_sgetc.o)
0x01024f28 0x01024f28 0x000000a6 Code RO 6787 .text mc_p.l(_strtoul.o)
0x01024eb8 0x01024eb8 0x0000002c Code RO 6786 .text mc_p.l(scanf_char.o)
0x01024ee4 0x01024ee4 0x00000044 Code RO 6788 .text mc_p.l(_sgetc.o)
0x01024f28 0x01024f28 0x000000a6 Code RO 6790 .text mc_p.l(_strtoul.o)
0x01024fce 0x01024fce 0x00000002 PAD
0x01024fd0 0x01024fd0 0x000000a4 Code RO 6789 .text mc_p.l(strtod.o)
0x01025074 0x01025074 0x00000000 Code RO 6791 .text mc_p.l(iusefp.o)
0x01025074 0x01025074 0x00000082 Code RO 6792 .text mf_p.l(fepilogue.o)
0x010250f6 0x010250f6 0x000000be Code RO 6794 .text mf_p.l(depilogue.o)
0x010251b4 0x010251b4 0x00000024 Code RO 6798 .text mc_p.l(init.o)
0x010251d8 0x010251d8 0x0000001e Code RO 6802 .text mc_p.l(_chval.o)
0x01024fd0 0x01024fd0 0x000000a4 Code RO 6792 .text mc_p.l(strtod.o)
0x01025074 0x01025074 0x00000000 Code RO 6794 .text mc_p.l(iusefp.o)
0x01025074 0x01025074 0x00000082 Code RO 6795 .text mf_p.l(fepilogue.o)
0x010250f6 0x010250f6 0x000000be Code RO 6797 .text mf_p.l(depilogue.o)
0x010251b4 0x010251b4 0x00000024 Code RO 6801 .text mc_p.l(init.o)
0x010251d8 0x010251d8 0x0000001e Code RO 6805 .text mc_p.l(_chval.o)
0x010251f6 0x010251f6 0x00000002 PAD
0x010251f8 0x010251f8 0x00000338 Code RO 6804 .text mc_p.l(_scanf.o)
0x01025530 0x01025530 0x00000056 Code RO 6811 .text mc_p.l(__dczerorl2.o)
0x010251f8 0x010251f8 0x00000338 Code RO 6807 .text mc_p.l(_scanf.o)
0x01025530 0x01025530 0x00000056 Code RO 6814 .text mc_p.l(__dczerorl2.o)
0x01025586 0x01025586 0x00000002 PAD
0x01025588 0x01025588 0x0000000c Ven RO 6813 Veneer$$Code anon$$obj.o
0x01025594 0x01025594 0x0000000c Ven RO 6814 Veneer$$Code anon$$obj.o
0x010255a0 0x010255a0 0x0000000c Ven RO 6815 Veneer$$Code anon$$obj.o
0x010255ac 0x010255ac 0x0000000c Ven RO 6816 Veneer$$Code anon$$obj.o
0x010255b8 0x010255b8 0x0000000c Ven RO 6817 Veneer$$Code anon$$obj.o
0x010255c4 0x010255c4 0x0000000c Ven RO 6818 Veneer$$Code anon$$obj.o
0x010255d0 0x010255d0 0x0000000c Ven RO 6819 Veneer$$Code anon$$obj.o
0x010255dc 0x010255dc 0x0000000c Ven RO 6820 Veneer$$Code anon$$obj.o
0x010255e8 0x010255e8 0x0000000c Ven RO 6821 Veneer$$Code anon$$obj.o
0x010255f4 0x010255f4 0x0000000c Ven RO 6822 Veneer$$Code anon$$obj.o
0x01025600 0x01025600 0x0000000c Ven RO 6823 Veneer$$Code anon$$obj.o
0x0102560c 0x0102560c 0x0000000c Ven RO 6824 Veneer$$Code anon$$obj.o
0x01025618 0x01025618 0x0000000c Ven RO 6825 Veneer$$Code anon$$obj.o
0x01025624 0x01025624 0x0000000c Ven RO 6826 Veneer$$Code anon$$obj.o
0x01025630 0x01025630 0x0000000c Ven RO 6827 Veneer$$Code anon$$obj.o
0x0102563c 0x0102563c 0x0000000c Ven RO 6828 Veneer$$Code anon$$obj.o
0x01025648 0x01025648 0x0000000c Ven RO 6829 Veneer$$Code anon$$obj.o
0x01025654 0x01025654 0x0000000c Ven RO 6830 Veneer$$Code anon$$obj.o
0x01025660 0x01025660 0x0000000c Ven RO 6831 Veneer$$Code anon$$obj.o
0x0102566c 0x0102566c 0x0000000c Ven RO 6832 Veneer$$Code anon$$obj.o
0x01025678 0x01025678 0x0000000c Ven RO 6833 Veneer$$Code anon$$obj.o
0x01025684 0x01025684 0x0000000c Ven RO 6834 Veneer$$Code anon$$obj.o
0x01025690 0x01025690 0x0000000c Ven RO 6835 Veneer$$Code anon$$obj.o
0x0102569c 0x0102569c 0x0000000c Ven RO 6836 Veneer$$Code anon$$obj.o
0x010256a8 0x010256a8 0x0000000c Ven RO 6837 Veneer$$Code anon$$obj.o
0x010256b4 0x010256b4 0x0000000c Ven RO 6838 Veneer$$Code anon$$obj.o
0x010256c0 0x010256c0 0x0000000c Ven RO 6839 Veneer$$Code anon$$obj.o
0x010256cc 0x010256cc 0x0000000c Ven RO 6840 Veneer$$Code anon$$obj.o
0x010256d8 0x010256d8 0x0000000c Ven RO 6841 Veneer$$Code anon$$obj.o
0x010256e4 0x010256e4 0x0000000c Ven RO 6842 Veneer$$Code anon$$obj.o
0x010256f0 0x010256f0 0x0000000c Ven RO 6843 Veneer$$Code anon$$obj.o
0x010256fc 0x010256fc 0x0000000c Ven RO 6844 Veneer$$Code anon$$obj.o
0x01025708 0x01025708 0x0000000c Ven RO 6845 Veneer$$Code anon$$obj.o
0x01025714 0x01025714 0x0000000c Ven RO 6846 Veneer$$Code anon$$obj.o
0x01025720 0x01025720 0x0000000c Ven RO 6847 Veneer$$Code anon$$obj.o
0x0102572c 0x0102572c 0x0000000c Ven RO 6848 Veneer$$Code anon$$obj.o
0x01025738 0x01025738 0x0000000c Ven RO 6849 Veneer$$Code anon$$obj.o
0x01025744 0x01025744 0x0000000c Ven RO 6850 Veneer$$Code anon$$obj.o
0x01025750 0x01025750 0x0000000c Ven RO 6851 Veneer$$Code anon$$obj.o
0x0102575c 0x0102575c 0x0000000c Ven RO 6852 Veneer$$Code anon$$obj.o
0x01025768 0x01025768 0x0000000c Ven RO 6853 Veneer$$Code anon$$obj.o
0x01025774 0x01025774 0x0000000c Ven RO 6854 Veneer$$Code anon$$obj.o
0x01025780 0x01025780 0x0000000c Ven RO 6855 Veneer$$Code anon$$obj.o
0x0102578c 0x0102578c 0x0000000c Ven RO 6856 Veneer$$Code anon$$obj.o
0x01025588 0x01025588 0x0000000c Ven RO 6816 Veneer$$Code anon$$obj.o
0x01025594 0x01025594 0x0000000c Ven RO 6817 Veneer$$Code anon$$obj.o
0x010255a0 0x010255a0 0x0000000c Ven RO 6818 Veneer$$Code anon$$obj.o
0x010255ac 0x010255ac 0x0000000c Ven RO 6819 Veneer$$Code anon$$obj.o
0x010255b8 0x010255b8 0x0000000c Ven RO 6820 Veneer$$Code anon$$obj.o
0x010255c4 0x010255c4 0x0000000c Ven RO 6821 Veneer$$Code anon$$obj.o
0x010255d0 0x010255d0 0x0000000c Ven RO 6822 Veneer$$Code anon$$obj.o
0x010255dc 0x010255dc 0x0000000c Ven RO 6823 Veneer$$Code anon$$obj.o
0x010255e8 0x010255e8 0x0000000c Ven RO 6824 Veneer$$Code anon$$obj.o
0x010255f4 0x010255f4 0x0000000c Ven RO 6825 Veneer$$Code anon$$obj.o
0x01025600 0x01025600 0x0000000c Ven RO 6826 Veneer$$Code anon$$obj.o
0x0102560c 0x0102560c 0x0000000c Ven RO 6827 Veneer$$Code anon$$obj.o
0x01025618 0x01025618 0x0000000c Ven RO 6828 Veneer$$Code anon$$obj.o
0x01025624 0x01025624 0x0000000c Ven RO 6829 Veneer$$Code anon$$obj.o
0x01025630 0x01025630 0x0000000c Ven RO 6830 Veneer$$Code anon$$obj.o
0x0102563c 0x0102563c 0x0000000c Ven RO 6831 Veneer$$Code anon$$obj.o
0x01025648 0x01025648 0x0000000c Ven RO 6832 Veneer$$Code anon$$obj.o
0x01025654 0x01025654 0x0000000c Ven RO 6833 Veneer$$Code anon$$obj.o
0x01025660 0x01025660 0x0000000c Ven RO 6834 Veneer$$Code anon$$obj.o
0x0102566c 0x0102566c 0x0000000c Ven RO 6835 Veneer$$Code anon$$obj.o
0x01025678 0x01025678 0x0000000c Ven RO 6836 Veneer$$Code anon$$obj.o
0x01025684 0x01025684 0x0000000c Ven RO 6837 Veneer$$Code anon$$obj.o
0x01025690 0x01025690 0x0000000c Ven RO 6838 Veneer$$Code anon$$obj.o
0x0102569c 0x0102569c 0x0000000c Ven RO 6839 Veneer$$Code anon$$obj.o
0x010256a8 0x010256a8 0x0000000c Ven RO 6840 Veneer$$Code anon$$obj.o
0x010256b4 0x010256b4 0x0000000c Ven RO 6841 Veneer$$Code anon$$obj.o
0x010256c0 0x010256c0 0x0000000c Ven RO 6842 Veneer$$Code anon$$obj.o
0x010256cc 0x010256cc 0x0000000c Ven RO 6843 Veneer$$Code anon$$obj.o
0x010256d8 0x010256d8 0x0000000c Ven RO 6844 Veneer$$Code anon$$obj.o
0x010256e4 0x010256e4 0x0000000c Ven RO 6845 Veneer$$Code anon$$obj.o
0x010256f0 0x010256f0 0x0000000c Ven RO 6846 Veneer$$Code anon$$obj.o
0x010256fc 0x010256fc 0x0000000c Ven RO 6847 Veneer$$Code anon$$obj.o
0x01025708 0x01025708 0x0000000c Ven RO 6848 Veneer$$Code anon$$obj.o
0x01025714 0x01025714 0x0000000c Ven RO 6849 Veneer$$Code anon$$obj.o
0x01025720 0x01025720 0x0000000c Ven RO 6850 Veneer$$Code anon$$obj.o
0x0102572c 0x0102572c 0x0000000c Ven RO 6851 Veneer$$Code anon$$obj.o
0x01025738 0x01025738 0x0000000c Ven RO 6852 Veneer$$Code anon$$obj.o
0x01025744 0x01025744 0x0000000c Ven RO 6853 Veneer$$Code anon$$obj.o
0x01025750 0x01025750 0x0000000c Ven RO 6854 Veneer$$Code anon$$obj.o
0x0102575c 0x0102575c 0x0000000c Ven RO 6855 Veneer$$Code anon$$obj.o
0x01025768 0x01025768 0x0000000c Ven RO 6856 Veneer$$Code anon$$obj.o
0x01025774 0x01025774 0x0000000c Ven RO 6857 Veneer$$Code anon$$obj.o
0x01025780 0x01025780 0x0000000c Ven RO 6858 Veneer$$Code anon$$obj.o
0x0102578c 0x0102578c 0x0000000c Ven RO 6859 Veneer$$Code anon$$obj.o
0x01025798 0x01025798 0x00000006 Code RO 192 i.ADC_ClearFlag n32wb03x_adc.o
0x0102579e 0x0102579e 0x0000000e Code RO 194 i.ADC_ConfigChannel n32wb03x_adc.o
0x010257ac 0x010257ac 0x00000054 Code RO 199 i.ADC_ConverValueToTemperature n32wb03x_adc.o
@ -5007,25 +5007,25 @@ Memory Map of the image
0x01025958 0x01025958 0x0000000e Code RO 213 i.ADC_GetFlagStatus n32wb03x_adc.o
0x01025966 0x01025966 0x00000002 PAD
0x01025968 0x01025968 0x00000018 Code RO 218 i.ADC_SetOverSampleCounter n32wb03x_adc.o
0x01025980 0x01025980 0x000002ec Code RO 5075 i.AppBootset_CmdAppswitch app_bootset.o
0x01025c6c 0x01025c6c 0x00000034 Code RO 5076 i.AppBootset_CmdBsdump app_bootset.o
0x01025ca0 0x01025ca0 0x000002fc Code RO 5077 i.AppBootset_CmdBsset app_bootset.o
0x01025f9c 0x01025f9c 0x00000028 Code RO 4589 i.AppCli_Init app_cli.o
0x01025fc4 0x01025fc4 0x000000c8 Code RO 5006 i.AppParams_CmdAppget app_params.o
0x0102608c 0x0102608c 0x0000033c Code RO 5007 i.AppParams_CmdAppset app_params.o
0x010263c8 0x010263c8 0x00000520 Code RO 4591 i.CliTask app_cli.o
0x010268e8 0x010268e8 0x00000078 Code RO 4457 i.CmdBleLog cli_core.o
0x01026960 0x01026960 0x00000198 Code RO 4458 i.CmdDevInfo cli_core.o
0x01026af8 0x01026af8 0x00000090 Code RO 4459 i.CmdFactory cli_core.o
0x01026b88 0x01026b88 0x00000044 Code RO 4460 i.CmdHang cli_core.o
0x01026bcc 0x01026bcc 0x000000d4 Code RO 4461 i.CmdHelp cli_core.o
0x01026ca0 0x01026ca0 0x000000d0 Code RO 4462 i.CmdLed cli_core.o
0x01026d70 0x01026d70 0x00000014 Code RO 4463 i.CmdOta cli_core.o
0x01026d84 0x01026d84 0x00000034 Code RO 4464 i.CmdReset cli_core.o
0x01026db8 0x01026db8 0x000000e8 Code RO 4465 i.CmdSysInfo cli_core.o
0x01026ea0 0x01026ea0 0x00000070 Code RO 4466 i.CmdUartInfo cli_core.o
0x01026f10 0x01026f10 0x00000044 Code RO 4467 i.CmdUartRst cli_core.o
0x01026f54 0x01026f54 0x00000098 Code RO 4468 i.CmdVersion cli_core.o
0x01025980 0x01025980 0x000002ec Code RO 5078 i.AppBootset_CmdAppswitch app_bootset.o
0x01025c6c 0x01025c6c 0x00000034 Code RO 5079 i.AppBootset_CmdBsdump app_bootset.o
0x01025ca0 0x01025ca0 0x000002fc Code RO 5080 i.AppBootset_CmdBsset app_bootset.o
0x01025f9c 0x01025f9c 0x00000028 Code RO 4592 i.AppCli_Init app_cli.o
0x01025fc4 0x01025fc4 0x000000c8 Code RO 5009 i.AppParams_CmdAppget app_params.o
0x0102608c 0x0102608c 0x0000033c Code RO 5010 i.AppParams_CmdAppset app_params.o
0x010263c8 0x010263c8 0x00000520 Code RO 4594 i.CliTask app_cli.o
0x010268e8 0x010268e8 0x00000078 Code RO 4460 i.CmdBleLog cli_core.o
0x01026960 0x01026960 0x00000198 Code RO 4461 i.CmdDevInfo cli_core.o
0x01026af8 0x01026af8 0x00000090 Code RO 4462 i.CmdFactory cli_core.o
0x01026b88 0x01026b88 0x00000044 Code RO 4463 i.CmdHang cli_core.o
0x01026bcc 0x01026bcc 0x000000d4 Code RO 4464 i.CmdHelp cli_core.o
0x01026ca0 0x01026ca0 0x000000d0 Code RO 4465 i.CmdLed cli_core.o
0x01026d70 0x01026d70 0x00000014 Code RO 4466 i.CmdOta cli_core.o
0x01026d84 0x01026d84 0x00000034 Code RO 4467 i.CmdReset cli_core.o
0x01026db8 0x01026db8 0x000000e8 Code RO 4468 i.CmdSysInfo cli_core.o
0x01026ea0 0x01026ea0 0x00000070 Code RO 4469 i.CmdUartInfo cli_core.o
0x01026f10 0x01026f10 0x00000044 Code RO 4470 i.CmdUartRst cli_core.o
0x01026f54 0x01026f54 0x00000098 Code RO 4471 i.CmdVersion cli_core.o
0x01026fec 0x01026fec 0x00000018 Code RO 745 i.DBG_ConfigPeriph n32wb03x_rcc.o
0x01027004 0x01027004 0x00000004 Code RO 487 i.DMA_ClearFlag n32wb03x_dma.o
0x01027008 0x01027008 0x00000088 Code RO 490 i.DMA_DeInit n32wb03x_dma.o
@ -5043,16 +5043,16 @@ Memory Map of the image
0x01027278 0x01027278 0x00000004 Code RO 640 i.GPIO_ResetBits n32wb03x_gpio.o
0x0102727c 0x0102727c 0x00000004 Code RO 641 i.GPIO_SetBits n32wb03x_gpio.o
0x01027280 0x01027280 0x00000008 Code RO 642 i.GPIO_TogglePin n32wb03x_gpio.o
0x01027288 0x01027288 0x000000b0 Code RO 4673 i.HardFault_Handler n32wb03x_it.o
0x01027288 0x01027288 0x000000b0 Code RO 4676 i.HardFault_Handler n32wb03x_it.o
0x01027338 0x01027338 0x0000000c Code RO 1986 i.IWDG_CntReload n32wb03x_iwdg.o
0x01027344 0x01027344 0x00000010 Code RO 1987 i.IWDG_Enable n32wb03x_iwdg.o
0x01027354 0x01027354 0x00000010 Code RO 1989 i.IWDG_ReloadKey n32wb03x_iwdg.o
0x01027364 0x01027364 0x0000000c Code RO 1990 i.IWDG_SetPrescalerDiv n32wb03x_iwdg.o
0x01027370 0x01027370 0x0000000c Code RO 1991 i.IWDG_WriteConfig n32wb03x_iwdg.o
0x0102737c 0x0102737c 0x00000008 Code RO 4972 i.LedBlink app_gpio.o
0x01027384 0x01027384 0x0000004c Code RO 4973 i.LedInit app_gpio.o
0x010273d0 0x010273d0 0x00000008 Code RO 4974 i.LedOff app_gpio.o
0x010273d8 0x010273d8 0x00000008 Code RO 4975 i.LedOn app_gpio.o
0x0102737c 0x0102737c 0x00000008 Code RO 4975 i.LedBlink app_gpio.o
0x01027384 0x01027384 0x0000004c Code RO 4976 i.LedInit app_gpio.o
0x010273d0 0x010273d0 0x00000008 Code RO 4977 i.LedOff app_gpio.o
0x010273d8 0x010273d8 0x00000008 Code RO 4978 i.LedOn app_gpio.o
0x010273e0 0x010273e0 0x00000078 Code RO 159 i.NVIC_Init misc.o
0x01027458 0x01027458 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o
0x01027524 0x01027524 0x00000024 Code RO 1947 i.Qflash_Erase_Sector n32wb03x_qflash.o
@ -5067,13 +5067,13 @@ Memory Map of the image
0x01027630 0x01027630 0x0000001c Code RO 773 i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL n32wb03x_rcc.o
0x0102764c 0x0102764c 0x00000074 Code RO 774 i.RCC_GetClocksFreqValue n32wb03x_rcc.o
0x010276c0 0x010276c0 0x00000030 Code RO 775 i.RCC_GetFlagStatus n32wb03x_rcc.o
0x010276f0 0x010276f0 0x00000002 Code RO 6287 i.SVC_Handler port.o
0x010276f0 0x010276f0 0x00000002 Code RO 6290 i.SVC_Handler port.o
0x010276f2 0x010276f2 0x00000002 PAD
0x010276f4 0x010276f4 0x00000024 Code RO 6288 i.SysTick_Handler port.o
0x010276f4 0x010276f4 0x00000024 Code RO 6291 i.SysTick_Handler port.o
0x01027718 0x01027718 0x00000034 Code RO 13 i.SystemGetMacAddr system_n32wb03x.o
0x0102774c 0x0102774c 0x00000180 Code RO 15 i.SystemInit system_n32wb03x.o
0x010278cc 0x010278cc 0x00000030 Code RO 16 i.SystemTrimValueGet system_n32wb03x.o
0x010278fc 0x010278fc 0x00000008 Code RO 4674 i.USART1_IRQHandler n32wb03x_it.o
0x010278fc 0x010278fc 0x00000008 Code RO 4677 i.USART1_IRQHandler n32wb03x_it.o
0x01027904 0x01027904 0x00000032 Code RO 1520 i.USART_ConfigInt n32wb03x_usart.o
0x01027936 0x01027936 0x00000002 PAD
0x01027938 0x01027938 0x0000001c Code RO 1525 i.USART_Enable n32wb03x_usart.o
@ -5084,122 +5084,122 @@ Memory Map of the image
0x010279b4 0x010279b4 0x00000088 Code RO 1534 i.USART_Init n32wb03x_usart.o
0x01027a3c 0x01027a3c 0x00000008 Code RO 1535 i.USART_ReceiveData n32wb03x_usart.o
0x01027a44 0x01027a44 0x00000008 Code RO 1537 i.USART_SendData n32wb03x_usart.o
0x01027a4c 0x01027a4c 0x00000020 Code RO 6620 i.__0printf mc_p.l(printfa.o)
0x01027a6c 0x01027a6c 0x00000028 Code RO 6622 i.__0sprintf mc_p.l(printfa.o)
0x01027a94 0x01027a94 0x0000002c Code RO 6625 i.__0vsnprintf mc_p.l(printfa.o)
0x01027ac0 0x01027ac0 0x0000002e Code RO 6796 i.__ARM_clz mf_p.l(depilogue.o)
0x01027a4c 0x01027a4c 0x00000020 Code RO 6623 i.__0printf mc_p.l(printfa.o)
0x01027a6c 0x01027a6c 0x00000028 Code RO 6625 i.__0sprintf mc_p.l(printfa.o)
0x01027a94 0x01027a94 0x0000002c Code RO 6628 i.__0vsnprintf mc_p.l(printfa.o)
0x01027ac0 0x01027ac0 0x0000002e Code RO 6799 i.__ARM_clz mf_p.l(depilogue.o)
0x01027aee 0x01027aee 0x00000002 PAD
0x01027af0 0x01027af0 0x00000008 Code RO 6776 i.__aeabi_errno_addr mc_p.l(errno.o)
0x01027af8 0x01027af8 0x00000064 Code RO 6652 i.__free$realloc mc_p.l(mallocr.o)
0x01027b5c 0x01027b5c 0x00000048 Code RO 6653 i.__malloc$realloc mc_p.l(mallocr.o)
0x01027ba4 0x01027ba4 0x00000174 Code RO 6627 i._fp_digits mc_p.l(printfa.o)
0x01027d18 0x01027d18 0x0000000e Code RO 6680 i._is_digit mc_p.l(scanf_fp.o)
0x01027af0 0x01027af0 0x00000008 Code RO 6779 i.__aeabi_errno_addr mc_p.l(errno.o)
0x01027af8 0x01027af8 0x00000064 Code RO 6655 i.__free$realloc mc_p.l(mallocr.o)
0x01027b5c 0x01027b5c 0x00000048 Code RO 6656 i.__malloc$realloc mc_p.l(mallocr.o)
0x01027ba4 0x01027ba4 0x00000174 Code RO 6630 i._fp_digits mc_p.l(printfa.o)
0x01027d18 0x01027d18 0x0000000e Code RO 6683 i._is_digit mc_p.l(scanf_fp.o)
0x01027d26 0x01027d26 0x00000002 PAD
0x01027d28 0x01027d28 0x000006ec Code RO 6628 i._printf_core mc_p.l(printfa.o)
0x01028414 0x01028414 0x00000020 Code RO 6629 i._printf_post_padding mc_p.l(printfa.o)
0x01028434 0x01028434 0x0000002c Code RO 6630 i._printf_pre_padding mc_p.l(printfa.o)
0x01028460 0x01028460 0x00000016 Code RO 6631 i._snputc mc_p.l(printfa.o)
0x01028476 0x01028476 0x0000000a Code RO 6632 i._sputc mc_p.l(printfa.o)
0x01028480 0x01028480 0x00000032 Code RO 5115 i.add_item_to_array cjson.o
0x010284b2 0x010284b2 0x00000062 Code RO 5116 i.add_item_to_object cjson.o
0x01028514 0x01028514 0x00000074 Code RO 4169 i.app_ble_adv_init app_ble.o
0x01028588 0x01028588 0x00000002 Code RO 4170 i.app_ble_adv_msg_handler app_ble.o
0x01027d28 0x01027d28 0x000006ec Code RO 6631 i._printf_core mc_p.l(printfa.o)
0x01028414 0x01028414 0x00000020 Code RO 6632 i._printf_post_padding mc_p.l(printfa.o)
0x01028434 0x01028434 0x0000002c Code RO 6633 i._printf_pre_padding mc_p.l(printfa.o)
0x01028460 0x01028460 0x00000016 Code RO 6634 i._snputc mc_p.l(printfa.o)
0x01028476 0x01028476 0x0000000a Code RO 6635 i._sputc mc_p.l(printfa.o)
0x01028480 0x01028480 0x00000032 Code RO 5118 i.add_item_to_array cjson.o
0x010284b2 0x010284b2 0x00000062 Code RO 5119 i.add_item_to_object cjson.o
0x01028514 0x01028514 0x00000074 Code RO 4172 i.app_ble_adv_init app_ble.o
0x01028588 0x01028588 0x00000002 Code RO 4173 i.app_ble_adv_msg_handler app_ble.o
0x0102858a 0x0102858a 0x00000002 PAD
0x0102858c 0x0102858c 0x00000044 Code RO 4171 i.app_ble_connected app_ble.o
0x010285d0 0x010285d0 0x0000005c Code RO 4172 i.app_ble_disconnected app_ble.o
0x0102862c 0x0102862c 0x00000098 Code RO 4173 i.app_ble_gap_params_init app_ble.o
0x010286c4 0x010286c4 0x0000004c Code RO 4174 i.app_ble_init app_ble.o
0x01028710 0x01028710 0x0000006c Code RO 4175 i.app_ble_msg_handler app_ble.o
0x0102877c 0x0102877c 0x000000ec Code RO 4698 i.app_ble_proto_cli_exec app_ble_proto.o
0x01028868 0x01028868 0x00000040 Code RO 4699 i.app_ble_proto_cli_rsp app_ble_proto.o
0x010288a8 0x010288a8 0x00000014 Code RO 4700 i.app_ble_proto_init app_ble_proto.o
0x010288bc 0x010288bc 0x0000000c Code RO 4701 i.app_ble_proto_log_get app_ble_proto.o
0x010288c8 0x010288c8 0x00000010 Code RO 4702 i.app_ble_proto_log_set app_ble_proto.o
0x010288d8 0x010288d8 0x0000001c Code RO 4703 i.app_ble_proto_on_disconnect app_ble_proto.o
0x010288f4 0x010288f4 0x000001a0 Code RO 4704 i.app_ble_proto_rx_bytes app_ble_proto.o
0x01028a94 0x01028a94 0x000000b8 Code RO 4705 i.app_ble_proto_send_frame app_ble_proto.o
0x01028b4c 0x01028b4c 0x00000050 Code RO 4177 i.app_ble_sec_init app_ble.o
0x01028b9c 0x01028b9c 0x0000000c Code RO 4592 i.app_cli_ota_mode_enter app_cli.o
0x0102858c 0x0102858c 0x00000044 Code RO 4174 i.app_ble_connected app_ble.o
0x010285d0 0x010285d0 0x0000005c Code RO 4175 i.app_ble_disconnected app_ble.o
0x0102862c 0x0102862c 0x00000098 Code RO 4176 i.app_ble_gap_params_init app_ble.o
0x010286c4 0x010286c4 0x0000004c Code RO 4177 i.app_ble_init app_ble.o
0x01028710 0x01028710 0x0000006c Code RO 4178 i.app_ble_msg_handler app_ble.o
0x0102877c 0x0102877c 0x000000ec Code RO 4701 i.app_ble_proto_cli_exec app_ble_proto.o
0x01028868 0x01028868 0x00000040 Code RO 4702 i.app_ble_proto_cli_rsp app_ble_proto.o
0x010288a8 0x010288a8 0x00000014 Code RO 4703 i.app_ble_proto_init app_ble_proto.o
0x010288bc 0x010288bc 0x0000000c Code RO 4704 i.app_ble_proto_log_get app_ble_proto.o
0x010288c8 0x010288c8 0x00000010 Code RO 4705 i.app_ble_proto_log_set app_ble_proto.o
0x010288d8 0x010288d8 0x0000001c Code RO 4706 i.app_ble_proto_on_disconnect app_ble_proto.o
0x010288f4 0x010288f4 0x000001a0 Code RO 4707 i.app_ble_proto_rx_bytes app_ble_proto.o
0x01028a94 0x01028a94 0x000000b8 Code RO 4708 i.app_ble_proto_send_frame app_ble_proto.o
0x01028b4c 0x01028b4c 0x00000050 Code RO 4180 i.app_ble_sec_init app_ble.o
0x01028b9c 0x01028b9c 0x0000000c Code RO 4595 i.app_cli_ota_mode_enter app_cli.o
0x01028ba8 0x01028ba8 0x00000010 Code RO 3897 i.app_conn_params_update_evt_handler ns_ble_task.o
0x01028bb8 0x01028bb8 0x000000cc Code RO 3498 i.app_create_advertising ns_ble.o
0x01028c84 0x01028c84 0x0000005c Code RO 4051 i.app_dis_add_dis app_dis.o
0x01028ce0 0x01028ce0 0x00000104 Code RO 3898 i.app_entry_point_handler ns_ble_task.o
0x01028de4 0x01028de4 0x00000008 Code RO 4876 i.app_fan_get_rpm app_info.o
0x01028dec 0x01028dec 0x0000005c Code RO 4877 i.app_info_chip_temp_c10 app_info.o
0x01028e48 0x01028e48 0x00000018 Code RO 4878 i.app_info_cur_bank app_info.o
0x01028e60 0x01028e60 0x0000004c Code RO 4879 i.app_info_handle_query app_info.o
0x01028eac 0x01028eac 0x0000000c Code RO 4880 i.app_info_last_temp_raw app_info.o
0x01028eb8 0x01028eb8 0x0000002c Code RO 4881 i.app_info_tlv_snapshot app_info.o
0x01028ee4 0x01028ee4 0x00000020 Code RO 4882 i.app_info_vdd_mv app_info.o
0x01028de4 0x01028de4 0x00000008 Code RO 4879 i.app_fan_get_rpm app_info.o
0x01028dec 0x01028dec 0x0000005c Code RO 4880 i.app_info_chip_temp_c10 app_info.o
0x01028e48 0x01028e48 0x00000018 Code RO 4881 i.app_info_cur_bank app_info.o
0x01028e60 0x01028e60 0x0000004c Code RO 4882 i.app_info_handle_query app_info.o
0x01028eac 0x01028eac 0x0000000c Code RO 4883 i.app_info_last_temp_raw app_info.o
0x01028eb8 0x01028eb8 0x0000002c Code RO 4884 i.app_info_tlv_snapshot app_info.o
0x01028ee4 0x01028ee4 0x00000020 Code RO 4885 i.app_info_vdd_mv app_info.o
0x01028f04 0x01028f04 0x0000001c Code RO 3899 i.app_init_timeout_evt_handler ns_ble_task.o
0x01028f20 0x01028f20 0x000000ac Code RO 3900 i.app_lsi_calib_evt_handler ns_ble_task.o
0x01028fcc 0x01028fcc 0x00000018 Code RO 4774 i.app_ota_abort app_ota.o
0x01028fe4 0x01028fe4 0x00000010 Code RO 4775 i.app_ota_chan_idle app_ota.o
0x01028ff4 0x01028ff4 0x00000020 Code RO 4776 i.app_ota_chan_rsp_ble app_ota.o
0x01029014 0x01029014 0x00000120 Code RO 4777 i.app_ota_chan_rx app_ota.o
0x01029134 0x01029134 0x00000010 Code RO 4778 i.app_ota_chan_rx_ble app_ota.o
0x01029144 0x01029144 0x00000020 Code RO 4779 i.app_ota_chan_rx_uart app_ota.o
0x01029164 0x01029164 0x00000008 Code RO 4780 i.app_ota_current_bank_base app_ota.o
0x0102916c 0x0102916c 0x00000158 Code RO 4781 i.app_ota_handle_frame app_ota.o
0x010292c4 0x010292c4 0x00000048 Code RO 4782 i.app_ota_reset_poll app_ota.o
0x0102930c 0x0102930c 0x00000008 Code RO 5008 i.app_params_get app_params.o
0x01029314 0x01029314 0x0000005c Code RO 5009 i.app_params_init app_params.o
0x01029370 0x01029370 0x0000002c Code RO 5011 i.app_params_restore_defaults app_params.o
0x01028fcc 0x01028fcc 0x00000018 Code RO 4777 i.app_ota_abort app_ota.o
0x01028fe4 0x01028fe4 0x00000010 Code RO 4778 i.app_ota_chan_idle app_ota.o
0x01028ff4 0x01028ff4 0x00000020 Code RO 4779 i.app_ota_chan_rsp_ble app_ota.o
0x01029014 0x01029014 0x00000120 Code RO 4780 i.app_ota_chan_rx app_ota.o
0x01029134 0x01029134 0x00000010 Code RO 4781 i.app_ota_chan_rx_ble app_ota.o
0x01029144 0x01029144 0x00000020 Code RO 4782 i.app_ota_chan_rx_uart app_ota.o
0x01029164 0x01029164 0x00000008 Code RO 4783 i.app_ota_current_bank_base app_ota.o
0x0102916c 0x0102916c 0x00000158 Code RO 4784 i.app_ota_handle_frame app_ota.o
0x010292c4 0x010292c4 0x00000048 Code RO 4785 i.app_ota_reset_poll app_ota.o
0x0102930c 0x0102930c 0x00000008 Code RO 5011 i.app_params_get app_params.o
0x01029314 0x01029314 0x0000005c Code RO 5012 i.app_params_init app_params.o
0x01029370 0x01029370 0x0000002c Code RO 5014 i.app_params_restore_defaults app_params.o
0x0102939c 0x0102939c 0x00000068 Code RO 4106 i.app_rdtss_add_rdts app_rdtss.o
0x01029404 0x01029404 0x00000004 Code RO 3257 i.app_sec_msg_dflt_handler ns_sec.o
0x01029408 0x01029408 0x00000078 Code RO 3499 i.app_set_adv_data ns_ble.o
0x01029480 0x01029480 0x000000c4 Code RO 3500 i.app_set_scan_rsp_data ns_ble.o
0x01029544 0x01029544 0x00000070 Code RO 3501 i.app_start_advertising ns_ble.o
0x010295b4 0x010295b4 0x00000002 Code RO 4178 i.app_user_msg_handler app_ble.o
0x010295b4 0x010295b4 0x00000002 Code RO 4181 i.app_user_msg_handler app_ble.o
0x010295b6 0x010295b6 0x00000002 PAD
0x010295b8 0x010295b8 0x00000018 Code RO 4275 i.app_wdt_heartbeat main.o
0x010295d0 0x010295d0 0x00000074 Code RO 4276 i.app_wdt_init main.o
0x010295b8 0x010295b8 0x00000018 Code RO 4278 i.app_wdt_heartbeat main.o
0x010295d0 0x010295d0 0x00000074 Code RO 4279 i.app_wdt_init main.o
0x01029644 0x01029644 0x000000c0 Code RO 2033 i.attm_att_set_value lib_att.o
0x01029704 0x01029704 0x00000028 Code RO 4277 i.ble_schedule_task main.o
0x0102972c 0x0102972c 0x00000014 Code RO 4636 i.ble_up_on_cfm ble_up.o
0x01029740 0x01029740 0x00000058 Code RO 4637 i.ble_up_poll ble_up.o
0x01029798 0x01029798 0x00000010 Code RO 4638 i.ble_up_reset ble_up.o
0x010297a8 0x010297a8 0x00000048 Code RO 4639 i.ble_up_write ble_up.o
0x010297f0 0x010297f0 0x0000005c Code RO 5078 i.bootset_commit app_bootset.o
0x0102984c 0x0102984c 0x00000178 Code RO 5079 i.bootset_print app_bootset.o
0x010299c4 0x010299c4 0x000000ec Code RO 4379 i.bsp_usart_init bsp_usart.o
0x01029ab0 0x01029ab0 0x000000ac Code RO 4380 i.bsp_usart_read_byte bsp_usart.o
0x01029b5c 0x01029b5c 0x00000080 Code RO 4381 i.bsp_usart_rx_dma_start bsp_usart.o
0x01029bdc 0x01029bdc 0x00000048 Code RO 4383 i.bsp_usart_rx_isr_handler bsp_usart.o
0x01029c24 0x01029c24 0x00000074 Code RO 4384 i.bsp_usart_set_baud bsp_usart.o
0x01029c98 0x01029c98 0x00000020 Code RO 4385 i.bsp_usart_tx_lock bsp_usart.o
0x01029cb8 0x01029cb8 0x00000024 Code RO 4386 i.bsp_usart_tx_unlock bsp_usart.o
0x01029cdc 0x01029cdc 0x00000098 Code RO 4387 i.bsp_usart_write_dma bsp_usart.o
0x01029d74 0x01029d74 0x0000003a Code RO 5117 i.buffer_skip_whitespace cjson.o
0x01029704 0x01029704 0x00000028 Code RO 4280 i.ble_schedule_task main.o
0x0102972c 0x0102972c 0x00000014 Code RO 4639 i.ble_up_on_cfm ble_up.o
0x01029740 0x01029740 0x00000058 Code RO 4640 i.ble_up_poll ble_up.o
0x01029798 0x01029798 0x00000010 Code RO 4641 i.ble_up_reset ble_up.o
0x010297a8 0x010297a8 0x00000048 Code RO 4642 i.ble_up_write ble_up.o
0x010297f0 0x010297f0 0x0000005c Code RO 5081 i.bootset_commit app_bootset.o
0x0102984c 0x0102984c 0x00000178 Code RO 5082 i.bootset_print app_bootset.o
0x010299c4 0x010299c4 0x000000ec Code RO 4382 i.bsp_usart_init bsp_usart.o
0x01029ab0 0x01029ab0 0x000000ac Code RO 4383 i.bsp_usart_read_byte bsp_usart.o
0x01029b5c 0x01029b5c 0x00000080 Code RO 4384 i.bsp_usart_rx_dma_start bsp_usart.o
0x01029bdc 0x01029bdc 0x00000048 Code RO 4386 i.bsp_usart_rx_isr_handler bsp_usart.o
0x01029c24 0x01029c24 0x00000074 Code RO 4387 i.bsp_usart_set_baud bsp_usart.o
0x01029c98 0x01029c98 0x00000020 Code RO 4388 i.bsp_usart_tx_lock bsp_usart.o
0x01029cb8 0x01029cb8 0x00000024 Code RO 4389 i.bsp_usart_tx_unlock bsp_usart.o
0x01029cdc 0x01029cdc 0x00000098 Code RO 4390 i.bsp_usart_write_dma bsp_usart.o
0x01029d74 0x01029d74 0x0000003a Code RO 5120 i.buffer_skip_whitespace cjson.o
0x01029dae 0x01029dae 0x00000002 PAD
0x01029db0 0x01029db0 0x00000034 Code RO 5127 i.cJSON_AddNumberToObject cjson.o
0x01029de4 0x01029de4 0x00000064 Code RO 5141 i.cJSON_CreateNumber cjson.o
0x01029e48 0x01029e48 0x00000018 Code RO 5142 i.cJSON_CreateObject cjson.o
0x01029e60 0x01029e60 0x00000054 Code RO 5149 i.cJSON_Delete cjson.o
0x01029eb4 0x01029eb4 0x0000000a Code RO 5162 i.cJSON_GetObjectItem cjson.o
0x01029db0 0x01029db0 0x00000034 Code RO 5130 i.cJSON_AddNumberToObject cjson.o
0x01029de4 0x01029de4 0x00000064 Code RO 5144 i.cJSON_CreateNumber cjson.o
0x01029e48 0x01029e48 0x00000018 Code RO 5145 i.cJSON_CreateObject cjson.o
0x01029e60 0x01029e60 0x00000054 Code RO 5152 i.cJSON_Delete cjson.o
0x01029eb4 0x01029eb4 0x0000000a Code RO 5165 i.cJSON_GetObjectItem cjson.o
0x01029ebe 0x01029ebe 0x00000002 PAD
0x01029ec0 0x01029ec0 0x00000050 Code RO 5166 i.cJSON_InitHooks cjson.o
0x01029f10 0x01029f10 0x00000012 Code RO 5173 i.cJSON_IsNumber cjson.o
0x01029f22 0x01029f22 0x00000012 Code RO 5174 i.cJSON_IsObject cjson.o
0x01029f34 0x01029f34 0x00000024 Code RO 5179 i.cJSON_New_Item cjson.o
0x01029f58 0x01029f58 0x00000022 Code RO 5180 i.cJSON_Parse cjson.o
0x01029ec0 0x01029ec0 0x00000050 Code RO 5169 i.cJSON_InitHooks cjson.o
0x01029f10 0x01029f10 0x00000012 Code RO 5176 i.cJSON_IsNumber cjson.o
0x01029f22 0x01029f22 0x00000012 Code RO 5177 i.cJSON_IsObject cjson.o
0x01029f34 0x01029f34 0x00000024 Code RO 5182 i.cJSON_New_Item cjson.o
0x01029f58 0x01029f58 0x00000022 Code RO 5183 i.cJSON_Parse cjson.o
0x01029f7a 0x01029f7a 0x00000002 PAD
0x01029f7c 0x01029f7c 0x000000ec Code RO 5182 i.cJSON_ParseWithLengthOpts cjson.o
0x0102a068 0x0102a068 0x00000010 Code RO 5187 i.cJSON_PrintUnformatted cjson.o
0x0102a078 0x0102a078 0x0000000c Code RO 5195 i.cJSON_free cjson.o
0x0102a084 0x0102a084 0x00000028 Code RO 5197 i.cJSON_strdup cjson.o
0x0102a0ac 0x0102a0ac 0x00000034 Code RO 4959 i.caiic_crc32 boot_crc32.o
0x01029f7c 0x01029f7c 0x000000ec Code RO 5185 i.cJSON_ParseWithLengthOpts cjson.o
0x0102a068 0x0102a068 0x00000010 Code RO 5190 i.cJSON_PrintUnformatted cjson.o
0x0102a078 0x0102a078 0x0000000c Code RO 5198 i.cJSON_free cjson.o
0x0102a084 0x0102a084 0x00000028 Code RO 5200 i.cJSON_strdup cjson.o
0x0102a0ac 0x0102a0ac 0x00000034 Code RO 4962 i.caiic_crc32 boot_crc32.o
0x0102a0e0 0x0102a0e0 0x0000002a Code RO 3071 i.check_client_char_cfg rdts_common.o
0x0102a10a 0x0102a10a 0x00000004 Code RO 4469 i.cli_cmd_count cli_core.o
0x0102a10a 0x0102a10a 0x00000004 Code RO 4472 i.cli_cmd_count cli_core.o
0x0102a10e 0x0102a10e 0x00000002 PAD
0x0102a110 0x0102a110 0x00000018 Code RO 4470 i.cli_cmd_name cli_core.o
0x0102a128 0x0102a128 0x000000b4 Code RO 4471 i.cli_exec_line cli_core.o
0x0102a1dc 0x0102a1dc 0x0000002c Code RO 4472 i.cli_printf cli_core.o
0x0102a208 0x0102a208 0x00000068 Code RO 4593 i.cli_redraw_line app_cli.o
0x0102a270 0x0102a270 0x0000002c Code RO 4706 i.cli_rsp_out app_ble_proto.o
0x0102a29c 0x0102a29c 0x0000000c Code RO 4473 i.cli_set_output cli_core.o
0x0102a2a8 0x0102a2a8 0x00000024 Code RO 4474 i.cli_write cli_core.o
0x0102a2cc 0x0102a2cc 0x0000005c Code RO 5198 i.compare_double cjson.o
0x0102a110 0x0102a110 0x00000018 Code RO 4473 i.cli_cmd_name cli_core.o
0x0102a128 0x0102a128 0x000000b4 Code RO 4474 i.cli_exec_line cli_core.o
0x0102a1dc 0x0102a1dc 0x0000002c Code RO 4475 i.cli_printf cli_core.o
0x0102a208 0x0102a208 0x00000068 Code RO 4596 i.cli_redraw_line app_cli.o
0x0102a270 0x0102a270 0x0000002c Code RO 4709 i.cli_rsp_out app_ble_proto.o
0x0102a29c 0x0102a29c 0x0000000c Code RO 4476 i.cli_set_output cli_core.o
0x0102a2a8 0x0102a2a8 0x00000024 Code RO 4477 i.cli_write cli_core.o
0x0102a2cc 0x0102a2cc 0x0000005c Code RO 5201 i.compare_double cjson.o
0x0102a328 0x0102a328 0x0000002a Code RO 2709 i.diss_check_val_len diss.o
0x0102a352 0x0102a352 0x00000002 Code RO 2710 i.diss_cleanup diss.o
0x0102a354 0x0102a354 0x00000002 Code RO 2712 i.diss_create diss.o
@ -5213,9 +5213,9 @@ Memory Map of the image
0x0102a5a8 0x0102a5a8 0x000000c0 Code RO 4053 i.diss_value_req_ind_handler app_dis.o
0x0102a668 0x0102a668 0x0000003a Code RO 2717 i.diss_value_to_handle diss.o
0x0102a6a2 0x0102a6a2 0x00000002 PAD
0x0102a6a4 0x0102a6a4 0x00000060 Code RO 5682 i.eTaskGetState tasks.o
0x0102a704 0x0102a704 0x00000098 Code RO 5200 i.ensure cjson.o
0x0102a79c 0x0102a79c 0x0000003c Code RO 4388 i.fputc bsp_usart.o
0x0102a6a4 0x0102a6a4 0x00000060 Code RO 5685 i.eTaskGetState tasks.o
0x0102a704 0x0102a704 0x00000098 Code RO 5203 i.ensure cjson.o
0x0102a79c 0x0102a79c 0x0000003c Code RO 4391 i.fputc bsp_usart.o
0x0102a7d8 0x0102a7d8 0x000000f0 Code RO 3258 i.gapc_bond_ind_handler ns_sec.o
0x0102a8c8 0x0102a8c8 0x00000208 Code RO 3259 i.gapc_bond_req_ind_handler ns_sec.o
0x0102aad0 0x0102aad0 0x00000028 Code RO 3901 i.gapc_cmp_evt_handler ns_ble_task.o
@ -5247,19 +5247,19 @@ Memory Map of the image
0x0102b770 0x0102b770 0x000000e0 Code RO 2951 i.gattc_read_req_ind_handler rdtss_task.o
0x0102b850 0x0102b850 0x00000110 Code RO 2952 i.gattc_write_req_ind_handler rdtss_task.o
0x0102b960 0x0102b960 0x0000006c Code RO 3072 i.get_cfg_handle rdts_common.o
0x0102b9cc 0x0102b9cc 0x00000098 Code RO 5201 i.get_object_item cjson.o
0x0102b9cc 0x0102b9cc 0x00000098 Code RO 5204 i.get_object_item cjson.o
0x0102ba64 0x0102ba64 0x00000054 Code RO 3073 i.get_value_handle rdts_common.o
0x0102bab8 0x0102bab8 0x00000064 Code RO 4883 i.info_adc_init app_info.o
0x0102bb1c 0x0102bb1c 0x0000006c Code RO 4884 i.info_adc_read app_info.o
0x0102bb88 0x0102bb88 0x00000148 Code RO 4885 i.info_fill_item app_info.o
0x0102bcd0 0x0102bcd0 0x0000002c Code RO 4886 i.info_put_tlv app_info.o
0x0102bcfc 0x0102bcfc 0x00000030 Code RO 5665 i.infra_cjson_init infra_cjson.o
0x0102bd2c 0x0102bd2c 0x00000050 Code RO 6654 i.internal_alloc mc_p.l(mallocr.o)
0x0102bd7c 0x0102bd7c 0x00000044 Code RO 4278 i.led_task main.o
0x0102bab8 0x0102bab8 0x00000064 Code RO 4886 i.info_adc_init app_info.o
0x0102bb1c 0x0102bb1c 0x0000006c Code RO 4887 i.info_adc_read app_info.o
0x0102bb88 0x0102bb88 0x00000148 Code RO 4888 i.info_fill_item app_info.o
0x0102bcd0 0x0102bcd0 0x0000002c Code RO 4889 i.info_put_tlv app_info.o
0x0102bcfc 0x0102bcfc 0x00000030 Code RO 5668 i.infra_cjson_init infra_cjson.o
0x0102bd2c 0x0102bd2c 0x00000050 Code RO 6657 i.internal_alloc mc_p.l(mallocr.o)
0x0102bd7c 0x0102bd7c 0x00000044 Code RO 4281 i.led_task main.o
0x0102bdc0 0x0102bdc0 0x00000030 Code RO 2402 i.llhwc_modem_setmode rwip_driver.o
0x0102bdf0 0x0102bdf0 0x00000130 Code RO 2403 i.llhwc_phy_prerx_flash rwip_driver.o
0x0102bf20 0x0102bf20 0x00000090 Code RO 2404 i.llhwc_setmode_reg_config rwip_driver.o
0x0102bfb0 0x0102bfb0 0x000001a4 Code RO 4279 i.main main.o
0x0102bfb0 0x0102bfb0 0x000001a4 Code RO 4282 i.main main.o
0x0102c154 0x0102c154 0x0000005c Code RO 3502 i.ns_EXTI4_12_IRQHandler ns_ble.o
0x0102c1b0 0x0102c1b0 0x00000028 Code RO 3503 i.ns_HardFault_Handler ns_ble.o
0x0102c1d8 0x0102c1d8 0x00000020 Code RO 3505 i.ns_ble_add_prf_func_register ns_ble.o
@ -5299,17 +5299,17 @@ Memory Map of the image
0x0102d080 0x0102d080 0x00000018 Code RO 3119 i.ns_sleep_lock_acquire ns_sleep.o
0x0102d098 0x0102d098 0x00000014 Code RO 3120 i.ns_sleep_lock_release ns_sleep.o
0x0102d0ac 0x0102d0ac 0x000000c8 Code RO 3195 i.ns_timer_api_process_handler ns_timer.o
0x0102d174 0x0102d174 0x00000024 Code RO 4783 i.ota_ble_sink app_ota.o
0x0102d198 0x0102d198 0x0000017c Code RO 4784 i.ota_on_data app_ota.o
0x0102d314 0x0102d314 0x000001b0 Code RO 4785 i.ota_on_end app_ota.o
0x0102d4c4 0x0102d4c4 0x00000022 Code RO 4786 i.ota_rd32 app_ota.o
0x0102d174 0x0102d174 0x00000024 Code RO 4786 i.ota_ble_sink app_ota.o
0x0102d198 0x0102d198 0x0000017c Code RO 4787 i.ota_on_data app_ota.o
0x0102d314 0x0102d314 0x000001b0 Code RO 4788 i.ota_on_end app_ota.o
0x0102d4c4 0x0102d4c4 0x00000022 Code RO 4789 i.ota_rd32 app_ota.o
0x0102d4e6 0x0102d4e6 0x00000002 PAD
0x0102d4e8 0x0102d4e8 0x000000a0 Code RO 4787 i.ota_respond app_ota.o
0x0102d588 0x0102d588 0x00000024 Code RO 4788 i.ota_uart_sink app_ota.o
0x0102d5ac 0x0102d5ac 0x000000a8 Code RO 5012 i.params_print_json app_params.o
0x0102d654 0x0102d654 0x0000005c Code RO 5013 i.params_save app_params.o
0x0102d6b0 0x0102d6b0 0x00000270 Code RO 5202 i.parse_string cjson.o
0x0102d920 0x0102d920 0x000003b4 Code RO 5203 i.parse_value cjson.o
0x0102d4e8 0x0102d4e8 0x000000a0 Code RO 4790 i.ota_respond app_ota.o
0x0102d588 0x0102d588 0x00000024 Code RO 4791 i.ota_uart_sink app_ota.o
0x0102d5ac 0x0102d5ac 0x000000a8 Code RO 5015 i.params_print_json app_params.o
0x0102d654 0x0102d654 0x0000005c Code RO 5016 i.params_save app_params.o
0x0102d6b0 0x0102d6b0 0x00000270 Code RO 5205 i.parse_string cjson.o
0x0102d920 0x0102d920 0x000003b4 Code RO 5206 i.parse_value cjson.o
0x0102dcd4 0x0102dcd4 0x00000044 Code RO 3552 i.patchx_enable ns_ble.o
0x0102dd18 0x0102dd18 0x00000088 Code RO 2583 i.prf_add_profile prf.o
0x0102dda0 0x0102dda0 0x00000010 Code RO 2586 i.prf_dst_task_get prf.o
@ -5319,21 +5319,21 @@ Memory Map of the image
0x0102de40 0x0102de40 0x00000038 Code RO 2590 i.prf_get_task_from_id prf.o
0x0102de78 0x0102de78 0x000000b4 Code RO 2591 i.prf_init prf.o
0x0102df2c 0x0102df2c 0x00000030 Code RO 2592 i.prf_itf_get prf.o
0x0102df5c 0x0102df5c 0x000000be Code RO 5204 i.print cjson.o
0x0102df5c 0x0102df5c 0x000000be Code RO 5207 i.print cjson.o
0x0102e01a 0x0102e01a 0x00000002 PAD
0x0102e01c 0x0102e01c 0x00000120 Code RO 5205 i.print_string_ptr cjson.o
0x0102e13c 0x0102e13c 0x000003f8 Code RO 5206 i.print_value cjson.o
0x0102e534 0x0102e534 0x00000038 Code RO 4707 i.proto_cli_out app_ble_proto.o
0x0102e56c 0x0102e56c 0x00000080 Code RO 4708 i.proto_dump app_ble_proto.o
0x0102e5ec 0x0102e5ec 0x00000058 Code RO 5684 i.prvAddCurrentTaskToDelayedList tasks.o
0x0102e644 0x0102e644 0x00000058 Code RO 5685 i.prvIdleTask tasks.o
0x0102e69c 0x0102e69c 0x00000054 Code RO 6242 i.prvInsertBlockIntoFreeList heap_4.o
0x0102e6f0 0x0102e6f0 0x000000cc Code RO 5686 i.prvListTasksWithinSingleList tasks.o
0x0102e7bc 0x0102e7bc 0x00000014 Code RO 6289 i.prvTaskExitError port.o
0x0102e7d0 0x0102e7d0 0x00000074 Code RO 6013 i.prvUnlockQueue queue.o
0x0102e844 0x0102e844 0x000000f4 Code RO 6243 i.pvPortMalloc heap_4.o
0x0102e938 0x0102e938 0x00000018 Code RO 5687 i.pvTaskIncrementMutexHeldCount tasks.o
0x0102e950 0x0102e950 0x00000024 Code RO 6290 i.pxPortInitialiseStack port.o
0x0102e01c 0x0102e01c 0x00000120 Code RO 5208 i.print_string_ptr cjson.o
0x0102e13c 0x0102e13c 0x000003f8 Code RO 5209 i.print_value cjson.o
0x0102e534 0x0102e534 0x00000038 Code RO 4710 i.proto_cli_out app_ble_proto.o
0x0102e56c 0x0102e56c 0x00000080 Code RO 4711 i.proto_dump app_ble_proto.o
0x0102e5ec 0x0102e5ec 0x00000058 Code RO 5687 i.prvAddCurrentTaskToDelayedList tasks.o
0x0102e644 0x0102e644 0x00000058 Code RO 5688 i.prvIdleTask tasks.o
0x0102e69c 0x0102e69c 0x00000054 Code RO 6245 i.prvInsertBlockIntoFreeList heap_4.o
0x0102e6f0 0x0102e6f0 0x000000cc Code RO 5689 i.prvListTasksWithinSingleList tasks.o
0x0102e7bc 0x0102e7bc 0x00000014 Code RO 6292 i.prvTaskExitError port.o
0x0102e7d0 0x0102e7d0 0x00000074 Code RO 6016 i.prvUnlockQueue queue.o
0x0102e844 0x0102e844 0x000000f4 Code RO 6246 i.pvPortMalloc heap_4.o
0x0102e938 0x0102e938 0x00000018 Code RO 5690 i.pvTaskIncrementMutexHeldCount tasks.o
0x0102e950 0x0102e950 0x00000024 Code RO 6293 i.pxPortInitialiseStack port.o
0x0102e974 0x0102e974 0x0000003a Code RO 2953 i.rdtss_att_get_value rdtss_task.o
0x0102e9ae 0x0102e9ae 0x00000002 PAD
0x0102e9b0 0x0102e9b0 0x00000040 Code RO 2954 i.rdtss_att_info_rsp_handler rdtss_task.o
@ -5357,54 +5357,54 @@ Memory Map of the image
0x0102eee4 0x0102eee4 0x00000124 Code RO 4110 i.rdtss_val_write_ind_handler app_rdtss.o
0x0102f008 0x0102f008 0x00000088 Code RO 4111 i.rdtss_value_req_ind_handler app_rdtss.o
0x0102f090 0x0102f090 0x00000080 Code RO 2962 i.rdtss_value_req_rsp_handler rdtss_task.o
0x0102f110 0x0102f110 0x00000074 Code RO 6655 i.realloc mc_p.l(mallocr.o)
0x0102f110 0x0102f110 0x00000074 Code RO 6658 i.realloc mc_p.l(mallocr.o)
0x0102f184 0x0102f184 0x00000118 Code RO 2151 i.rwip_init rwip.o
0x0102f29c 0x0102f29c 0x000000f8 Code RO 2411 i.rwip_slp_isr rwip_driver.o
0x0102f394 0x0102f394 0x0000001c Code RO 6352 i.strtod m_ps.l(strtod.o)
0x0102f394 0x0102f394 0x0000001c Code RO 6355 i.strtod m_ps.l(strtod.o)
0x0102f3b0 0x0102f3b0 0x00000002 Code RO 3200 i.timer_canceled_handler ns_timer.o
0x0102f3b2 0x0102f3b2 0x00000002 Code RO 3201 i.timer_modified_handler ns_timer.o
0x0102f3b4 0x0102f3b4 0x00000026 Code RO 6200 i.uxListRemove list.o
0x0102f3b4 0x0102f3b4 0x00000026 Code RO 6203 i.uxListRemove list.o
0x0102f3da 0x0102f3da 0x00000002 PAD
0x0102f3dc 0x0102f3dc 0x0000000c Code RO 5689 i.uxTaskGetNumberOfTasks tasks.o
0x0102f3e8 0x0102f3e8 0x00000098 Code RO 5690 i.uxTaskGetSystemState tasks.o
0x0102f480 0x0102f480 0x00000020 Code RO 4280 i.vApplicationIdleHook main.o
0x0102f4a0 0x0102f4a0 0x00000016 Code RO 6201 i.vListInitialise list.o
0x0102f4b6 0x0102f4b6 0x00000006 Code RO 6202 i.vListInitialiseItem list.o
0x0102f4bc 0x0102f4bc 0x00000032 Code RO 6203 i.vListInsert list.o
0x0102f4ee 0x0102f4ee 0x00000018 Code RO 6204 i.vListInsertEnd list.o
0x0102f3dc 0x0102f3dc 0x0000000c Code RO 5692 i.uxTaskGetNumberOfTasks tasks.o
0x0102f3e8 0x0102f3e8 0x00000098 Code RO 5693 i.uxTaskGetSystemState tasks.o
0x0102f480 0x0102f480 0x00000020 Code RO 4283 i.vApplicationIdleHook main.o
0x0102f4a0 0x0102f4a0 0x00000016 Code RO 6204 i.vListInitialise list.o
0x0102f4b6 0x0102f4b6 0x00000006 Code RO 6205 i.vListInitialiseItem list.o
0x0102f4bc 0x0102f4bc 0x00000032 Code RO 6206 i.vListInsert list.o
0x0102f4ee 0x0102f4ee 0x00000018 Code RO 6207 i.vListInsertEnd list.o
0x0102f506 0x0102f506 0x00000002 PAD
0x0102f508 0x0102f508 0x00000018 Code RO 6292 i.vPortEnterCritical port.o
0x0102f520 0x0102f520 0x0000001c Code RO 6293 i.vPortExitCritical port.o
0x0102f53c 0x0102f53c 0x00000044 Code RO 6244 i.vPortFree heap_4.o
0x0102f580 0x0102f580 0x00000018 Code RO 6294 i.vPortYield port.o
0x0102f598 0x0102f598 0x00000030 Code RO 5695 i.vTaskDelay tasks.o
0x0102f5c8 0x0102f5c8 0x00000010 Code RO 5700 i.vTaskInternalSetTimeOutState tasks.o
0x0102f5d8 0x0102f5d8 0x000000d0 Code RO 5701 i.vTaskList tasks.o
0x0102f6a8 0x0102f6a8 0x0000000c Code RO 5702 i.vTaskMissedYield tasks.o
0x0102f6b4 0x0102f6b4 0x00000024 Code RO 5704 i.vTaskPlaceOnEventList tasks.o
0x0102f6d8 0x0102f6d8 0x00000074 Code RO 5706 i.vTaskPriorityDisinheritAfterTimeout tasks.o
0x0102f74c 0x0102f74c 0x00000050 Code RO 5712 i.vTaskStartScheduler tasks.o
0x0102f79c 0x0102f79c 0x00000010 Code RO 5714 i.vTaskSuspendAll tasks.o
0x0102f7ac 0x0102f7ac 0x00000064 Code RO 5715 i.vTaskSwitchContext tasks.o
0x0102f810 0x0102f810 0x0000000c Code RO 6246 i.xPortGetFreeHeapSize heap_4.o
0x0102f81c 0x0102f81c 0x0000000c Code RO 6247 i.xPortGetMinimumEverFreeHeapSize heap_4.o
0x0102f828 0x0102f828 0x00000050 Code RO 6295 i.xPortStartScheduler port.o
0x0102f878 0x0102f878 0x00000024 Code RO 6024 i.xQueueCreateMutex queue.o
0x0102f89c 0x0102f89c 0x00000044 Code RO 6025 i.xQueueGenericCreate queue.o
0x0102f8e0 0x0102f8e0 0x0000006e Code RO 6026 i.xQueueGenericReset queue.o
0x0102f94e 0x0102f94e 0x0000018e Code RO 6027 i.xQueueGenericSend queue.o
0x0102fadc 0x0102fadc 0x00000074 Code RO 6031 i.xQueueGiveFromISR queue.o
0x0102fb50 0x0102fb50 0x00000142 Code RO 6037 i.xQueueReceive queue.o
0x0102fc92 0x0102fc92 0x00000172 Code RO 6039 i.xQueueSemaphoreTake queue.o
0x0102fe04 0x0102fe04 0x00000064 Code RO 5716 i.xTaskCheckForTimeOut tasks.o
0x0102fe68 0x0102fe68 0x00000178 Code RO 5717 i.xTaskCreate tasks.o
0x0102ffe0 0x0102ffe0 0x00000020 Code RO 5721 i.xTaskGetSchedulerState tasks.o
0x01030000 0x01030000 0x0000000c Code RO 5722 i.xTaskGetTickCount tasks.o
0x0103000c 0x0103000c 0x000000d4 Code RO 5724 i.xTaskIncrementTick tasks.o
0x010300e0 0x010300e0 0x00000068 Code RO 5727 i.xTaskPriorityDisinherit tasks.o
0x01030148 0x01030148 0x00000078 Code RO 5728 i.xTaskPriorityInherit tasks.o
0x010301c0 0x010301c0 0x00000064 Code RO 5729 i.xTaskRemoveFromEventList tasks.o
0x01030224 0x01030224 0x000000c8 Code RO 5730 i.xTaskResumeAll tasks.o
0x0102f508 0x0102f508 0x00000018 Code RO 6295 i.vPortEnterCritical port.o
0x0102f520 0x0102f520 0x0000001c Code RO 6296 i.vPortExitCritical port.o
0x0102f53c 0x0102f53c 0x00000044 Code RO 6247 i.vPortFree heap_4.o
0x0102f580 0x0102f580 0x00000018 Code RO 6297 i.vPortYield port.o
0x0102f598 0x0102f598 0x00000030 Code RO 5698 i.vTaskDelay tasks.o
0x0102f5c8 0x0102f5c8 0x00000010 Code RO 5703 i.vTaskInternalSetTimeOutState tasks.o
0x0102f5d8 0x0102f5d8 0x000000d0 Code RO 5704 i.vTaskList tasks.o
0x0102f6a8 0x0102f6a8 0x0000000c Code RO 5705 i.vTaskMissedYield tasks.o
0x0102f6b4 0x0102f6b4 0x00000024 Code RO 5707 i.vTaskPlaceOnEventList tasks.o
0x0102f6d8 0x0102f6d8 0x00000074 Code RO 5709 i.vTaskPriorityDisinheritAfterTimeout tasks.o
0x0102f74c 0x0102f74c 0x00000050 Code RO 5715 i.vTaskStartScheduler tasks.o
0x0102f79c 0x0102f79c 0x00000010 Code RO 5717 i.vTaskSuspendAll tasks.o
0x0102f7ac 0x0102f7ac 0x00000064 Code RO 5718 i.vTaskSwitchContext tasks.o
0x0102f810 0x0102f810 0x0000000c Code RO 6249 i.xPortGetFreeHeapSize heap_4.o
0x0102f81c 0x0102f81c 0x0000000c Code RO 6250 i.xPortGetMinimumEverFreeHeapSize heap_4.o
0x0102f828 0x0102f828 0x00000050 Code RO 6298 i.xPortStartScheduler port.o
0x0102f878 0x0102f878 0x00000024 Code RO 6027 i.xQueueCreateMutex queue.o
0x0102f89c 0x0102f89c 0x00000044 Code RO 6028 i.xQueueGenericCreate queue.o
0x0102f8e0 0x0102f8e0 0x0000006e Code RO 6029 i.xQueueGenericReset queue.o
0x0102f94e 0x0102f94e 0x0000018e Code RO 6030 i.xQueueGenericSend queue.o
0x0102fadc 0x0102fadc 0x00000074 Code RO 6034 i.xQueueGiveFromISR queue.o
0x0102fb50 0x0102fb50 0x00000142 Code RO 6040 i.xQueueReceive queue.o
0x0102fc92 0x0102fc92 0x00000172 Code RO 6042 i.xQueueSemaphoreTake queue.o
0x0102fe04 0x0102fe04 0x00000064 Code RO 5719 i.xTaskCheckForTimeOut tasks.o
0x0102fe68 0x0102fe68 0x00000178 Code RO 5720 i.xTaskCreate tasks.o
0x0102ffe0 0x0102ffe0 0x00000020 Code RO 5724 i.xTaskGetSchedulerState tasks.o
0x01030000 0x01030000 0x0000000c Code RO 5725 i.xTaskGetTickCount tasks.o
0x0103000c 0x0103000c 0x000000d4 Code RO 5727 i.xTaskIncrementTick tasks.o
0x010300e0 0x010300e0 0x00000068 Code RO 5730 i.xTaskPriorityDisinherit tasks.o
0x01030148 0x01030148 0x00000078 Code RO 5731 i.xTaskPriorityInherit tasks.o
0x010301c0 0x010301c0 0x00000064 Code RO 5732 i.xTaskRemoveFromEventList tasks.o
0x01030224 0x01030224 0x000000c8 Code RO 5733 i.xTaskResumeAll tasks.o
0x010302ec 0x010302ec 0x000001d8 Data RO 20 .constdata system_n32wb03x.o
0x010304c4 0x010304c4 0x0000000c Data RO 782 .constdata n32wb03x_rcc.o
0x010304d0 0x010304d0 0x00000324 Data RO 1952 .constdata n32wb03x_qflash.o
@ -5425,17 +5425,17 @@ Memory Map of the image
0x01030e0c 0x01030e0c 0x00000136 Data RO 4112 .constdata app_rdtss.o
0x01030f42 0x01030f42 0x00000002 PAD
0x01030f44 0x01030f44 0x00000018 Data RO 4113 .constdata app_rdtss.o
0x01030f5c 0x01030f5c 0x000000cc Data RO 4476 .constdata cli_core.o
0x01031028 0x01031028 0x00000007 Data RO 4888 .constdata app_info.o
0x0103102f 0x0103102f 0x00000081 Data RO 6747 .constdata mc_p.l(ctype_o.o)
0x010310b0 0x010310b0 0x00000004 Data RO 6748 .constdata mc_p.l(ctype_o.o)
0x010310b4 0x010310b4 0x00000489 Data RO 4477 .conststring cli_core.o
0x01030f5c 0x01030f5c 0x000000cc Data RO 4479 .constdata cli_core.o
0x01031028 0x01031028 0x00000007 Data RO 4891 .constdata app_info.o
0x0103102f 0x0103102f 0x00000081 Data RO 6750 .constdata mc_p.l(ctype_o.o)
0x010310b0 0x010310b0 0x00000004 Data RO 6751 .constdata mc_p.l(ctype_o.o)
0x010310b4 0x010310b4 0x00000489 Data RO 4480 .conststring cli_core.o
0x0103153d 0x0103153d 0x00000003 PAD
0x01031540 0x01031540 0x00000043 Data RO 5015 .conststring app_params.o
0x01031540 0x01031540 0x00000043 Data RO 5018 .conststring app_params.o
0x01031583 0x01031583 0x00000001 PAD
0x01031584 0x01031584 0x00000091 Data RO 5080 .conststring app_bootset.o
0x01031584 0x01031584 0x00000091 Data RO 5083 .conststring app_bootset.o
0x01031615 0x01031615 0x00000003 PAD
0x01031618 0x01031618 0x00000020 Data RO 6809 Region$$Table anon$$obj.o
0x01031618 0x01031618 0x00000020 Data RO 6812 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x01031638, Size: 0x00007de8, Max: 0x0000c000, ABSOLUTE, COMPRESSED[0x00000618])
@ -5451,46 +5451,46 @@ Memory Map of the image
0x20004734 COMPRESSED 0x00000002 Data RW 3924 .data ns_ble_task.o
0x20004736 COMPRESSED 0x00000001 Data RW 3925 .data ns_ble_task.o
0x20004737 COMPRESSED 0x00000001 Data RW 4114 .data app_rdtss.o
0x20004738 COMPRESSED 0x00000004 Data RW 4281 .data main.o
0x2000473c COMPRESSED 0x00000010 Data RW 4390 .data bsp_usart.o
0x2000474c COMPRESSED 0x00000004 Data RW 4478 .data cli_core.o
0x20004750 COMPRESSED 0x00000003 Data RW 4595 .data app_cli.o
0x20004738 COMPRESSED 0x00000004 Data RW 4284 .data main.o
0x2000473c COMPRESSED 0x00000010 Data RW 4393 .data bsp_usart.o
0x2000474c COMPRESSED 0x00000004 Data RW 4481 .data cli_core.o
0x20004750 COMPRESSED 0x00000003 Data RW 4598 .data app_cli.o
0x20004753 COMPRESSED 0x00000001 PAD
0x20004754 COMPRESSED 0x00000006 Data RW 4641 .data ble_up.o
0x2000475a COMPRESSED 0x0000000c Data RW 4710 .data app_ble_proto.o
0x20004754 COMPRESSED 0x00000006 Data RW 4644 .data ble_up.o
0x2000475a COMPRESSED 0x0000000c Data RW 4713 .data app_ble_proto.o
0x20004766 COMPRESSED 0x00000002 PAD
0x20004768 COMPRESSED 0x0000003c Data RW 4790 .data app_ota.o
0x200047a4 COMPRESSED 0x00000004 Data RW 4889 .data app_info.o
0x200047a8 COMPRESSED 0x00000002 Data RW 5016 .data app_params.o
0x200047aa COMPRESSED 0x00000001 Data RW 5081 .data app_bootset.o
0x20004768 COMPRESSED 0x0000003c Data RW 4793 .data app_ota.o
0x200047a4 COMPRESSED 0x00000004 Data RW 4892 .data app_info.o
0x200047a8 COMPRESSED 0x00000002 Data RW 5019 .data app_params.o
0x200047aa COMPRESSED 0x00000001 Data RW 5084 .data app_bootset.o
0x200047ab COMPRESSED 0x00000001 PAD
0x200047ac COMPRESSED 0x00000014 Data RW 5209 .data cjson.o
0x200047c0 COMPRESSED 0x00000001 Data RW 5666 .data infra_cjson.o
0x200047ac COMPRESSED 0x00000014 Data RW 5212 .data cjson.o
0x200047c0 COMPRESSED 0x00000001 Data RW 5669 .data infra_cjson.o
0x200047c1 COMPRESSED 0x00000003 PAD
0x200047c4 COMPRESSED 0x0000003c Data RW 5733 .data tasks.o
0x20004800 COMPRESSED 0x00000018 Data RW 6249 .data heap_4.o
0x20004818 COMPRESSED 0x00000004 Data RW 6296 .data port.o
0x2000481c COMPRESSED 0x00000004 Data RW 6367 .data mc_p.l(rand.o)
0x20004820 COMPRESSED 0x00000004 Data RW 6774 .data mc_p.l(mvars.o)
0x20004824 COMPRESSED 0x00000004 Data RW 6775 .data mc_p.l(mvars.o)
0x20004828 COMPRESSED 0x00000004 Data RW 6779 .data mc_p.l(errno.o)
0x200047c4 COMPRESSED 0x0000003c Data RW 5736 .data tasks.o
0x20004800 COMPRESSED 0x00000018 Data RW 6252 .data heap_4.o
0x20004818 COMPRESSED 0x00000004 Data RW 6299 .data port.o
0x2000481c COMPRESSED 0x00000004 Data RW 6370 .data mc_p.l(rand.o)
0x20004820 COMPRESSED 0x00000004 Data RW 6777 .data mc_p.l(mvars.o)
0x20004824 COMPRESSED 0x00000004 Data RW 6778 .data mc_p.l(mvars.o)
0x20004828 COMPRESSED 0x00000004 Data RW 6782 .data mc_p.l(errno.o)
0x2000482c - 0x00000034 Zero RW 19 .bss system_n32wb03x.o
0x20004860 - 0x00000328 Zero RW 1951 .bss n32wb03x_qflash.o
0x20004b88 - 0x0000011c Zero RW 2594 .bss prf.o
0x20004ca4 - 0x00000050 Zero RW 3202 .bss ns_timer.o
0x20004cf4 - 0x0000005c Zero RW 3278 .bss ns_sec.o
0x20004d50 - 0x000001b0 Zero RW 3553 .bss ns_ble.o
0x20004f00 - 0x00000c00 Zero RW 4389 .bss bsp_usart.o
0x20005b00 - 0x000001e0 Zero RW 4475 .bss cli_core.o
0x20005ce0 - 0x00000240 Zero RW 4594 .bss app_cli.o
0x20005f20 - 0x00000200 Zero RW 4640 .bss ble_up.o
0x20006120 - 0x0000077b Zero RW 4709 .bss app_ble_proto.o
0x2000689b - 0x000001f7 Zero RW 4789 .bss app_ota.o
0x20006a92 - 0x00000030 Zero RW 4887 .bss app_info.o
0x20004f00 - 0x00000c00 Zero RW 4392 .bss bsp_usart.o
0x20005b00 - 0x000001e0 Zero RW 4478 .bss cli_core.o
0x20005ce0 - 0x00000240 Zero RW 4597 .bss app_cli.o
0x20005f20 - 0x00000200 Zero RW 4643 .bss ble_up.o
0x20006120 - 0x0000077b Zero RW 4712 .bss app_ble_proto.o
0x2000689b - 0x000001f7 Zero RW 4792 .bss app_ota.o
0x20006a92 - 0x00000030 Zero RW 4890 .bss app_info.o
0x20006ac2 COMPRESSED 0x00000002 PAD
0x20006ac4 - 0x00000034 Zero RW 5014 .bss app_params.o
0x20006af8 - 0x000000f0 Zero RW 5732 .bss tasks.o
0x20006be8 - 0x00004800 Zero RW 6248 .bss heap_4.o
0x20006ac4 - 0x00000034 Zero RW 5017 .bss app_params.o
0x20006af8 - 0x000000f0 Zero RW 5735 .bss tasks.o
0x20006be8 - 0x00004800 Zero RW 6251 .bss heap_4.o
0x2000b3e8 - 0x00000200 Zero RW 2 HEAP startup_n32wb03x.o
0x2000b5e8 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o
@ -5504,12 +5504,12 @@ Image component sizes
696 188 0 0 0 12840 app_ble.o
1204 254 0 12 1915 9528 app_ble_proto.o
2032 1156 145 1 0 5563 app_bootset.o
2032 1156 145 1 0 5615 app_bootset.o
1468 216 0 3 576 6799 app_cli.o
284 102 16 0 0 8644 app_dis.o
100 12 0 0 0 2298 app_gpio.o
868 110 7 4 48 8056 app_info.o
1910 160 0 60 503 14978 app_ota.o
1910 160 0 60 503 15102 app_ota.o
1432 594 67 2 52 7737 app_params.o
626 156 334 1 0 6074 app_rdtss.o
196 36 0 6 512 2736 ble_up.o
@ -5553,7 +5553,7 @@ Image component sizes
2552 254 0 60 240 27732 tasks.o
----------------------------------------------------------------------
41728 7612 4999 2076 30140 920311 Object Totals
41728 7612 4999 2076 30140 920487 Object Totals
528 176 32 0 0 0 (incl. Generated)
40 0 11 27 2 0 (incl. Padding)
@ -5647,8 +5647,8 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
49708 7904 5132 2092 30140 906199 Grand Totals
49708 7904 5132 1560 30140 906199 ELF Image Totals (compressed)
49708 7904 5132 2092 30140 906375 Grand Totals
49708 7904 5132 1560 30140 906375 ELF Image Totals (compressed)
49708 7904 5132 1560 0 0 ROM Totals
==============================================================================

View File

@ -4829,97 +4829,97 @@ Memory Map of the image
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x01008000 0x01008000 0x000000c0 Data RO 3 RESET startup_n32wb03x.o
0x010080c0 0x010080c0 0x00000000 Code RO 6355 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x010080c0 0x010080c0 0x00000004 Code RO 6724 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x010080c4 0x010080c4 0x00000004 Code RO 6727 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x010080c8 0x010080c8 0x00000000 Code RO 6729 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x010080c8 0x010080c8 0x00000000 Code RO 6731 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x010080c8 0x010080c8 0x00000008 Code RO 6732 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x010080d0 0x010080d0 0x00000000 Code RO 6734 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x010080d0 0x010080d0 0x00000000 Code RO 6736 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x010080d0 0x010080d0 0x00000004 Code RO 6725 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x010080c0 0x010080c0 0x00000000 Code RO 6358 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x010080c0 0x010080c0 0x00000004 Code RO 6727 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x010080c4 0x010080c4 0x00000004 Code RO 6730 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x010080c8 0x010080c8 0x00000000 Code RO 6732 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x010080c8 0x010080c8 0x00000000 Code RO 6734 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x010080c8 0x010080c8 0x00000008 Code RO 6735 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x010080d0 0x010080d0 0x00000000 Code RO 6737 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x010080d0 0x010080d0 0x00000000 Code RO 6739 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x010080d0 0x010080d0 0x00000004 Code RO 6728 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x010080d4 0x010080d4 0x0000000e Code RO 10 .emb_text system_n32wb03x.o
0x010080e2 0x010080e2 0x00000002 PAD
0x010080e4 0x010080e4 0x0000000c Code RO 4672 .emb_text n32wb03x_it.o
0x010080f0 0x010080f0 0x00000078 Code RO 6286 .emb_text port.o
0x010080e4 0x010080e4 0x0000000c Code RO 4675 .emb_text n32wb03x_it.o
0x010080f0 0x010080f0 0x00000078 Code RO 6289 .emb_text port.o
0x01008168 0x01008168 0x0000001c Code RO 4 .text startup_n32wb03x.o
0x01008184 0x01008184 0x0000002c Code RO 6358 .text mc_p.l(uidiv.o)
0x010081b0 0x010081b0 0x00000028 Code RO 6360 .text mc_p.l(idiv.o)
0x010081d8 0x010081d8 0x00000060 Code RO 6362 .text mc_p.l(uldiv.o)
0x01008238 0x01008238 0x0000000c Code RO 6364 .text mc_p.l(tolower.o)
0x01008244 0x01008244 0x00000024 Code RO 6366 .text mc_p.l(rand.o)
0x01008268 0x01008268 0x00000024 Code RO 6369 .text mc_p.l(memcpya.o)
0x0100828c 0x0100828c 0x00000024 Code RO 6371 .text mc_p.l(memseta.o)
0x010082b0 0x010082b0 0x0000000e Code RO 6373 .text mc_p.l(strlen.o)
0x010082be 0x010082be 0x0000001c Code RO 6375 .text mc_p.l(strcmp.o)
0x010082da 0x010082da 0x00000014 Code RO 6377 .text mc_p.l(memchr.o)
0x010082ee 0x010082ee 0x0000001a Code RO 6379 .text mc_p.l(memcmp.o)
0x01008308 0x01008308 0x00000012 Code RO 6381 .text mc_p.l(strcpy.o)
0x0100831a 0x0100831a 0x0000001e Code RO 6383 .text mc_p.l(strncmp.o)
0x01008338 0x01008338 0x0000003c Code RO 6676 .text mc_p.l(__0sscanf.o)
0x01008374 0x01008374 0x00000374 Code RO 6678 .text mc_p.l(scanf_fp.o)
0x010086e8 0x010086e8 0x00000076 Code RO 6682 .text mc_p.l(strtoul.o)
0x0100875e 0x0100875e 0x000000b2 Code RO 6684 .text mf_p.l(fadd.o)
0x01008810 0x01008810 0x0000007a Code RO 6686 .text mf_p.l(fmul.o)
0x01008184 0x01008184 0x0000002c Code RO 6361 .text mc_p.l(uidiv.o)
0x010081b0 0x010081b0 0x00000028 Code RO 6363 .text mc_p.l(idiv.o)
0x010081d8 0x010081d8 0x00000060 Code RO 6365 .text mc_p.l(uldiv.o)
0x01008238 0x01008238 0x0000000c Code RO 6367 .text mc_p.l(tolower.o)
0x01008244 0x01008244 0x00000024 Code RO 6369 .text mc_p.l(rand.o)
0x01008268 0x01008268 0x00000024 Code RO 6372 .text mc_p.l(memcpya.o)
0x0100828c 0x0100828c 0x00000024 Code RO 6374 .text mc_p.l(memseta.o)
0x010082b0 0x010082b0 0x0000000e Code RO 6376 .text mc_p.l(strlen.o)
0x010082be 0x010082be 0x0000001c Code RO 6378 .text mc_p.l(strcmp.o)
0x010082da 0x010082da 0x00000014 Code RO 6380 .text mc_p.l(memchr.o)
0x010082ee 0x010082ee 0x0000001a Code RO 6382 .text mc_p.l(memcmp.o)
0x01008308 0x01008308 0x00000012 Code RO 6384 .text mc_p.l(strcpy.o)
0x0100831a 0x0100831a 0x0000001e Code RO 6386 .text mc_p.l(strncmp.o)
0x01008338 0x01008338 0x0000003c Code RO 6679 .text mc_p.l(__0sscanf.o)
0x01008374 0x01008374 0x00000374 Code RO 6681 .text mc_p.l(scanf_fp.o)
0x010086e8 0x010086e8 0x00000076 Code RO 6685 .text mc_p.l(strtoul.o)
0x0100875e 0x0100875e 0x000000b2 Code RO 6687 .text mf_p.l(fadd.o)
0x01008810 0x01008810 0x0000007a Code RO 6689 .text mf_p.l(fmul.o)
0x0100888a 0x0100888a 0x00000002 PAD
0x0100888c 0x0100888c 0x00000164 Code RO 6690 .text mf_p.l(dadd.o)
0x010089f0 0x010089f0 0x000000d0 Code RO 6692 .text mf_p.l(dmul.o)
0x01008ac0 0x01008ac0 0x000000f0 Code RO 6694 .text mf_p.l(ddiv.o)
0x01008bb0 0x01008bb0 0x0000002c Code RO 6696 .text mf_p.l(dscalb.o)
0x01008bdc 0x01008bdc 0x0000000e Code RO 6700 .text mf_p.l(ffltui.o)
0x0100888c 0x0100888c 0x00000164 Code RO 6693 .text mf_p.l(dadd.o)
0x010089f0 0x010089f0 0x000000d0 Code RO 6695 .text mf_p.l(dmul.o)
0x01008ac0 0x01008ac0 0x000000f0 Code RO 6697 .text mf_p.l(ddiv.o)
0x01008bb0 0x01008bb0 0x0000002c Code RO 6699 .text mf_p.l(dscalb.o)
0x01008bdc 0x01008bdc 0x0000000e Code RO 6703 .text mf_p.l(ffltui.o)
0x01008bea 0x01008bea 0x00000002 PAD
0x01008bec 0x01008bec 0x00000028 Code RO 6702 .text mf_p.l(dflti.o)
0x01008c14 0x01008c14 0x0000001c Code RO 6704 .text mf_p.l(dfltui.o)
0x01008c30 0x01008c30 0x0000001c Code RO 6706 .text mf_p.l(dfltul.o)
0x01008c4c 0x01008c4c 0x00000032 Code RO 6708 .text mf_p.l(ffixi.o)
0x01008bec 0x01008bec 0x00000028 Code RO 6705 .text mf_p.l(dflti.o)
0x01008c14 0x01008c14 0x0000001c Code RO 6707 .text mf_p.l(dfltui.o)
0x01008c30 0x01008c30 0x0000001c Code RO 6709 .text mf_p.l(dfltul.o)
0x01008c4c 0x01008c4c 0x00000032 Code RO 6711 .text mf_p.l(ffixi.o)
0x01008c7e 0x01008c7e 0x00000002 PAD
0x01008c80 0x01008c80 0x00000048 Code RO 6712 .text mf_p.l(dfixi.o)
0x01008cc8 0x01008cc8 0x00000040 Code RO 6714 .text mf_p.l(dfixul.o)
0x01008d08 0x01008d08 0x00000028 Code RO 6716 .text mf_p.l(f2d.o)
0x01008d30 0x01008d30 0x00000028 Code RO 6718 .text mf_p.l(cdcmple.o)
0x01008d58 0x01008d58 0x00000028 Code RO 6720 .text mf_p.l(cdrcmple.o)
0x01008d80 0x01008d80 0x00000038 Code RO 6722 .text mf_p.l(d2f.o)
0x01008db8 0x01008db8 0x0000007a Code RO 6738 .text mc_p.l(llmul.o)
0x01008e32 0x01008e32 0x00000020 Code RO 6740 .text mc_p.l(llshl.o)
0x01008e52 0x01008e52 0x00000022 Code RO 6742 .text mc_p.l(llushr.o)
0x01008e74 0x01008e74 0x00000026 Code RO 6744 .text mc_p.l(llsshr.o)
0x01008c80 0x01008c80 0x00000048 Code RO 6715 .text mf_p.l(dfixi.o)
0x01008cc8 0x01008cc8 0x00000040 Code RO 6717 .text mf_p.l(dfixul.o)
0x01008d08 0x01008d08 0x00000028 Code RO 6719 .text mf_p.l(f2d.o)
0x01008d30 0x01008d30 0x00000028 Code RO 6721 .text mf_p.l(cdcmple.o)
0x01008d58 0x01008d58 0x00000028 Code RO 6723 .text mf_p.l(cdrcmple.o)
0x01008d80 0x01008d80 0x00000038 Code RO 6725 .text mf_p.l(d2f.o)
0x01008db8 0x01008db8 0x0000007a Code RO 6741 .text mc_p.l(llmul.o)
0x01008e32 0x01008e32 0x00000020 Code RO 6743 .text mc_p.l(llshl.o)
0x01008e52 0x01008e52 0x00000022 Code RO 6745 .text mc_p.l(llushr.o)
0x01008e74 0x01008e74 0x00000026 Code RO 6747 .text mc_p.l(llsshr.o)
0x01008e9a 0x01008e9a 0x00000002 PAD
0x01008e9c 0x01008e9c 0x00000008 Code RO 6746 .text mc_p.l(ctype_o.o)
0x01008ea4 0x01008ea4 0x00000012 Code RO 6768 .text mc_p.l(isspace_o.o)
0x01008e9c 0x01008e9c 0x00000008 Code RO 6749 .text mc_p.l(ctype_o.o)
0x01008ea4 0x01008ea4 0x00000012 Code RO 6771 .text mc_p.l(isspace_o.o)
0x01008eb6 0x01008eb6 0x00000002 PAD
0x01008eb8 0x01008eb8 0x0000002c Code RO 6783 .text mc_p.l(scanf_char.o)
0x01008ee4 0x01008ee4 0x00000044 Code RO 6785 .text mc_p.l(_sgetc.o)
0x01008f28 0x01008f28 0x000000a6 Code RO 6787 .text mc_p.l(_strtoul.o)
0x01008eb8 0x01008eb8 0x0000002c Code RO 6786 .text mc_p.l(scanf_char.o)
0x01008ee4 0x01008ee4 0x00000044 Code RO 6788 .text mc_p.l(_sgetc.o)
0x01008f28 0x01008f28 0x000000a6 Code RO 6790 .text mc_p.l(_strtoul.o)
0x01008fce 0x01008fce 0x00000002 PAD
0x01008fd0 0x01008fd0 0x000000a4 Code RO 6789 .text mc_p.l(strtod.o)
0x01009074 0x01009074 0x00000000 Code RO 6791 .text mc_p.l(iusefp.o)
0x01009074 0x01009074 0x00000082 Code RO 6792 .text mf_p.l(fepilogue.o)
0x010090f6 0x010090f6 0x000000be Code RO 6794 .text mf_p.l(depilogue.o)
0x010091b4 0x010091b4 0x00000024 Code RO 6798 .text mc_p.l(init.o)
0x010091d8 0x010091d8 0x0000001e Code RO 6802 .text mc_p.l(_chval.o)
0x01008fd0 0x01008fd0 0x000000a4 Code RO 6792 .text mc_p.l(strtod.o)
0x01009074 0x01009074 0x00000000 Code RO 6794 .text mc_p.l(iusefp.o)
0x01009074 0x01009074 0x00000082 Code RO 6795 .text mf_p.l(fepilogue.o)
0x010090f6 0x010090f6 0x000000be Code RO 6797 .text mf_p.l(depilogue.o)
0x010091b4 0x010091b4 0x00000024 Code RO 6801 .text mc_p.l(init.o)
0x010091d8 0x010091d8 0x0000001e Code RO 6805 .text mc_p.l(_chval.o)
0x010091f6 0x010091f6 0x00000002 PAD
0x010091f8 0x010091f8 0x00000338 Code RO 6804 .text mc_p.l(_scanf.o)
0x01009530 0x01009530 0x00000056 Code RO 6811 .text mc_p.l(__dczerorl2.o)
0x010091f8 0x010091f8 0x00000338 Code RO 6807 .text mc_p.l(_scanf.o)
0x01009530 0x01009530 0x00000056 Code RO 6814 .text mc_p.l(__dczerorl2.o)
0x01009586 0x01009586 0x00000002 PAD
0x01009588 0x01009588 0x0000000c Ven RO 6813 Veneer$$Code anon$$obj.o
0x01009594 0x01009594 0x0000000c Ven RO 6814 Veneer$$Code anon$$obj.o
0x010095a0 0x010095a0 0x0000000c Ven RO 6815 Veneer$$Code anon$$obj.o
0x010095ac 0x010095ac 0x0000000c Ven RO 6816 Veneer$$Code anon$$obj.o
0x010095b8 0x010095b8 0x0000000c Ven RO 6817 Veneer$$Code anon$$obj.o
0x010095c4 0x010095c4 0x0000000c Ven RO 6818 Veneer$$Code anon$$obj.o
0x010095d0 0x010095d0 0x0000000c Ven RO 6819 Veneer$$Code anon$$obj.o
0x010095dc 0x010095dc 0x0000000c Ven RO 6820 Veneer$$Code anon$$obj.o
0x010095e8 0x010095e8 0x0000000c Ven RO 6821 Veneer$$Code anon$$obj.o
0x010095f4 0x010095f4 0x0000000c Ven RO 6822 Veneer$$Code anon$$obj.o
0x01009600 0x01009600 0x0000000c Ven RO 6823 Veneer$$Code anon$$obj.o
0x0100960c 0x0100960c 0x0000000c Ven RO 6824 Veneer$$Code anon$$obj.o
0x01009618 0x01009618 0x0000000c Ven RO 6825 Veneer$$Code anon$$obj.o
0x01009624 0x01009624 0x0000000c Ven RO 6826 Veneer$$Code anon$$obj.o
0x01009630 0x01009630 0x0000000c Ven RO 6827 Veneer$$Code anon$$obj.o
0x0100963c 0x0100963c 0x0000000c Ven RO 6828 Veneer$$Code anon$$obj.o
0x01009648 0x01009648 0x0000000c Ven RO 6829 Veneer$$Code anon$$obj.o
0x01009654 0x01009654 0x0000000c Ven RO 6830 Veneer$$Code anon$$obj.o
0x01009660 0x01009660 0x0000000c Ven RO 6831 Veneer$$Code anon$$obj.o
0x01009588 0x01009588 0x0000000c Ven RO 6816 Veneer$$Code anon$$obj.o
0x01009594 0x01009594 0x0000000c Ven RO 6817 Veneer$$Code anon$$obj.o
0x010095a0 0x010095a0 0x0000000c Ven RO 6818 Veneer$$Code anon$$obj.o
0x010095ac 0x010095ac 0x0000000c Ven RO 6819 Veneer$$Code anon$$obj.o
0x010095b8 0x010095b8 0x0000000c Ven RO 6820 Veneer$$Code anon$$obj.o
0x010095c4 0x010095c4 0x0000000c Ven RO 6821 Veneer$$Code anon$$obj.o
0x010095d0 0x010095d0 0x0000000c Ven RO 6822 Veneer$$Code anon$$obj.o
0x010095dc 0x010095dc 0x0000000c Ven RO 6823 Veneer$$Code anon$$obj.o
0x010095e8 0x010095e8 0x0000000c Ven RO 6824 Veneer$$Code anon$$obj.o
0x010095f4 0x010095f4 0x0000000c Ven RO 6825 Veneer$$Code anon$$obj.o
0x01009600 0x01009600 0x0000000c Ven RO 6826 Veneer$$Code anon$$obj.o
0x0100960c 0x0100960c 0x0000000c Ven RO 6827 Veneer$$Code anon$$obj.o
0x01009618 0x01009618 0x0000000c Ven RO 6828 Veneer$$Code anon$$obj.o
0x01009624 0x01009624 0x0000000c Ven RO 6829 Veneer$$Code anon$$obj.o
0x01009630 0x01009630 0x0000000c Ven RO 6830 Veneer$$Code anon$$obj.o
0x0100963c 0x0100963c 0x0000000c Ven RO 6831 Veneer$$Code anon$$obj.o
0x01009648 0x01009648 0x0000000c Ven RO 6832 Veneer$$Code anon$$obj.o
0x01009654 0x01009654 0x0000000c Ven RO 6833 Veneer$$Code anon$$obj.o
0x01009660 0x01009660 0x0000000c Ven RO 6834 Veneer$$Code anon$$obj.o
0x0100966c 0x0100966c 0x00000006 Code RO 192 i.ADC_ClearFlag n32wb03x_adc.o
0x01009672 0x01009672 0x0000000e Code RO 194 i.ADC_ConfigChannel n32wb03x_adc.o
0x01009680 0x01009680 0x00000054 Code RO 199 i.ADC_ConverValueToTemperature n32wb03x_adc.o
@ -4932,25 +4932,25 @@ Memory Map of the image
0x0100982c 0x0100982c 0x0000000e Code RO 213 i.ADC_GetFlagStatus n32wb03x_adc.o
0x0100983a 0x0100983a 0x00000002 PAD
0x0100983c 0x0100983c 0x00000018 Code RO 218 i.ADC_SetOverSampleCounter n32wb03x_adc.o
0x01009854 0x01009854 0x000002ec Code RO 5075 i.AppBootset_CmdAppswitch app_bootset.o
0x01009b40 0x01009b40 0x00000034 Code RO 5076 i.AppBootset_CmdBsdump app_bootset.o
0x01009b74 0x01009b74 0x000002fc Code RO 5077 i.AppBootset_CmdBsset app_bootset.o
0x01009e70 0x01009e70 0x00000028 Code RO 4589 i.AppCli_Init app_cli.o
0x01009e98 0x01009e98 0x000000c8 Code RO 5006 i.AppParams_CmdAppget app_params.o
0x01009f60 0x01009f60 0x0000033c Code RO 5007 i.AppParams_CmdAppset app_params.o
0x0100a29c 0x0100a29c 0x00000520 Code RO 4591 i.CliTask app_cli.o
0x0100a7bc 0x0100a7bc 0x00000078 Code RO 4457 i.CmdBleLog cli_core.o
0x0100a834 0x0100a834 0x00000198 Code RO 4458 i.CmdDevInfo cli_core.o
0x0100a9cc 0x0100a9cc 0x00000090 Code RO 4459 i.CmdFactory cli_core.o
0x0100aa5c 0x0100aa5c 0x00000044 Code RO 4460 i.CmdHang cli_core.o
0x0100aaa0 0x0100aaa0 0x000000d4 Code RO 4461 i.CmdHelp cli_core.o
0x0100ab74 0x0100ab74 0x000000d0 Code RO 4462 i.CmdLed cli_core.o
0x0100ac44 0x0100ac44 0x00000014 Code RO 4463 i.CmdOta cli_core.o
0x0100ac58 0x0100ac58 0x00000034 Code RO 4464 i.CmdReset cli_core.o
0x0100ac8c 0x0100ac8c 0x000000e8 Code RO 4465 i.CmdSysInfo cli_core.o
0x0100ad74 0x0100ad74 0x00000070 Code RO 4466 i.CmdUartInfo cli_core.o
0x0100ade4 0x0100ade4 0x00000044 Code RO 4467 i.CmdUartRst cli_core.o
0x0100ae28 0x0100ae28 0x00000098 Code RO 4468 i.CmdVersion cli_core.o
0x01009854 0x01009854 0x000002ec Code RO 5078 i.AppBootset_CmdAppswitch app_bootset.o
0x01009b40 0x01009b40 0x00000034 Code RO 5079 i.AppBootset_CmdBsdump app_bootset.o
0x01009b74 0x01009b74 0x000002fc Code RO 5080 i.AppBootset_CmdBsset app_bootset.o
0x01009e70 0x01009e70 0x00000028 Code RO 4592 i.AppCli_Init app_cli.o
0x01009e98 0x01009e98 0x000000c8 Code RO 5009 i.AppParams_CmdAppget app_params.o
0x01009f60 0x01009f60 0x0000033c Code RO 5010 i.AppParams_CmdAppset app_params.o
0x0100a29c 0x0100a29c 0x00000520 Code RO 4594 i.CliTask app_cli.o
0x0100a7bc 0x0100a7bc 0x00000078 Code RO 4460 i.CmdBleLog cli_core.o
0x0100a834 0x0100a834 0x00000198 Code RO 4461 i.CmdDevInfo cli_core.o
0x0100a9cc 0x0100a9cc 0x00000090 Code RO 4462 i.CmdFactory cli_core.o
0x0100aa5c 0x0100aa5c 0x00000044 Code RO 4463 i.CmdHang cli_core.o
0x0100aaa0 0x0100aaa0 0x000000d4 Code RO 4464 i.CmdHelp cli_core.o
0x0100ab74 0x0100ab74 0x000000d0 Code RO 4465 i.CmdLed cli_core.o
0x0100ac44 0x0100ac44 0x00000014 Code RO 4466 i.CmdOta cli_core.o
0x0100ac58 0x0100ac58 0x00000034 Code RO 4467 i.CmdReset cli_core.o
0x0100ac8c 0x0100ac8c 0x000000e8 Code RO 4468 i.CmdSysInfo cli_core.o
0x0100ad74 0x0100ad74 0x00000070 Code RO 4469 i.CmdUartInfo cli_core.o
0x0100ade4 0x0100ade4 0x00000044 Code RO 4470 i.CmdUartRst cli_core.o
0x0100ae28 0x0100ae28 0x00000098 Code RO 4471 i.CmdVersion cli_core.o
0x0100aec0 0x0100aec0 0x00000018 Code RO 745 i.DBG_ConfigPeriph n32wb03x_rcc.o
0x0100aed8 0x0100aed8 0x00000004 Code RO 487 i.DMA_ClearFlag n32wb03x_dma.o
0x0100aedc 0x0100aedc 0x00000088 Code RO 490 i.DMA_DeInit n32wb03x_dma.o
@ -4968,16 +4968,16 @@ Memory Map of the image
0x0100b14c 0x0100b14c 0x00000004 Code RO 640 i.GPIO_ResetBits n32wb03x_gpio.o
0x0100b150 0x0100b150 0x00000004 Code RO 641 i.GPIO_SetBits n32wb03x_gpio.o
0x0100b154 0x0100b154 0x00000008 Code RO 642 i.GPIO_TogglePin n32wb03x_gpio.o
0x0100b15c 0x0100b15c 0x000000b0 Code RO 4673 i.HardFault_Handler n32wb03x_it.o
0x0100b15c 0x0100b15c 0x000000b0 Code RO 4676 i.HardFault_Handler n32wb03x_it.o
0x0100b20c 0x0100b20c 0x0000000c Code RO 1986 i.IWDG_CntReload n32wb03x_iwdg.o
0x0100b218 0x0100b218 0x00000010 Code RO 1987 i.IWDG_Enable n32wb03x_iwdg.o
0x0100b228 0x0100b228 0x00000010 Code RO 1989 i.IWDG_ReloadKey n32wb03x_iwdg.o
0x0100b238 0x0100b238 0x0000000c Code RO 1990 i.IWDG_SetPrescalerDiv n32wb03x_iwdg.o
0x0100b244 0x0100b244 0x0000000c Code RO 1991 i.IWDG_WriteConfig n32wb03x_iwdg.o
0x0100b250 0x0100b250 0x00000008 Code RO 4972 i.LedBlink app_gpio.o
0x0100b258 0x0100b258 0x0000004c Code RO 4973 i.LedInit app_gpio.o
0x0100b2a4 0x0100b2a4 0x00000008 Code RO 4974 i.LedOff app_gpio.o
0x0100b2ac 0x0100b2ac 0x00000008 Code RO 4975 i.LedOn app_gpio.o
0x0100b250 0x0100b250 0x00000008 Code RO 4975 i.LedBlink app_gpio.o
0x0100b258 0x0100b258 0x0000004c Code RO 4976 i.LedInit app_gpio.o
0x0100b2a4 0x0100b2a4 0x00000008 Code RO 4977 i.LedOff app_gpio.o
0x0100b2ac 0x0100b2ac 0x00000008 Code RO 4978 i.LedOn app_gpio.o
0x0100b2b4 0x0100b2b4 0x00000078 Code RO 159 i.NVIC_Init misc.o
0x0100b32c 0x0100b32c 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o
0x0100b3f8 0x0100b3f8 0x00000024 Code RO 1947 i.Qflash_Erase_Sector n32wb03x_qflash.o
@ -4992,13 +4992,13 @@ Memory Map of the image
0x0100b504 0x0100b504 0x0000001c Code RO 773 i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL n32wb03x_rcc.o
0x0100b520 0x0100b520 0x00000074 Code RO 774 i.RCC_GetClocksFreqValue n32wb03x_rcc.o
0x0100b594 0x0100b594 0x00000030 Code RO 775 i.RCC_GetFlagStatus n32wb03x_rcc.o
0x0100b5c4 0x0100b5c4 0x00000002 Code RO 6287 i.SVC_Handler port.o
0x0100b5c4 0x0100b5c4 0x00000002 Code RO 6290 i.SVC_Handler port.o
0x0100b5c6 0x0100b5c6 0x00000002 PAD
0x0100b5c8 0x0100b5c8 0x00000024 Code RO 6288 i.SysTick_Handler port.o
0x0100b5c8 0x0100b5c8 0x00000024 Code RO 6291 i.SysTick_Handler port.o
0x0100b5ec 0x0100b5ec 0x00000034 Code RO 13 i.SystemGetMacAddr system_n32wb03x.o
0x0100b620 0x0100b620 0x00000180 Code RO 15 i.SystemInit system_n32wb03x.o
0x0100b7a0 0x0100b7a0 0x00000030 Code RO 16 i.SystemTrimValueGet system_n32wb03x.o
0x0100b7d0 0x0100b7d0 0x00000008 Code RO 4674 i.USART1_IRQHandler n32wb03x_it.o
0x0100b7d0 0x0100b7d0 0x00000008 Code RO 4677 i.USART1_IRQHandler n32wb03x_it.o
0x0100b7d8 0x0100b7d8 0x00000032 Code RO 1520 i.USART_ConfigInt n32wb03x_usart.o
0x0100b80a 0x0100b80a 0x00000002 PAD
0x0100b80c 0x0100b80c 0x0000001c Code RO 1525 i.USART_Enable n32wb03x_usart.o
@ -5009,122 +5009,122 @@ Memory Map of the image
0x0100b888 0x0100b888 0x00000088 Code RO 1534 i.USART_Init n32wb03x_usart.o
0x0100b910 0x0100b910 0x00000008 Code RO 1535 i.USART_ReceiveData n32wb03x_usart.o
0x0100b918 0x0100b918 0x00000008 Code RO 1537 i.USART_SendData n32wb03x_usart.o
0x0100b920 0x0100b920 0x00000020 Code RO 6620 i.__0printf mc_p.l(printfa.o)
0x0100b940 0x0100b940 0x00000028 Code RO 6622 i.__0sprintf mc_p.l(printfa.o)
0x0100b968 0x0100b968 0x0000002c Code RO 6625 i.__0vsnprintf mc_p.l(printfa.o)
0x0100b994 0x0100b994 0x0000002e Code RO 6796 i.__ARM_clz mf_p.l(depilogue.o)
0x0100b920 0x0100b920 0x00000020 Code RO 6623 i.__0printf mc_p.l(printfa.o)
0x0100b940 0x0100b940 0x00000028 Code RO 6625 i.__0sprintf mc_p.l(printfa.o)
0x0100b968 0x0100b968 0x0000002c Code RO 6628 i.__0vsnprintf mc_p.l(printfa.o)
0x0100b994 0x0100b994 0x0000002e Code RO 6799 i.__ARM_clz mf_p.l(depilogue.o)
0x0100b9c2 0x0100b9c2 0x00000002 PAD
0x0100b9c4 0x0100b9c4 0x00000008 Code RO 6776 i.__aeabi_errno_addr mc_p.l(errno.o)
0x0100b9cc 0x0100b9cc 0x00000064 Code RO 6652 i.__free$realloc mc_p.l(mallocr.o)
0x0100ba30 0x0100ba30 0x00000048 Code RO 6653 i.__malloc$realloc mc_p.l(mallocr.o)
0x0100ba78 0x0100ba78 0x00000174 Code RO 6627 i._fp_digits mc_p.l(printfa.o)
0x0100bbec 0x0100bbec 0x0000000e Code RO 6680 i._is_digit mc_p.l(scanf_fp.o)
0x0100b9c4 0x0100b9c4 0x00000008 Code RO 6779 i.__aeabi_errno_addr mc_p.l(errno.o)
0x0100b9cc 0x0100b9cc 0x00000064 Code RO 6655 i.__free$realloc mc_p.l(mallocr.o)
0x0100ba30 0x0100ba30 0x00000048 Code RO 6656 i.__malloc$realloc mc_p.l(mallocr.o)
0x0100ba78 0x0100ba78 0x00000174 Code RO 6630 i._fp_digits mc_p.l(printfa.o)
0x0100bbec 0x0100bbec 0x0000000e Code RO 6683 i._is_digit mc_p.l(scanf_fp.o)
0x0100bbfa 0x0100bbfa 0x00000002 PAD
0x0100bbfc 0x0100bbfc 0x000006ec Code RO 6628 i._printf_core mc_p.l(printfa.o)
0x0100c2e8 0x0100c2e8 0x00000020 Code RO 6629 i._printf_post_padding mc_p.l(printfa.o)
0x0100c308 0x0100c308 0x0000002c Code RO 6630 i._printf_pre_padding mc_p.l(printfa.o)
0x0100c334 0x0100c334 0x00000016 Code RO 6631 i._snputc mc_p.l(printfa.o)
0x0100c34a 0x0100c34a 0x0000000a Code RO 6632 i._sputc mc_p.l(printfa.o)
0x0100c354 0x0100c354 0x00000032 Code RO 5115 i.add_item_to_array cjson.o
0x0100c386 0x0100c386 0x00000062 Code RO 5116 i.add_item_to_object cjson.o
0x0100c3e8 0x0100c3e8 0x00000074 Code RO 4169 i.app_ble_adv_init app_ble.o
0x0100c45c 0x0100c45c 0x00000002 Code RO 4170 i.app_ble_adv_msg_handler app_ble.o
0x0100bbfc 0x0100bbfc 0x000006ec Code RO 6631 i._printf_core mc_p.l(printfa.o)
0x0100c2e8 0x0100c2e8 0x00000020 Code RO 6632 i._printf_post_padding mc_p.l(printfa.o)
0x0100c308 0x0100c308 0x0000002c Code RO 6633 i._printf_pre_padding mc_p.l(printfa.o)
0x0100c334 0x0100c334 0x00000016 Code RO 6634 i._snputc mc_p.l(printfa.o)
0x0100c34a 0x0100c34a 0x0000000a Code RO 6635 i._sputc mc_p.l(printfa.o)
0x0100c354 0x0100c354 0x00000032 Code RO 5118 i.add_item_to_array cjson.o
0x0100c386 0x0100c386 0x00000062 Code RO 5119 i.add_item_to_object cjson.o
0x0100c3e8 0x0100c3e8 0x00000074 Code RO 4172 i.app_ble_adv_init app_ble.o
0x0100c45c 0x0100c45c 0x00000002 Code RO 4173 i.app_ble_adv_msg_handler app_ble.o
0x0100c45e 0x0100c45e 0x00000002 PAD
0x0100c460 0x0100c460 0x00000044 Code RO 4171 i.app_ble_connected app_ble.o
0x0100c4a4 0x0100c4a4 0x0000005c Code RO 4172 i.app_ble_disconnected app_ble.o
0x0100c500 0x0100c500 0x00000098 Code RO 4173 i.app_ble_gap_params_init app_ble.o
0x0100c598 0x0100c598 0x0000004c Code RO 4174 i.app_ble_init app_ble.o
0x0100c5e4 0x0100c5e4 0x0000006c Code RO 4175 i.app_ble_msg_handler app_ble.o
0x0100c650 0x0100c650 0x000000ec Code RO 4698 i.app_ble_proto_cli_exec app_ble_proto.o
0x0100c73c 0x0100c73c 0x00000040 Code RO 4699 i.app_ble_proto_cli_rsp app_ble_proto.o
0x0100c77c 0x0100c77c 0x00000014 Code RO 4700 i.app_ble_proto_init app_ble_proto.o
0x0100c790 0x0100c790 0x0000000c Code RO 4701 i.app_ble_proto_log_get app_ble_proto.o
0x0100c79c 0x0100c79c 0x00000010 Code RO 4702 i.app_ble_proto_log_set app_ble_proto.o
0x0100c7ac 0x0100c7ac 0x0000001c Code RO 4703 i.app_ble_proto_on_disconnect app_ble_proto.o
0x0100c7c8 0x0100c7c8 0x000001a0 Code RO 4704 i.app_ble_proto_rx_bytes app_ble_proto.o
0x0100c968 0x0100c968 0x000000b8 Code RO 4705 i.app_ble_proto_send_frame app_ble_proto.o
0x0100ca20 0x0100ca20 0x00000050 Code RO 4177 i.app_ble_sec_init app_ble.o
0x0100ca70 0x0100ca70 0x0000000c Code RO 4592 i.app_cli_ota_mode_enter app_cli.o
0x0100c460 0x0100c460 0x00000044 Code RO 4174 i.app_ble_connected app_ble.o
0x0100c4a4 0x0100c4a4 0x0000005c Code RO 4175 i.app_ble_disconnected app_ble.o
0x0100c500 0x0100c500 0x00000098 Code RO 4176 i.app_ble_gap_params_init app_ble.o
0x0100c598 0x0100c598 0x0000004c Code RO 4177 i.app_ble_init app_ble.o
0x0100c5e4 0x0100c5e4 0x0000006c Code RO 4178 i.app_ble_msg_handler app_ble.o
0x0100c650 0x0100c650 0x000000ec Code RO 4701 i.app_ble_proto_cli_exec app_ble_proto.o
0x0100c73c 0x0100c73c 0x00000040 Code RO 4702 i.app_ble_proto_cli_rsp app_ble_proto.o
0x0100c77c 0x0100c77c 0x00000014 Code RO 4703 i.app_ble_proto_init app_ble_proto.o
0x0100c790 0x0100c790 0x0000000c Code RO 4704 i.app_ble_proto_log_get app_ble_proto.o
0x0100c79c 0x0100c79c 0x00000010 Code RO 4705 i.app_ble_proto_log_set app_ble_proto.o
0x0100c7ac 0x0100c7ac 0x0000001c Code RO 4706 i.app_ble_proto_on_disconnect app_ble_proto.o
0x0100c7c8 0x0100c7c8 0x000001a0 Code RO 4707 i.app_ble_proto_rx_bytes app_ble_proto.o
0x0100c968 0x0100c968 0x000000b8 Code RO 4708 i.app_ble_proto_send_frame app_ble_proto.o
0x0100ca20 0x0100ca20 0x00000050 Code RO 4180 i.app_ble_sec_init app_ble.o
0x0100ca70 0x0100ca70 0x0000000c Code RO 4595 i.app_cli_ota_mode_enter app_cli.o
0x0100ca7c 0x0100ca7c 0x00000010 Code RO 3897 i.app_conn_params_update_evt_handler ns_ble_task.o
0x0100ca8c 0x0100ca8c 0x000000cc Code RO 3498 i.app_create_advertising ns_ble.o
0x0100cb58 0x0100cb58 0x0000005c Code RO 4051 i.app_dis_add_dis app_dis.o
0x0100cbb4 0x0100cbb4 0x00000104 Code RO 3898 i.app_entry_point_handler ns_ble_task.o
0x0100ccb8 0x0100ccb8 0x00000008 Code RO 4876 i.app_fan_get_rpm app_info.o
0x0100ccc0 0x0100ccc0 0x0000005c Code RO 4877 i.app_info_chip_temp_c10 app_info.o
0x0100cd1c 0x0100cd1c 0x00000018 Code RO 4878 i.app_info_cur_bank app_info.o
0x0100cd34 0x0100cd34 0x0000004c Code RO 4879 i.app_info_handle_query app_info.o
0x0100cd80 0x0100cd80 0x0000000c Code RO 4880 i.app_info_last_temp_raw app_info.o
0x0100cd8c 0x0100cd8c 0x0000002c Code RO 4881 i.app_info_tlv_snapshot app_info.o
0x0100cdb8 0x0100cdb8 0x00000020 Code RO 4882 i.app_info_vdd_mv app_info.o
0x0100ccb8 0x0100ccb8 0x00000008 Code RO 4879 i.app_fan_get_rpm app_info.o
0x0100ccc0 0x0100ccc0 0x0000005c Code RO 4880 i.app_info_chip_temp_c10 app_info.o
0x0100cd1c 0x0100cd1c 0x00000018 Code RO 4881 i.app_info_cur_bank app_info.o
0x0100cd34 0x0100cd34 0x0000004c Code RO 4882 i.app_info_handle_query app_info.o
0x0100cd80 0x0100cd80 0x0000000c Code RO 4883 i.app_info_last_temp_raw app_info.o
0x0100cd8c 0x0100cd8c 0x0000002c Code RO 4884 i.app_info_tlv_snapshot app_info.o
0x0100cdb8 0x0100cdb8 0x00000020 Code RO 4885 i.app_info_vdd_mv app_info.o
0x0100cdd8 0x0100cdd8 0x0000001c Code RO 3899 i.app_init_timeout_evt_handler ns_ble_task.o
0x0100cdf4 0x0100cdf4 0x000000ac Code RO 3900 i.app_lsi_calib_evt_handler ns_ble_task.o
0x0100cea0 0x0100cea0 0x00000018 Code RO 4774 i.app_ota_abort app_ota.o
0x0100ceb8 0x0100ceb8 0x00000010 Code RO 4775 i.app_ota_chan_idle app_ota.o
0x0100cec8 0x0100cec8 0x00000020 Code RO 4776 i.app_ota_chan_rsp_ble app_ota.o
0x0100cee8 0x0100cee8 0x00000120 Code RO 4777 i.app_ota_chan_rx app_ota.o
0x0100d008 0x0100d008 0x00000010 Code RO 4778 i.app_ota_chan_rx_ble app_ota.o
0x0100d018 0x0100d018 0x00000020 Code RO 4779 i.app_ota_chan_rx_uart app_ota.o
0x0100d038 0x0100d038 0x00000008 Code RO 4780 i.app_ota_current_bank_base app_ota.o
0x0100d040 0x0100d040 0x00000158 Code RO 4781 i.app_ota_handle_frame app_ota.o
0x0100d198 0x0100d198 0x00000048 Code RO 4782 i.app_ota_reset_poll app_ota.o
0x0100d1e0 0x0100d1e0 0x00000008 Code RO 5008 i.app_params_get app_params.o
0x0100d1e8 0x0100d1e8 0x0000005c Code RO 5009 i.app_params_init app_params.o
0x0100d244 0x0100d244 0x0000002c Code RO 5011 i.app_params_restore_defaults app_params.o
0x0100cea0 0x0100cea0 0x00000018 Code RO 4777 i.app_ota_abort app_ota.o
0x0100ceb8 0x0100ceb8 0x00000010 Code RO 4778 i.app_ota_chan_idle app_ota.o
0x0100cec8 0x0100cec8 0x00000020 Code RO 4779 i.app_ota_chan_rsp_ble app_ota.o
0x0100cee8 0x0100cee8 0x00000120 Code RO 4780 i.app_ota_chan_rx app_ota.o
0x0100d008 0x0100d008 0x00000010 Code RO 4781 i.app_ota_chan_rx_ble app_ota.o
0x0100d018 0x0100d018 0x00000020 Code RO 4782 i.app_ota_chan_rx_uart app_ota.o
0x0100d038 0x0100d038 0x00000008 Code RO 4783 i.app_ota_current_bank_base app_ota.o
0x0100d040 0x0100d040 0x00000158 Code RO 4784 i.app_ota_handle_frame app_ota.o
0x0100d198 0x0100d198 0x00000048 Code RO 4785 i.app_ota_reset_poll app_ota.o
0x0100d1e0 0x0100d1e0 0x00000008 Code RO 5011 i.app_params_get app_params.o
0x0100d1e8 0x0100d1e8 0x0000005c Code RO 5012 i.app_params_init app_params.o
0x0100d244 0x0100d244 0x0000002c Code RO 5014 i.app_params_restore_defaults app_params.o
0x0100d270 0x0100d270 0x00000068 Code RO 4106 i.app_rdtss_add_rdts app_rdtss.o
0x0100d2d8 0x0100d2d8 0x00000004 Code RO 3257 i.app_sec_msg_dflt_handler ns_sec.o
0x0100d2dc 0x0100d2dc 0x00000078 Code RO 3499 i.app_set_adv_data ns_ble.o
0x0100d354 0x0100d354 0x000000c4 Code RO 3500 i.app_set_scan_rsp_data ns_ble.o
0x0100d418 0x0100d418 0x00000070 Code RO 3501 i.app_start_advertising ns_ble.o
0x0100d488 0x0100d488 0x00000002 Code RO 4178 i.app_user_msg_handler app_ble.o
0x0100d488 0x0100d488 0x00000002 Code RO 4181 i.app_user_msg_handler app_ble.o
0x0100d48a 0x0100d48a 0x00000002 PAD
0x0100d48c 0x0100d48c 0x00000018 Code RO 4275 i.app_wdt_heartbeat main.o
0x0100d4a4 0x0100d4a4 0x00000074 Code RO 4276 i.app_wdt_init main.o
0x0100d48c 0x0100d48c 0x00000018 Code RO 4278 i.app_wdt_heartbeat main.o
0x0100d4a4 0x0100d4a4 0x00000074 Code RO 4279 i.app_wdt_init main.o
0x0100d518 0x0100d518 0x000000c0 Code RO 2033 i.attm_att_set_value lib_att.o
0x0100d5d8 0x0100d5d8 0x00000028 Code RO 4277 i.ble_schedule_task main.o
0x0100d600 0x0100d600 0x00000014 Code RO 4636 i.ble_up_on_cfm ble_up.o
0x0100d614 0x0100d614 0x00000058 Code RO 4637 i.ble_up_poll ble_up.o
0x0100d66c 0x0100d66c 0x00000010 Code RO 4638 i.ble_up_reset ble_up.o
0x0100d67c 0x0100d67c 0x00000048 Code RO 4639 i.ble_up_write ble_up.o
0x0100d6c4 0x0100d6c4 0x0000005c Code RO 5078 i.bootset_commit app_bootset.o
0x0100d720 0x0100d720 0x00000178 Code RO 5079 i.bootset_print app_bootset.o
0x0100d898 0x0100d898 0x000000ec Code RO 4379 i.bsp_usart_init bsp_usart.o
0x0100d984 0x0100d984 0x000000ac Code RO 4380 i.bsp_usart_read_byte bsp_usart.o
0x0100da30 0x0100da30 0x00000080 Code RO 4381 i.bsp_usart_rx_dma_start bsp_usart.o
0x0100dab0 0x0100dab0 0x00000048 Code RO 4383 i.bsp_usart_rx_isr_handler bsp_usart.o
0x0100daf8 0x0100daf8 0x00000074 Code RO 4384 i.bsp_usart_set_baud bsp_usart.o
0x0100db6c 0x0100db6c 0x00000020 Code RO 4385 i.bsp_usart_tx_lock bsp_usart.o
0x0100db8c 0x0100db8c 0x00000024 Code RO 4386 i.bsp_usart_tx_unlock bsp_usart.o
0x0100dbb0 0x0100dbb0 0x00000098 Code RO 4387 i.bsp_usart_write_dma bsp_usart.o
0x0100dc48 0x0100dc48 0x0000003a Code RO 5117 i.buffer_skip_whitespace cjson.o
0x0100d5d8 0x0100d5d8 0x00000028 Code RO 4280 i.ble_schedule_task main.o
0x0100d600 0x0100d600 0x00000014 Code RO 4639 i.ble_up_on_cfm ble_up.o
0x0100d614 0x0100d614 0x00000058 Code RO 4640 i.ble_up_poll ble_up.o
0x0100d66c 0x0100d66c 0x00000010 Code RO 4641 i.ble_up_reset ble_up.o
0x0100d67c 0x0100d67c 0x00000048 Code RO 4642 i.ble_up_write ble_up.o
0x0100d6c4 0x0100d6c4 0x0000005c Code RO 5081 i.bootset_commit app_bootset.o
0x0100d720 0x0100d720 0x00000178 Code RO 5082 i.bootset_print app_bootset.o
0x0100d898 0x0100d898 0x000000ec Code RO 4382 i.bsp_usart_init bsp_usart.o
0x0100d984 0x0100d984 0x000000ac Code RO 4383 i.bsp_usart_read_byte bsp_usart.o
0x0100da30 0x0100da30 0x00000080 Code RO 4384 i.bsp_usart_rx_dma_start bsp_usart.o
0x0100dab0 0x0100dab0 0x00000048 Code RO 4386 i.bsp_usart_rx_isr_handler bsp_usart.o
0x0100daf8 0x0100daf8 0x00000074 Code RO 4387 i.bsp_usart_set_baud bsp_usart.o
0x0100db6c 0x0100db6c 0x00000020 Code RO 4388 i.bsp_usart_tx_lock bsp_usart.o
0x0100db8c 0x0100db8c 0x00000024 Code RO 4389 i.bsp_usart_tx_unlock bsp_usart.o
0x0100dbb0 0x0100dbb0 0x00000098 Code RO 4390 i.bsp_usart_write_dma bsp_usart.o
0x0100dc48 0x0100dc48 0x0000003a Code RO 5120 i.buffer_skip_whitespace cjson.o
0x0100dc82 0x0100dc82 0x00000002 PAD
0x0100dc84 0x0100dc84 0x00000034 Code RO 5127 i.cJSON_AddNumberToObject cjson.o
0x0100dcb8 0x0100dcb8 0x00000064 Code RO 5141 i.cJSON_CreateNumber cjson.o
0x0100dd1c 0x0100dd1c 0x00000018 Code RO 5142 i.cJSON_CreateObject cjson.o
0x0100dd34 0x0100dd34 0x00000054 Code RO 5149 i.cJSON_Delete cjson.o
0x0100dd88 0x0100dd88 0x0000000a Code RO 5162 i.cJSON_GetObjectItem cjson.o
0x0100dc84 0x0100dc84 0x00000034 Code RO 5130 i.cJSON_AddNumberToObject cjson.o
0x0100dcb8 0x0100dcb8 0x00000064 Code RO 5144 i.cJSON_CreateNumber cjson.o
0x0100dd1c 0x0100dd1c 0x00000018 Code RO 5145 i.cJSON_CreateObject cjson.o
0x0100dd34 0x0100dd34 0x00000054 Code RO 5152 i.cJSON_Delete cjson.o
0x0100dd88 0x0100dd88 0x0000000a Code RO 5165 i.cJSON_GetObjectItem cjson.o
0x0100dd92 0x0100dd92 0x00000002 PAD
0x0100dd94 0x0100dd94 0x00000050 Code RO 5166 i.cJSON_InitHooks cjson.o
0x0100dde4 0x0100dde4 0x00000012 Code RO 5173 i.cJSON_IsNumber cjson.o
0x0100ddf6 0x0100ddf6 0x00000012 Code RO 5174 i.cJSON_IsObject cjson.o
0x0100de08 0x0100de08 0x00000024 Code RO 5179 i.cJSON_New_Item cjson.o
0x0100de2c 0x0100de2c 0x00000022 Code RO 5180 i.cJSON_Parse cjson.o
0x0100dd94 0x0100dd94 0x00000050 Code RO 5169 i.cJSON_InitHooks cjson.o
0x0100dde4 0x0100dde4 0x00000012 Code RO 5176 i.cJSON_IsNumber cjson.o
0x0100ddf6 0x0100ddf6 0x00000012 Code RO 5177 i.cJSON_IsObject cjson.o
0x0100de08 0x0100de08 0x00000024 Code RO 5182 i.cJSON_New_Item cjson.o
0x0100de2c 0x0100de2c 0x00000022 Code RO 5183 i.cJSON_Parse cjson.o
0x0100de4e 0x0100de4e 0x00000002 PAD
0x0100de50 0x0100de50 0x000000ec Code RO 5182 i.cJSON_ParseWithLengthOpts cjson.o
0x0100df3c 0x0100df3c 0x00000010 Code RO 5187 i.cJSON_PrintUnformatted cjson.o
0x0100df4c 0x0100df4c 0x0000000c Code RO 5195 i.cJSON_free cjson.o
0x0100df58 0x0100df58 0x00000028 Code RO 5197 i.cJSON_strdup cjson.o
0x0100df80 0x0100df80 0x00000034 Code RO 4959 i.caiic_crc32 boot_crc32.o
0x0100de50 0x0100de50 0x000000ec Code RO 5185 i.cJSON_ParseWithLengthOpts cjson.o
0x0100df3c 0x0100df3c 0x00000010 Code RO 5190 i.cJSON_PrintUnformatted cjson.o
0x0100df4c 0x0100df4c 0x0000000c Code RO 5198 i.cJSON_free cjson.o
0x0100df58 0x0100df58 0x00000028 Code RO 5200 i.cJSON_strdup cjson.o
0x0100df80 0x0100df80 0x00000034 Code RO 4962 i.caiic_crc32 boot_crc32.o
0x0100dfb4 0x0100dfb4 0x0000002a Code RO 3071 i.check_client_char_cfg rdts_common.o
0x0100dfde 0x0100dfde 0x00000004 Code RO 4469 i.cli_cmd_count cli_core.o
0x0100dfde 0x0100dfde 0x00000004 Code RO 4472 i.cli_cmd_count cli_core.o
0x0100dfe2 0x0100dfe2 0x00000002 PAD
0x0100dfe4 0x0100dfe4 0x00000018 Code RO 4470 i.cli_cmd_name cli_core.o
0x0100dffc 0x0100dffc 0x000000b4 Code RO 4471 i.cli_exec_line cli_core.o
0x0100e0b0 0x0100e0b0 0x0000002c Code RO 4472 i.cli_printf cli_core.o
0x0100e0dc 0x0100e0dc 0x00000068 Code RO 4593 i.cli_redraw_line app_cli.o
0x0100e144 0x0100e144 0x0000002c Code RO 4706 i.cli_rsp_out app_ble_proto.o
0x0100e170 0x0100e170 0x0000000c Code RO 4473 i.cli_set_output cli_core.o
0x0100e17c 0x0100e17c 0x00000024 Code RO 4474 i.cli_write cli_core.o
0x0100e1a0 0x0100e1a0 0x0000005c Code RO 5198 i.compare_double cjson.o
0x0100dfe4 0x0100dfe4 0x00000018 Code RO 4473 i.cli_cmd_name cli_core.o
0x0100dffc 0x0100dffc 0x000000b4 Code RO 4474 i.cli_exec_line cli_core.o
0x0100e0b0 0x0100e0b0 0x0000002c Code RO 4475 i.cli_printf cli_core.o
0x0100e0dc 0x0100e0dc 0x00000068 Code RO 4596 i.cli_redraw_line app_cli.o
0x0100e144 0x0100e144 0x0000002c Code RO 4709 i.cli_rsp_out app_ble_proto.o
0x0100e170 0x0100e170 0x0000000c Code RO 4476 i.cli_set_output cli_core.o
0x0100e17c 0x0100e17c 0x00000024 Code RO 4477 i.cli_write cli_core.o
0x0100e1a0 0x0100e1a0 0x0000005c Code RO 5201 i.compare_double cjson.o
0x0100e1fc 0x0100e1fc 0x0000002a Code RO 2709 i.diss_check_val_len diss.o
0x0100e226 0x0100e226 0x00000002 Code RO 2710 i.diss_cleanup diss.o
0x0100e228 0x0100e228 0x00000002 Code RO 2712 i.diss_create diss.o
@ -5138,9 +5138,9 @@ Memory Map of the image
0x0100e47c 0x0100e47c 0x000000c0 Code RO 4053 i.diss_value_req_ind_handler app_dis.o
0x0100e53c 0x0100e53c 0x0000003a Code RO 2717 i.diss_value_to_handle diss.o
0x0100e576 0x0100e576 0x00000002 PAD
0x0100e578 0x0100e578 0x00000060 Code RO 5682 i.eTaskGetState tasks.o
0x0100e5d8 0x0100e5d8 0x00000098 Code RO 5200 i.ensure cjson.o
0x0100e670 0x0100e670 0x0000003c Code RO 4388 i.fputc bsp_usart.o
0x0100e578 0x0100e578 0x00000060 Code RO 5685 i.eTaskGetState tasks.o
0x0100e5d8 0x0100e5d8 0x00000098 Code RO 5203 i.ensure cjson.o
0x0100e670 0x0100e670 0x0000003c Code RO 4391 i.fputc bsp_usart.o
0x0100e6ac 0x0100e6ac 0x000000f0 Code RO 3258 i.gapc_bond_ind_handler ns_sec.o
0x0100e79c 0x0100e79c 0x00000208 Code RO 3259 i.gapc_bond_req_ind_handler ns_sec.o
0x0100e9a4 0x0100e9a4 0x00000028 Code RO 3901 i.gapc_cmp_evt_handler ns_ble_task.o
@ -5172,19 +5172,19 @@ Memory Map of the image
0x0100f644 0x0100f644 0x000000e0 Code RO 2951 i.gattc_read_req_ind_handler rdtss_task.o
0x0100f724 0x0100f724 0x00000110 Code RO 2952 i.gattc_write_req_ind_handler rdtss_task.o
0x0100f834 0x0100f834 0x0000006c Code RO 3072 i.get_cfg_handle rdts_common.o
0x0100f8a0 0x0100f8a0 0x00000098 Code RO 5201 i.get_object_item cjson.o
0x0100f8a0 0x0100f8a0 0x00000098 Code RO 5204 i.get_object_item cjson.o
0x0100f938 0x0100f938 0x00000054 Code RO 3073 i.get_value_handle rdts_common.o
0x0100f98c 0x0100f98c 0x00000064 Code RO 4883 i.info_adc_init app_info.o
0x0100f9f0 0x0100f9f0 0x0000006c Code RO 4884 i.info_adc_read app_info.o
0x0100fa5c 0x0100fa5c 0x00000148 Code RO 4885 i.info_fill_item app_info.o
0x0100fba4 0x0100fba4 0x0000002c Code RO 4886 i.info_put_tlv app_info.o
0x0100fbd0 0x0100fbd0 0x00000030 Code RO 5665 i.infra_cjson_init infra_cjson.o
0x0100fc00 0x0100fc00 0x00000050 Code RO 6654 i.internal_alloc mc_p.l(mallocr.o)
0x0100fc50 0x0100fc50 0x00000044 Code RO 4278 i.led_task main.o
0x0100f98c 0x0100f98c 0x00000064 Code RO 4886 i.info_adc_init app_info.o
0x0100f9f0 0x0100f9f0 0x0000006c Code RO 4887 i.info_adc_read app_info.o
0x0100fa5c 0x0100fa5c 0x00000148 Code RO 4888 i.info_fill_item app_info.o
0x0100fba4 0x0100fba4 0x0000002c Code RO 4889 i.info_put_tlv app_info.o
0x0100fbd0 0x0100fbd0 0x00000030 Code RO 5668 i.infra_cjson_init infra_cjson.o
0x0100fc00 0x0100fc00 0x00000050 Code RO 6657 i.internal_alloc mc_p.l(mallocr.o)
0x0100fc50 0x0100fc50 0x00000044 Code RO 4281 i.led_task main.o
0x0100fc94 0x0100fc94 0x00000030 Code RO 2402 i.llhwc_modem_setmode rwip_driver.o
0x0100fcc4 0x0100fcc4 0x00000130 Code RO 2403 i.llhwc_phy_prerx_flash rwip_driver.o
0x0100fdf4 0x0100fdf4 0x00000090 Code RO 2404 i.llhwc_setmode_reg_config rwip_driver.o
0x0100fe84 0x0100fe84 0x000001a4 Code RO 4279 i.main main.o
0x0100fe84 0x0100fe84 0x000001a4 Code RO 4282 i.main main.o
0x01010028 0x01010028 0x0000005c Code RO 3502 i.ns_EXTI4_12_IRQHandler ns_ble.o
0x01010084 0x01010084 0x00000028 Code RO 3503 i.ns_HardFault_Handler ns_ble.o
0x010100ac 0x010100ac 0x00000020 Code RO 3505 i.ns_ble_add_prf_func_register ns_ble.o
@ -5224,17 +5224,17 @@ Memory Map of the image
0x01010f54 0x01010f54 0x00000018 Code RO 3119 i.ns_sleep_lock_acquire ns_sleep.o
0x01010f6c 0x01010f6c 0x00000014 Code RO 3120 i.ns_sleep_lock_release ns_sleep.o
0x01010f80 0x01010f80 0x000000c8 Code RO 3195 i.ns_timer_api_process_handler ns_timer.o
0x01011048 0x01011048 0x00000024 Code RO 4783 i.ota_ble_sink app_ota.o
0x0101106c 0x0101106c 0x0000017c Code RO 4784 i.ota_on_data app_ota.o
0x010111e8 0x010111e8 0x000001b0 Code RO 4785 i.ota_on_end app_ota.o
0x01011398 0x01011398 0x00000022 Code RO 4786 i.ota_rd32 app_ota.o
0x01011048 0x01011048 0x00000024 Code RO 4786 i.ota_ble_sink app_ota.o
0x0101106c 0x0101106c 0x0000017c Code RO 4787 i.ota_on_data app_ota.o
0x010111e8 0x010111e8 0x000001b0 Code RO 4788 i.ota_on_end app_ota.o
0x01011398 0x01011398 0x00000022 Code RO 4789 i.ota_rd32 app_ota.o
0x010113ba 0x010113ba 0x00000002 PAD
0x010113bc 0x010113bc 0x000000a0 Code RO 4787 i.ota_respond app_ota.o
0x0101145c 0x0101145c 0x00000024 Code RO 4788 i.ota_uart_sink app_ota.o
0x01011480 0x01011480 0x000000a8 Code RO 5012 i.params_print_json app_params.o
0x01011528 0x01011528 0x0000005c Code RO 5013 i.params_save app_params.o
0x01011584 0x01011584 0x00000270 Code RO 5202 i.parse_string cjson.o
0x010117f4 0x010117f4 0x000003b4 Code RO 5203 i.parse_value cjson.o
0x010113bc 0x010113bc 0x000000a0 Code RO 4790 i.ota_respond app_ota.o
0x0101145c 0x0101145c 0x00000024 Code RO 4791 i.ota_uart_sink app_ota.o
0x01011480 0x01011480 0x000000a8 Code RO 5015 i.params_print_json app_params.o
0x01011528 0x01011528 0x0000005c Code RO 5016 i.params_save app_params.o
0x01011584 0x01011584 0x00000270 Code RO 5205 i.parse_string cjson.o
0x010117f4 0x010117f4 0x000003b4 Code RO 5206 i.parse_value cjson.o
0x01011ba8 0x01011ba8 0x00000044 Code RO 3552 i.patchx_enable ns_ble.o
0x01011bec 0x01011bec 0x00000088 Code RO 2583 i.prf_add_profile prf.o
0x01011c74 0x01011c74 0x00000010 Code RO 2586 i.prf_dst_task_get prf.o
@ -5244,21 +5244,21 @@ Memory Map of the image
0x01011d14 0x01011d14 0x00000038 Code RO 2590 i.prf_get_task_from_id prf.o
0x01011d4c 0x01011d4c 0x000000b4 Code RO 2591 i.prf_init prf.o
0x01011e00 0x01011e00 0x00000030 Code RO 2592 i.prf_itf_get prf.o
0x01011e30 0x01011e30 0x000000be Code RO 5204 i.print cjson.o
0x01011e30 0x01011e30 0x000000be Code RO 5207 i.print cjson.o
0x01011eee 0x01011eee 0x00000002 PAD
0x01011ef0 0x01011ef0 0x00000120 Code RO 5205 i.print_string_ptr cjson.o
0x01012010 0x01012010 0x000003f8 Code RO 5206 i.print_value cjson.o
0x01012408 0x01012408 0x00000038 Code RO 4707 i.proto_cli_out app_ble_proto.o
0x01012440 0x01012440 0x00000080 Code RO 4708 i.proto_dump app_ble_proto.o
0x010124c0 0x010124c0 0x00000058 Code RO 5684 i.prvAddCurrentTaskToDelayedList tasks.o
0x01012518 0x01012518 0x00000058 Code RO 5685 i.prvIdleTask tasks.o
0x01012570 0x01012570 0x00000054 Code RO 6242 i.prvInsertBlockIntoFreeList heap_4.o
0x010125c4 0x010125c4 0x000000cc Code RO 5686 i.prvListTasksWithinSingleList tasks.o
0x01012690 0x01012690 0x00000014 Code RO 6289 i.prvTaskExitError port.o
0x010126a4 0x010126a4 0x00000074 Code RO 6013 i.prvUnlockQueue queue.o
0x01012718 0x01012718 0x000000f4 Code RO 6243 i.pvPortMalloc heap_4.o
0x0101280c 0x0101280c 0x00000018 Code RO 5687 i.pvTaskIncrementMutexHeldCount tasks.o
0x01012824 0x01012824 0x00000024 Code RO 6290 i.pxPortInitialiseStack port.o
0x01011ef0 0x01011ef0 0x00000120 Code RO 5208 i.print_string_ptr cjson.o
0x01012010 0x01012010 0x000003f8 Code RO 5209 i.print_value cjson.o
0x01012408 0x01012408 0x00000038 Code RO 4710 i.proto_cli_out app_ble_proto.o
0x01012440 0x01012440 0x00000080 Code RO 4711 i.proto_dump app_ble_proto.o
0x010124c0 0x010124c0 0x00000058 Code RO 5687 i.prvAddCurrentTaskToDelayedList tasks.o
0x01012518 0x01012518 0x00000058 Code RO 5688 i.prvIdleTask tasks.o
0x01012570 0x01012570 0x00000054 Code RO 6245 i.prvInsertBlockIntoFreeList heap_4.o
0x010125c4 0x010125c4 0x000000cc Code RO 5689 i.prvListTasksWithinSingleList tasks.o
0x01012690 0x01012690 0x00000014 Code RO 6292 i.prvTaskExitError port.o
0x010126a4 0x010126a4 0x00000074 Code RO 6016 i.prvUnlockQueue queue.o
0x01012718 0x01012718 0x000000f4 Code RO 6246 i.pvPortMalloc heap_4.o
0x0101280c 0x0101280c 0x00000018 Code RO 5690 i.pvTaskIncrementMutexHeldCount tasks.o
0x01012824 0x01012824 0x00000024 Code RO 6293 i.pxPortInitialiseStack port.o
0x01012848 0x01012848 0x0000003a Code RO 2953 i.rdtss_att_get_value rdtss_task.o
0x01012882 0x01012882 0x00000002 PAD
0x01012884 0x01012884 0x00000040 Code RO 2954 i.rdtss_att_info_rsp_handler rdtss_task.o
@ -5282,54 +5282,54 @@ Memory Map of the image
0x01012db8 0x01012db8 0x00000124 Code RO 4110 i.rdtss_val_write_ind_handler app_rdtss.o
0x01012edc 0x01012edc 0x00000088 Code RO 4111 i.rdtss_value_req_ind_handler app_rdtss.o
0x01012f64 0x01012f64 0x00000080 Code RO 2962 i.rdtss_value_req_rsp_handler rdtss_task.o
0x01012fe4 0x01012fe4 0x00000074 Code RO 6655 i.realloc mc_p.l(mallocr.o)
0x01012fe4 0x01012fe4 0x00000074 Code RO 6658 i.realloc mc_p.l(mallocr.o)
0x01013058 0x01013058 0x00000118 Code RO 2151 i.rwip_init rwip.o
0x01013170 0x01013170 0x000000f8 Code RO 2411 i.rwip_slp_isr rwip_driver.o
0x01013268 0x01013268 0x0000001c Code RO 6352 i.strtod m_ps.l(strtod.o)
0x01013268 0x01013268 0x0000001c Code RO 6355 i.strtod m_ps.l(strtod.o)
0x01013284 0x01013284 0x00000002 Code RO 3200 i.timer_canceled_handler ns_timer.o
0x01013286 0x01013286 0x00000002 Code RO 3201 i.timer_modified_handler ns_timer.o
0x01013288 0x01013288 0x00000026 Code RO 6200 i.uxListRemove list.o
0x01013288 0x01013288 0x00000026 Code RO 6203 i.uxListRemove list.o
0x010132ae 0x010132ae 0x00000002 PAD
0x010132b0 0x010132b0 0x0000000c Code RO 5689 i.uxTaskGetNumberOfTasks tasks.o
0x010132bc 0x010132bc 0x00000098 Code RO 5690 i.uxTaskGetSystemState tasks.o
0x01013354 0x01013354 0x00000020 Code RO 4280 i.vApplicationIdleHook main.o
0x01013374 0x01013374 0x00000016 Code RO 6201 i.vListInitialise list.o
0x0101338a 0x0101338a 0x00000006 Code RO 6202 i.vListInitialiseItem list.o
0x01013390 0x01013390 0x00000032 Code RO 6203 i.vListInsert list.o
0x010133c2 0x010133c2 0x00000018 Code RO 6204 i.vListInsertEnd list.o
0x010132b0 0x010132b0 0x0000000c Code RO 5692 i.uxTaskGetNumberOfTasks tasks.o
0x010132bc 0x010132bc 0x00000098 Code RO 5693 i.uxTaskGetSystemState tasks.o
0x01013354 0x01013354 0x00000020 Code RO 4283 i.vApplicationIdleHook main.o
0x01013374 0x01013374 0x00000016 Code RO 6204 i.vListInitialise list.o
0x0101338a 0x0101338a 0x00000006 Code RO 6205 i.vListInitialiseItem list.o
0x01013390 0x01013390 0x00000032 Code RO 6206 i.vListInsert list.o
0x010133c2 0x010133c2 0x00000018 Code RO 6207 i.vListInsertEnd list.o
0x010133da 0x010133da 0x00000002 PAD
0x010133dc 0x010133dc 0x00000018 Code RO 6292 i.vPortEnterCritical port.o
0x010133f4 0x010133f4 0x0000001c Code RO 6293 i.vPortExitCritical port.o
0x01013410 0x01013410 0x00000044 Code RO 6244 i.vPortFree heap_4.o
0x01013454 0x01013454 0x00000018 Code RO 6294 i.vPortYield port.o
0x0101346c 0x0101346c 0x00000030 Code RO 5695 i.vTaskDelay tasks.o
0x0101349c 0x0101349c 0x00000010 Code RO 5700 i.vTaskInternalSetTimeOutState tasks.o
0x010134ac 0x010134ac 0x000000d0 Code RO 5701 i.vTaskList tasks.o
0x0101357c 0x0101357c 0x0000000c Code RO 5702 i.vTaskMissedYield tasks.o
0x01013588 0x01013588 0x00000024 Code RO 5704 i.vTaskPlaceOnEventList tasks.o
0x010135ac 0x010135ac 0x00000074 Code RO 5706 i.vTaskPriorityDisinheritAfterTimeout tasks.o
0x01013620 0x01013620 0x00000050 Code RO 5712 i.vTaskStartScheduler tasks.o
0x01013670 0x01013670 0x00000010 Code RO 5714 i.vTaskSuspendAll tasks.o
0x01013680 0x01013680 0x00000064 Code RO 5715 i.vTaskSwitchContext tasks.o
0x010136e4 0x010136e4 0x0000000c Code RO 6246 i.xPortGetFreeHeapSize heap_4.o
0x010136f0 0x010136f0 0x0000000c Code RO 6247 i.xPortGetMinimumEverFreeHeapSize heap_4.o
0x010136fc 0x010136fc 0x00000050 Code RO 6295 i.xPortStartScheduler port.o
0x0101374c 0x0101374c 0x00000024 Code RO 6024 i.xQueueCreateMutex queue.o
0x01013770 0x01013770 0x00000044 Code RO 6025 i.xQueueGenericCreate queue.o
0x010137b4 0x010137b4 0x0000006e Code RO 6026 i.xQueueGenericReset queue.o
0x01013822 0x01013822 0x0000018e Code RO 6027 i.xQueueGenericSend queue.o
0x010139b0 0x010139b0 0x00000074 Code RO 6031 i.xQueueGiveFromISR queue.o
0x01013a24 0x01013a24 0x00000142 Code RO 6037 i.xQueueReceive queue.o
0x01013b66 0x01013b66 0x00000172 Code RO 6039 i.xQueueSemaphoreTake queue.o
0x01013cd8 0x01013cd8 0x00000064 Code RO 5716 i.xTaskCheckForTimeOut tasks.o
0x01013d3c 0x01013d3c 0x00000178 Code RO 5717 i.xTaskCreate tasks.o
0x01013eb4 0x01013eb4 0x00000020 Code RO 5721 i.xTaskGetSchedulerState tasks.o
0x01013ed4 0x01013ed4 0x0000000c Code RO 5722 i.xTaskGetTickCount tasks.o
0x01013ee0 0x01013ee0 0x000000d4 Code RO 5724 i.xTaskIncrementTick tasks.o
0x01013fb4 0x01013fb4 0x00000068 Code RO 5727 i.xTaskPriorityDisinherit tasks.o
0x0101401c 0x0101401c 0x00000078 Code RO 5728 i.xTaskPriorityInherit tasks.o
0x01014094 0x01014094 0x00000064 Code RO 5729 i.xTaskRemoveFromEventList tasks.o
0x010140f8 0x010140f8 0x000000c8 Code RO 5730 i.xTaskResumeAll tasks.o
0x010133dc 0x010133dc 0x00000018 Code RO 6295 i.vPortEnterCritical port.o
0x010133f4 0x010133f4 0x0000001c Code RO 6296 i.vPortExitCritical port.o
0x01013410 0x01013410 0x00000044 Code RO 6247 i.vPortFree heap_4.o
0x01013454 0x01013454 0x00000018 Code RO 6297 i.vPortYield port.o
0x0101346c 0x0101346c 0x00000030 Code RO 5698 i.vTaskDelay tasks.o
0x0101349c 0x0101349c 0x00000010 Code RO 5703 i.vTaskInternalSetTimeOutState tasks.o
0x010134ac 0x010134ac 0x000000d0 Code RO 5704 i.vTaskList tasks.o
0x0101357c 0x0101357c 0x0000000c Code RO 5705 i.vTaskMissedYield tasks.o
0x01013588 0x01013588 0x00000024 Code RO 5707 i.vTaskPlaceOnEventList tasks.o
0x010135ac 0x010135ac 0x00000074 Code RO 5709 i.vTaskPriorityDisinheritAfterTimeout tasks.o
0x01013620 0x01013620 0x00000050 Code RO 5715 i.vTaskStartScheduler tasks.o
0x01013670 0x01013670 0x00000010 Code RO 5717 i.vTaskSuspendAll tasks.o
0x01013680 0x01013680 0x00000064 Code RO 5718 i.vTaskSwitchContext tasks.o
0x010136e4 0x010136e4 0x0000000c Code RO 6249 i.xPortGetFreeHeapSize heap_4.o
0x010136f0 0x010136f0 0x0000000c Code RO 6250 i.xPortGetMinimumEverFreeHeapSize heap_4.o
0x010136fc 0x010136fc 0x00000050 Code RO 6298 i.xPortStartScheduler port.o
0x0101374c 0x0101374c 0x00000024 Code RO 6027 i.xQueueCreateMutex queue.o
0x01013770 0x01013770 0x00000044 Code RO 6028 i.xQueueGenericCreate queue.o
0x010137b4 0x010137b4 0x0000006e Code RO 6029 i.xQueueGenericReset queue.o
0x01013822 0x01013822 0x0000018e Code RO 6030 i.xQueueGenericSend queue.o
0x010139b0 0x010139b0 0x00000074 Code RO 6034 i.xQueueGiveFromISR queue.o
0x01013a24 0x01013a24 0x00000142 Code RO 6040 i.xQueueReceive queue.o
0x01013b66 0x01013b66 0x00000172 Code RO 6042 i.xQueueSemaphoreTake queue.o
0x01013cd8 0x01013cd8 0x00000064 Code RO 5719 i.xTaskCheckForTimeOut tasks.o
0x01013d3c 0x01013d3c 0x00000178 Code RO 5720 i.xTaskCreate tasks.o
0x01013eb4 0x01013eb4 0x00000020 Code RO 5724 i.xTaskGetSchedulerState tasks.o
0x01013ed4 0x01013ed4 0x0000000c Code RO 5725 i.xTaskGetTickCount tasks.o
0x01013ee0 0x01013ee0 0x000000d4 Code RO 5727 i.xTaskIncrementTick tasks.o
0x01013fb4 0x01013fb4 0x00000068 Code RO 5730 i.xTaskPriorityDisinherit tasks.o
0x0101401c 0x0101401c 0x00000078 Code RO 5731 i.xTaskPriorityInherit tasks.o
0x01014094 0x01014094 0x00000064 Code RO 5732 i.xTaskRemoveFromEventList tasks.o
0x010140f8 0x010140f8 0x000000c8 Code RO 5733 i.xTaskResumeAll tasks.o
0x010141c0 0x010141c0 0x000001d8 Data RO 20 .constdata system_n32wb03x.o
0x01014398 0x01014398 0x0000000c Data RO 782 .constdata n32wb03x_rcc.o
0x010143a4 0x010143a4 0x00000324 Data RO 1952 .constdata n32wb03x_qflash.o
@ -5350,17 +5350,17 @@ Memory Map of the image
0x01014ce0 0x01014ce0 0x00000136 Data RO 4112 .constdata app_rdtss.o
0x01014e16 0x01014e16 0x00000002 PAD
0x01014e18 0x01014e18 0x00000018 Data RO 4113 .constdata app_rdtss.o
0x01014e30 0x01014e30 0x000000cc Data RO 4476 .constdata cli_core.o
0x01014efc 0x01014efc 0x00000007 Data RO 4888 .constdata app_info.o
0x01014f03 0x01014f03 0x00000081 Data RO 6747 .constdata mc_p.l(ctype_o.o)
0x01014f84 0x01014f84 0x00000004 Data RO 6748 .constdata mc_p.l(ctype_o.o)
0x01014f88 0x01014f88 0x00000489 Data RO 4477 .conststring cli_core.o
0x01014e30 0x01014e30 0x000000cc Data RO 4479 .constdata cli_core.o
0x01014efc 0x01014efc 0x00000007 Data RO 4891 .constdata app_info.o
0x01014f03 0x01014f03 0x00000081 Data RO 6750 .constdata mc_p.l(ctype_o.o)
0x01014f84 0x01014f84 0x00000004 Data RO 6751 .constdata mc_p.l(ctype_o.o)
0x01014f88 0x01014f88 0x00000489 Data RO 4480 .conststring cli_core.o
0x01015411 0x01015411 0x00000003 PAD
0x01015414 0x01015414 0x00000043 Data RO 5015 .conststring app_params.o
0x01015414 0x01015414 0x00000043 Data RO 5018 .conststring app_params.o
0x01015457 0x01015457 0x00000001 PAD
0x01015458 0x01015458 0x00000091 Data RO 5080 .conststring app_bootset.o
0x01015458 0x01015458 0x00000091 Data RO 5083 .conststring app_bootset.o
0x010154e9 0x010154e9 0x00000003 PAD
0x010154ec 0x010154ec 0x00000020 Data RO 6809 Region$$Table anon$$obj.o
0x010154ec 0x010154ec 0x00000020 Data RO 6812 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x0101550c, Size: 0x00007de8, Max: 0x0000c000, ABSOLUTE, COMPRESSED[0x00000618])
@ -5376,46 +5376,46 @@ Memory Map of the image
0x20004734 COMPRESSED 0x00000002 Data RW 3924 .data ns_ble_task.o
0x20004736 COMPRESSED 0x00000001 Data RW 3925 .data ns_ble_task.o
0x20004737 COMPRESSED 0x00000001 Data RW 4114 .data app_rdtss.o
0x20004738 COMPRESSED 0x00000004 Data RW 4281 .data main.o
0x2000473c COMPRESSED 0x00000010 Data RW 4390 .data bsp_usart.o
0x2000474c COMPRESSED 0x00000004 Data RW 4478 .data cli_core.o
0x20004750 COMPRESSED 0x00000003 Data RW 4595 .data app_cli.o
0x20004738 COMPRESSED 0x00000004 Data RW 4284 .data main.o
0x2000473c COMPRESSED 0x00000010 Data RW 4393 .data bsp_usart.o
0x2000474c COMPRESSED 0x00000004 Data RW 4481 .data cli_core.o
0x20004750 COMPRESSED 0x00000003 Data RW 4598 .data app_cli.o
0x20004753 COMPRESSED 0x00000001 PAD
0x20004754 COMPRESSED 0x00000006 Data RW 4641 .data ble_up.o
0x2000475a COMPRESSED 0x0000000c Data RW 4710 .data app_ble_proto.o
0x20004754 COMPRESSED 0x00000006 Data RW 4644 .data ble_up.o
0x2000475a COMPRESSED 0x0000000c Data RW 4713 .data app_ble_proto.o
0x20004766 COMPRESSED 0x00000002 PAD
0x20004768 COMPRESSED 0x0000003c Data RW 4790 .data app_ota.o
0x200047a4 COMPRESSED 0x00000004 Data RW 4889 .data app_info.o
0x200047a8 COMPRESSED 0x00000002 Data RW 5016 .data app_params.o
0x200047aa COMPRESSED 0x00000001 Data RW 5081 .data app_bootset.o
0x20004768 COMPRESSED 0x0000003c Data RW 4793 .data app_ota.o
0x200047a4 COMPRESSED 0x00000004 Data RW 4892 .data app_info.o
0x200047a8 COMPRESSED 0x00000002 Data RW 5019 .data app_params.o
0x200047aa COMPRESSED 0x00000001 Data RW 5084 .data app_bootset.o
0x200047ab COMPRESSED 0x00000001 PAD
0x200047ac COMPRESSED 0x00000014 Data RW 5209 .data cjson.o
0x200047c0 COMPRESSED 0x00000001 Data RW 5666 .data infra_cjson.o
0x200047ac COMPRESSED 0x00000014 Data RW 5212 .data cjson.o
0x200047c0 COMPRESSED 0x00000001 Data RW 5669 .data infra_cjson.o
0x200047c1 COMPRESSED 0x00000003 PAD
0x200047c4 COMPRESSED 0x0000003c Data RW 5733 .data tasks.o
0x20004800 COMPRESSED 0x00000018 Data RW 6249 .data heap_4.o
0x20004818 COMPRESSED 0x00000004 Data RW 6296 .data port.o
0x2000481c COMPRESSED 0x00000004 Data RW 6367 .data mc_p.l(rand.o)
0x20004820 COMPRESSED 0x00000004 Data RW 6774 .data mc_p.l(mvars.o)
0x20004824 COMPRESSED 0x00000004 Data RW 6775 .data mc_p.l(mvars.o)
0x20004828 COMPRESSED 0x00000004 Data RW 6779 .data mc_p.l(errno.o)
0x200047c4 COMPRESSED 0x0000003c Data RW 5736 .data tasks.o
0x20004800 COMPRESSED 0x00000018 Data RW 6252 .data heap_4.o
0x20004818 COMPRESSED 0x00000004 Data RW 6299 .data port.o
0x2000481c COMPRESSED 0x00000004 Data RW 6370 .data mc_p.l(rand.o)
0x20004820 COMPRESSED 0x00000004 Data RW 6777 .data mc_p.l(mvars.o)
0x20004824 COMPRESSED 0x00000004 Data RW 6778 .data mc_p.l(mvars.o)
0x20004828 COMPRESSED 0x00000004 Data RW 6782 .data mc_p.l(errno.o)
0x2000482c - 0x00000034 Zero RW 19 .bss system_n32wb03x.o
0x20004860 - 0x00000328 Zero RW 1951 .bss n32wb03x_qflash.o
0x20004b88 - 0x0000011c Zero RW 2594 .bss prf.o
0x20004ca4 - 0x00000050 Zero RW 3202 .bss ns_timer.o
0x20004cf4 - 0x0000005c Zero RW 3278 .bss ns_sec.o
0x20004d50 - 0x000001b0 Zero RW 3553 .bss ns_ble.o
0x20004f00 - 0x00000c00 Zero RW 4389 .bss bsp_usart.o
0x20005b00 - 0x000001e0 Zero RW 4475 .bss cli_core.o
0x20005ce0 - 0x00000240 Zero RW 4594 .bss app_cli.o
0x20005f20 - 0x00000200 Zero RW 4640 .bss ble_up.o
0x20006120 - 0x0000077b Zero RW 4709 .bss app_ble_proto.o
0x2000689b - 0x000001f7 Zero RW 4789 .bss app_ota.o
0x20006a92 - 0x00000030 Zero RW 4887 .bss app_info.o
0x20004f00 - 0x00000c00 Zero RW 4392 .bss bsp_usart.o
0x20005b00 - 0x000001e0 Zero RW 4478 .bss cli_core.o
0x20005ce0 - 0x00000240 Zero RW 4597 .bss app_cli.o
0x20005f20 - 0x00000200 Zero RW 4643 .bss ble_up.o
0x20006120 - 0x0000077b Zero RW 4712 .bss app_ble_proto.o
0x2000689b - 0x000001f7 Zero RW 4792 .bss app_ota.o
0x20006a92 - 0x00000030 Zero RW 4890 .bss app_info.o
0x20006ac2 COMPRESSED 0x00000002 PAD
0x20006ac4 - 0x00000034 Zero RW 5014 .bss app_params.o
0x20006af8 - 0x000000f0 Zero RW 5732 .bss tasks.o
0x20006be8 - 0x00004800 Zero RW 6248 .bss heap_4.o
0x20006ac4 - 0x00000034 Zero RW 5017 .bss app_params.o
0x20006af8 - 0x000000f0 Zero RW 5735 .bss tasks.o
0x20006be8 - 0x00004800 Zero RW 6251 .bss heap_4.o
0x2000b3e8 - 0x00000200 Zero RW 2 HEAP startup_n32wb03x.o
0x2000b5e8 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o
@ -5429,12 +5429,12 @@ Image component sizes
696 188 0 0 0 12840 app_ble.o
1204 254 0 12 1915 9528 app_ble_proto.o
2032 1156 145 1 0 5563 app_bootset.o
2032 1156 145 1 0 5615 app_bootset.o
1468 216 0 3 576 6799 app_cli.o
284 102 16 0 0 8644 app_dis.o
100 12 0 0 0 2298 app_gpio.o
868 110 7 4 48 8056 app_info.o
1910 160 0 60 503 14978 app_ota.o
1910 160 0 60 503 15102 app_ota.o
1432 594 67 2 52 7737 app_params.o
626 156 334 1 0 6074 app_rdtss.o
196 36 0 6 512 2736 ble_up.o
@ -5478,7 +5478,7 @@ Image component sizes
2552 254 0 60 240 27732 tasks.o
----------------------------------------------------------------------
41428 7512 4999 2076 30140 920339 Object Totals
41428 7512 4999 2076 30140 920515 Object Totals
228 76 32 0 0 0 (incl. Generated)
40 0 11 27 2 0 (incl. Padding)
@ -5572,8 +5572,8 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
49408 7804 5132 2092 30140 906227 Grand Totals
49408 7804 5132 1560 30140 906227 ELF Image Totals (compressed)
49408 7804 5132 2092 30140 906403 Grand Totals
49408 7804 5132 1560 30140 906403 ELF Image Totals (compressed)
49408 7804 5132 1560 0 0 ROM Totals
==============================================================================

View File

@ -23,28 +23,9 @@ extern "C" {
#include <stdint.h>
/* Frame types */
#define BLE_FRAME_SOF 0xCA /* frame start byte */
#define BLE_FRAME_HDR_LEN 5u /* SOF+TYPE+SEQ+LEN(2) */
#define BLE_FRAME_CLI_REQ 0x01 /* phone -> device: one command line */
#define BLE_FRAME_CLI_RSP 0x02 /* device -> phone: response text chunk */
#define BLE_FRAME_CLI_RSP_END 0x03 /* device -> phone: {status u8} */
#define BLE_FRAME_OTA_BEGIN 0x10 /* phone -> device: {size, crc32, version} */
#define BLE_FRAME_OTA_DATA 0x11 /* phone -> device: {offset, data...} */
#define BLE_FRAME_OTA_END 0x12 /* phone -> device: {crc32} */
#define BLE_FRAME_OTA_ABORT 0x13 /* phone -> device: abort session (no payload) */
#define BLE_FRAME_OTA_RSP 0x1F /* device -> phone: {cmd, status, offset} */
#define BLE_FRAME_INFO_QUERY 0x20 /* phone -> device: {item_id}*n (empty/0xFF = all) */
#define BLE_FRAME_INFO_RSP 0x21 /* device -> phone: TLV {id, len, value}*n */
/* OTA_RSP / generic status codes */
#define BLE_OTA_ST_OK 0
#define BLE_OTA_ST_BAD_FRAME 1
#define BLE_OTA_ST_BAD_STATE 2 /* bad state / bad offset sequence */
#define BLE_OTA_ST_SIZE_TOO_BIG 3
#define BLE_OTA_ST_CRC_FAIL 4
#define BLE_OTA_ST_FLASH_FAIL 5
#define BLE_OTA_ST_BANK_MISMATCH 6 /* image linked for the wrong bank */
/* Frame type / OTA status constants moved to the shared wire header
* (Boot/src/ota_wire.h, also compiled into the bootloader download mode) */
#include "ota_wire.h"
/**
* @brief Reset the protocol state machine.

View File

@ -9,12 +9,12 @@
#define __APP_VERSION_H__
#ifndef APP_FW_VERSION
#define APP_FW_VERSION "V1.00.27"
#define APP_FW_VERSION "V1.00.28"
#endif
/* Numeric form used by the BLE info query / OTA records: 0x00MMmmpp */
#ifndef APP_FW_VERSION_NUM
#define APP_FW_VERSION_NUM 0x0001001Bu
#define APP_FW_VERSION_NUM 0x0001001Cu
#endif
#endif /* __APP_VERSION_H__ */

View File

@ -23,8 +23,19 @@
#include <stddef.h>
#include <stdlib.h>
#ifdef BOOT_FIRMWARE
#include "boot_usart.h" /* boot_delay_ms */
#else
#include "FreeRTOS.h"
#include "task.h"
#endif
/* Let the final reply drain before the reboot (ms) */
#ifdef BOOT_FIRMWARE
#define bootset_reset_drain() boot_delay_ms(200u)
#else
#define bootset_reset_drain() vTaskDelay(pdMS_TO_TICKS(200))
#endif
static uint8_t s_qflash_ready;
@ -291,6 +302,6 @@ void AppBootset_CmdAppswitch(int argc, char* argv[])
}
cli_write("appsw: done, resetting...\r\n");
vTaskDelay(pdMS_TO_TICKS(200));
bootset_reset_drain();
NVIC_SystemReset();
}

View File

@ -23,8 +23,7 @@
* survives this via the 5 s connection supervision timeout.
*/
#include "app_ota.h"
#include "app_ble_proto.h"
#include "bsp_usart.h"
#include "ota_wire.h"
#include "dfu_layout.h"
#include "boot_crc32.h"
#include "n32wb03x.h"
@ -33,8 +32,23 @@
#include <string.h>
#include <stddef.h>
#ifdef BOOT_FIRMWARE
/* Bootloader download mode: bare metal, no RTOS, no BLE. The millisecond
* base and the blocking UART TX come from boot_usart.c. */
#include "boot_usart.h"
#define ota_tick_t uint32_t
#define ota_tick_get() boot_millis()
#define OTA_MS_TO_TICKS(ms) (ms) /* boot tick is 1ms */
#else
#include "app_ble_proto.h"
#include "bsp_usart.h"
#include "FreeRTOS.h"
#include "task.h"
#define ota_tick_t TickType_t
#define ota_tick_get() xTaskGetTickCount()
#define OTA_MS_TO_TICKS(ms) pdMS_TO_TICKS(ms)
#endif
/* armlink execution-region base symbol: address of this running image */
extern uint32_t Image$$ER_IROM1$$Base;
@ -65,7 +79,7 @@ static uint8_t s_qflash_ready;
/* Deferred post-OTA_END reset (see OTA_RESET_GRACE_MS above) */
static volatile uint8_t s_rsp_consumed; /* END RSP taken by the host */
static volatile uint8_t s_reset_pending; /* reset scheduled, polled by the BLE task */
static TickType_t s_reset_stamp;
static ota_tick_t s_reset_stamp;
/* ------------------------------------------------------------------ */
/* Helpers */
@ -153,7 +167,11 @@ static void ota_respond(uint8_t seq, uint8_t cmd_echo, uint8_t status, uint32_t
s_rsp_sink(fr, (uint16_t)sizeof(fr));
return;
}
#ifdef BOOT_FIRMWARE
/* no legacy notify path in the bootloader - the sink is always set */
#else
(void)app_ble_proto_send_frame(BLE_FRAME_OTA_RSP, seq, p, sizeof(p));
#endif
}
uint32_t app_ota_current_bank_base(void)
@ -235,6 +253,20 @@ static void ota_on_begin(uint8_t seq, const uint8_t* p, uint16_t len)
return;
}
#ifdef BOOT_FIRMWARE
/* The bootloader runs from neither bank: update the INACTIVE bank per
* the bootsetting record (then flip active at OTA_END). An invalid
* record (bricked/blank device recovery) targets APP1. */
{
const caiic_bootsetting_t* bs = (const caiic_bootsetting_t*)CAIIC_BOOTSETTING_ADDR;
uint8_t bs_ok = (bs->magic == CAIIC_BOOT_MAGIC &&
bs->crc32 == caiic_crc32((const uint8_t*)bs,
(uint32_t)offsetof(caiic_bootsetting_t, crc32))) ? 1 : 0;
target = (bs_ok && bs->active_bank == CAIIC_ACTIVE_BANK1) ? CAIIC_APP2_BASE
: CAIIC_APP1_BASE;
}
(void)self;
#else
/* Pick the opposite bank as the update target */
self = app_ota_current_bank_base();
if (self == CAIIC_APP1_BASE)
@ -250,6 +282,7 @@ static void ota_on_begin(uint8_t seq, const uint8_t* p, uint16_t len)
ota_respond(seq, BLE_FRAME_OTA_BEGIN, BLE_OTA_ST_BAD_STATE, 0);
return;
}
#endif
if (total < OTA_MIN_IMAGE_SIZE || total > CAIIC_APP_BANK_SIZE)
{
@ -517,9 +550,9 @@ static void ota_on_end(uint8_t seq, const uint8_t* p, uint16_t len)
ota_respond(seq, BLE_FRAME_OTA_END, BLE_OTA_ST_OK, s_total_size);
/* Defer the reset until the host has fetched the END response (polled
* from the BLE schedule task, which keeps running meanwhile so the ATT
* read / notify flush can actually happen) */
s_reset_stamp = xTaskGetTickCount();
* from the BLE schedule task / boot superloop, which keeps running
* meanwhile so the ATT read / UART drain can actually happen) */
s_reset_stamp = ota_tick_get();
s_reset_pending = 1;
}
@ -532,10 +565,10 @@ void app_ota_reset_poll(void)
{
if (s_reset_pending)
{
TickType_t elapsed = xTaskGetTickCount() - s_reset_stamp;
ota_tick_t elapsed = ota_tick_get() - s_reset_stamp;
if ((s_rsp_consumed && elapsed >= pdMS_TO_TICKS(OTA_RESET_GRACE_MS)) ||
elapsed >= pdMS_TO_TICKS(OTA_RESET_TIMEOUT_MS))
if ((s_rsp_consumed && elapsed >= OTA_MS_TO_TICKS(OTA_RESET_GRACE_MS)) ||
elapsed >= OTA_MS_TO_TICKS(OTA_RESET_TIMEOUT_MS))
{
NVIC_SystemReset();
}
@ -676,7 +709,9 @@ void app_ota_chan_rx(const uint8_t* data, uint16_t len, app_ota_rsp_sink_fn sink
}
}
/* --- BLE OTA characteristic (...e0005): write frames in, read RSP out --- */
/* --- BLE OTA characteristic (...e0005): write frames in, read RSP out ---
* (application firmware only; the bootloader has no BLE) */
#ifndef BOOT_FIRMWARE
#define OTA_BLE_RSP_BUF_SIZE 16u /* largest RSP frame = 7B hdr + 6B */
@ -707,15 +742,20 @@ const uint8_t* app_ota_chan_rsp_ble(uint16_t* out_len)
s_bleRspLen = 0; /* consumed by the read */
return s_bleRsp;
}
#endif /* !BOOT_FIRMWARE */
/* --- UART binary mode (CLI "ota"): RSP frames straight out on TX --- */
static void ota_uart_sink(const uint8_t* frame, uint16_t len)
{
#ifdef BOOT_FIRMWARE
boot_usart_write(frame, len); /* blocking: frame physically out below */
#else
bsp_usart_tx_lock();
bsp_usart_write_dma(frame, len);
bsp_usart_tx_unlock();
/* Blocking DMA TX: the frame is physically out when we get here */
#endif
s_rsp_consumed = 1;
}

View File

@ -255,6 +255,13 @@ def main():
version = read_app_fw_version(root) or 0
boot_blob = load_bin(os.path.join(root, BOOT_BIN), "bootloader")
# The boot region is 16KB (bootsetting starts at 0x01004000) - a fatter
# bootloader would silently overlap the bootsetting sector.
if len(boot_blob) > BOOTSETTING_ADDR - BOOT_ADDR:
raise SystemExit("ERROR: bootloader bin %d bytes exceeds the 16KB "
"boot region - trim it before packaging"
% len(boot_blob))
check_initial_sp(boot_blob, "bootloader")
app_path = app_rel if os.path.isabs(app_rel) else os.path.join(root, app_rel)
app_blob = load_bin(app_path, "APP1")

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,5 @@
:020000040100F9
:1000000038480020E5000001ED000001EF0000018C
:10000000585A0020E5000001ED000001EF0000015A
:1000100000000000000000000000000000000000E0
:10002000000000000000000000000000F1000001DE
:100030000000000000000000F3000001F5000001D6
@ -11,10 +11,10 @@
:10009000F7000001F7000001F7000001F700000180
:1000A000F7000001F7000001F7000001F700000170
:1000B000F7000001F7000001F7000001F700000160
:1000C0000348854600F056F80048004751050001F6
:1000D0003848002040BA7047C0BA70470138FDD197
:1000C0000348854600F00CF900480047411F000135
:1000D000585A002040BA7047C0BA70470138FDD165
:1000E000704700000448804704480047FEE7FEE7E9
:1000F000FEE7FEE7FEE7FEE795030001C100000111
:1000F000FEE7FEE7FEE7FEE7F5110001C1000001A3
:1001000030B50B46014600202022012409E00D46AF
:10011000D5409D4205D31D469540491B2546954037
:1001200040191546521E002DF1DC30BD03460B432D
@ -22,111 +22,794 @@
:1001400003E00B780370401C491C521EF9D2704723
:10015000D2B201E00270401C491EFBD2704700225F
:10016000F6E710B513460A4604461946FFF7F0FFB6
:10017000204610BD064C0125064E05E0E36807CC7D
:100180002B430C3C98471034B442F7D3FFF79CFF45
:10019000C0070001D0070001F7B5D4B004460E46F1
:1001A00000205390052052900025002700BFEFF358
:1001B00010800090FF21453101A8FFF7D0FF00F02B
:1001C000F1F905462448854218D1012000038442F4
:1001D00002D1002053902AE001204003844202D142
:1001E0004011539023E003200003844203D10120F7
:1001F000400253901BE0529857B0F0BD174885421B
:1002000013D101200003844201D153900FE001205B
:100210004003844201D1539009E00320000384424B
:1002200001D1539003E05298E6E75298E4E705AF16
:100230000137FF2241320A4901A8FFF777FF012069
:1002400000F04FF93146569A5398B84752900098AB
:1002500000F047F95298CFE7C440130085601300BF
:10026000E8050001F1B58AB0002009907D20C000AA
:1002700008900125AD020027002007907F200690FE
:1002800040240026002005900390200102900020C9
:1002900001903E490A98884206D83D4800686102AC
:1002A00088433B49086006E0394800680121C903DA
:1002B0000843374908607D21C9000A98FFF720FFED
:1002C0007D21C9000090FFF71BFF450100BF3048AA
:1002D00000687F21090288430190200201990843A8
:1002E0002B4908600520FFF7F9FE10E00120FFF719
:1002F000F5FE2748406B02210840002800D007E0A7
:100300000598411C05910899884200D900E0EDE765
:1003100000BF1F48C06B86B2AE4201D9771B00E018
:10032000AF1B0298874203D2E0B20390B8B20290AA
:10033000AE4201D3069400E007940699079840184E
:10034000C005000E04900498A04200D103E0049C74
:1003500009988742BBD800BF0D4800687F21090279
:1003600088430190039800020199084308490860F6
:100370000846406840084000486000BF04484068A4
:10038000042108400028F9D10BB0F0BD0090D00343
:100390000010024010B53E48C0690121090708431A
:1003A0003B49C861812000063A4908633A484861E0
:1003B0003A4808623A48006803218903884338496B
:1003C00008603421374800F073F836480069401C53
:1003D000002803D033480069002817D12C48406812
:1003E0000121090408432A4948600846406807215A
:1003F00009028843264948600846406809150843B1
:10040000234948602848FFF72DFF3FE021488069D5
:100410004409640123480078C006C00E04431D4807
:1004200084611B4800680121C9038843184908609A
:10043000084600687F21090288430446194800697C
:10044000000220431249086008464068012109045F
:1004500008430F494860084640680721090288435D
:100460000B49486008464068091508430849486038
:100470000846006A0D490840054908620846006AB6
:100480000849C968090208430149086210BD000013
:1004900000100240007000400F0800001800020029
:1004A00000100140004000200090D003FF00F8FF42
:1004B00070B504460D462A46214601200003FFF789
:1004C0006BFE70BD02E008C8121F08C1002AFAD1F5
:1004D00070477047002001E001C1121F002AFBD1C4
:1004E000704780F31088704730B502460B460021F4
:1004F000C94312E01078521C414000240BE0480828
:10050000CD07ED0F002D01D0074D00E0002568401C
:100510000146601CC4B2082CF1DB18465B1E0028A3
:10052000E8D1C84330BD00002083B8ED0446012067
:10053000C007204305490863206880F3088800BF8E
:1005400062B66068804700BFFEE7000000700040B0
:10055000114C124D1249206888421AD12821204698
:10056000FFF7C2FFA16A884213D16168022902D154
:100570002146183101E0214608310846074A016842
:10058000914205D3412292040168914200D205684C
:1005900000BF2846FFF7CAFF0040000100800001AD
:1005A00011C011CA70B5D2B00024002500BFEFF30E
:1005B00010800646FF21453101A8FFF7D0FD01ACB0
:1005C00001349822074901A8FFF7B0FD0120FFF789
:1005D00088FFA04705463046FFF783FF284652B004
:1005E00070BD00002807000140BA7047C0BA7047CC
:1005F0000138FDD170470000F7B50325AD06286A24
:1006000082B016460C46400840002862286A022143
:1006100008432862286A8007FCD4662068600127A6
:100620002F61A86AC005FCD5992068602F61A86A6F
:10063000C005FCD5FF209130FFF7DAFFFF2301331F
:10064000AB626846EF60352169602F61A96AC90510
:10065000FCD5AB62A969EF60C9B205226A602F615F
:10066000AA6AD205FCD5AB62AA690902D2B21143CB
:100670000180C80702D0032005B0F0BDAB626869F5
:10068000FF210831884368616869C91E08436861B1
:1006900002980002483068600820A860EE602F6170
:1006A000A86AC005FCD5FF200130A8620023F61C13
:1006B000B0080ED0B2081148006899006054060ACC
:1006C00009194E70060C000E8E705B1CC8709A42A1
:1006D000F1D8FF200130A8626869FF210831884302
:1006E0006861686938436861286A80088000286208
:1006F000286A38432862002005B0F0BD8000000C55
:10070000032080064169FF2208329143416142691A
:1007100001210A434261026A920892000262026A5F
:100720000A43026270470000002003218906096A1B
:10073000490849000322920611621146096A022201
:10074000114303229206116200BF03218906096A40
:10075000022211400229F8D0D101032292069162AF
:100760000321D1609F2151600121116100BF03214C
:100770008906896AFF22013211409142F7D1032292
:1007800092069162114688694969FF2208329143B5
:100790000322920651611146496901221143032245
:1007A000920651611146096A890889001162114651
:1007B000096A012211430322920611627047000068
:1007C000D00700010040002038080000D4040001D8
:10017000204610BD421C0178401C0029FBD1801A8A
:10018000704710B5002200E0521C835C8C5CA342D7
:1001900001D1002BF8D1D8B2E1B2401A10BD30B570
:1001A00004460020034600E05B1C934203D2E05C5F
:1001B000CD5C401BF8D030BDF7B582B00F460026AD
:1001C000029C01F037F90090006801902578641CCA
:1001D000002D05D000F02CF80068405DC007F5D177
:1001E0002B2D02D02D2D1CD0641E00980021016003
:1001F00039462046049A00F01FF80146002F04D02B
:100200003868A04201D1029838600098006802283E
:100210000BD00098019A0260700506D5484205B0DF
:10022000F0BD012080020643DFE70846F7E7000043
:1002300000487047C82E0001F7B582B0029C002725
:100240002078641C15460197302802D0002D15D067
:1002500015E020780127641C782804D0582802D0A3
:10026000002D09D00BE0002D01D0102D07D1002763
:1002700010252078641C02E0082500E00A250026ED
:10028000009610E00099012769430818020C2946DE
:1002900080B2714300908E183804864201D3012049
:1002A00001902078641C294600F02CF80028E9DA37
:1002B0000398002805D0002F01D0641E00E0029CA6
:1002C00004600198002806D001F0B4F80221016012
:1002D000C81E05B0F0BD009930040843F9E70000DE
:1002E000064C0125064E05E0E36807CC2B430C3C89
:1002F00098471034B442F7D3FFF7E6FEFC31000113
:100300001C3200013A2800D23038202302469A439A
:10031000412A01D310463738884201D30020C04318
:1003200070470000F0B58DB006460F462C224449B8
:1003300002A8FFF7FBFE02A801F062FC002804D12E
:1003400040A001F0C5FD0DB0F0BD022E0FDB01A9EC
:10035000786802F019FA002805D1019801280DD01B
:10036000019802280AD045A001F0B2FDEBE70398FE
:10037000012801D1022000E0012001900199039899
:10038000884204D14CA0019901F0D4FCDBE701982C
:10039000012801D104A800E008A80446019801281A
:1003A00001D14C4800E04C480090216800988142FF
:1003B00007D16068002804D007218903606888425B
:1003C00006D96368226845A0019901F0B3FCBAE739
:1003D00050A001F07DFD6168206801F023FC054616
:1003E000A168A94209D02B46A2685848019901F09A
:1003F000A1FC57A001F06CFDA5E76368E26861A06D
:10040000019901F097FC0198039002A801F002FB0A
:10041000002803D06BA001F05BFD94E76EA001F013
:1004200057FDC82001F00AFA00BFBFF34F8F714893
:100430007149C860BFF34F8F00BF00BFFEE70000E7
:100440000040000161707073773A20626F6F7473BF
:10045000657474696E67207265636F726420696E7B
:1004600076616C69642C2072656675736520746FA3
:10047000207377697463680D0A0000007573616703
:10048000653A206170707377205B317C325D202883
:100490006E6F20617267203D2073776974636820F6
:1004A000746F20746865206F746865722062616E75
:1004B0006B290D0A0000000061707073773A2061AB
:1004C0006C7265616479206F6E20415050256C75A7
:1004D0000D0A00000080000100400201617070738D
:1004E000773A2062616E6B256C75207265636F725E
:1004F0006420696E76616C69642028616464723D71
:1005000030782530386C582073697A653D256C75D4
:10051000290D0A0061707073773A207665726966FA
:1005200079696E672074617267657420696D6167AF
:1005300065206372632028666577207365636F6E3C
:100540006473292E2E2E0D0A000000006831000170
:100550002020202020202072756E20424C45204F04
:10056000544120746F207772697465206120766130
:100570006C696420696D6167652066697273740DCA
:100580000A00000061707073773A2062616E6B251B
:100590006C7520696D616765206F6B2028766572C8
:1005A0002030782530386C582C20256C7520422955
:1005B0002C20737769746368696E672E2E2E0D0A7E
:1005C0000000000061707073773A20666C61736898
:1005D000206661696C0D0A0061707073773A20645F
:1005E0006F6E652C20726573657474696E672E2E4C
:1005F0002E0D0A000400FA0500ED00E030B58BB0C6
:1006000004460D462C2204496846FFF78FFD6846D4
:1006100001F040FA0BB030BD0040000170B58CB065
:1006200006460C46032E0ADA53A001F051FC5AA0EC
:1006300001F04EFC5E4801F04BFC0CB070BD694609
:10064000A06802F0A1F8002803D05AA001F040FCF5
:10065000F3E72C225C4901A8FFF768FD01A801F02F
:10066000CFFA002806D12C2101A8FFF778FD57A06A
:1006700001F02EFC63A16068FFF783FD00280CD118
:100680000098012806D00098022803D05FA001F04E
:100690001FFCD2E70098029058E06068007862285A
:1006A00050D160684078312803D0606840783228A3
:1006B00048D160684078312801D103A800E007A83C
:1006C00005466168881C59A1FFF75BFD00280ED123
:1006D00058490098884207D057490098884203D06B
:1006E00056A001F0F5FBA8E7009828602EE06168AD
:1006F000881C61A1FFF745FD00280BD10721890364
:100700000098884203D95EA001F0E2FB95E70098CB
:1007100068601BE06168881C62A1FFF732FD002859
:1007200002D10098A86011E06168881C5EA1FFF703
:1007300028FD002802D10098E86007E05BA001F0E6
:10074000C7FB7AE759A001F0C3FB76E761685DA0BB
:10075000009A01F0EFFA01A801F05CF9002803D03B
:1007600061A001F0B5FB68E764A001F0B1FB01A84E
:1007700001F090F900BF60E775736167653A206228
:1007800073736574203C6669656C643E203C7661D9
:100790006C3E0D0A0000000020206669656C643A1A
:1007A00020616374697665203C317C323E0D0A001D
:1007B000B031000162737365743A2062616420761F
:1007C000616C75650D0A000000400001627373657D
:1007D000743A206578697374696E67207265636F17
:1007E000726420696E76616C69642C207265627532
:1007F000696C642066726F6D2073637261746368E4
:100800000D0A0000616374697665000062737365A8
:10081000743A20616374697665206D757374206223
:10082000652031206F7220320D0A0000616464720D
:100830000000000000800001004002016273736547
:10084000743A2061646472206D757374206265204F
:1008500043414949435F415050315F424153452034
:100860006F722043414949435F415050325F4241DA
:1008700053450D0A0000000073697A65000000000E
:1008800062737365743A2073697A6520657863656D
:10089000656473207468652062616E6B2073697A89
:1008A000650D0A006372630076657200627373659A
:1008B000743A20756E6B6E6F776E206669656C6436
:1008C0000D0A000062737365743A202573203D2081
:1008D00030782530386C582C2077726974696E67CF
:1008E0002E2E2E0D0A00000062737365743A206686
:1008F0006C617368206661696C0D0A0062737365D0
:10090000743A206F6B202876657269666965642980
:100910000D0A0000F8B5164C16492068884208D127
:100920002821204601F07EF9A16A884201D10120E8
:1009300000E00020064665680FA112A001F0FAF958
:10094000002E03D117A001F0C3FA0225294620A0EA
:1009500001F0F0F900F07EFF7D21C9000090FFF763
:10096000CFFB074639461FA001F0E4F9F8BD0000AF
:100970000040000111C011CA56312E30312E3030E6
:1009800000000000626F6F746C6F616465723A20E2
:1009900025732C20646F776E6C6F6164206D6F64BB
:1009A000650D0A00626F6F7473657474696E673ADF
:1009B00020494E56414C4944202D204F544120742B
:1009C00061726765747320415050310D0A00000058
:1009D0006375722062616E6B3A20415050256C75D0
:1009E0000D0A0000757074696D653A20256C7520DC
:1009F000730D0A0070B506460D46022E1EDB00245C
:100A000015E00C226243184B99586868FFF7B9FB50
:100A100000280BD10C206043134BC01842680C20F7
:100A20006043195811A001F085F970BD641C092CB0
:100A3000E7D311A0696801F07DF9F6E717A001F08E
:100A400047FA00240BE00C206043074BC0184268B3
:100A50000C206043195805A001F06CF9641C092CA6
:100A6000F1D300BFE1E70000A82A00012020252DD6
:100A700038732025730D0A00756E6B6E6F776E20CC
:100A8000636F6D6D616E643A2025732028747279EE
:100A9000202768656C7027290D0A0000636F6D6D53
:100AA000616E64733A0D0A0070B504460D46034842
:100AB00001F00EFA01200249087070BDCC2E000131
:100AC0000C40002008A001F003FAC82000F0B6FE98
:100AD00000BFBFF34F8F08480849C860BFF34F8F6E
:100AE00000BF00BFFEE70000726573657474696E35
:100AF000672E2E2E0D0A00000400FA0500ED00E01E
:100B000070B504460D4605A001F0E2F90BA001F016
:100B1000DFF917A001F0DCF970BD00007573617298
:100B200074313A2054583D5042362052583D50427C
:100B3000372028414634290D0A000000626175649F
:100B40003A203436303830302C20382064617461DB
:100B500020626974732C206E6F20706172697479E1
:100B60002C20312073746F70206269740D0A0000AC
:100B7000666C6F7720636F6E74726F6C3A206E6F65
:100B80006E653B2074783A20706F6C6C65643B2016
:100B900072783A20444D412072696E672028334BA9
:100BA000422C20706F6C6C6564290D0A00000000F7
:100BB00070B504460D4605A107A001F0BBF8114829
:100BC000016811A001F0B6F870BD000056312E305A
:100BD000312E303000000000626F6F746C6F616402
:100BE00065722076657273696F6E3A2025732028CE
:100BF000646F776E6C6F6164206D6F6465290D0A98
:100C0000000000000040002053797374656D436F4D
:100C10007265436C6F636B203D20256C7520487AAC
:100C20000D0A00000168254A1140016000210160A1
:100C300041608160C1602249884208D12049083959
:100C400049680F2211431E4A083A516035E01C4999
:100C50001431884208D11A4908394968F0221143F1
:100C6000174A083A516028E015492831884209D1CD
:100C70001349083949680F2212021143104A083AF1
:100C800051601AE00E493C31884209D10C490839BB
:100C900049680F2212031143094A083A51600CE0D7
:100CA00007495031884208D10549083949680F225F
:100CB00012041143024A083A51607047FEFF0000D7
:100CC00008000240002904D0026801231A43026090
:100CD00003E00268014B1A4002607047FEFF00000B
:100CE0000146486880B2704710B5002202680D4B7B
:100CF0001A400C6A8B6823430C6923434C692343D5
:100D00008C692343CC6923434C6A23438C6A234375
:100D10001A430260CB6843600B6883604B68C36012
:100D200010BD00000F80FFFF10B5002B01D0106137
:100D300001E00024146110BD70B503460A4600218D
:100D40000024002076E001268E40156835402C46B0
:100D5000002C6ED05568022D02D05568122D20D17E
:100D600008250D40002D0ED0586A4D07EE0E0F25B8
:100D7000B5400646AE4330464E07F60E5569B540BF
:100D8000284358620DE0186A4D07EE0E0F25B54056
:100D90000646AE4330464E07F60E5569B540284329
:100DA00018625568012D08D05568112D05D0556879
:100DB000022D02D05568122D0BD1586801258D40A7
:100DC0000646AE4330461579ED06ED0F8D402843BB
:100DD000586018684E000325B5400646AE433046BD
:100DE0001579AD07AD0F4E00B54028431860D8689F
:100DF0004E000325B5400646AE4330464E0095688A
:100E0000B5402843D860986801258D400646AE431A
:100E10003046D5688D4028439860D86A4E00012539
:100E2000B5400646AE4330464E001569B5402843EE
:100E3000D862491C1568CD40002D84D170BD0000DA
:100E4000054901600F21416100214160816001215C
:100E5000C160002101617047FF3F0000F7B5D4B0C9
:100E600004460E460020539005205290002500278E
:100E700000BFEFF310800090FF21453101A8FFF77C
:100E80006EF901F0A5FC05462448854218D10120E1
:100E90000003844202D1002053902AE00120400345
:100EA000844202D14011539023E003200003844286
:100EB00003D10120400253901BE0529857B0F0BD7F
:100EC0001748854213D101200003844201D1539079
:100ED0000FE001204003844201D1539009E0032038
:100EE0000003844201D1539003E05298E6E7529800
:100EF000E4E705AF0137FF2241320A4901A8FFF7B5
:100F000015F9012000F0A9FA3146569A5398B847CE
:100F10005290009800F0A1FA5298CFE7C440130015
:100F200085601300CE28000170B50446002500BF7F
:100F300000BFEFF310800546012000F091FA00BFDA
:100F400001200006241A20460549096888470646FC
:100F500000BF284600F084FA00BF304670BD000094
:100F60005040002010B508480849086094300849EE
:100F70000860FF382D3807490860C92292000649E9
:100F80000938FFF7D3F810BDCD4F002050400020A6
:100F90005440002058400020202B0001F8B50446A2
:100FA0000D461646002700BF00BFEFF3108007462E
:100FB000012000F055FA00BF01200006241A324635
:100FC00029462046054B1B689847009000BF3846CD
:100FD00000F046FA00BF0098F8BD00005440002021
:100FE000002905D0054A52690243044B5A6104E0C6
:100FF000024A52698243014B5A6170470010024015
:10100000002905D0054A92690243044B9A6104E025
:10101000024A92698243014B9A6170470010024074
:1010200010B500210022214B5B680424234019469F
:10103000002902D0042906D102E01D4B036005E01F
:101040001C4B036002E01A4B036000BF00BF174B4C
:101050005B683024234019460909174B5A5C036822
:10106000D3404360114B5B68072424022340194698
:10107000090A124B5A5C4368D34083600B4B5B6890
:10108000E40023401946C90A0C4B5A5C4368D3401C
:10109000C360064BDB6A10242340002B02D0084BB0
:1010A000036102E07D23DB03036110BD00100240F9
:1010B0000090D0030048E8011C2B0001142B000114
:1010C00000093D00F1B58AB0002009907D20C000E4
:1010D00008900125AD020027002007907F20069090
:1010E000402400260020059003902001029000205B
:1010F00001903E490A98884206D83D48006861023E
:1011000088433B49086006E0394800680121C9036B
:101110000843374908607D21C9000A98FEF7F0FFAF
:101120007D21C9000090FEF7EBFF450100BF30486C
:1011300000687F2109028843019020020199084339
:101140002B4908600520FEF7C9FF10E00120FEF7DB
:10115000C5FF2748406B02210840002800D007E067
:101160000598411C05910899884200D900E0EDE7F7
:1011700000BF1F48C06B86B2AE4201D9771B00E0AA
:10118000AF1B0298874203D2E0B20390B8B202903C
:10119000AE4201D3069400E00794069907984018E0
:1011A000C005000E04900498A04200D103E0049C06
:1011B00009988742BBD800BF0D4800687F2109020B
:1011C0008843019003980002019908430849086088
:1011D0000846406840084000486000BF0448406836
:1011E000042108400028F9D10BB0F0BD0090D003D5
:1011F0000010024010B53E48C069012109070843AC
:101200003B49C861812000063A4908633A48486171
:101210003A4808623A4800680321890388433849FC
:1012200008603421374800F073F836480069401CE4
:10123000002803D033480069002817D12C484068A3
:101240000121090408432A494860084640680721EB
:101250000902884326494860084640680915084342
:10126000234948602848FFF72DFF3FE02148806967
:101270004409640123480078C006C00E04431D4899
:1012800084611B4800680121C9038843184908602C
:10129000084600687F21090288430446194800690E
:1012A00000022043124908600846406801210904F1
:1012B00008430F49486008464068072109028843EF
:1012C0000B494860084640680915084308494860CA
:1012D0000846006A0D490840054908620846006A48
:1012E0000849C968090208430149086210BD0000A5
:1012F00000100240007000400F08000018000200BB
:1013000000100140604000200090D003FF00F8FF73
:1013100070B504460D462A46214601200003FFF71A
:101320009DFD70BD002905D0828901235B031A430E
:10133000828103E08289024B1A408281704700005B
:10134000FFDF0000002A03D0838A0B43838202E080
:10135000838A8B43838270470246002001235B020D
:10136000994200D100BF13880B40002B01D001200F
:1013700000E0002070470000F0B589B005460E4639
:1013800000240020089000BF00BF0027B08900287B
:1013900000D000BF2F462C8A20480440F088044328
:1013A0002C82AC891E480440B08831890843718979
:1013B00008430443AC81AC8A1A480440B089044312
:1013C000AC8201A8FFF72CFE1748874202D104988F
:1013D000089001E003980890326891001923089A58
:1013E0005A431046FEF78CFE079064210798FEF7DB
:1013F00087FE04012109642041430798411A0691A0
:1014000006990901084632306421FEF779FE00078B
:10141000000F04432C8109B0F0BD0000FFCF000095
:10142000F3E90000FFFC000000380140CA05D20DBE
:1014300082807047004870475C40002002E008C886
:10144000121F08C1002AFAD170477047002001E03E
:1014500001C1121F002AFBD1704780F3108870472A
:1014600080F3108870470000002007490870074982
:10147000086007490860074908600749086007498C
:101480000870074908707047104000202440002071
:10149000284000202C400020344000204440002000
:1014A000454000200020024908700249088070472A
:1014B0004C40002048400020F7B584B00746494919
:1014C00006980860002686E0BC5D47480078002842
:1014D00004D0012810D0022874D13AE0CA2C0AD1D5
:1014E0004248047001204249088005204149088093
:1014F00001203D4908706BE03D4801880088401C90
:101500003B4A1080394844541046008805281FD1B2
:101510003649C978354A1279120211430846FF212B
:10152000E131884205D900212F4A1170304A1180DB
:101530000DE0C11D2F4A1180114609882C4A1288DE
:10154000914201D1002100E00221274A117000BF21
:101550003EE0274801880088401C254A1080234827
:1015600044541046008823490988884228D11F48DE
:10157000C0781E490979090208430546281D81B231
:101580001A48401C00F09CFD0390681D1749095C37
:10159000A81D164A105C00020143029102990398AB
:1015A000884207D11046817840782B46521D019021
:1015B00000F034F800200C4908700D49088000BF85
:1015C00006E0FFE70020084908700949088000BFCD
:1015D00000BF701C86B20598864200DA74E707B037
:1015E000F0BD0000404000204C400020444D002051
:1015F000484000204A40002031B5064A0121684693
:10160000FFF75AFF04480478002003490870204679
:1016100038BD0000A126000146400020F8B5044670
:101620000D4616461F46102C06D0112C0AD0122C3F
:101630000ED0132C24D111E03A463146284600F052
:1016400085FD1EE03A463146284600F037FE18E098
:101650003A463146284600F005FF12E0FFF704FF46
:101660000948002213210368284600F0DBFF0748E1
:1016700000680749884202D101200649087000E04D
:1016800000BF00BFF8BD0000244000204040002003
:10169000A12600014640002010B51148007800281E
:1016A0001CD000F0D7F80F490968441A0E4800789A
:1016B000002803D0FF202D30844203D27D2000017A
:1016C00084420AD300BFBFF34F8F08480849C8605F
:1016D000BFF34F8F00BF00BFFEE700BF10BD00008B
:1016E0003A4000203C400020394000200400FA0528
:1016F00000ED00E008B500240025354800F0E8FBC7
:1017000000BFFFF7C9FF3348007800280ED000F073
:10171000A1F8401B3049884208D900202D490870A3
:10172000FFF7C0FE2DA000F0D3FB0024684600F0B8
:101730002DF9002800D1E4E726480078002810D0D1
:1017400000F088F8054668460078FFF755FF002846
:1017500006D000201F4908702AA000F0B9FB002421
:10176000CFE768460078082815D00A2805D00D284C
:1017700002D07F2818D10FE000BF2DA000F0A8FBF9
:1017800000202C490855084600F06EFA00241BA0E2
:1017900000F09EFB1AE000BF002C04D0601EC4B213
:1017A00025A000F095FB11E06846007820280CD3B6
:1017B0004F2C0AD2684602782046611CCCB21D49E3
:1017C0000A540121684600F00DF900BF00BF98E7F8
:1017D000043000010C400020B80B00000D0A5B6FC4
:1017E00074615D2062696E617279206D6F6465203D
:1017F0004F4646202869646C65290D0A6361696952
:10180000632D3E000D0A5B6F74615D2062696E613D
:101810007279206D6F6465204F4646202861626FA3
:101820007274290D0A63616969632D3E000000002E
:101830000D0A0000F44C00200820080000B5024604
:1018400000F008F8034600BF00F004F8C01A904208
:10185000FAD300BD074800690121090408400028A7
:1018600004D005480068401C03490860024800682D
:101870007047000000E000E00840002000B595B08F
:1018800001210820FFF7BCFB01218803FFF7B8FB0B
:101890000FA8FFF7D5FA40200F90022010900420E7
:1018A00014900FA93148FFF747FA80200F900420C9
:1018B00014900FA92D48FFF73FFAE120C0020B90CA
:1018C0000021684601864186818601870C21C186F8
:1018D0000BA92748FFF750FD01210846FFF780FBC1
:1018E00000212448FFF7EEF92248FFF79BF9012376
:1018F000204A20491C390320FFF716FA1C48001D16
:1019000000901D4801900020029003208002039067
:101910000020049080200590002006900790202051
:1019200008900002099000200A9069461148FFF7CC
:10193000DBF900201149088001210E48FFF7C2F9A8
:10194000012240210A48FFF7FDFC01210848FFF76A
:10195000E9FC0B480B4948610020886105200861BB
:1019600000200949086015B000BD0000000C0140CE
:10197000003801401C000240944000200440002038
:10198000FFF9000000E000E00840002070B50446C8
:1019900000F01CF805460B480088A84201D1002041
:1019A00070BD094807490988405C207003218902FD
:1019B00004480088401CFEF7A3FB02480180012078
:1019C000EEE70000044000209440002010B50448D9
:1019D000FFF786F903218902081A80B210BD0000C2
:1019E0001C00024070B505460E4600240CE0295D3F
:1019F0000748FFF71BFD00BF80210548FFF7ACFC3F
:101A00000028F9D0601C84B2B442F0DB70BD000045
:101A10000038014010B5044600F02EF81048206050
:101A2000204600F021F8A0620E48FFF77DFA00285A
:101A300001D0012010BD2C2221460A48FFF7AEFA42
:101A4000002801D00120F5E72C2206492046FEF7A8
:101A5000A6FB002801D00120ECE70020EAE7000007
:101A600011C011CA0040000110B5044628212046CB
:101A700000F0D8F810BD000010B505480078002827
:101A800004D1FFF76FFA01200149087010BD000072
:101A90004D40002070B50446204600F0B1F8002803
:101AA00001D015A000E016A005462A461A491BA041
:101AB00000F040F920A0216800F03CF925A0616801
:101AC00000F038F929A02369E268A16800F032F932
:101AD00032A0616900F02EF936A0236AE269A1699B
:101AE00000F028F92DA0616A00F024F93DA0A16A58
:101AF00000F020F970BD000076616C6964000000A0
:101B0000494E56414C49442028626164206D61670A
:101B100069632F637263290000400001626F6F7474
:101B200073657474696E6720402030782530386C96
:101B3000583A2025730D0A0020206D6167696320E3
:101B40002020202020203D2030782530386C580D72
:101B50000A00000020206163746976655F62616E2F
:101B60006B203D20256C750D0A000000202062616D
:101B70006E6B313A20616464723D30782530386C88
:101B8000582073697A653D256C75206372633D301A
:101B9000782530386C580D0A0000000020202020E5
:101BA00020202020207665723D30782530386C5812
:101BB0000D0A0000202062616E6B323A206164647D
:101BC000723D30782530386C582073697A653D2530
:101BD0006C75206372633D30782530386C580D0A7F
:101BE0000000000020206372633332202020202078
:101BF00020203D2030782530386C580D0A00000038
:101C000010B5044606492068884207D12046FFF7F0
:101C10002BFFA16A884201D1012010BD0020FCE702
:101C200011C011CA30B502460B460021C94312E06B
:101C30001078521C414000240BE04808CD07ED0FFE
:101C4000002D01D0074D00E0002568400146601CD2
:101C5000C4B2082CF1DB18465B1E0028E8D1C8434B
:101C600030BD00002083B8EDF0B589B007460026EE
:101C70003C4621E000E0641C20782028FBD020783E
:101C80000928F8D02078002800D11AE03046761CC8
:101C9000800001A90C5000E0641C2078002805D0C9
:101CA0002078202802D020780928F5D12078002833
:101CB00002D000202070641C2078002801D0082E5B
:101CC000D8DB00BF002E02D1002009B0F0BD0025F6
:101CD00013E00C226A430D4B99580198FEF751FA14
:101CE000002809D10C2068430849401801A98268DE
:101CF000304690470020E8E76D1C092DE9D304A089
:101D0000019900F017F80120DFE70000A82A000180
:101D1000756E6B6E6F776E20636F6D6D616E643A7A
:101D20002025732028747279202768656C70272914
:101D30000D0A00000FB4F0B589B0644C0FA80890EC
:101D4000B0E00E98007807900E98401C0E9007980F
:101D5000252803D007982070641CA3E0002006907B
:101D6000202605900E9800782D2804D10120069099
:101D70000E98401C0E900E980078302803D1302623
:101D80000E98401C0E900BE00E9800780E99491C9E
:101D90000E91014630390A220598504308180590E3
:101DA0000E980078302803DB0E9800783928EBDD98
:101DB0000E9800786C2802D10E98401C0E900E9858
:101DC0000578002D02D00E98401C0E90642D21D075
:101DD00006DC252D58D0582D45D0632D58D112E062
:101DE000732D04D0752D2CD0782D51D13AE02020C0
:101DF0000090089802C808902046069B059A00F0BB
:101E000009FD04464CE008980178001D08902170F7
:101E1000641C45E0089880C80890FB0F002F01DA89
:101E2000784200E038460A2202A9019000F019FD2C
:101E3000009602A92046069B059A00F0EBFC04469A
:101E40002EE0089901C900230A22089102A900F096
:101E500008FD009602A92046069B059A00F0DAFCD0
:101E600004461DE000BF089901C900231022089113
:101E700002A900F0F6FC009602A92046069B059AEE
:101E800000F0C8FC04460BE025202070641C07E02D
:101E900025202070641C002D01D02570641C00BF1B
:101EA00000BF00BF0E980078002804D007485430C7
:101EB000844200D245E7002008902070034800F0DB
:101EC00007F809B0F0BC08BC04B01847944C0020D7
:101ED00070B504462046FEF74DF985B229462046E6
:101EE000FFF780FD70BD000001460A684B68094895
:101EF00082420DD3084882420AD8084608308342FD
:101F000006D3072080030818834201D201207047BE
:101F10000020FCE70140002000C000200446012012
:101F2000C007204305490863206880F3088800BF84
:101F300062B66068804700BFFEE7000000700040A6
:101F40001CB52F4C2F480190002700262E492068F1
:101F500088421CD128212046FFF764FEA16A8842EE
:101F600015D16168022902D12146183101E02146CC
:101F7000083108460127234A0168914206D34122CD
:101F800092040168914201D20168019100BFFFF7FC
:101F900075FC1EA000F00FFCFFF75CFC05460FE08F
:101FA0006846FFF7F3FC002809D0684600780D2842
:101FB00003D0684600780A2801D1012607E000BF57
:101FC000FFF748FC401B7D2109018842E8D300BF90
:101FD000002E0AD1002F08D10A48FFF785FF0028FC
:101FE00003D1012619A000F0E6FB002E04D024A0A6
:101FF00000F0E1FBFFF77EFB0198FFF78FFF000089
:10200000004000010080000111C011CA0D0A5B628E
:102010006F6F745D2043414949432D424F4F542017
:1020200056312E30312E3030202D20456E746572A1
:102030002077697468696E2032733A20646F776E16
:102040006C6F6164206D6F64650D0A005B626F6F79
:10205000745D206E6F2076616C6964206170702001
:10206000696D6167652C20666F7263656420646FBB
:10207000776E6C6F6164206D6F64650D0A000000FF
:102080005B626F6F745D20444F574E4C4F4144204C
:102090004D4F444520286F74612F636C69206F7623
:1020A000657220554152542C202768656C7027209A
:1020B000666F7220636F6D6D616E6473290D0A0027
:1020C00030B502460F4817E01578521C2C026040CC
:1020D00000230EE00124E4030440002C04D044005B
:1020E000094D6C40A4B201E04404240C20465C1C61
:1020F000E3B2082BEED300BF0B464C1EA1B2002B5F
:10210000E2D130BDFFFF00002110000010B50446F1
:1021100011E00C4909680C4A12688818FEF704FFA0
:10212000002801D0052010BD0748006801210903DF
:1021300040180549086004480068A042E9D300201F
:10214000F1E70000144000202C400020F7B586B0D5
:102150000C4615460C2D09D0102D07D00023012266
:102160001021069800F05EFA09B0F0BD204600F09C
:102170004DFA0646201D00F049FA05902046083029
:1021800000F044FA0490102D04D120460C3000F0E9
:102190003DFA00E00020039036480078002807D080
:1021A0003548022210210368069800F03BFADBE76D
:1021B000324F33493868884208D128213846FFF722
:1021C00031FDB96A884201D1012000E00020019070
:1021D0000198002804D07868012801D1294800E03E
:1021E00029480290042E03D307208003864206D993
:1021F000002303221021069800F014FAB4E72348C4
:102200000078002804D1FEF7ADFE01201F490870B8
:102210000120184908701E49029808601D48066090
:102220001D49059808601D4904980860002012495E
:1022300008601B4908601B4908601B490860039837
:10224000C007C00F002806D0184800681849884207
:1022500001D1012000E00020164908700020164935
:10226000087000231A461021069800F0DBF900BF21
:102270007AE70000104000202440002000400001C8
:1022800011C011CA00400201008000013840002046
:1022900014400020184000201C4000202040002056
:1022A000284000202C4000203440002040400020E6
:1022B000A12600014440002045400020F7B582B02F
:1022C00061480078002807D10023022211210298DA
:1022D00000F0A8F905B0F0BD0498042807D25B48C7
:1022E000012211210368029800F09CF9F2E703989B
:1022F00000F08CF901900398061D0498041F0094C7
:10230000524901980968884212D051480078002843
:1023100003D050480078002809D14C4802221121EE
:102320000368029800F07EF901204A490870D1E75D
:1023300046480068001948490968884207D9434857
:10234000032211210368029800F06CF9C2E73F48AC
:10235000006800193D49086008460068FFF7D6FE8E
:102360000546002D21D13D48006800281DD00AE017
:1023700031783A4802680068401C384B1860384889
:102380008154761C641E35480068042801D2002C54
:10239000EED132480068042807D10421304800F00B
:1023A00019F9054600202D490860002D0BD1042C99
:1023B00009D3A708BF003946304600F00BF905469F
:1023C000F619E41B00BF002D08D1002C06D02246D0
:1023D00031462348FDF7AAFE20480460002D09D0AD
:1023E0001A482A4611210368029800F01BF9FFF7EA
:1023F0003BF86FE70020174908701548007800285F
:1024000019D0124801680098081A000B00030F4900
:102410000968090B0903884205D10C4800680E4978
:102420000968884206D109480022112103680298F0
:1024300000F0F8F84EE705480022112103680298E1
:1024400000F0F0F800BF45E71040002024400020D5
:102450004440002045400020184000203440002027
:1024600030400020F7B50E4650480078002806D1CD
:10247000002302221221009800F0D4F8FEBD029839
:10248000042807D04A48012212210368009800F06E
:10249000C9F8F3E7304600F0B9F80546444800684B
:1024A00044490968884207D0414802221221036842
:1024B000009800F0B7F8E1E73F480068002820D016
:1024C00008E0FF213C4802680068401C3A4B186055
:1024D0003A488154384800680428F2D30421374828
:1024E00000F078F8002809D031480522122103684D
:1024F000009800F097F8FEF7B7FFBFE700202E49DD
:1025000008602C4801682E480068FFF78BFB0446E2
:10251000AC4203D12B480068844209D024480422ED
:1025200012210368009800F07DF8FEF79DFFA5E7F3
:1025300023480068001D00F069F80746204800683D
:102540000830874206D31E4800681A4909684018B7
:10255000B84209D81648062212210368009800F0F4
:1025600061F8FEF781FF89E700F0A8F8002809D09C
:102570000F48052212210368009800F053F8FEF777
:1025800073FF7BE70020104908700A4800221221DF
:102590000368009800F046F8FFF75CF90B49086003
:1025A00001200B49087000BF68E7000010400020C0
:1025B00024400020184000203440002030400020FB
:1025C000144000201C400020394000203C400020E6
:1025D0003A40002070B505460C460A4909680A4A87
:1025E0001268881822462946FEF7D8FC002801D038
:1025F000052070BD044800680019034908600020E8
:10260000F7E7000014400020284000200146087829
:102610004A78120210438A7812041043CA781206CC
:1026200010437047FFB587B005460E461C46684606
:1026300006750999417584752004010E6846C175B7
:102640002002010E68460176200E6946487613483E
:10265000006800281FD0CA21684601711F214171FE
:1026600085710621C17100210172062205A9093078
:10267000FDF75CFD0A2101A80130FFF721FD0746A7
:102680006846C773391201740D2101A8034A126804
:1026900090470BB0F0BD00BFFBE7000040400020BA
:1026A00070B504460D4629462046FFF79BF90120E8
:1026B0000149087070BD00003940002010B58CB091
:1026C0002C222A4901A8FDF731FD294901988842A9
:1026D00006D128212548FFF7A5FA0B99884203D097
:1026E0002C2101A8FDF73BFD2148019021480068FD
:1026F0002149884201D1012000E0022002901D48BA
:1027000000681D49884201D103A800E007A80446DB
:102710001848006820601948006860601848006820
:10272000A06018480068E060282101A8FFF77AFA45
:102730000B900E48FEF7F8FB002802D005200CB0E5
:1027400010BD2C2201A90948FEF728FC002801D061
:102750000520F4E72C22054901A8FDF720FD0028FB
:1027600001D00520EBE70020E9E700000040000170
:1027700011C011CA14400020008000011840002040
:102780001C40002020400020F8B504460D460020E3
:102790000090002269462046FDF70EFD064600988F
:1027A000A04203D000980078002801D00120F8BD95
:1027B0002E600020FBE710B5044604E02046641CB0
:1027C0000121FFF70FF920780028F7D110BD000094
:1027D00070B5D2B00024002500BFEFF3108006468C
:1027E000FF21453101A8FDF7BAFC01AC0134982264
:1027F000074901A8FDF79AFC0120FEF72EFEA0472D
:1028000005463046FEF729FE284652B070BD00004E
:102810000E2A0001F8B504460D4616461F46284606
:10282000FDF7A8FC0090002F08D102E00698207068
:10283000641C3046761E00998842F7DC03E0287855
:1028400020706D1C641C28780028F8D102E020203C
:102850002070641C3046761E00998842F7DC2046C2
:10286000F8BDFFB583B007460C46002500BF3846CB
:102870000599FDF745FC0E460A2E02D2304630304F
:1028800001E030463730C2B22846691CCDB26946F5
:102890000A5438460599FDF733FC0746002FE6D168
:1028A0000698002805D02D222846691CCDB269461D
:1028B0000A5406E0681EC0B205466946085C2070EE
:1028C000641C002DF6D10020207007B0F0BD40BA86
:1028D0007047C0BA70470138FDD170470000F7B5A6
:1028E0000325AD06286A82B016460C464008400013
:1028F0002862286A022108432862286A8007FCD4DB
:102900006620686001272F61A86AC005FCD5992060
:1029100068602F61A86AC005FCD5FF209130FFF7E1
:10292000DAFFFF230133AB626846EF60352169604F
:102930002F61A96AC905FCD5AB62A969EF60C9B26C
:1029400005226A602F61AA6AD205FCD5AB62AA692A
:102950000902D2B211430180C80702D0032005B09A
:10296000F0BDAB626869FF2108318843686168691E
:10297000C91E084368610298000248306860082058
:10298000A860EE602F61A86AC005FCD5FF20013069
:10299000A8620023F61CB0080ED0B20811480068E7
:1029A00099006054060A09194E70060C000E8E70CC
:1029B0005B1CC8709A42F1D8FF200130A862686998
:1029C000FF21083188436861686938436861286A73
:1029D000800880002862286A38432862002005B0F9
:1029E000F0BD8000000C032080064169FF22083200
:1029F00091434161426901210A434261026A92089E
:102A000092000262026A0A430262704700000020DC
:102A100003218906096A49084900032292061162C6
:102A20001146096A0222114303229206116200BF75
:102A300003218906096A022211400229F8D0D10136
:102A40000322920691620321D1609F2151600121EE
:102A5000116100BF03218906896AFF2201321140FA
:102A60009142F7D103229206916211468869496921
:102A7000FF220832914303229206516111464969AF
:102A8000012211430322920651611146096A890805
:102A9000890011621146096A01221143032292063C
:102AA0001162704700000000E0300001AC3000010E
:102AB000F50900019030000180300001B10B0001E8
:102AC000A4300001AC2F000115090001E83000011D
:102AD00054300001FD050001203100013C2F0001B0
:102AE0001D060001603100012831000125030001AD
:102AF00050300001742F0001A90A000118310001B3
:102B0000E42F0001C50A000198300001F0300001F7
:102B1000010B00010000000001020304000001029B
:102B20000138FDD170470000F0B40324A406236AE5
:102B30005B085B002362236A02252B432362236A1E
:102B40009B07FCD4FF230133A3626569DE1DB543F7
:102B5000656165691E1D3543656100026B3060600B
:102B60000820A060E26001262661A06AC005FCD5AD
:102B7000A3620023D21C90080ED095080F4800686D
:102B80009A008854070A52185770070C000E977065
:102B90005B1CD0709D42F1D86069FF2108318843E9
:102BA0006061606930436061206A80088000206253
:102BB000206A30432062F0BC002070478000000C87
:102BC000F8B5064601200025C004864201D905203B
:102BD000F8BD0324A406206A400840002062206A51
:102BE000022108432062206A8007FCD4FF270137B6
:102BF000A76200F0BBF8002801D0032515E00620ED
:102C0000606001212161A06AC005FCD5A762300285
:102C1000203060602161A06AC005FCD5A7620C4825
:102C200000F0C8F8002800D102256069FF210831B2
:102C3000884360616069012108436061206A8008FF
:102C400080002062206A084320622846F8BD000008
:102C5000E6960100F7B506460120C00482B015468D
:102C6000864202D9052005B0F0BD03208006016A26
:102C7000490849000162016A022211430162016AA6
:102C80008907FCD4FF2101318162F2B28C1AA5427E
:102C900000D8ACB20398009000F068F8002840D14A
:102CA00006214806416001210161816AC905FCD500
:102CB000FF2101310320800681624169FF22083231
:102CC0009143416141690422114341613102323132
:102CD0004160C4600022002C16D9009887183B7808
:102CE000F87819467B7800061B021943BB781B0451
:102CF000194301430802F978000A090608431949F3
:102D00000860121DA242E8D3012103208006016160
:102D1000816AC905FCD5FF2101318162124800F0AA
:102D200049F8A54209D00398361900192D1BFF2434
:102D300001340390A542ADD8ABE70320800641697A
:102D4000FF220832914341614169012211434161EF
:102D5000016A890889000162016A11430162002049
:102D600005B0F0BD8000000C1A06000038B4012543
:102D7000032080066A46C560352141600561816A8D
:102D8000C905FCD5FF24013484628169C560CBB2DA
:102D9000052141600561816AC905FCD584628069AD
:102DA0001902C0B2014388B21180C00700D00120CF
:102DB00038BC7047F8B400210125032292066B4607
:102DC000D560352454601561946AE405FCD5FF276D
:102DD000013797629469D560E4B2052656601561A3
:102DE000966AF605FCD5976296692402F6B23443DA
:102DF0001C80E30722D0814202D9F8BC0020704732
:102E0000032292066B46D560352454601561491C37
:102E1000946AE405FCD597629469D560E4B205260E
:102E200056601561966AF605FCD597629269240290
:102E3000D2B21443A2B21C80D207DCD1F8BC01206C
:102E40007047000000404040404040404040414109
:102E5000414141404040404040404040404040406F
:102E60004040404040050202020202020202020209
:102E70000202020202202020202020202020200206
:102E80000202020202029090909090901010101096
:102E90001010101010101010101010101010101032
:102EA00002020202020288888888888808080808C6
:102EB0000808080808080808080808080808080892
:102EC0000202020240000000452E00015B6F7461A7
:102ED0005D2062696E617279206D6F6465204F4E6E
:102EE000202D2073656E642030784341204F54417B
:102EF000206672616D6573206E6F770D0A28626CB3
:102F0000655F70726F746F636F6C2E6D6420736594
:102F10006374696F6E20362E363B204F54415F41FB
:102F2000424F5254206F722033732069646C6520C5
:102F30006578697473290D0A000000006273736577
:102F400074203C6669656C643E203C76616C3E3A58
:102F500020777269746520626F6F74736574746929
:102F60006E67206669656C642028636172656675AA
:102F70006C2129006F74613A205541525420656ECE
:102F800074657273204F54412062696E61727920BA
:102F90006672616D65206D6F6465202873656520BC
:102FA00068656C70206F74612900000073686F772A
:102FB00020626F6F7420696E666F202B20637572BC
:102FC0002062616E6B20284F5441207772697465CE
:102FD0007320746865204F544845522062616E6BBF
:102FE0002900000072657365743A20737973746503
:102FF0006D20726573657420287265626F6F742925
:10300000000000000D0A434C49207265616479207C
:1030100028626F6F746C6F6164657220646F776E85
:103020006C6F6164206D6F6465292E205479706522
:10303000202768656C702720666F7220636F6D6D46
:10304000616E64732E0D0A63616969632D3E000031
:103050006F746100627364756D703A2073686F7786
:1030600020626F6F7473657474696E672072656334
:103070006F7264202B2063726320636865636B004A
:1030800073686F7720626F6F746C6F616465722014
:1030900076657273696F6E0075617274696E666FC2
:1030A00000000000646576696E666F0068656C708C
:1030B000205B636D645D3A206C69737420636F6D8F
:1030C0006D616E6473202F2073686F77206F6E655B
:1030D00020636F6D6D616E6427732068656C70008E
:1030E00068656C7000000000627364756D700000AC
:1030F00075617274696E666F3A2073686F772055D8
:1031000053415254312070696E732F626175642F80
:10311000666F726D61740000726573657400000003
:1031200062737365740000006170707377205B31A7
:103130007C325D3A2073776974636820626F6F74C4
:103140002062616E6B202863726320766572696607
:1031500069656429202B207265626F6F740000001E
:10316000617070737700000061707073773A20624D
:10317000616E6B256C7520696D6167652063726394
:10318000206D69736D6174636820287265636F7266
:10319000642030782530386C582C20616374756158
:1031A0006C2030782530386C58290D0A000000005A
:1031B0002020202020202020206231616464727C45
:1031C0006232616464727C623173697A657C6232F6
:1031D00073697A657C62316372637C6232637263A5
:1031E0007C62317665727C6232766572203C6865FD
:1031F000787C6465633E0D0A000000001C3200010B
:1032000000400020600000003C1400017C320001FE
:1032100060400020F81900004C1400010090D00319
:10322000000000000000000000000000000000009E
:10323000000000000000000000000000000000008E
:10324000000000000000000000000000000000007E
:10325000000000000000000000000000000000006E
:10326000000000000000000000000000000000005E
:0C32700000000000000000000000000052
:1040000011C011CA010000000080000124DB000083
:10401000192ACFC71B0001000000000000000000AB
:0C40200000000000000000007EE8E73314
:104010006EDA83231C000100000000000000000095
:0C40200000000000000000001AC4DC25B5
:10800000E8BD002069810001718100015DB10001BE
:108010000000000000000000000000000000000060
:10802000000000000000000000000000C5B50001D5
@ -780,8 +1463,8 @@
:10A8A000854203D134A003F069FC03E029463AA0B5
:10A8B00003F0FEFB09F00EFB7D21C900FDF762FCF1
:10A8C000014639A003F0F4FB08F00CFF01463AA062
:10A8D00003F0EEFBF8BD00001B00010056312E30E6
:10A8E000302E3237000000006669726D7761726544
:10A8D00003F0EEFBF8BD00001C00010056312E30E5
:10A8E000302E3238000000006669726D7761726543
:10A8F0003A202573202830782530386C58290D0AE5
:10A90000000000006375722062616E6B3A20415056
:10A910005025750D0A000000FF7F00006368697014
@ -867,7 +1550,7 @@
:10AE10002C20727820717565756520666C75736875
:10AE200065640D0A0000000010B506A108A003F03B
:10AE30003FF90DA003F0A2F91948016819A003F029
:10AE400037F910BD56312E30302E32370000000059
:10AE400037F910BD56312E30302E32380000000058
:10AE50006669726D776172652076657273696F6E6F
:10AE60003A2025730D0A00006D636D2D6464632D17
:10AE7000626C653A20424C452872647473732920D1
@ -2103,7 +2786,7 @@
:10FB500029F809B0F0BD13E0FDF76EFA10498842AC
:10FB600001D1022000E001206946087401200090C4
:10FB700004AB22460799069800F014F809B0F0BDCE
:10FB8000079809B0F0BD0000FFFF00001B00010056
:10FB8000079809B0F0BD0000FFFF00001C00010055
:10FB900000080240A4470020FF7F00000000204131
:10FBA0000040020130B4029C42540546491C88B210
:10FBB0002C54401C002180B2002C07D95A5C2A54D6
@ -2165,7 +2848,7 @@
:10FF30003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DF1
:10FF40003D0A0000206D636D2D6464632D626C6555
:10FF50003A20424C45202B204672656552544F533F
:10FF6000202B20434C490A0056312E30302E323798
:10FF6000202B20434C490A0056312E30302E323897
:10FF700000000000204669726D7761726520766529
:10FF80007273696F6E2025730A0000000040002024
:10FF90002053797374656D436F7265436C6F636B47

Binary file not shown.

View File

@ -2,6 +2,6 @@
"file": "mothercup_ble_prod_ota.bin",
"target_bank": 1,
"size": 56100,
"crc32": "0xC7CF2A19",
"version": 65563
"crc32": "0x2383DA6E",
"version": 65564
}

View File

@ -2,6 +2,6 @@
"file": "mothercup_ble_prod_ota_app2.bin",
"target_bank": 2,
"size": 56400,
"crc32": "0x0198204E",
"version": 65563
"crc32": "0xE5D4D039",
"version": 65564
}