diff --git a/AGENTS.md b/AGENTS.md index 257d3be..90a1a75 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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 接口与协议 diff --git a/Boot/MDK-ARM/Listings/caiic_boot.map b/Boot/MDK-ARM/Listings/caiic_boot.map index 81ed7bc..61154d7 100644 --- a/Boot/MDK-ARM/Listings/caiic_boot.map +++ b/Boot/MDK-ARM/Listings/caiic_boot.map @@ -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) ============================================================================== diff --git a/Boot/MDK-ARM/bin/caiic_boot.bin b/Boot/MDK-ARM/bin/caiic_boot.bin index 746d1fb..bbd7824 100644 Binary files a/Boot/MDK-ARM/bin/caiic_boot.bin and b/Boot/MDK-ARM/bin/caiic_boot.bin differ diff --git a/Boot/MDK-ARM/build.log b/Boot/MDK-ARM/build.log index 1d68b51..7c324e0 100644 --- a/Boot/MDK-ARM/build.log +++ b/Boot/MDK-ARM/build.log @@ -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). diff --git a/Boot/MDK-ARM/caiic_boot.uvprojx b/Boot/MDK-ARM/caiic_boot.uvprojx index d1754a9..51b646f 100644 --- a/Boot/MDK-ARM/caiic_boot.uvprojx +++ b/Boot/MDK-ARM/caiic_boot.uvprojx @@ -337,9 +337,9 @@ 0 - N32WB03X, USE_STDPERIPH_DRIVER + N32WB03X, USE_STDPERIPH_DRIVER, BOOT_FIRMWARE - ..\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 + ..\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 @@ -413,6 +413,61 @@ 1 ..\src\boot_crc32.c + + boot_usart.c + 1 + ..\src\boot_usart.c + + + boot_cli.c + 1 + ..\src\boot_cli.c + + + + + SHARED_APP + + + app_ota.c + 1 + ..\..\mcm-ddc-ble\src\app_ota.c + + + app_bootset.c + 1 + ..\..\mcm-ddc-ble\src\app_bootset.c + + + + + STD_PERIPH + + + n32wb03x_rcc.c + 1 + ..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_rcc.c + + + n32wb03x_gpio.c + 1 + ..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_gpio.c + + + n32wb03x_usart.c + 1 + ..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_usart.c + + + n32wb03x_dma.c + 1 + ..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_dma.c + + + n32wb03x_qflash.c + 1 + ..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\n32wb03x_std_periph_driver\src\n32wb03x_qflash.c + diff --git a/Boot/src/boot_cli.c b/Boot/src/boot_cli.c new file mode 100644 index 0000000..6ab586c --- /dev/null +++ b/Boot/src/boot_cli.c @@ -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" (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 +#include +#include + +#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" 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 : 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; + } + } +} diff --git a/Boot/src/boot_usart.c b/Boot/src/boot_usart.c new file mode 100644 index 0000000..f0634e0 --- /dev/null +++ b/Boot/src/boot_usart.c @@ -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; +} diff --git a/Boot/src/boot_usart.h b/Boot/src/boot_usart.h new file mode 100644 index 0000000..80bf966 --- /dev/null +++ b/Boot/src/boot_usart.h @@ -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 + +/** 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__ */ diff --git a/Boot/src/boot_version.h b/Boot/src/boot_version.h new file mode 100644 index 0000000..2201168 --- /dev/null +++ b/Boot/src/boot_version.h @@ -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__ */ diff --git a/Boot/src/cli_core.h b/Boot/src/cli_core.h new file mode 100644 index 0000000..261f7e4 --- /dev/null +++ b/Boot/src/cli_core.h @@ -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__ */ diff --git a/Boot/src/main.c b/Boot/src/main.c index 6044163..cabd916 100644 --- a/Boot/src/main.c +++ b/Boot/src/main.c @@ -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 +#include #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 (;;) diff --git a/Boot/src/ota_wire.h b/Boot/src/ota_wire.h new file mode 100644 index 0000000..8f24d37 --- /dev/null +++ b/Boot/src/ota_wire.h @@ -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__ */ diff --git a/docs/ble_protocol.md b/docs/ble_protocol.md index be441fe..9fcf4c0 100644 --- a/docs/ble_protocol.md +++ b/docs/ble_protocol.md @@ -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 = 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 命令形式提供, diff --git a/docs/开发日志.md b/docs/开发日志.md index 47a6eab..e699ccd 100644 --- a/docs/开发日志.md +++ b/docs/开发日志.md @@ -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`、`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 模式,功能不受影响。 diff --git a/mcm-ddc-ble/MDK-ARM/Listings-app2/mcm-ddc-ble-app2.map b/mcm-ddc-ble/MDK-ARM/Listings-app2/mcm-ddc-ble-app2.map index c1e9b34..9a26898 100644 --- a/mcm-ddc-ble/MDK-ARM/Listings-app2/mcm-ddc-ble-app2.map +++ b/mcm-ddc-ble/MDK-ARM/Listings-app2/mcm-ddc-ble-app2.map @@ -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 ============================================================================== diff --git a/mcm-ddc-ble/MDK-ARM/Listings/mcm-ddc-ble.map b/mcm-ddc-ble/MDK-ARM/Listings/mcm-ddc-ble.map index 4a00a52..18b0781 100644 --- a/mcm-ddc-ble/MDK-ARM/Listings/mcm-ddc-ble.map +++ b/mcm-ddc-ble/MDK-ARM/Listings/mcm-ddc-ble.map @@ -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 ============================================================================== diff --git a/mcm-ddc-ble/MDK-ARM/bin/mcm-ddc-ble-app2.bin b/mcm-ddc-ble/MDK-ARM/bin/mcm-ddc-ble-app2.bin index bab7a76..293276a 100644 Binary files a/mcm-ddc-ble/MDK-ARM/bin/mcm-ddc-ble-app2.bin and b/mcm-ddc-ble/MDK-ARM/bin/mcm-ddc-ble-app2.bin differ diff --git a/mcm-ddc-ble/MDK-ARM/bin/mcm-ddc-ble.bin b/mcm-ddc-ble/MDK-ARM/bin/mcm-ddc-ble.bin index c1d59c0..ad98bad 100644 Binary files a/mcm-ddc-ble/MDK-ARM/bin/mcm-ddc-ble.bin and b/mcm-ddc-ble/MDK-ARM/bin/mcm-ddc-ble.bin differ diff --git a/mcm-ddc-ble/inc/app_ble_proto.h b/mcm-ddc-ble/inc/app_ble_proto.h index 14a9cc0..d8b661a 100644 --- a/mcm-ddc-ble/inc/app_ble_proto.h +++ b/mcm-ddc-ble/inc/app_ble_proto.h @@ -23,28 +23,9 @@ extern "C" { #include -/* 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. diff --git a/mcm-ddc-ble/inc/app_version.h b/mcm-ddc-ble/inc/app_version.h index 87c0d5b..432122e 100644 --- a/mcm-ddc-ble/inc/app_version.h +++ b/mcm-ddc-ble/inc/app_version.h @@ -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__ */ diff --git a/mcm-ddc-ble/src/app_bootset.c b/mcm-ddc-ble/src/app_bootset.c index 35e452a..f7682d9 100644 --- a/mcm-ddc-ble/src/app_bootset.c +++ b/mcm-ddc-ble/src/app_bootset.c @@ -23,8 +23,19 @@ #include #include +#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(); } diff --git a/mcm-ddc-ble/src/app_ota.c b/mcm-ddc-ble/src/app_ota.c index 3e402d4..79482d1 100644 --- a/mcm-ddc-ble/src/app_ota.c +++ b/mcm-ddc-ble/src/app_ota.c @@ -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 #include +#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; } diff --git a/tools/merge_image.py b/tools/merge_image.py index cb988ef..3665586 100644 --- a/tools/merge_image.py +++ b/tools/merge_image.py @@ -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") diff --git a/tools/out/mothercup_ble_ota.bin b/tools/out/mothercup_ble_ota.bin index 7367f4b..2fe9153 100644 Binary files a/tools/out/mothercup_ble_ota.bin and b/tools/out/mothercup_ble_ota.bin differ diff --git a/tools/out/mothercup_ble_prod.bin b/tools/out/mothercup_ble_prod.bin index 9d6163f..b4f335f 100644 Binary files a/tools/out/mothercup_ble_prod.bin and b/tools/out/mothercup_ble_prod.bin differ diff --git a/tools/out/mothercup_ble_prod.hex b/tools/out/mothercup_ble_prod.hex index 1fed4ee..ee05b64 100644 --- a/tools/out/mothercup_ble_prod.hex +++ b/tools/out/mothercup_ble_prod.hex @@ -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 diff --git a/tools/out/mothercup_ble_prod_ota.bin b/tools/out/mothercup_ble_prod_ota.bin index c1d59c0..ad98bad 100644 Binary files a/tools/out/mothercup_ble_prod_ota.bin and b/tools/out/mothercup_ble_prod_ota.bin differ diff --git a/tools/out/mothercup_ble_prod_ota.json b/tools/out/mothercup_ble_prod_ota.json index 0348e33..aa1208b 100644 --- a/tools/out/mothercup_ble_prod_ota.json +++ b/tools/out/mothercup_ble_prod_ota.json @@ -2,6 +2,6 @@ "file": "mothercup_ble_prod_ota.bin", "target_bank": 1, "size": 56100, - "crc32": "0xC7CF2A19", - "version": 65563 + "crc32": "0x2383DA6E", + "version": 65564 } \ No newline at end of file diff --git a/tools/out/mothercup_ble_prod_ota_app2.bin b/tools/out/mothercup_ble_prod_ota_app2.bin index bab7a76..293276a 100644 Binary files a/tools/out/mothercup_ble_prod_ota_app2.bin and b/tools/out/mothercup_ble_prod_ota_app2.bin differ diff --git a/tools/out/mothercup_ble_prod_ota_app2.json b/tools/out/mothercup_ble_prod_ota_app2.json index cfd8ec0..33ee9f8 100644 --- a/tools/out/mothercup_ble_prod_ota_app2.json +++ b/tools/out/mothercup_ble_prod_ota_app2.json @@ -2,6 +2,6 @@ "file": "mothercup_ble_prod_ota_app2.bin", "target_bank": 2, "size": 56400, - "crc32": "0x0198204E", - "version": 65563 + "crc32": "0xE5D4D039", + "version": 65564 } \ No newline at end of file