From 9c84bdb6cb1ff5020602bab2fa37131da61e1b46 Mon Sep 17 00:00:00 2001 From: "evan.liu" <583229071@qq.com> Date: Fri, 4 Sep 2026 10:20:54 +0800 Subject: [PATCH] =?UTF-8?q?mcm-ddc-ble=20V1.00.09:=E6=96=B0=E5=A2=9Ebootse?= =?UTF-8?q?tting=E4=B8=8EAPP=5FDATA=E5=8F=82=E6=95=B0=E5=8C=BA=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E5=8C=96=E8=AF=BB=E5=86=99(=E4=BB=85=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E8=AE=BF=E9=97=AE,=E6=97=A0=E8=A3=B8=E8=AF=BB?= =?UTF-8?q?=E5=86=99=E9=98=B2=E5=8F=98=E7=A0=96);param=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E7=AE=A1=E7=90=86caiic=5Fparams=5Ft=E5=8F=82=E6=95=B0=E8=AE=B0?= =?UTF-8?q?=E5=BD=95(led1=5Fblink=5Fms=E5=8D=B3=E6=97=B6=E7=94=9F=E6=95=88?= =?UTF-8?q?=E4=BA=8ELED1=E9=97=AA=E7=83=81/pwm=5Fduty=5Fpct=E4=BB=85?= =?UTF-8?q?=E5=AD=98=E5=82=A8),bsdump/bsset=E7=BB=93=E6=9E=84=E5=8C=96?= =?UTF-8?q?=E8=AF=BB=E5=86=99bootsetting(=E8=87=AA=E5=8A=A8=E9=87=8D?= =?UTF-8?q?=E7=AE=97CRC+=E6=93=A6=E9=99=A4=E7=BC=96=E7=A8=8B+=E8=AF=BB?= =?UTF-8?q?=E5=9B=9E=E6=A0=A1=E9=AA=8C);UART=E4=B8=8EBLE=20CLI=E8=AF=BB?= =?UTF-8?q?=E5=86=99=E7=89=B9=E5=BE=81=E5=8F=8C=E9=80=9A=E9=81=93=E5=8F=AF?= =?UTF-8?q?=E7=94=A8;AGENTS.md=E6=81=A2=E5=A4=8D=E4=B8=BA/init=E6=96=B0?= =?UTF-8?q?=E7=89=88=E5=B9=B6=E5=90=8C=E6=AD=A5;=E6=95=B4=E5=8C=85+OTA?= =?UTF-8?q?=E5=8C=85=E5=B7=B2=E5=87=BA=E5=88=B0tools/out?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 222 +- docs/ble_protocol.md | 19 + docs/开发日志.md | 25 + mcm-ddc-ble/MDK-ARM/Listings/mcm-ddc-ble.map | 2785 ++++----- mcm-ddc-ble/MDK-ARM/bin/mcm-ddc-ble.bin | Bin 41168 -> 44088 bytes mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvprojx | 30 + mcm-ddc-ble/inc/app_bootset.h | 25 + mcm-ddc-ble/inc/app_params.h | 57 + mcm-ddc-ble/inc/app_version.h | 4 +- mcm-ddc-ble/src/app_bootset.c | 208 + mcm-ddc-ble/src/app_params.c | 210 + mcm-ddc-ble/src/cli_core.c | 5 + mcm-ddc-ble/src/main.c | 17 +- tools/out/caiic_ble_full.bin | Bin 73936 -> 76856 bytes tools/out/caiic_ble_full.hex | 5263 +++++++++--------- tools/out/caiic_ble_full_ota.bin | Bin 41168 -> 44088 bytes tools/out/caiic_ble_full_ota.json | 6 +- 17 files changed, 4929 insertions(+), 3947 deletions(-) create mode 100644 mcm-ddc-ble/inc/app_bootset.h create mode 100644 mcm-ddc-ble/inc/app_params.h create mode 100644 mcm-ddc-ble/src/app_bootset.c create mode 100644 mcm-ddc-ble/src/app_params.c diff --git a/AGENTS.md b/AGENTS.md index c0ea12f..0e317df 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,85 +2,154 @@ ## 项目概述 -本仓库是基于国民技术(Nations)**N32WB031 BLE SoC** 的嵌入式固件工程集合。实际芯片型号 **N32WB031KEQ6-2**(Cortex-M0,64MHz HSI,**Flash 512KB**,RAM 48KB+16KB)。 +本仓库是 **mothercup(母乳杯)** 产品的完整代码仓库,包含三大部分: -当前活跃工程: +1. **设备固件** — 基于国民技术(Nations)**N32WB031 BLE SoC**(实际型号 **N32WB031KEQ6-2**:Cortex-M0,64MHz HSI,**Flash 512KB**,RAM 48KB+16KB): + - **`mcm-ddc-ble/`** — 唯一活跃的应用固件工程(APP,链接在 APP1 bank `0x01008000`/224KB)。以 SDK rdtss 例程为蓝本,集成 FreeRTOS、UART CLI、BLE 自定义 GATT 服务(CLI 透传 / 设备信息查询 / BLE OTA 双 bank 直写升级)、bootsetting 与 APP_DATA 参数区结构化读写命令。当前版本 **V1.00.09**(`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。 +2. **手机 App `SmartAssiter/`** — uni-app **Vue3 + TypeScript** 工程(HBuilderX 项目管理,无 package.json),通过 BLE 连接设备:查看运行参数(温度/电压/转速等)、CLI 终端、OTA 升级页(当前停用,见下)。另有登录/注册/用户信息等云端业务页面。 +3. **PC 工具 `tools/`** — 整片烧录包制作/烧录脚本 + bleak 蓝牙测试客户端。 -- **`mcm-ddc-04/`** — 主工程(APP,链接在 APP1 bank `0x01008000`/224KB):UART(printf 重定向 + DMA 发送 + RX 中断)、CLI 命令框架(UART + BLE 双通道)、FreeRTOS 多任务、GPIO 点灯、BLE 协议栈(自定义 GATT 透传服务 CLS)、BLE OTA 双 bank 直写升级(见开发日志第 15/16 节、`docs/ble_protocol.md`)。 -- **`Boot/`** — 自写精简 bootloader(链接在 `0x01000000`/16KB):校验 bootsetting 自身完整性(magic + 结构体 CRC32)后按 active bank 的 `start_address` 直接跳转;**不校验镜像 CRC(在 OTA 升级过程中校验)**;记录无效或地址越界回退 APP1(开发日志第 19/21 节)。 -- **`mcm-ddc-ble/`** — 独立 BLE 工程(基于 SDK rdtss 例程 + FreeRTOS,睡眠已锁保 SWD,已并入 mcm-ddc-04 的 CLI 框架 + UART 驱动:CLI 任务 `caiic->`、UART/BLE 双通道应答,命令 help/version/sysinfo/led):当前链接在 `0x01008000`/0x38000 作为 APP1,与 Boot 组成整包 `caiic_ble_full.*`;单跑时把 IROM1 改回 `0x01000000, 0x40000`。日志在 `mcm-ddc-ble/docs/开发日志.md`。 +关键文档: -仓库顶层目录: +- `docs/开发日志.md` — 固件全程开发日志(29 节,含所有踩坑根因与设计决策,排查问题先查这里) +- `docs/ble_protocol.md` — CAIIC BLE 通信协议 V1.1(帧格式/GATT UUID/三类业务流程/维护命令/手机端开发指南) +- `SmartAssiter/docs/修改记录_*.md` — App 侧每次改造的详细记录 -- `mcm-ddc-04/` — 主工程(应用代码、MDK 工程文件、开发日志) -- `mcm-ddc-ble/` — 独立 BLE 工程(rdtss 蓝本 + FreeRTOS,APP1 链接形态) -- `Boot/` — bootloader 工程(`src/main.c`、`dfu_layout.h`、`boot_crc32.c`;后两个被 APP 工程以相对路径 `..\..\Boot\src` 共用) -- `tools/` — 烧录包工具:`merge_image.py`(合并 boot + bootsetting 缺省记录 + APP 为整片 hex/bin,支持 `merge_image.py [app_bin] [输出名]`,自动从 `app_version.h` 取 `APP_FW_VERSION_NUM` 写入 OTA 清单)、`make_package.bat`(一键全量重建 `-r` + 合并)、`flash_package.bat`(NSpyocd 整片烧录),产物在 `tools/out/`;BLE 测试工具:`ble_cli_test.py` + `ble_cli.bat`(PC 端 bleak 蓝牙 CLI 客户端,支持帧协议与 `...c72e0003` 读写特征两种方式,venv 在 `tools/.venv-ble`,首次运行 `ble_cli.bat` 自动创建) -- `nations-tec/` — 厂商资源:SDK V2.0.0、DFP 器件包、STB 开发板资料、官方 PDF 文档。**这些内容为只读参考资料,不要修改。** -- `app/`、`docs/` — 顶层空目录,预留占位 - -关键参考路径(相对仓库根): - -- SDK:`nations-tec/N32WB03x_SDK_V2.0.0`(固件库 `firmware/`、中间件 `middlewares/Nationstech/ble_library` 与 `middlewares/Third_Party/FreeRTOS`、官方例程 `projects/n32wb03x_EVAL/`、DFU 工具 `utilities/dfu`) -- 官方例程:USART printf `projects/n32wb03x_EVAL/peripheral/USART/Printf`、点灯 `peripheral/GPIO/LedBlink`、FreeRTOS `application/FreeRTOS/FreeRTOS_ThreadCreation` -- 开发日志与详细设计决策:`mcm-ddc-04/docs/开发日志.md` - -## 工程结构(mcm-ddc-04) +## 仓库顶层结构 ``` -mcm-ddc-04/ -├── app/ -│ ├── main.c # 入口:VTOR 重映射 → USART 初始化+banner → LED 初始化 → app_ble_init → 建队列/任务/CLI → vTaskStartScheduler -│ ├── bsp_usart.c/.h # USART1 初始化(PB6/PB7,115200 8N1)+ fputc 重定向('\n' 前自动补 '\r')+ DMA TX(CH1,轮询完成)+ RXDNE 中断字节队列 + TX 互斥锁 -│ ├── bsp_led.c/.h # LED1(PB0)/LED2(PA6) 初始化、on/off/toggle -│ ├── app_tasks.c/.h # 3 个 FreeRTOS 任务 + 日志队列(生产者-消费者模型)+ 主动打印开关(默认关) -│ ├── app_cli.c/.h # CLI UART 前端:CliTask 行接收/编辑/历史/Tab/Ctrl+Z,分行后交 cli_core 执行 -│ ├── cli_core.c/.h # CLI 核心(命令表/handler/分词执行),输出经可切换 cli_out_fn(默认 UART DMA);命令:help/version/sysinfo/log/led/bankinfo -│ ├── app_ota.c/.h # BLE OTA 接收器:4KB 扇区缓冲直写对侧 bank + CRC32 校验 + bootsetting 更新 + 复位切换 -│ ├── app_version.h # 固件版本号 APP_FW_VERSION -│ ├── n32wb03x_it.c/.h # NMI / HardFault 异常处理 + USART1_IRQHandler(转发到 bsp_usart_rx_isr_handler) -│ ├── FreeRTOSConfig.h # heap 22KB,SVC/PendSV/SysTick 映射给 FreeRTOS port -│ └── ble/ -│ ├── app_ble.c/.h # BLE 栈初始化/广播/连接事件 + BLE 调度任务 + notify 发送与下行回调 + app_ble_max_payload/is_connected -│ ├── app_ble_proto.c/.h # BLE 帧协议前端:字节流重组、CLI_REQ/CLI_RSP 传输、OTA 帧分发、pending 重试(BleTask 上下文) -│ ├── app_user_config.h # 广播名 CAIIC-MCM、连接参数、profile/日志开关(被 SDK rwip_config.h 包含) -│ └── app_profile/ -│ ├── rwapp_config.h # CFG_APP_* → BLE_APP_* 映射 -│ └── app_cls.c/.h # 自定义 128-bit UUID GATT 服务(写 + notify 两特征,基于 SDK rdtss profile 引擎) -├── MDK-ARM/ -│ ├── embeddedSrc.uvprojx / .uvoptx # Keil µVision5 工程文件(含 DFU 组:..\..\Boot\src\boot_crc32.c) -│ ├── Objects/ # 编译产物(embeddedSrc.axf / .hex) -│ ├── bin/ # fromelf 生成的 embeddedSrc.bin -│ └── build.log -└── docs/开发日志.md +mothercup/ +├── mcm-ddc-ble/ # 应用固件工程(src/ inc/ MDK-ARM/) +├── Boot/ # bootloader 工程(src/ + MDK-ARM/caiic_boot.uvprojx) +├── SmartAssiter/ # 手机 App(uni-app vue3,HBuilderX 工程) +├── tools/ # merge_image.py / make_package.bat / flash_package.bat / ble_cli_test.py 等 +├── docs/ # 开发日志.md + ble_protocol.md(仓库级权威文档) +├── nations-tec/ # 厂商资源:SDK V2.0.0、DFP 器件包、STB 开发板资料、官方 PDF。**只读,不要修改** +└── tools/out/ # 出包产物(caiic_ble_full.{hex,bin} + _ota.bin/_ota.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` 引用。因此 `mcm-ddc-04` 目录不能脱离仓库根单独移动。 +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 工程引用。因此各工程目录不能脱离仓库根单独移动。 -工程配置:器件 `N32WB031KEQ6-2`(512KB Flash),IROM 0x01008000 / 0x38000(APP1 区,前 32KB 留给 Bootloader),**IRAM 0x20004000 / 0xC000**(低 16KB 保留给芯片 ROM/BLE,见下),MicroLIB,全局宏 `N32WB03X, USE_STDPERIPH_DRIVER`;链接器 Misc 附加 BLE ROM 符号表 `symbol_g15.obj`。 +## Flash / RAM 布局(铁律) + +Flash 布局(512KB,`Boot/src/dfu_layout.h` 为唯一权威定义,官方 256KB DFU 布局每区加倍): + +| 区域 | 地址 | 大小 | +|---|---|---| +| Bootloader | 0x01000000 | 16KB | +| bootsetting | 0x01004000 | 8KB(用 1 个 4KB 扇区,结构体见 dfu_layout.h) | +| APP_DATA | 0x01006000 | 8KB(区头为 `caiic_params_t` 参数记录,见 app_params.h) | +| APP1 | 0x01008000 | 224KB(0x38000) | +| APP2 | 0x01040000 | 224KB(0x38000) | + +- **RAM 铁律**:SRAM 为 48KB+16KB,**低 16KB(0x20000000~0x20003FFF)由芯片 ROM/BLE 子系统占用**(rwip 堆描述符、patch 数组、中断中继表,由 ROM 启动代码预备)。**任何工程的 IRAM 执行区必须从 0x20004000 起**(含 Boot 和任何小工具),否则 .data/.bss 初始化冲掉 ROM 数据,BLE init 必然 HardFault(实测根因,开发日志 §21)。注意:mcm-ddc-ble.uvprojx 里 `` 镜像元素显示 0x20000000 是过期显示值,实际生效的是 OCR_RVCT9=0x20004000/0xC000——以 `Listings/mcm-ddc-ble.map` 的 `RW_IRAM1 (Exec base: 0x20004000)` 为准。 +- **VTOR**:Cortex-M0 无 SCB->VTOR,用 `PWR->VTOR_REG`(bit31=EN|[30:0]=基址)。规则:**BLE 初始化之前** VTOR 指向 APP 自身向量表(main 开头设 `0x80000000|0x01008000`,USART1 RX 中断需要);**`ns_ble_stack_init()` 之后 VTOR 必须为 0**,此后所有中断经芯片 ROM 跳板 + RAM 中继。**绝对不要在 BLE init 后重设 VTOR**(实测崩溃根因,开发日志 §18)。 + +## 固件工程(mcm-ddc-ble) + +``` +mcm-ddc-ble/ +├── src/ +│ ├── main.c # 入口:VTOR 预置 → USART+banner → LED → app_ble_init → app_params_init +│ │ # → ns_sleep_lock_acquire(锁睡眠保 SWD) → 建 BLE 调度/LED/CLI 任务 → vTaskStartScheduler +│ ├── bsp_usart.c # USART1(PB6/PB7, 115200 8N1):fputc 重定向 + DMA TX(CH1) + RXDNE 中断字节队列 + TX 互斥锁 +│ ├── app_gpio.c # LED1(PB0)/LED2(PA6) +│ ├── app_cli.c # CLI UART 前端:CliTask 行接收/编辑/历史/Tab/Ctrl+Z,提示符 caiic-> +│ ├── cli_core.c # CLI 核心(命令表 s_cmds[]/handler/分词执行),输出经可切换 cli_out_fn +│ │ # 命令:help / version / sysinfo / devinfo / blelog / led / param / bsdump / bsset +│ ├── app_ble.c # BLE 栈初始化/广播(名 CAIIC-MCM-20260902)/连接事件 + BLE 调度任务 +│ ├── app_ble_proto.c # 0xCA 帧协议:字节流重组、CLI_REQ/RSP、INFO_QUERY/RSP、OTA 帧分发、 +│ │ # CLI 读写特征(...e0003) 与只读参数特征(...e0004) 的执行/应答 +│ ├── app_info.c # 设备信息:ADC 芯片温度(CH7)/电压(CH6)、运行时长、堆剩余;风扇 weak 数据源 +│ ├── app_ota.c # BLE OTA:双 bank 直写(惰性擦扇区,仅 4B 对齐暂存)+ CRC32 校验 + bootsetting 更新 + 复位 +│ ├── app_params.c # APP_DATA 参数记录(caiic_params_t,magic+CRC)+ param 命令(led1_blink_ms/pwm_duty_pct) +│ ├── app_bootset.c # bootsetting 结构化读写 bsdump/bsset(自动重算 CRC,防裸写变砖) +│ ├── ble_up.c # CLI 应答的 BLE notify 上行(ke_msg 上下文约束:环形缓冲 + BLE 任务内发送) +│ ├── n32wb03x_it.c # 异常处理(HardFault 栈帧打印)+ USART1_IRQHandler 转发 +│ ├── app_usart.c # 遗留文件,已不在工程中编译(rdtss 原透传 FIFO,勿使用) +│ └── app_profile/ # app_rdtss.c(GATT 服务实现,读请求按 att_idx 分发 CLI_VAL/INFO_VAL)等 +├── inc/ # 对应头文件 + FreeRTOSConfig.h(heap 20KB)+ app_user_config.h(广播名/连接参数) +└── MDK-ARM/ # mcm-ddc-ble.uvprojx(target "N32WB03x" 为活跃 target; + # OTA_IMG_1/2 是 rdtss 遗产,保留不用)、Objects/、bin/、Listings/ +``` + +工程配置:器件 `N32WB031KEQ6-2`,IROM 0x01008000/0x38000(APP1),IRAM **0x20004000/0xC000**,MicroLIB,全局宏 `N32WB03X, USE_STDPERIPH_DRIVER`;链接器 Misc 附加 BLE ROM 符号表 `symbol_g15.obj`(SDK `middlewares/Nationstech/ble_library/ns_ble_stack/symdef/`)。 ## 构建与烧录 工具链:Keil µVision5(ARMCC V5.06 update 6),安装于 `D:\Keil_v5`。 -命令行构建(工作目录必须为 `mcm-ddc-04/MDK-ARM`): +命令行构建(工作目录在对应工程的 `MDK-ARM/`): ```bash -"D:\Keil_v5\UV4\UV4.exe" -b embeddedSrc.uvprojx -j0 -o build.log +"D:\Keil_v5\UV4\UV4.exe" -b mcm-ddc-ble.uvprojx -j0 -o build.log # APP 增量构建 +"D:\Keil_v5\UV4\UV4.exe" -b caiic_boot.uvprojx -j0 -o build.log # Boot 增量构建 ``` -构建成功后自动执行 `fromelf --bin --output=.\bin\embeddedSrc.bin .\Objects\embeddedSrc.axf`。 -当前基线结果:**0 Error(s), 0 Warning(s)**,体积 `Code=38348 RO-data=6932 RW-data=10600 ZI-data=36128`(RW+ZI≈45.7KB < 48KB 可用窗口,heap 22KB)。 +要求保持 **0 Error(s), 0 Warning(s)**。当前基线(V1.00.09):`Code=38352 RO-data=4192 RW-data=2028 ZI-data=27580`。 -烧录与运行: +**固件版本号约定(重要)**:每次修改固件代码必须递增 `mcm-ddc-ble/inc/app_version.h` 中的 `APP_FW_VERSION` 与 `APP_FW_VERSION_NUM`(格式 `0x00MMmmpp`,通常补丁位 +1),用于识别板上实际运行的固件;工程名与出包文件名保持不变。 -**固件版本号约定(重要)**:每次修改固件代码必须递增 `mcm-ddc-ble/inc/app_version.h` 中的 `APP_FW_VERSION` 与 `APP_FW_VERSION_NUM`(格式 `0x00MMmmpp`,通常补丁位 +1),用于识别板上实际运行的固件;固件工程名与出包文件名称保持不变。`tools/merge_image.py` 出包时自动把 `APP_FW_VERSION_NUM` 写入 OTA 清单(`_ota.json`,显式传第三个参数可覆盖)。 +**出包约定(重要)**:每次固件修改构建通过后,必须直接运行 `tools\make_package.bat` 重新生成整片包与 OTA 升级包到 `tools/out/`(与代码改动一起交付,不要只交付源码)。 -1. Keil 打开 `MDK-ARM/embeddedSrc.uvprojx`,F7 编译 -2. NS-LINK 接 SWD(PA4/PA5),F8 下载——Boot 跳转不校验镜像 CRC,Keil 直接下载 APP 即可正常启动调试;**但 Keil 下载选项必须是"Erase Sectors",整片擦除会杀掉 Boot**(杀掉后独立运行不启动,需重烧整片包恢复) -3. 独立运行(脱调试器)需烧整片包:`tools\flash_package.bat tools\out\caiic_full.hex`(改代码后先 `make_package.bat` 重新出包)。**板子上烧过其他 0x01000000 起步的程序会覆盖 Boot/bootsetting,恢复靠重烧整片包** -4. 串口助手接 PB6(TX)/PB7(RX),115200 8N1,复位后应看到启动 banner 与 `caiic->` CLI 提示符(输入 `help` 查看命令;LED 滚动日志默认关闭,用 `log on` 打开) -5. BLE:手机 nRF Connect 应能搜到并连接 `CAIIC-MCM`,可见自定义服务(写特征 + notify 特征) +出包与烧录: + +1. `tools\make_package.bat` — 一键:`UV4 -r` **全量重建** Boot + APP(出包必须 `-r`,增量构建曾产生栈顶/ZI 不一致的砖包,见开发日志 §24)→ `merge_image.py` 合并。产物在 `tools/out/`: + - `caiic_ble_full.hex/.bin` — 整片包(Boot + 缺省 bootsetting + APP1) + - `caiic_ble_full_ota.bin` + `_ota.json` — OTA 载荷与清单(size/crc32/version;version 自动取 `APP_FW_VERSION_NUM`,手机端 OTA_BEGIN 直接取用) + - 注意:`merge_image.py` 不带参数运行时默认 app 路径仍指向已删除的 `mcm-ddc-04/`,**手动调用必须显式传参**:`python tools/merge_image.py mcm-ddc-ble/MDK-ARM/bin/mcm-ddc-ble.bin caiic_ble_full` +2. 首次/变砖恢复:`tools\flash_package.bat tools\out\caiic_ble_full.hex`(调 SDK 自带 NSpyocd,整片擦除 + 烧录;需 NS-LINK 接 SWD PA4/PA5 + 复位脚,先关闭 Keil) +3. 日常开发调试:Keil F7 编译、F8 下载即可(Boot 不校验镜像 CRC,可直接下载 APP 调试);**Keil 下载选项必须是 "Erase Sectors",整片擦除会杀掉 Boot/bootsetting**(杀掉后需重烧整片包恢复)。板子上烧过其他 0x01000000 起步的程序同样会覆盖 Boot,恢复也是重烧整片包。 +4. 日常固件升级设计路径是 BLE OTA(手机 App 或 PC bleak 客户端)。 + +验证运行:串口助手接 PB6(TX)/PB7(RX),115200 8N1,复位后应看到 banner 与 `caiic->` 提示符(`help` 查看命令);手机应能搜到广播名 `CAIIC-MCM-20260902`。 + +## BLE 接口与协议(重要:当前双轨状态) + +协议权威文档:`docs/ble_protocol.md`(V1.1)。广播名 `CAIIC-MCM-20260902`,自定义 128-bit UUID 服务 `00002760-08c2-11e1-9073-0e8ac72e1001`(SDK rdtss 服务),特征: + +| 特征 UUID 尾段 | 属性 | 用途 | +|---|---|---| +| `...c72ee001` | Write Without Response | 0xCA 帧协议下行(CLI_REQ / INFO_QUERY / OTA_*) | +| `...c72ee002` | Notify | 帧协议上行应答(CLI_RSP / INFO_RSP / OTA_RSP) | +| `...c72ee003` | Read + Write(带响应) | **CLI 读写特征**:写原始命令行(≤63B)→ 读同一特征取回输出文本(≤512B),V1.00.02 新增 | +| `...c72ee004` | Read | **只读参数特征**:读出全部信息项 TLV(同 INFO_RSP(all)),V1.00.04 新增 | + +- **已知未决问题**:固件 notify 上行链路不通(帧协议应答收不到,下行写入正常),见开发日志 §28 末尾。因此 **App(SmartAssiter)已整体切换为只使用 `...e0003`/`...e0004` 两个读写特征**,删除了 notify/帧协议代码;**App 的 OTA 页当前停用**(OTA 应答依赖 notify)。固件侧帧协议与 OTA 代码仍完整保留,PC 端 `tools/ble_cli_test.py` 两种方式都支持。修复 notify 是本仓库最重要的待办。 +- 帧格式:`0xCA | TYPE | SEQ | LEN(LE16) | PAYLOAD | CRC16-CCITT(0x1021/0xFFFF, LE)`;OTA 为双 bank 直写、扇区级 ack 流控、END 整镜像 zlib CRC32 校验后更新 bootsetting 并复位。详见 ble_protocol.md。 +- 连接后设备主动发起 MTU=247 交换;失败退化为默认 20B/包,协议按字节流重组,两种情形都正确。 +- 信息项 id:0x01 固件版本 u32 / 0x02 芯片温度 i16(0.1°C,ADC CH7) / 0x03 风扇转速 u16(0xFFFF=无硬件,`app_fan_get_rpm()` 弱符号,产品板重写即可) / 0x04 电压 u16(mV,ADC CH6) / 0x05 运行时长 u32(s) / 0x06 剩余堆 u32(B)。 +- 调试手段:CLI 命令 `blelog on` 后,串口打印每个收/发协议帧 hex dump、连接/断开、CCCD 订阅事件(走 printf,不经 BLE 通道,避免自激)。 +- **维护命令(V1.00.09 起)**:bootsetting 与 APP_DATA 参数区为**结构化**读写(`param`/`bsdump`/`bsset`,不暴露裸读写),UART 与 BLE CLI 读写特征 `...e0003` 均可调用。详见 `docs/ble_protocol.md` §6.5。 + +## 手机 App(SmartAssiter) + +- uni-app **Vue3 + TypeScript**(`manifest.json` vueVersion 3,appid `__UNI__884AC41`),**HBuilderX 工程**(有 `.hbuilderx/`,无 package.json/vite 配置)——开发/运行/打包均在 HBuilderX IDE 内进行(运行→运行到手机或模拟器;发行→原生 App 云打包)。目标平台为 Android/iOS App(BLE 功能仅 App 端有效;manifest 里保留 mp-weixin 配置但蓝牙不依赖它)。 +- 由 uni-app x(uvue/uts)+ 第三方蓝牙插件迁移而来,现蓝牙全部用 **uni 内置 BLE API**(vue3 App 端内置),标准基座即可运行(见 `SmartAssiter/docs/修改记录_2026-09-03_迁移uni-app-vue3与蓝牙去插件.md`)。 +- 结构: + - `src/BluetoothManager.ts` — 蓝牙管理核心(扫描/连接/服务发现/读写/MTU/RSSI;读请求经 `onBLECharacteristicValueChange` 全局回调 + 内部串行队列 + 3s 超时;连接状态经 `uni.$emit("bleState", state)` 广播,0=已连接可用) + - `src/mcm/` — 设备业务层:`McmCli.ts`(CLI 特征写命令/读应答,Promise 链串行)、`McmInfo.ts`(参数特征 TLV 解析)、`McmCommands.ts`(业务命令封装) + - `pages/tabbar/` — home(设备连接+参数展示)、ota(升级页,**当前停用**并显示原因说明)、my;`pages/bleTest/bluetoothOperation/`(CLI 终端页);login/register/displayUserInfo 为云端账号业务 + - `api/` — 云端 HTTP 封装(`httpInstance.ts` 含服务器列表 SERVER_LIST,正式/测试/DEBUG 三地址,token 鉴权);`common/auth.ts`(token 本地存储)、`common/bleInfo.ts`(已连设备名/MAC 记忆) + - `uni_modules/` 仅 uni-icons、uni-scss(官方组件,无第三方插件) +- App 侧错误码约定(BluetoothManager):0=成功,10000=连接失败,10001=已断开,10002=蓝牙未开,10003=无权限,10004/10005=服务/特征缺失,10008=读写/MTU 失败或超时。 + +## PC 工具(tools/) + +- `merge_image.py` — 纯 Python 无三方依赖;合并 boot+bootsetting(缺省记录,脚本生成)+APP 为整片 hex/bin,同时产出 `_ota.bin`/`_ota.json`;自动从 `app_version.h` 取 `APP_FW_VERSION_NUM` 写入清单 +- `make_package.bat` / `flash_package.bat` — 一键出包 / NSpyocd 整片烧录(脚本会自动找 Python312 全路径,本机 `python` 可能是商店占位 stub) +- `ble_cli_test.py` + `ble_cli.bat` — PC 端 bleak 蓝牙 CLI 测试客户端(帧协议模式 + `-rw` 读写特征模式,交互模式 `-i`,venv 在 `tools/.venv-ble`,首次运行 bat 自动创建) +- `ble_temp_watch.py` — 温度监测小工具 + +## 实时架构约定(固件) + +- 使用 FreeRTOS V9.0.0 原生 API,**不使用 cmsis_os 封装**。 +- 任务:BLE 调度任务(栈 512 字,优先级 2,循环 `rwip_schedule(); vTaskDelay(1ms);`——**ke_msg/ke_timer 只允许在该任务上下文运行**);LED 任务(LED1 闪烁半周期读 APP_DATA 参数 `led1_blink_ms`);CliTask(优先级 3);CLI 输出经环形缓冲由 BLE 任务上下文发 notify(`ble_up.c`)。`configTOTAL_HEAP_SIZE = 20KB`(heap_4)。 +- SysTick 由 FreeRTOS port 接管:`main` 中不要手动 `SysTick_Config`,`n32wb03x_it.c` 中不要重复定义 SVC/PendSV/SysTick_Handler。 +- USART1_IRQn 优先级为 3(最低),因 ISR 内调用 FreeRTOS FromISR API,必须 ≥ `configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY`(=3)。BLE_SW/FIFO IRQ 优先级 0,其 ISR 内禁止调用 FromISR API。 +- 串口输出并发:多任务/CLI 输出分别持有 `bsp_usart_tx_lock()` 互斥锁;调度器启动前为空操作。不要在中断或多个任务里直接 printf。 +- **不接 ns_sleep 低功耗**(与 FreeRTOS tick 冲突):`main.c` 里 `ns_sleep_lock_acquire()` 永久锁睡眠,SWD 全程可调试;ns_sleep.c 仍需编译(ns_ble.c 引用其符号)。 ## 硬件引脚约束(重要) @@ -88,40 +157,25 @@ SDK 源码(固件库、CMSIS、FreeRTOS V9.0.0、BLE 协议栈/profile/ns_libr - 板载 LED:LED1=PB0(跳线 J21)、LED2=PA6(跳线 J22),蓝色,4.7K 限流。 - USART1:TX=PB6 / RX=PB7,复用 AF4,经排针 J3 引出。 - PB8/PB9 默认接 32.768K 晶振;PB3 有下拉注意事项(用户手册 5.2.4)。 - -## 实时架构约定 - -- 使用 FreeRTOS V9.0.0 原生 API(`xTaskCreate` / `vTaskDelay` / `xQueue`),**不使用 cmsis_os 封装**。 -- 任务模型:LedTask(LED1,500ms)、LedTask2(LED2,1000ms)为生产者,只向日志队列投递 `LogMsg_t`;PrintTask(优先级 3,栈 1024 字)消费队列并 printf。**主动日志打印由 `AppTasks_SetLogEnabled()` 控制,默认关闭**(CLI 命令 `log on|off` 切换)。新增需要打印的任务时沿用此生产者-消费者模式,不要在中断或多个任务里直接 `printf`。 -- CLI 任务(优先级 3,栈 1024 字,见 `app_cli.c`):从 USART1 RXDNE 中断的字节队列取输入,行结束符 `\r\n` / `\n\r` / `\r` / `\n` 均识别;解析-执行-应答一体化,应答走 `bsp_usart_write_dma`(DMA_CH1)。新命令在 `s_cmds[]` 命令表中注册。支持 Tab 命令补全、上下方向键历史回翻(8 条环形缓冲)、Ctrl+Z 关闭主动打印。 -- 串口输出并发:PrintTask 的整条 printf 与 CLI 的整段应答分别持有 `bsp_usart_tx_lock()` 互斥锁,避免字节级交错;调度器启动前该锁为空操作。 -- SysTick 由 FreeRTOS port 接管(`FreeRTOSConfig.h` 中 `xPortSysTickHandler → SysTick_Handler` 映射):`main` 中不要手动 `SysTick_Config`,`n32wb03x_it.c` 中不要重复定义 SVC/PendSV/SysTick_Handler。 -- USART1_IRQn 中断优先级为 3(最低),因 ISR 内调用 FreeRTOS FromISR API,必须 ≥ `configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY`(=3)。 -- `configTOTAL_HEAP_SIZE = 22*1024`(4 个任务栈各 1024 字 + BLE 任务 512 字,另加队列/TCB/空闲任务开销),使用 heap_4。 - -## BLE 架构约定(重要) - -- **RAM 布局(铁律)**:本芯片 SRAM 为 48KB+16KB。**低 16KB(0x20000000~0x20003FFF)由芯片 ROM/BLE 子系统占用**(rwip 堆描述符 0x20000118 起、patch 数组、中断中继表,由 ROM 启动代码预备,全 SDK 无源码重写)。任何工程的 IRAM 执行区必须从 **0x20004000** 起(含 Boot 和任何小工具),否则启动时代的 .data/.bss 初始化会冲掉 ROM 数据,BLE init 必然 HardFault(实测根因,开发日志第 21 节)。 -- **VTOR**:Cortex-M0 无 SCB->VTOR,向量重映射用 `PWR->VTOR_REG`(bit31=EN|[30:0]=基址)。规则:**BLE 初始化之前** VTOR 指向 APP 自身向量表(`0x80000000|0x01008000`,main 开头设置,USART1 RX 中断需要);**`ns_ble_stack_init()` 之后 VTOR 必须为 0**——此后所有中断经芯片 ROM 跳板 + RAM 中继(`ns_ble_stack_vtor_init` 把 APP 的 `__Vectors` 拷到 0x200000e8/0x200009c0 并把 BLE_FIFO/BLE_SLP/EXTI4_12 指向 ROM/RAM handler)。绝对不要在 app_ble_init() 后重设 VTOR,否则 BLE FIFO 中断落入 weak Default_Handler 死循环(实测崩溃根因,见开发日志第 18 节)。 -- **BLE 调度任务**(`app/ble/app_ble.c`,栈 512 字,优先级 2):循环 `rwip_schedule(); vTaskDelay(1ms);`。**ke_msg/ke_timer 只允许在该任务上下文运行**(SDK 约束),不要在其他任务或中断里直接调用。 -- BLE 中断向量不在 `n32wb03x_it.c` 定义:启动文件中 BLE_*IRQHandler 为 weak,真正 handler 由 `symbol_g15.obj`(ROM)+ SDK RAM 重映射(0x200000e8/0x200009c0)提供。BLE_SW/FIFO IRQ 优先级 0,其 ISR 内禁止调用 FreeRTOS FromISR API。 -- GATT 服务:自定义 CLS 服务(`app/ble/app_profile/app_cls.c`),复用 SDK rdtss profile 引擎;notify 发送为单包接口(忙返回 -1,上层重试)。**ns_sleep 低功耗不接**(与 FreeRTOS tick 冲突),NS_LOG/LPUART 不接。 +- 新增 GPIO 前必须核对开发日志第 4 节引脚分配表。 +- **寄存器级勘误修复必须先在 SDK 源码交叉验证地址用途**——曾按勘误表写 `0x40011004 |= 0x40`(AFEC 寄存器,与 BLE 协议栈共享)导致 BLE 射频挂死,已撤回(开发日志 §28 教训)。 ## 代码风格 -- 语言为 C(ARMCC,C 库 MicroLIB),文件头与函数头使用 Doxygen 风格注释(`@file` / `@brief`),注释用英文。 -- 命名:BSP 层函数 `bsp__`;应用层聚合函数 `AppTasks_*` / `AppCli_*`;引脚/时钟等硬件参数集中在头文件顶部宏定义。 -- 使用 SDK 标准外设库 API(如 `RCC_EnableAPB2PeriphClk`、`GPIO_InitPeripheral`、`USART_Init`),不要直接操作寄存器。 -- 新增 GPIO 前必须核对开发日志第 4 节引脚分配表,避开 PA4/PA5。 +- 固件为 C(ARMCC,MicroLIB):文件头/函数头用 Doxygen 注释(`@file`/`@brief`),**注释用英文**;BSP 层函数 `bsp__`;引脚/时钟等硬件参数集中在头文件顶部宏定义;使用 SDK 标准外设库 API,不要直接操作寄存器(确有例外需交叉验证,见上)。 +- App 为 TypeScript/Vue3:注释用中文;BLE 通信统一走 `src/BluetoothManager.ts` 的 `MyApiResult` 回调约定,设备业务封装在 `src/mcm/`;不改 uni_modules 官方组件。 ## 测试策略 无自动化测试框架;验证方式为: -1. Keil 命令行构建必须保持 0 Error / 0 Warning; -2. 烧录后通过串口输出与 LED 行为人工确认。 +1. Keil 命令行构建必须保持 0 Error / 0 Warning;出包必须 `UV4 -r` 全量重建,并核对 map 的 `__initial_sp` 与 bin 向量表初始 SP 一致; +2. 烧录后通过串口输出(banner/`caiic->`/`devinfo`)、LED 行为人工确认; +3. BLE 链路用 `tools/ble_cli_test.py`(PC bleak)或手机 App 实测,配合固件 `blelog on` 串口抓帧对照 `docs/ble_protocol.md` §8.3 示例帧; +4. App 侧改动记录写入 `SmartAssiter/docs/修改记录_日期_主题.md`(沿用现有命名格式)。 ## 其他注意事项 -- `nations-tec/` 下的 SDK、器件包与 PDF 为第三方只读资料,改动应只发生在 `mcm-ddc-04/`(或新增工程目录)内。 -- BLE 协议栈(`middlewares/Nationstech/ble_library`)已接入(开发日志第 15 节);CLI-over-BLE 协议与 BLE OTA 为后续任务。 +- `nations-tec/` 下的 SDK、器件包与 PDF 为第三方只读资料,改动应只发生在 `mcm-ddc-ble/`、`Boot/`、`SmartAssiter/`、`tools/`、`docs/` 内。 +- 固件重大改动应同步追加 `docs/开发日志.md` 新章节(现有格式:`## N. 标题(日期)`),协议改动同步 `docs/ble_protocol.md`。 +- 每改固件必递增版本号(`mcm-ddc-ble/inc/app_version.h`),否则无法识别板上实际固件。 diff --git a/docs/ble_protocol.md b/docs/ble_protocol.md index 7994bf7..890ff1c 100644 --- a/docs/ble_protocol.md +++ b/docs/ble_protocol.md @@ -127,6 +127,25 @@ flash 擦除单位 = 4KB 扇区。设备侧**直写 flash,不做扇区级 RAM 注意:flash 擦写期间设备关中断数十 ms/扇区(Qflash 算法在 RAM 执行),BLE 链路靠 5s supervision timeout 维持,属正常现象;但请避免在 OTA 期间主动断开。 +## 6.5 维护命令:bootsetting 与 APP_DATA 参数区(V1.00.09 起,结构化访问) + +bootsetting 与 APP_DATA 保留区(0x01006000/8KB)的读写以 CLI 命令形式提供, +**只暴露结构化字段访问,无裸读写命令**。UART CLI 与 BLE CLI 读写特征 +`...c72e0003`(写原始命令行 → 读回文本应答,≤512B)命令集完全相同: + +| 命令 | 说明 | +|---|---| +| `param` | 打印 APP_DATA 参数记录(led1_blink_ms / pwm_duty_pct)与 valid/default 状态 | +| `param set ` | 修改参数并落盘(led1_blink_ms 50~10000 即时生效于 LED1 闪烁;pwm_duty_pct 0~100 仅存储备用) | +| `param save` | 当前 RAM 参数强制写盘 | +| `bsdump` | 打印 bootsetting 记录全字段 + magic/CRC 校验结果 | +| `bsset ` | 写 bootsetting 单字段(`active 1\|2`、`b1addr/b2addr/b1size/b2size/b1crc/b2crc/b1ver/b2ver`),自动重算 CRC、擦除+编程+校验。**写错 active/addr 会导致 Boot 跳错,恢复靠 SWD 重烧整片包** | + +参数记录(APP_DATA 区头,52B):magic `0xCA12DA7A` + layout_ver + 参数字段 + +reserved[8] + CRC32;记录无效时固件以缺省值运行,`param set`/`param save` 时落盘。 +注意:flash 擦写关中断数十 ms/扇区,BLE 应答可能延迟;MTU 协商失败(20B/包)时 +长应答会被截断到 19B,建议先协商 MTU 247。 + ## 7. 首次烧录与恢复 - 出厂/首次:SWD 烧录整包(bootloader + bootsetting 缺省配置 + APP1), diff --git a/docs/开发日志.md b/docs/开发日志.md index d090c16..b9e85f6 100644 --- a/docs/开发日志.md +++ b/docs/开发日志.md @@ -748,3 +748,28 @@ mcm-ddc-04 目录已由用户删除,mcm-ddc-ble 成为唯一应用工程。本 (_ota.bin 41168B,crc32=0x26056D5B)。 - **已知未决**:notify 上行链路不通(帧协议 CLI/INFO_QUERY/OTA 应答收不到), 下行写入正常;新读写/只读特征已绕开 notify,OTA 仍依赖它,待后续定位。 + +## 29. bootsetting 读写 + APP_DATA 参数区(结构化命令,CLI + BLE,2026-09-04,V1.00.09) + +需求:维护期读写 bootsetting 记录与 APP_DATA 保留区(0x01006000/8KB)。 +**本次只提供结构化访问,不暴露任何裸读写命令**;经 CLI 命令实现,UART 与 +BLE(CLI 读写特征 ...c72e0003,写命令行读应答)双通道可用。 + +- **新模块 `app_params.c/h`(APP_DATA 参数记录)**:区头放 `caiic_params_t` + (magic 0xCA12DA7A + layout_ver + led1_blink_ms + flags + pwm_duty_pct + + reserved[8] + crc32,52B)。`app_params_init()` 开机校验 magic+CRC,无效则 + RAM 载入缺省(不落盘);`param set` 改 RAM 副本后重算 CRC、擦首扇区、编程、 + 读回校验。命令:`param`(打印全部+valid/default 状态)、 + `param set `、`param save`。 + PWM 占空比本版只存参数不接外设;LED1 闪烁半周期由 led_task 每循环读参数 + 生效(另有 <50ms 兜底回 500ms,参数区为全 0xFF 时 magic 不匹配直接走缺省)。 +- **新模块 `app_bootset.c/h`(bootsetting 结构化读写)**:`bsdump` 逐字段打印 + + magic/CRC 校验结果;`bsset `(active/b1addr/b2addr/b1size/b2size/ + b1crc/b2crc/b1ver/b2ver)单字段修改后整记录重写(无效记录先清零重建),流程与 + `app_ota.c::ota_update_bootsetting()` 一致。addr 钳位只允许 APP1/APP2 基址, + size ≤224KB,active 只允许 1/2。写错 active/addr 会导致 Boot 跳错,恢复靠 + SWD 重烧整片包。 +- Qflash 使用模式与 OTA 相同:各模块 static flag 保证 `Qflash_Init()` 只调一次; + 擦写关中断数十 ms/扇区,BLE 靠 5s supervision timeout 维持。 +- 构建 0 Error/0 Warning,V1.00.09 `Code=38352 RO=4192 RW=2028 ZI=27580`, + 整包/OTA 镜像已生成(_ota.bin 44088B,crc32=0xE246E2B2)。 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 8e152af..ca49c86 100644 --- a/mcm-ddc-ble/MDK-ARM/Listings/mcm-ddc-ble.map +++ b/mcm-ddc-ble/MDK-ARM/Listings/mcm-ddc-ble.map @@ -558,13 +558,16 @@ Section Cross References app_ble.o(i.app_ble_sec_init) refers to ns_sec.o(i.ns_sec_init) for ns_sec_init main.o(i.ble_schedule_task) refers to ble_up.o(i.ble_up_poll) for ble_up_poll main.o(i.ble_schedule_task) refers to tasks.o(i.vTaskDelay) for vTaskDelay + main.o(i.led_task) refers to app_params.o(i.app_params_get) for app_params_get main.o(i.led_task) refers to app_gpio.o(i.LedBlink) for LedBlink + main.o(i.led_task) refers to uidiv.o(.text) for __aeabi_uidivmod main.o(i.led_task) refers to tasks.o(i.vTaskDelay) for vTaskDelay main.o(i.main) refers to bsp_usart.o(i.bsp_usart_init) for bsp_usart_init main.o(i.main) refers to printfa.o(i.__0printf) for __2printf main.o(i.main) refers to app_ble.o(i.app_ble_init) for app_ble_init main.o(i.main) refers to app_ble_proto.o(i.app_ble_proto_init) for app_ble_proto_init main.o(i.main) refers to app_gpio.o(i.LedInit) for LedInit + main.o(i.main) refers to app_params.o(i.app_params_init) for app_params_init main.o(i.main) refers to ns_sleep.o(i.ns_sleep_lock_acquire) for ns_sleep_lock_acquire main.o(i.main) refers to tasks.o(i.xTaskCreate) for xTaskCreate main.o(i.main) refers to app_cli.o(i.AppCli_Init) for AppCli_Init @@ -664,6 +667,9 @@ Section Cross References cli_core.o(.constdata) refers to cli_core.o(i.CmdDevInfo) for CmdDevInfo cli_core.o(.constdata) refers to cli_core.o(i.CmdBleLog) for CmdBleLog cli_core.o(.constdata) refers to cli_core.o(i.CmdLed) for CmdLed + cli_core.o(.constdata) refers to app_params.o(i.AppParams_CmdParam) for AppParams_CmdParam + cli_core.o(.constdata) refers to app_bootset.o(i.AppBootset_CmdBsdump) for AppBootset_CmdBsdump + cli_core.o(.constdata) refers to app_bootset.o(i.AppBootset_CmdBsset) for AppBootset_CmdBsset app_cli.o(i.AppCli_Init) refers to tasks.o(i.xTaskCreate) for xTaskCreate app_cli.o(i.AppCli_Init) refers to app_cli.o(i.CliTask) for CliTask app_cli.o(i.AppCli_InputBytes) refers to bsp_usart.o(i.bsp_usart_rx_inject) for bsp_usart_rx_inject @@ -808,6 +814,42 @@ Section Cross References app_gpio.o(i.LedInit) refers to n32wb03x_gpio.o(i.GPIO_InitPeripheral) for GPIO_InitPeripheral app_gpio.o(i.LedOff) refers to n32wb03x_gpio.o(i.GPIO_ResetBits) for GPIO_ResetBits app_gpio.o(i.LedOn) refers to n32wb03x_gpio.o(i.GPIO_SetBits) for GPIO_SetBits + app_params.o(i.AppParams_CmdParam) refers to cli_core.o(i.cli_printf) for cli_printf + app_params.o(i.AppParams_CmdParam) refers to strcmp.o(.text) for strcmp + app_params.o(i.AppParams_CmdParam) refers to app_params.o(i.params_save) for params_save + app_params.o(i.AppParams_CmdParam) refers to strtoul.o(.text) for strtoul + app_params.o(i.AppParams_CmdParam) refers to cli_core.o(i.cli_write) for cli_write + app_params.o(i.AppParams_CmdParam) refers to app_params.o(.bss) for .bss + app_params.o(i.AppParams_CmdParam) refers to app_params.o(.data) for .data + app_params.o(i.app_params_get) refers to app_params.o(.bss) for .bss + app_params.o(i.app_params_init) refers to memcpya.o(.text) for __aeabi_memcpy4 + app_params.o(i.app_params_init) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32 + app_params.o(i.app_params_init) refers to memseta.o(.text) for __aeabi_memclr4 + app_params.o(i.app_params_init) refers to app_params.o(.bss) for .bss + app_params.o(i.app_params_init) refers to app_params.o(.data) for .data + app_params.o(i.app_params_is_valid) refers to app_params.o(.data) for .data + app_params.o(i.params_save) refers to n32wb03x_qflash.o(i.Qflash_Init) for Qflash_Init + app_params.o(i.params_save) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32 + app_params.o(i.params_save) refers to n32wb03x_qflash.o(i.Qflash_Erase_Sector) for Qflash_Erase_Sector + app_params.o(i.params_save) refers to n32wb03x_qflash.o(i.Qflash_Write) for Qflash_Write + app_params.o(i.params_save) refers to memcmp.o(.text) for memcmp + app_params.o(i.params_save) refers to app_params.o(.data) for .data + app_params.o(i.params_save) refers to app_params.o(.bss) for .bss + 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 cli_core.o(i.cli_write) for cli_write + app_bootset.o(i.AppBootset_CmdBsset) refers to strtoul.o(.text) for strtoul + app_bootset.o(i.AppBootset_CmdBsset) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32 + app_bootset.o(i.AppBootset_CmdBsset) refers to strcmp.o(.text) for strcmp + app_bootset.o(i.AppBootset_CmdBsset) refers to cli_core.o(i.cli_printf) for cli_printf + app_bootset.o(i.AppBootset_CmdBsset) refers to n32wb03x_qflash.o(i.Qflash_Init) for Qflash_Init + app_bootset.o(i.AppBootset_CmdBsset) refers to n32wb03x_qflash.o(i.Qflash_Erase_Sector) for Qflash_Erase_Sector + app_bootset.o(i.AppBootset_CmdBsset) refers to n32wb03x_qflash.o(i.Qflash_Write) for Qflash_Write + app_bootset.o(i.AppBootset_CmdBsset) refers to memcmp.o(.text) for memcmp + 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.AppBootset_CmdBsset) refers to app_bootset.o(.data) for .data + app_bootset.o(i.bootset_print) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32 + app_bootset.o(i.bootset_print) refers to cli_core.o(i.cli_printf) for cli_printf tasks.o(i.eTaskGetState) refers to port.o(i.vPortEnterCritical) for vPortEnterCritical tasks.o(i.eTaskGetState) refers to port.o(i.vPortExitCritical) for vPortExitCritical tasks.o(i.eTaskGetState) refers to tasks.o(.data) for .data @@ -1337,6 +1379,9 @@ Section Cross References printfa.o(i._printf_pre_padding) refers (Special) to iusefp.o(.text) for __I$use$fp printfa.o(i._snputc) refers (Special) to iusefp.o(.text) for __I$use$fp printfa.o(i._sputc) refers (Special) to iusefp.o(.text) for __I$use$fp + 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 fadd.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp fadd.o(.text) refers to fepilogue.o(.text) for _float_epilogue fmul.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp @@ -1373,6 +1418,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 depilogue.o(.text) refers to depilogue.o(i.__ARM_clz) for __ARM_clz depilogue.o(.text) refers to llshl.o(.text) for __aeabi_llsl depilogue.o(.text) refers to llushr.o(.text) for __aeabi_llsr @@ -1734,6 +1798,9 @@ Removing Unused input sections from the image. Removing app_ota.o(i.app_ota_current_bank_base), (8 bytes). Removing app_info.o(.emb_text), (8 bytes). Removing app_gpio.o(.emb_text), (8 bytes). + Removing app_params.o(.emb_text), (8 bytes). + Removing app_params.o(i.app_params_is_valid), (12 bytes). + Removing app_bootset.o(.emb_text), (8 bytes). Removing tasks.o(i.pcTaskGetName), (24 bytes). Removing tasks.o(i.ulTaskNotifyTake), (96 bytes). Removing tasks.o(i.uxTaskGetTaskNumber), (8 bytes). @@ -1794,7 +1861,7 @@ Removing Unused input sections from the image. Removing ns_sec.o(i.co_rand_word), (8 bytes). Removing ns_ble.o(i.__ARM_common_memcpy1_5), (22 bytes). -409 unused section(s) (total 15288 bytes) removed from the image. +412 unused section(s) (total 15316 bytes) removed from the image. ============================================================================== @@ -1830,36 +1897,50 @@ Image Symbol Table Symbol Name Value Ov Type Size Object(Section) ../clib/../cmprslib/zerorunl2.c 0x00000000 Number 0 __dczerorl2.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_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 isspace_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_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/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 idiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uldiv.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/errno.c 0x00000000 Number 0 errno.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.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 entry8a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE ../clib/microlib/stdlib/rand.c 0x00000000 Number 0 rand.o ABSOLUTE ../clib/microlib/string/memchr.c 0x00000000 Number 0 memchr.o ABSOLUTE @@ -1872,20 +1953,23 @@ Image Symbol Table ../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE ../clib/microlib/string/strncmp.c 0x00000000 Number 0 strncmp.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 _strtoul.o ABSOLUTE + ../clib/scanf.c 0x00000000 Number 0 strtoul.o ABSOLUTE ../fplib/microlib/d2f.c 0x00000000 Number 0 d2f.o ABSOLUTE ../fplib/microlib/f2d.c 0x00000000 Number 0 f2d.o ABSOLUTE ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE ../fplib/microlib/fpadd.c 0x00000000 Number 0 fadd.o ABSOLUTE ../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE ../fplib/microlib/fpdiv.c 0x00000000 Number 0 fdiv.o ABSOLUTE - ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 fepilogue.o ABSOLUTE + ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE ../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixul.o ABSOLUTE - ../fplib/microlib/fpfix.c 0x00000000 Number 0 ffixi.o ABSOLUTE ../fplib/microlib/fpfix.c 0x00000000 Number 0 ffixui.o ABSOLUTE + ../fplib/microlib/fpfix.c 0x00000000 Number 0 ffixi.o ABSOLUTE ../fplib/microlib/fpflt.c 0x00000000 Number 0 fflti.o ABSOLUTE - ../fplib/microlib/fpflt.c 0x00000000 Number 0 dfltul.o ABSOLUTE ../fplib/microlib/fpflt.c 0x00000000 Number 0 dfltui.o ABSOLUTE + ../fplib/microlib/fpflt.c 0x00000000 Number 0 dfltul.o ABSOLUTE ../fplib/microlib/fpflt.c 0x00000000 Number 0 ffltui.o ABSOLUTE ../fplib/microlib/fpmul.c 0x00000000 Number 0 fmul.o ABSOLUTE ../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE @@ -1960,10 +2044,12 @@ Image Symbol Table ..\\..\\nations-tec\\N32WB03x_SDK_V2.0.0\\middlewares\\Nationstech\\ble_library\\ns_library\\timer\\ns_timer.c 0x00000000 Number 0 ns_timer.o ABSOLUTE ..\\..\\nations-tec\\N32WB03x_SDK_V2.0.0\\middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM0\\port.c 0x00000000 Number 0 port.o ABSOLUTE ..\\src\\app_ble.c 0x00000000 Number 0 app_ble.o ABSOLUTE + ..\\src\\app_bootset.c 0x00000000 Number 0 app_bootset.o ABSOLUTE ..\\src\\app_cli.c 0x00000000 Number 0 app_cli.o ABSOLUTE ..\\src\\app_gpio.c 0x00000000 Number 0 app_gpio.o ABSOLUTE ..\\src\\app_info.c 0x00000000 Number 0 app_info.o ABSOLUTE ..\\src\\app_ota.c 0x00000000 Number 0 app_ota.o ABSOLUTE + ..\\src\\app_params.c 0x00000000 Number 0 app_params.o ABSOLUTE ..\\src\\app_profile\\app_batt.c 0x00000000 Number 0 app_batt.o ABSOLUTE ..\\src\\app_profile\\app_dis.c 0x00000000 Number 0 app_dis.o ABSOLUTE ..\\src\\app_profile\\app_rdtss.c 0x00000000 Number 0 app_rdtss.o ABSOLUTE @@ -1974,10 +2060,12 @@ Image Symbol Table ..\\src\\n32wb03x_it.c 0x00000000 Number 0 n32wb03x_it.o ABSOLUTE ..\src\app_ble.c 0x00000000 Number 0 app_ble.o ABSOLUTE ..\src\app_ble_proto.c 0x00000000 Number 0 app_ble_proto.o ABSOLUTE + ..\src\app_bootset.c 0x00000000 Number 0 app_bootset.o ABSOLUTE ..\src\app_cli.c 0x00000000 Number 0 app_cli.o ABSOLUTE ..\src\app_gpio.c 0x00000000 Number 0 app_gpio.o ABSOLUTE ..\src\app_info.c 0x00000000 Number 0 app_info.o ABSOLUTE ..\src\app_ota.c 0x00000000 Number 0 app_ota.o ABSOLUTE + ..\src\app_params.c 0x00000000 Number 0 app_params.o ABSOLUTE ..\src\app_profile\app_batt.c 0x00000000 Number 0 app_batt.o ABSOLUTE ..\src\app_profile\app_dis.c 0x00000000 Number 0 app_dis.o ABSOLUTE ..\src\app_profile\app_rdtss.c 0x00000000 Number 0 app_rdtss.o ABSOLUTE @@ -2016,469 +2104,487 @@ Image Symbol Table .text 0x010082e2 Section 0 memcmp.o(.text) .text 0x010082fc Section 0 strcpy.o(.text) .text 0x0100830e Section 0 strncmp.o(.text) - .text 0x0100832c Section 0 fadd.o(.text) - .text 0x010083de Section 0 fmul.o(.text) - .text 0x01008458 Section 0 dadd.o(.text) - .text 0x010085bc Section 0 dmul.o(.text) - .text 0x0100868c Section 0 ddiv.o(.text) - .text 0x0100877c Section 0 ffltui.o(.text) - .text 0x0100878c Section 0 dfltui.o(.text) - .text 0x010087a8 Section 0 dfltul.o(.text) - .text 0x010087c4 Section 0 ffixi.o(.text) - .text 0x010087f8 Section 0 dfixul.o(.text) - .text 0x01008838 Section 0 f2d.o(.text) - .text 0x01008860 Section 0 d2f.o(.text) - .text 0x01008898 Section 0 llshl.o(.text) - .text 0x010088b8 Section 0 llushr.o(.text) - .text 0x010088da Section 0 llsshr.o(.text) - .text 0x01008900 Section 0 iusefp.o(.text) - .text 0x01008900 Section 0 fepilogue.o(.text) - .text 0x01008982 Section 0 depilogue.o(.text) - .text 0x01008a40 Section 40 cdrcmple.o(.text) - .text 0x01008a68 Section 36 init.o(.text) - .text 0x01008a8c Section 0 __dczerorl2.o(.text) - i.ADC_ClearFlag 0x01008bbc Section 0 n32wb03x_adc.o(i.ADC_ClearFlag) - i.ADC_ConfigChannel 0x01008bc2 Section 0 n32wb03x_adc.o(i.ADC_ConfigChannel) - i.ADC_ConverValueToTemperature 0x01008bd0 Section 0 n32wb03x_adc.o(i.ADC_ConverValueToTemperature) - i.ADC_ConverValueToVoltage 0x01008c24 Section 0 n32wb03x_adc.o(i.ADC_ConverValueToVoltage) - i.ADC_DeInit 0x01008cac Section 0 n32wb03x_adc.o(i.ADC_DeInit) - i.ADC_Enable 0x01008d00 Section 0 n32wb03x_adc.o(i.ADC_Enable) - i.ADC_EnableBypassFilter 0x01008d14 Section 0 n32wb03x_adc.o(i.ADC_EnableBypassFilter) - i.ADC_EnableTS 0x01008d64 Section 0 n32wb03x_adc.o(i.ADC_EnableTS) - i.ADC_GetDat 0x01008d76 Section 0 n32wb03x_adc.o(i.ADC_GetDat) - i.ADC_GetFlagStatus 0x01008d7c Section 0 n32wb03x_adc.o(i.ADC_GetFlagStatus) - i.ADC_SetOverSampleCounter 0x01008d8c Section 0 n32wb03x_adc.o(i.ADC_SetOverSampleCounter) - i.AppCli_Init 0x01008da4 Section 0 app_cli.o(i.AppCli_Init) - i.CliTask 0x01008dcc Section 0 app_cli.o(i.CliTask) - CliTask 0x01008dcd Thumb Code 984 app_cli.o(i.CliTask) - i.CmdBleLog 0x01009200 Section 0 cli_core.o(i.CmdBleLog) - CmdBleLog 0x01009201 Thumb Code 68 cli_core.o(i.CmdBleLog) - i.CmdDevInfo 0x01009278 Section 0 cli_core.o(i.CmdDevInfo) - CmdDevInfo 0x01009279 Thumb Code 150 cli_core.o(i.CmdDevInfo) - i.CmdHelp 0x010093f0 Section 0 cli_core.o(i.CmdHelp) - CmdHelp 0x010093f1 Thumb Code 44 cli_core.o(i.CmdHelp) - i.CmdLed 0x01009464 Section 0 cli_core.o(i.CmdLed) - CmdLed 0x01009465 Thumb Code 128 cli_core.o(i.CmdLed) - i.CmdSysInfo 0x01009534 Section 0 cli_core.o(i.CmdSysInfo) - CmdSysInfo 0x01009535 Thumb Code 88 cli_core.o(i.CmdSysInfo) - i.CmdVersion 0x0100961c Section 0 cli_core.o(i.CmdVersion) - CmdVersion 0x0100961d Thumb Code 28 cli_core.o(i.CmdVersion) - i.DMA_ClearFlag 0x010096b4 Section 0 n32wb03x_dma.o(i.DMA_ClearFlag) - i.DMA_DeInit 0x010096b8 Section 0 n32wb03x_dma.o(i.DMA_DeInit) - i.DMA_EnableChannel 0x01009740 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel) - i.DMA_GetFlagStatus 0x01009758 Section 0 n32wb03x_dma.o(i.DMA_GetFlagStatus) - i.DMA_Init 0x01009768 Section 0 n32wb03x_dma.o(i.DMA_Init) - i.DMA_RequestRemap 0x010097a8 Section 0 n32wb03x_dma.o(i.DMA_RequestRemap) - i.EXTI_ClrITPendBit 0x010097b8 Section 0 n32wb03x_exti.o(i.EXTI_ClrITPendBit) - i.EXTI_GetITStatus 0x010097c4 Section 0 n32wb03x_exti.o(i.EXTI_GetITStatus) - i.EXTI_InitPeripheral 0x010097e0 Section 0 n32wb03x_exti.o(i.EXTI_InitPeripheral) - i.GPIO_InitPeripheral 0x01009850 Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral) - i.GPIO_InitStruct 0x01009908 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct) - i.GPIO_ResetBits 0x01009924 Section 0 n32wb03x_gpio.o(i.GPIO_ResetBits) - i.GPIO_SetBits 0x01009928 Section 0 n32wb03x_gpio.o(i.GPIO_SetBits) - i.GPIO_TogglePin 0x0100992c Section 0 n32wb03x_gpio.o(i.GPIO_TogglePin) - i.HardFault_Handler 0x01009934 Section 0 n32wb03x_it.o(i.HardFault_Handler) - i.LedBlink 0x010099e4 Section 0 app_gpio.o(i.LedBlink) - i.LedInit 0x010099ec Section 0 app_gpio.o(i.LedInit) - i.LedOff 0x01009a38 Section 0 app_gpio.o(i.LedOff) - i.LedOn 0x01009a40 Section 0 app_gpio.o(i.LedOn) - i.NVIC_Init 0x01009a48 Section 0 misc.o(i.NVIC_Init) - i.OTPTrim_Read 0x01009ac0 Section 0 system_n32wb03x.o(i.OTPTrim_Read) - i.Qflash_Erase_Sector 0x01009b8c Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector) - i.Qflash_Init 0x01009bb0 Section 0 n32wb03x_qflash.o(i.Qflash_Init) - i.Qflash_Write 0x01009be8 Section 0 n32wb03x_qflash.o(i.Qflash_Write) - i.RCC_ConfigAdcClk 0x01009c0c Section 0 n32wb03x_rcc.o(i.RCC_ConfigAdcClk) - i.RCC_EnableAHBPeriphClk 0x01009c20 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) - i.RCC_EnableAHBPeriphReset 0x01009c38 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphReset) - i.RCC_EnableAPB2PeriphClk 0x01009c50 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) - i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL 0x01009c68 Section 0 n32wb03x_rcc.o(i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL) - i.RCC_GetClocksFreqValue 0x01009c84 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) - i.SVC_Handler 0x01009cf8 Section 0 port.o(i.SVC_Handler) - i.SysTick_Handler 0x01009cfc Section 0 port.o(i.SysTick_Handler) - i.SystemGetMacAddr 0x01009d20 Section 0 system_n32wb03x.o(i.SystemGetMacAddr) - i.SystemInit 0x01009d54 Section 0 system_n32wb03x.o(i.SystemInit) - i.SystemTrimValueGet 0x01009ed4 Section 0 system_n32wb03x.o(i.SystemTrimValueGet) - i.USART1_IRQHandler 0x01009f04 Section 0 n32wb03x_it.o(i.USART1_IRQHandler) - i.USART_ConfigInt 0x01009f0c Section 0 n32wb03x_usart.o(i.USART_ConfigInt) - i.USART_Enable 0x01009f40 Section 0 n32wb03x_usart.o(i.USART_Enable) - i.USART_EnableDMA 0x01009f5c Section 0 n32wb03x_usart.o(i.USART_EnableDMA) - i.USART_GetFlagStatus 0x01009f6c Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus) - i.USART_GetIntStatus 0x01009f7a Section 0 n32wb03x_usart.o(i.USART_GetIntStatus) - i.USART_Init 0x01009fbc Section 0 n32wb03x_usart.o(i.USART_Init) - i.USART_ReceiveData 0x0100a044 Section 0 n32wb03x_usart.o(i.USART_ReceiveData) - i.USART_SendData 0x0100a04c Section 0 n32wb03x_usart.o(i.USART_SendData) - i.__0printf 0x0100a054 Section 0 printfa.o(i.__0printf) - i.__0sprintf 0x0100a074 Section 0 printfa.o(i.__0sprintf) - i.__0vsnprintf 0x0100a09c Section 0 printfa.o(i.__0vsnprintf) - i.__ARM_clz 0x0100a0c8 Section 0 depilogue.o(i.__ARM_clz) - i._fp_digits 0x0100a0f8 Section 0 printfa.o(i._fp_digits) - _fp_digits 0x0100a0f9 Thumb Code 344 printfa.o(i._fp_digits) - i._printf_core 0x0100a26c Section 0 printfa.o(i._printf_core) - _printf_core 0x0100a26d Thumb Code 1754 printfa.o(i._printf_core) - i._printf_post_padding 0x0100a958 Section 0 printfa.o(i._printf_post_padding) - _printf_post_padding 0x0100a959 Thumb Code 32 printfa.o(i._printf_post_padding) - i._printf_pre_padding 0x0100a978 Section 0 printfa.o(i._printf_pre_padding) - _printf_pre_padding 0x0100a979 Thumb Code 44 printfa.o(i._printf_pre_padding) - i._snputc 0x0100a9a4 Section 0 printfa.o(i._snputc) - _snputc 0x0100a9a5 Thumb Code 22 printfa.o(i._snputc) - i._sputc 0x0100a9ba Section 0 printfa.o(i._sputc) - _sputc 0x0100a9bb Thumb Code 10 printfa.o(i._sputc) - i.app_ble_adv_init 0x0100a9c4 Section 0 app_ble.o(i.app_ble_adv_init) - i.app_ble_adv_msg_handler 0x0100aa38 Section 0 app_ble.o(i.app_ble_adv_msg_handler) - i.app_ble_connected 0x0100aa3c Section 0 app_ble.o(i.app_ble_connected) - i.app_ble_disconnected 0x0100aa80 Section 0 app_ble.o(i.app_ble_disconnected) - i.app_ble_gap_params_init 0x0100aadc Section 0 app_ble.o(i.app_ble_gap_params_init) - i.app_ble_init 0x0100ab74 Section 0 app_ble.o(i.app_ble_init) - i.app_ble_msg_handler 0x0100abc0 Section 0 app_ble.o(i.app_ble_msg_handler) - i.app_ble_proto_cli_exec 0x0100ac2c Section 0 app_ble_proto.o(i.app_ble_proto_cli_exec) - i.app_ble_proto_cli_rsp 0x0100ad14 Section 0 app_ble_proto.o(i.app_ble_proto_cli_rsp) - i.app_ble_proto_init 0x0100ad28 Section 0 app_ble_proto.o(i.app_ble_proto_init) - i.app_ble_proto_log_get 0x0100ad3c Section 0 app_ble_proto.o(i.app_ble_proto_log_get) - i.app_ble_proto_log_set 0x0100ad48 Section 0 app_ble_proto.o(i.app_ble_proto_log_set) - i.app_ble_proto_on_disconnect 0x0100ad58 Section 0 app_ble_proto.o(i.app_ble_proto_on_disconnect) - i.app_ble_proto_rx_bytes 0x0100ad70 Section 0 app_ble_proto.o(i.app_ble_proto_rx_bytes) - i.app_ble_proto_send_frame 0x0100af10 Section 0 app_ble_proto.o(i.app_ble_proto_send_frame) - i.app_ble_sec_init 0x0100afc8 Section 0 app_ble.o(i.app_ble_sec_init) - i.app_conn_params_update_evt_handler 0x0100b018 Section 0 ns_ble_task.o(i.app_conn_params_update_evt_handler) - app_conn_params_update_evt_handler 0x0100b019 Thumb Code 12 ns_ble_task.o(i.app_conn_params_update_evt_handler) - i.app_create_advertising 0x0100b028 Section 0 ns_ble.o(i.app_create_advertising) - app_create_advertising 0x0100b029 Thumb Code 192 ns_ble.o(i.app_create_advertising) - i.app_dis_add_dis 0x0100b0f4 Section 0 app_dis.o(i.app_dis_add_dis) - i.app_entry_point_handler 0x0100b150 Section 0 ns_ble_task.o(i.app_entry_point_handler) - i.app_fan_get_rpm 0x0100b254 Section 0 app_info.o(i.app_fan_get_rpm) - i.app_info_chip_temp_c10 0x0100b25c Section 0 app_info.o(i.app_info_chip_temp_c10) - i.app_info_handle_query 0x0100b2b8 Section 0 app_info.o(i.app_info_handle_query) - i.app_info_last_temp_raw 0x0100b304 Section 0 app_info.o(i.app_info_last_temp_raw) - i.app_info_tlv_snapshot 0x0100b310 Section 0 app_info.o(i.app_info_tlv_snapshot) - i.app_info_vdd_mv 0x0100b33c Section 0 app_info.o(i.app_info_vdd_mv) - i.app_init_timeout_evt_handler 0x0100b35c Section 0 ns_ble_task.o(i.app_init_timeout_evt_handler) - app_init_timeout_evt_handler 0x0100b35d Thumb Code 22 ns_ble_task.o(i.app_init_timeout_evt_handler) - i.app_lsi_calib_evt_handler 0x0100b378 Section 0 ns_ble_task.o(i.app_lsi_calib_evt_handler) - app_lsi_calib_evt_handler 0x0100b379 Thumb Code 140 ns_ble_task.o(i.app_lsi_calib_evt_handler) - i.app_ota_abort 0x0100b424 Section 0 app_ota.o(i.app_ota_abort) - i.app_ota_handle_frame 0x0100b43c Section 0 app_ota.o(i.app_ota_handle_frame) - i.app_rdtss_add_rdts 0x0100b558 Section 0 app_rdtss.o(i.app_rdtss_add_rdts) - i.app_sec_msg_dflt_handler 0x0100b5c0 Section 0 ns_sec.o(i.app_sec_msg_dflt_handler) - app_sec_msg_dflt_handler 0x0100b5c1 Thumb Code 4 ns_sec.o(i.app_sec_msg_dflt_handler) - i.app_set_adv_data 0x0100b5c4 Section 0 ns_ble.o(i.app_set_adv_data) - app_set_adv_data 0x0100b5c5 Thumb Code 100 ns_ble.o(i.app_set_adv_data) - i.app_set_scan_rsp_data 0x0100b63c Section 0 ns_ble.o(i.app_set_scan_rsp_data) - app_set_scan_rsp_data 0x0100b63d Thumb Code 172 ns_ble.o(i.app_set_scan_rsp_data) - i.app_start_advertising 0x0100b700 Section 0 ns_ble.o(i.app_start_advertising) - app_start_advertising 0x0100b701 Thumb Code 100 ns_ble.o(i.app_start_advertising) - i.app_user_msg_handler 0x0100b770 Section 0 app_ble.o(i.app_user_msg_handler) - i.attm_att_set_value 0x0100b774 Section 0 lib_att.o(i.attm_att_set_value) - i.ble_schedule_task 0x0100b834 Section 0 main.o(i.ble_schedule_task) - ble_schedule_task 0x0100b835 Thumb Code 16 main.o(i.ble_schedule_task) - i.ble_up_on_cfm 0x0100b844 Section 0 ble_up.o(i.ble_up_on_cfm) - i.ble_up_poll 0x0100b858 Section 0 ble_up.o(i.ble_up_poll) - i.ble_up_reset 0x0100b8b0 Section 0 ble_up.o(i.ble_up_reset) - i.ble_up_write 0x0100b8c0 Section 0 ble_up.o(i.ble_up_write) - i.bsp_usart_init 0x0100b908 Section 0 bsp_usart.o(i.bsp_usart_init) - i.bsp_usart_read_byte 0x0100b9e4 Section 0 bsp_usart.o(i.bsp_usart_read_byte) - i.bsp_usart_rx_isr_handler 0x0100ba1c Section 0 bsp_usart.o(i.bsp_usart_rx_isr_handler) - i.bsp_usart_tx_lock 0x0100ba70 Section 0 bsp_usart.o(i.bsp_usart_tx_lock) - i.bsp_usart_tx_unlock 0x0100ba90 Section 0 bsp_usart.o(i.bsp_usart_tx_unlock) - i.bsp_usart_write_dma 0x0100bab4 Section 0 bsp_usart.o(i.bsp_usart_write_dma) - i.caiic_crc32 0x0100bb4c Section 0 boot_crc32.o(i.caiic_crc32) - i.check_client_char_cfg 0x0100bb80 Section 0 rdts_common.o(i.check_client_char_cfg) - i.cli_cmd_count 0x0100bbaa Section 0 cli_core.o(i.cli_cmd_count) - i.cli_cmd_name 0x0100bbb0 Section 0 cli_core.o(i.cli_cmd_name) - i.cli_exec_line 0x0100bbc8 Section 0 cli_core.o(i.cli_exec_line) - i.cli_printf 0x0100bc7c Section 0 cli_core.o(i.cli_printf) - i.cli_redraw_line 0x0100bca8 Section 0 app_cli.o(i.cli_redraw_line) - cli_redraw_line 0x0100bca9 Thumb Code 94 app_cli.o(i.cli_redraw_line) - i.cli_rsp_out 0x0100bd10 Section 0 app_ble_proto.o(i.cli_rsp_out) - cli_rsp_out 0x0100bd11 Thumb Code 36 app_ble_proto.o(i.cli_rsp_out) - i.cli_set_output 0x0100bd3c Section 0 cli_core.o(i.cli_set_output) - i.cli_write 0x0100bd48 Section 0 cli_core.o(i.cli_write) - i.diss_check_val_len 0x0100bd6c Section 0 diss.o(i.diss_check_val_len) - i.diss_cleanup 0x0100bd96 Section 0 diss.o(i.diss_cleanup) - diss_cleanup 0x0100bd97 Thumb Code 2 diss.o(i.diss_cleanup) - i.diss_create 0x0100bd98 Section 0 diss.o(i.diss_create) - diss_create 0x0100bd99 Thumb Code 2 diss.o(i.diss_create) - i.diss_destroy 0x0100bd9a Section 0 diss.o(i.diss_destroy) - diss_destroy 0x0100bd9b Thumb Code 62 diss.o(i.diss_destroy) - i.diss_handle_to_value 0x0100bdd8 Section 0 diss.o(i.diss_handle_to_value) - i.diss_init 0x0100be0c Section 0 diss.o(i.diss_init) - diss_init 0x0100be0d Thumb Code 152 diss.o(i.diss_init) - i.diss_prf_itf_get 0x0100beac Section 0 diss.o(i.diss_prf_itf_get) - i.diss_set_value_req_handler 0x0100beb4 Section 0 diss_task.o(i.diss_set_value_req_handler) - diss_set_value_req_handler 0x0100beb5 Thumb Code 152 diss_task.o(i.diss_set_value_req_handler) - i.diss_task_init 0x0100bf50 Section 0 diss_task.o(i.diss_task_init) - i.diss_value_cfm_handler 0x0100bf70 Section 0 diss_task.o(i.diss_value_cfm_handler) - diss_value_cfm_handler 0x0100bf71 Thumb Code 120 diss_task.o(i.diss_value_cfm_handler) - i.diss_value_req_ind_handler 0x0100bfec Section 0 app_dis.o(i.diss_value_req_ind_handler) - diss_value_req_ind_handler 0x0100bfed Thumb Code 118 app_dis.o(i.diss_value_req_ind_handler) - i.diss_value_to_handle 0x0100c0ac Section 0 diss.o(i.diss_value_to_handle) - i.eTaskGetState 0x0100c0e8 Section 0 tasks.o(i.eTaskGetState) - i.fputc 0x0100c148 Section 0 bsp_usart.o(i.fputc) - i.gapc_bond_ind_handler 0x0100c184 Section 0 ns_sec.o(i.gapc_bond_ind_handler) - gapc_bond_ind_handler 0x0100c185 Thumb Code 206 ns_sec.o(i.gapc_bond_ind_handler) - i.gapc_bond_req_ind_handler 0x0100c274 Section 0 ns_sec.o(i.gapc_bond_req_ind_handler) - gapc_bond_req_ind_handler 0x0100c275 Thumb Code 478 ns_sec.o(i.gapc_bond_req_ind_handler) - i.gapc_cmp_evt_handler 0x0100c47c Section 0 ns_ble_task.o(i.gapc_cmp_evt_handler) - gapc_cmp_evt_handler 0x0100c47d Thumb Code 36 ns_ble_task.o(i.gapc_cmp_evt_handler) - i.gapc_conn_rssi_ind_handler 0x0100c4a4 Section 0 ns_ble_task.o(i.gapc_conn_rssi_ind_handler) - gapc_conn_rssi_ind_handler 0x0100c4a5 Thumb Code 92 ns_ble_task.o(i.gapc_conn_rssi_ind_handler) - i.gapc_connection_req_ind_handler 0x0100c510 Section 0 ns_ble_task.o(i.gapc_connection_req_ind_handler) - gapc_connection_req_ind_handler 0x0100c511 Thumb Code 310 ns_ble_task.o(i.gapc_connection_req_ind_handler) - i.gapc_disconnect_ind_handler 0x0100c668 Section 0 ns_ble_task.o(i.gapc_disconnect_ind_handler) - gapc_disconnect_ind_handler 0x0100c669 Thumb Code 88 ns_ble_task.o(i.gapc_disconnect_ind_handler) - i.gapc_encrypt_ind_handler 0x0100c6cc Section 0 ns_sec.o(i.gapc_encrypt_ind_handler) - gapc_encrypt_ind_handler 0x0100c6cd Thumb Code 34 ns_sec.o(i.gapc_encrypt_ind_handler) - i.gapc_encrypt_req_ind_handler 0x0100c6f4 Section 0 ns_sec.o(i.gapc_encrypt_req_ind_handler) - gapc_encrypt_req_ind_handler 0x0100c6f5 Thumb Code 280 ns_sec.o(i.gapc_encrypt_req_ind_handler) - i.gapc_get_dev_info_req_ind_handler 0x0100c824 Section 0 ns_ble_task.o(i.gapc_get_dev_info_req_ind_handler) - gapc_get_dev_info_req_ind_handler 0x0100c825 Thumb Code 116 ns_ble_task.o(i.gapc_get_dev_info_req_ind_handler) - i.gapc_le_phy_ind_handler 0x0100c8a4 Section 0 ns_ble_task.o(i.gapc_le_phy_ind_handler) - gapc_le_phy_ind_handler 0x0100c8a5 Thumb Code 12 ns_ble_task.o(i.gapc_le_phy_ind_handler) - i.gapc_le_pkt_size_ind_handler 0x0100c8b0 Section 0 ns_ble_task.o(i.gapc_le_pkt_size_ind_handler) - gapc_le_pkt_size_ind_handler 0x0100c8b1 Thumb Code 22 ns_ble_task.o(i.gapc_le_pkt_size_ind_handler) - i.gapc_param_update_req_ind_handler 0x0100c8cc Section 0 ns_ble_task.o(i.gapc_param_update_req_ind_handler) - gapc_param_update_req_ind_handler 0x0100c8cd Thumb Code 94 ns_ble_task.o(i.gapc_param_update_req_ind_handler) - i.gapc_param_updated_ind_handler 0x0100c930 Section 0 ns_ble_task.o(i.gapc_param_updated_ind_handler) - gapc_param_updated_ind_handler 0x0100c931 Thumb Code 36 ns_ble_task.o(i.gapc_param_updated_ind_handler) - i.gapc_set_dev_info_req_ind_handler 0x0100c958 Section 0 ns_ble_task.o(i.gapc_set_dev_info_req_ind_handler) - gapc_set_dev_info_req_ind_handler 0x0100c959 Thumb Code 52 ns_ble_task.o(i.gapc_set_dev_info_req_ind_handler) - i.gapm_activity_created_ind_handler 0x0100c998 Section 0 ns_ble_task.o(i.gapm_activity_created_ind_handler) - gapm_activity_created_ind_handler 0x0100c999 Thumb Code 46 ns_ble_task.o(i.gapm_activity_created_ind_handler) - i.gapm_activity_stopped_ind_handler 0x0100c9cc Section 0 ns_ble_task.o(i.gapm_activity_stopped_ind_handler) - gapm_activity_stopped_ind_handler 0x0100c9cd Thumb Code 82 ns_ble_task.o(i.gapm_activity_stopped_ind_handler) - i.gapm_addr_solved_ind_handler 0x0100ca2c Section 0 ns_ble_task.o(i.gapm_addr_solved_ind_handler) - gapm_addr_solved_ind_handler 0x0100ca2d Thumb Code 32 ns_ble_task.o(i.gapm_addr_solved_ind_handler) - i.gapm_cmp_evt_handler 0x0100ca58 Section 0 ns_ble_task.o(i.gapm_cmp_evt_handler) - gapm_cmp_evt_handler 0x0100ca59 Thumb Code 912 ns_ble_task.o(i.gapm_cmp_evt_handler) - i.gapm_ext_adv_repoer_ind_handler 0x0100ce38 Section 0 ns_ble_task.o(i.gapm_ext_adv_repoer_ind_handler) - gapm_ext_adv_repoer_ind_handler 0x0100ce39 Thumb Code 164 ns_ble_task.o(i.gapm_ext_adv_repoer_ind_handler) - i.gapm_gen_rand_nb_ind_handler 0x0100cee4 Section 0 ns_ble_task.o(i.gapm_gen_rand_nb_ind_handler) - gapm_gen_rand_nb_ind_handler 0x0100cee5 Thumb Code 54 ns_ble_task.o(i.gapm_gen_rand_nb_ind_handler) - i.gapm_profile_added_ind_handler 0x0100cf1a Section 0 ns_ble_task.o(i.gapm_profile_added_ind_handler) - gapm_profile_added_ind_handler 0x0100cf1b Thumb Code 12 ns_ble_task.o(i.gapm_profile_added_ind_handler) - i.gapm_scan_request_ind_handler 0x0100cf26 Section 0 ns_ble_task.o(i.gapm_scan_request_ind_handler) - gapm_scan_request_ind_handler 0x0100cf27 Thumb Code 12 ns_ble_task.o(i.gapm_scan_request_ind_handler) - i.gattc_att_info_req_ind_handler 0x0100cf34 Section 0 rdtss_task.o(i.gattc_att_info_req_ind_handler) - gattc_att_info_req_ind_handler 0x0100cf35 Thumb Code 58 rdtss_task.o(i.gattc_att_info_req_ind_handler) - i.gattc_cmp_evt_handler 0x0100cf74 Section 0 rdtss_task.o(i.gattc_cmp_evt_handler) - gattc_cmp_evt_handler 0x0100cf75 Thumb Code 102 rdtss_task.o(i.gattc_cmp_evt_handler) - i.gattc_cmp_evt_handler 0x0100cfe4 Section 0 ns_ble_task.o(i.gattc_cmp_evt_handler) - gattc_cmp_evt_handler 0x0100cfe5 Thumb Code 36 ns_ble_task.o(i.gattc_cmp_evt_handler) - i.gattc_mtu_changed_ind_handler 0x0100d00c Section 0 ns_ble_task.o(i.gattc_mtu_changed_ind_handler) - gattc_mtu_changed_ind_handler 0x0100d00d Thumb Code 66 ns_ble_task.o(i.gattc_mtu_changed_ind_handler) - i.gattc_read_req_ind_handler 0x0100d058 Section 0 diss_task.o(i.gattc_read_req_ind_handler) - gattc_read_req_ind_handler 0x0100d059 Thumb Code 188 diss_task.o(i.gattc_read_req_ind_handler) - i.gattc_read_req_ind_handler 0x0100d11c Section 0 rdtss_task.o(i.gattc_read_req_ind_handler) - gattc_read_req_ind_handler 0x0100d11d Thumb Code 212 rdtss_task.o(i.gattc_read_req_ind_handler) - i.gattc_write_req_ind_handler 0x0100d1fc Section 0 rdtss_task.o(i.gattc_write_req_ind_handler) - gattc_write_req_ind_handler 0x0100d1fd Thumb Code 260 rdtss_task.o(i.gattc_write_req_ind_handler) - i.get_cfg_handle 0x0100d30c Section 0 rdts_common.o(i.get_cfg_handle) - i.get_value_handle 0x0100d378 Section 0 rdts_common.o(i.get_value_handle) - i.info_adc_init 0x0100d3cc Section 0 app_info.o(i.info_adc_init) - info_adc_init 0x0100d3cd Thumb Code 92 app_info.o(i.info_adc_init) - i.info_adc_read 0x0100d430 Section 0 app_info.o(i.info_adc_read) - info_adc_read 0x0100d431 Thumb Code 96 app_info.o(i.info_adc_read) - i.info_fill_item 0x0100d49c Section 0 app_info.o(i.info_fill_item) - info_fill_item 0x0100d49d Thumb Code 258 app_info.o(i.info_fill_item) - i.info_put_tlv 0x0100d5b8 Section 0 app_info.o(i.info_put_tlv) - info_put_tlv 0x0100d5b9 Thumb Code 44 app_info.o(i.info_put_tlv) - i.led_task 0x0100d5e4 Section 0 main.o(i.led_task) - led_task 0x0100d5e5 Thumb Code 22 main.o(i.led_task) - i.llhwc_modem_setmode 0x0100d600 Section 0 rwip_driver.o(i.llhwc_modem_setmode) - i.llhwc_phy_prerx_flash 0x0100d630 Section 0 rwip_driver.o(i.llhwc_phy_prerx_flash) - i.llhwc_setmode_reg_config 0x0100d760 Section 0 rwip_driver.o(i.llhwc_setmode_reg_config) - llhwc_setmode_reg_config 0x0100d761 Thumb Code 88 rwip_driver.o(i.llhwc_setmode_reg_config) - i.main 0x0100d7f0 Section 0 main.o(i.main) - i.ns_EXTI4_12_IRQHandler 0x0100d98c Section 0 ns_ble.o(i.ns_EXTI4_12_IRQHandler) - i.ns_HardFault_Handler 0x0100d9e8 Section 0 ns_ble.o(i.ns_HardFault_Handler) - i.ns_ble_add_prf_func_register 0x0100da10 Section 0 ns_ble.o(i.ns_ble_add_prf_func_register) - i.ns_ble_add_svc 0x0100da30 Section 0 ns_ble.o(i.ns_ble_add_svc) - i.ns_ble_adv_fsm_next 0x0100da5c Section 0 ns_ble.o(i.ns_ble_adv_fsm_next) - i.ns_ble_adv_init 0x0100db38 Section 0 ns_ble.o(i.ns_ble_adv_init) - i.ns_ble_adv_start 0x0100db80 Section 0 ns_ble.o(i.ns_ble_adv_start) - i.ns_ble_adv_stop 0x0100dbd0 Section 0 ns_ble.o(i.ns_ble_adv_stop) - i.ns_ble_delete_init 0x0100dc1c Section 0 ns_ble.o(i.ns_ble_delete_init) - i.ns_ble_delete_scan 0x0100dc58 Section 0 ns_ble.o(i.ns_ble_delete_scan) - i.ns_ble_disconnect 0x0100dc90 Section 0 ns_ble.o(i.ns_ble_disconnect) - i.ns_ble_gap_init 0x0100dcbc Section 0 ns_ble.o(i.ns_ble_gap_init) - i.ns_ble_get_connection_num 0x0100dd28 Section 0 ns_ble.o(i.ns_ble_get_connection_num) - i.ns_ble_list_set_ral 0x0100dd4c Section 0 ns_ble.o(i.ns_ble_list_set_ral) - i.ns_ble_lsc_config 0x0100dd9c Section 0 ns_ble.o(i.ns_ble_lsc_config) - i.ns_ble_mtu_set 0x0100de20 Section 0 ns_ble.o(i.ns_ble_mtu_set) - i.ns_ble_prf_task_register 0x0100de54 Section 0 ns_ble.o(i.ns_ble_prf_task_register) - i.ns_ble_scan_data_find 0x0100de7c Section 0 ns_ble.o(i.ns_ble_scan_data_find) - i.ns_ble_stack_init 0x0100dec4 Section 0 ns_ble.o(i.ns_ble_stack_init) - i.ns_ble_start_init 0x0100e13c Section 0 ns_ble.o(i.ns_ble_start_init) - i.ns_ble_start_scan 0x0100e260 Section 0 ns_ble.o(i.ns_ble_start_scan) - i.ns_ble_stop_init 0x0100e32c Section 0 ns_ble.o(i.ns_ble_stop_init) - i.ns_ble_stop_scan 0x0100e364 Section 0 ns_ble.o(i.ns_ble_stop_scan) - i.ns_ble_update_param 0x0100e3a0 Section 0 ns_ble.o(i.ns_ble_update_param) - i.ns_bond_db_get_size 0x0100e418 Section 0 ns_sec.o(i.ns_bond_db_get_size) - ns_bond_db_get_size 0x0100e419 Thumb Code 36 ns_sec.o(i.ns_bond_db_get_size) - i.ns_bond_db_load 0x0100e444 Section 0 ns_sec.o(i.ns_bond_db_load) - ns_bond_db_load 0x0100e445 Thumb Code 24 ns_sec.o(i.ns_bond_db_load) - i.ns_bond_last_bonded_addr 0x0100e460 Section 0 ns_sec.o(i.ns_bond_last_bonded_addr) - i.ns_bond_last_bonded_peer_id 0x0100e490 Section 0 ns_sec.o(i.ns_bond_last_bonded_peer_id) - i.ns_bond_last_bonded_ral_info 0x0100e4c0 Section 0 ns_sec.o(i.ns_bond_last_bonded_ral_info) - i.ns_bond_resolv_addr_start 0x0100e524 Section 0 ns_sec.o(i.ns_bond_resolv_addr_start) - i.ns_bond_search_addr_irk 0x0100e584 Section 0 ns_sec.o(i.ns_bond_search_addr_irk) - i.ns_peripheral_config 0x0100e600 Section 0 ns_ble.o(i.ns_peripheral_config) - i.ns_sec_bond_store_evt_handler 0x0100e6d4 Section 0 ns_sec.o(i.ns_sec_bond_store_evt_handler) - i.ns_sec_get_bond_status 0x0100e834 Section 0 ns_sec.o(i.ns_sec_get_bond_status) - i.ns_sec_get_iocap 0x0100e844 Section 0 ns_sec.o(i.ns_sec_get_iocap) - i.ns_sec_init 0x0100e850 Section 0 ns_sec.o(i.ns_sec_init) - i.ns_sleep_lock_acquire 0x0100e8b8 Section 0 ns_sleep.o(i.ns_sleep_lock_acquire) - i.ns_sleep_lock_release 0x0100e8d0 Section 0 ns_sleep.o(i.ns_sleep_lock_release) - i.ns_timer_api_process_handler 0x0100e8e4 Section 0 ns_timer.o(i.ns_timer_api_process_handler) - i.ota_on_data 0x0100e9ac Section 0 app_ota.o(i.ota_on_data) - ota_on_data 0x0100e9ad Thumb Code 334 app_ota.o(i.ota_on_data) - i.ota_on_end 0x0100eb04 Section 0 app_ota.o(i.ota_on_end) - ota_on_end 0x0100eb05 Thumb Code 398 app_ota.o(i.ota_on_end) - i.ota_respond 0x0100ecb0 Section 0 app_ota.o(i.ota_respond) - ota_respond 0x0100ecb1 Thumb Code 40 app_ota.o(i.ota_respond) - i.patchx_enable 0x0100ecd8 Section 0 ns_ble.o(i.patchx_enable) - patchx_enable 0x0100ecd9 Thumb Code 58 ns_ble.o(i.patchx_enable) - i.prf_add_profile 0x0100ed1c Section 0 prf.o(i.prf_add_profile) - i.prf_dst_task_get 0x0100eda4 Section 0 prf.o(i.prf_dst_task_get) - i.prf_env_get 0x0100edb4 Section 0 prf.o(i.prf_env_get) - i.prf_get_id_from_task 0x0100ede4 Section 0 prf.o(i.prf_get_id_from_task) - i.prf_get_itf_func_register 0x0100ee1c Section 0 prf.o(i.prf_get_itf_func_register) - i.prf_get_task_from_id 0x0100ee44 Section 0 prf.o(i.prf_get_task_from_id) - i.prf_init 0x0100ee7c Section 0 prf.o(i.prf_init) - i.prf_itf_get 0x0100ef30 Section 0 prf.o(i.prf_itf_get) - prf_itf_get 0x0100ef31 Thumb Code 44 prf.o(i.prf_itf_get) - i.proto_cli_out 0x0100ef60 Section 0 app_ble_proto.o(i.proto_cli_out) - proto_cli_out 0x0100ef61 Thumb Code 52 app_ble_proto.o(i.proto_cli_out) - i.proto_dump 0x0100ef98 Section 0 app_ble_proto.o(i.proto_dump) - proto_dump 0x0100ef99 Thumb Code 70 app_ble_proto.o(i.proto_dump) - i.prvAddCurrentTaskToDelayedList 0x0100f018 Section 0 tasks.o(i.prvAddCurrentTaskToDelayedList) - prvAddCurrentTaskToDelayedList 0x0100f019 Thumb Code 78 tasks.o(i.prvAddCurrentTaskToDelayedList) - i.prvCopyDataToQueue 0x0100f070 Section 0 queue.o(i.prvCopyDataToQueue) - prvCopyDataToQueue 0x0100f071 Thumb Code 112 queue.o(i.prvCopyDataToQueue) - i.prvIdleTask 0x0100f0e0 Section 0 tasks.o(i.prvIdleTask) - prvIdleTask 0x0100f0e1 Thumb Code 72 tasks.o(i.prvIdleTask) - i.prvInsertBlockIntoFreeList 0x0100f134 Section 0 heap_4.o(i.prvInsertBlockIntoFreeList) - prvInsertBlockIntoFreeList 0x0100f135 Thumb Code 76 heap_4.o(i.prvInsertBlockIntoFreeList) - i.prvListTasksWithinSingleList 0x0100f188 Section 0 tasks.o(i.prvListTasksWithinSingleList) - prvListTasksWithinSingleList 0x0100f189 Thumb Code 200 tasks.o(i.prvListTasksWithinSingleList) - i.prvTaskExitError 0x0100f254 Section 0 port.o(i.prvTaskExitError) - prvTaskExitError 0x0100f255 Thumb Code 14 port.o(i.prvTaskExitError) - i.prvUnlockQueue 0x0100f268 Section 0 queue.o(i.prvUnlockQueue) - prvUnlockQueue 0x0100f269 Thumb Code 116 queue.o(i.prvUnlockQueue) - i.pvPortMalloc 0x0100f2dc Section 0 heap_4.o(i.pvPortMalloc) - i.pvTaskIncrementMutexHeldCount 0x0100f3d0 Section 0 tasks.o(i.pvTaskIncrementMutexHeldCount) - i.pxPortInitialiseStack 0x0100f3e8 Section 0 port.o(i.pxPortInitialiseStack) - i.rdtss_att_get_value 0x0100f40c Section 0 rdtss_task.o(i.rdtss_att_get_value) - rdtss_att_get_value 0x0100f40d Thumb Code 58 rdtss_task.o(i.rdtss_att_get_value) - i.rdtss_att_info_rsp_handler 0x0100f448 Section 0 rdtss_task.o(i.rdtss_att_info_rsp_handler) - rdtss_att_info_rsp_handler 0x0100f449 Thumb Code 60 rdtss_task.o(i.rdtss_att_info_rsp_handler) - i.rdtss_att_set_value 0x0100f488 Section 0 rdtss_task.o(i.rdtss_att_set_value) - rdtss_att_set_value 0x0100f489 Thumb Code 104 rdtss_task.o(i.rdtss_att_set_value) - i.rdtss_cleanup 0x0100f4f0 Section 0 rdtss.o(i.rdtss_cleanup) - rdtss_cleanup 0x0100f4f1 Thumb Code 70 rdtss.o(i.rdtss_cleanup) - i.rdtss_create 0x0100f53c Section 0 rdtss.o(i.rdtss_create) - rdtss_create 0x0100f53d Thumb Code 70 rdtss.o(i.rdtss_create) - i.rdtss_destroy 0x0100f588 Section 0 rdtss.o(i.rdtss_destroy) - rdtss_destroy 0x0100f589 Thumb Code 66 rdtss.o(i.rdtss_destroy) - i.rdtss_get_att_handle 0x0100f5ca Section 0 rdts_common.o(i.rdtss_get_att_handle) - i.rdtss_get_att_idx 0x0100f5e6 Section 0 rdts_common.o(i.rdtss_get_att_idx) - i.rdtss_init 0x0100f60e Section 0 rdtss.o(i.rdtss_init) - rdtss_init 0x0100f60f Thumb Code 152 rdtss.o(i.rdtss_init) - i.rdtss_init_ccc_values 0x0100f6a8 Section 0 rdtss_task.o(i.rdtss_init_ccc_values) - i.rdtss_prf_itf_get 0x0100f74c Section 0 rdtss.o(i.rdtss_prf_itf_get) - i.rdtss_send_notify 0x0100f754 Section 0 app_rdtss.o(i.rdtss_send_notify) - i.rdtss_set_ccc_value 0x0100f7a8 Section 0 rdtss_task.o(i.rdtss_set_ccc_value) - i.rdtss_task_init 0x0100f7dc Section 0 rdtss_task.o(i.rdtss_task_init) - i.rdtss_val_ind_req_handler 0x0100f7fc Section 0 rdtss_task.o(i.rdtss_val_ind_req_handler) - rdtss_val_ind_req_handler 0x0100f7fd Thumb Code 176 rdtss_task.o(i.rdtss_val_ind_req_handler) - i.rdtss_val_ntf_cfm_handler 0x0100f8ac Section 0 app_rdtss.o(i.rdtss_val_ntf_cfm_handler) - rdtss_val_ntf_cfm_handler 0x0100f8ad Thumb Code 10 app_rdtss.o(i.rdtss_val_ntf_cfm_handler) - i.rdtss_val_ntf_req_handler 0x0100f8b6 Section 0 rdtss_task.o(i.rdtss_val_ntf_req_handler) - rdtss_val_ntf_req_handler 0x0100f8b7 Thumb Code 166 rdtss_task.o(i.rdtss_val_ntf_req_handler) - i.rdtss_val_set_req_handler 0x0100f95c Section 0 rdtss_task.o(i.rdtss_val_set_req_handler) - rdtss_val_set_req_handler 0x0100f95d Thumb Code 32 rdtss_task.o(i.rdtss_val_set_req_handler) - i.rdtss_val_write_ind_handler 0x0100f97c Section 0 app_rdtss.o(i.rdtss_val_write_ind_handler) - rdtss_val_write_ind_handler 0x0100f97d Thumb Code 170 app_rdtss.o(i.rdtss_val_write_ind_handler) - i.rdtss_value_req_ind_handler 0x0100fa94 Section 0 app_rdtss.o(i.rdtss_value_req_ind_handler) - rdtss_value_req_ind_handler 0x0100fa95 Thumb Code 110 app_rdtss.o(i.rdtss_value_req_ind_handler) - i.rdtss_value_req_rsp_handler 0x0100fb10 Section 0 rdtss_task.o(i.rdtss_value_req_rsp_handler) - rdtss_value_req_rsp_handler 0x0100fb11 Thumb Code 124 rdtss_task.o(i.rdtss_value_req_rsp_handler) - i.rwip_init 0x0100fb90 Section 0 rwip.o(i.rwip_init) - i.rwip_slp_isr 0x0100fca8 Section 0 rwip_driver.o(i.rwip_slp_isr) - i.timer_canceled_handler 0x0100fda0 Section 0 ns_timer.o(i.timer_canceled_handler) - timer_canceled_handler 0x0100fda1 Thumb Code 2 ns_timer.o(i.timer_canceled_handler) - i.timer_modified_handler 0x0100fda2 Section 0 ns_timer.o(i.timer_modified_handler) - timer_modified_handler 0x0100fda3 Thumb Code 2 ns_timer.o(i.timer_modified_handler) - i.uxListRemove 0x0100fda4 Section 0 list.o(i.uxListRemove) - i.uxTaskGetNumberOfTasks 0x0100fdcc Section 0 tasks.o(i.uxTaskGetNumberOfTasks) - i.uxTaskGetSystemState 0x0100fdd8 Section 0 tasks.o(i.uxTaskGetSystemState) - i.vListInitialise 0x0100fe70 Section 0 list.o(i.vListInitialise) - i.vListInitialiseItem 0x0100fe86 Section 0 list.o(i.vListInitialiseItem) - i.vListInsert 0x0100fe8c Section 0 list.o(i.vListInsert) - i.vListInsertEnd 0x0100febe Section 0 list.o(i.vListInsertEnd) - i.vPortEnterCritical 0x0100fed8 Section 0 port.o(i.vPortEnterCritical) - i.vPortExitCritical 0x0100fef0 Section 0 port.o(i.vPortExitCritical) - i.vPortFree 0x0100ff0c Section 0 heap_4.o(i.vPortFree) - i.vPortYield 0x0100ff50 Section 0 port.o(i.vPortYield) - i.vTaskDelay 0x0100ff68 Section 0 tasks.o(i.vTaskDelay) - i.vTaskInternalSetTimeOutState 0x0100ff98 Section 0 tasks.o(i.vTaskInternalSetTimeOutState) - i.vTaskList 0x0100ffa8 Section 0 tasks.o(i.vTaskList) - i.vTaskMissedYield 0x01010078 Section 0 tasks.o(i.vTaskMissedYield) - i.vTaskPlaceOnEventList 0x01010084 Section 0 tasks.o(i.vTaskPlaceOnEventList) - i.vTaskPriorityDisinheritAfterTimeout 0x010100a8 Section 0 tasks.o(i.vTaskPriorityDisinheritAfterTimeout) - i.vTaskStartScheduler 0x0101011c Section 0 tasks.o(i.vTaskStartScheduler) - i.vTaskSuspendAll 0x0101016c Section 0 tasks.o(i.vTaskSuspendAll) - i.vTaskSwitchContext 0x0101017c Section 0 tasks.o(i.vTaskSwitchContext) - i.xPortGetFreeHeapSize 0x010101e0 Section 0 heap_4.o(i.xPortGetFreeHeapSize) - i.xPortGetMinimumEverFreeHeapSize 0x010101ec Section 0 heap_4.o(i.xPortGetMinimumEverFreeHeapSize) - i.xPortStartScheduler 0x010101f8 Section 0 port.o(i.xPortStartScheduler) - i.xQueueCreateMutex 0x01010248 Section 0 queue.o(i.xQueueCreateMutex) - i.xQueueGenericCreate 0x0101026c Section 0 queue.o(i.xQueueGenericCreate) - i.xQueueGenericReset 0x010102b0 Section 0 queue.o(i.xQueueGenericReset) - i.xQueueGenericSend 0x0101031e Section 0 queue.o(i.xQueueGenericSend) - i.xQueueGenericSendFromISR 0x010104ac Section 0 queue.o(i.xQueueGenericSendFromISR) - i.xQueueReceive 0x0101053a Section 0 queue.o(i.xQueueReceive) - i.xQueueSemaphoreTake 0x0101067c Section 0 queue.o(i.xQueueSemaphoreTake) - i.xTaskCheckForTimeOut 0x010107f0 Section 0 tasks.o(i.xTaskCheckForTimeOut) - i.xTaskCreate 0x01010854 Section 0 tasks.o(i.xTaskCreate) - i.xTaskGetSchedulerState 0x010109cc Section 0 tasks.o(i.xTaskGetSchedulerState) - i.xTaskGetTickCount 0x010109ec Section 0 tasks.o(i.xTaskGetTickCount) - i.xTaskIncrementTick 0x010109f8 Section 0 tasks.o(i.xTaskIncrementTick) - i.xTaskPriorityDisinherit 0x01010acc Section 0 tasks.o(i.xTaskPriorityDisinherit) - i.xTaskPriorityInherit 0x01010b34 Section 0 tasks.o(i.xTaskPriorityInherit) - i.xTaskRemoveFromEventList 0x01010bac Section 0 tasks.o(i.xTaskRemoveFromEventList) - i.xTaskResumeAll 0x01010c10 Section 0 tasks.o(i.xTaskResumeAll) - .constdata 0x01010cd8 Section 472 system_n32wb03x.o(.constdata) - .constdata 0x01010eb0 Section 12 n32wb03x_rcc.o(.constdata) - s_AhbPresTable 0x01010eb0 Data 4 n32wb03x_rcc.o(.constdata) - s_ApbPresTable 0x01010eb4 Data 8 n32wb03x_rcc.o(.constdata) - .constdata 0x01010ebc Section 804 n32wb03x_qflash.o(.constdata) - .constdata 0x010111e0 Section 30 rwip_driver.o(.constdata) - TXPWR_MAP 0x010111e0 Data 30 rwip_driver.o(.constdata) - .constdata 0x01011200 Section 168 diss.o(.constdata) - .constdata 0x010112a8 Section 24 diss_task.o(.constdata) - diss_msg_handler_tab 0x010112a8 Data 24 diss_task.o(.constdata) - .constdata 0x010112c0 Section 16 rdtss.o(.constdata) - .constdata 0x010112d0 Section 72 rdtss_task.o(.constdata) - rdtss_msg_handler_tab 0x010112d0 Data 72 rdtss_task.o(.constdata) - .constdata 0x01011318 Section 40 ns_sec.o(.constdata) - .constdata 0x01011340 Section 8 ns_sec.o(.constdata) - .constdata 0x01011348 Section 820 ns_ble.o(.constdata) - fun_5_Array 0x01011348 Data 820 ns_ble.o(.constdata) - .constdata 0x0101167c Section 152 ns_ble_task.o(.constdata) - gapm_att_db 0x0101167c Data 88 ns_ble_task.o(.constdata) - gattm_att_db 0x010116d4 Data 64 ns_ble_task.o(.constdata) - .constdata 0x01011714 Section 200 ns_ble_task.o(.constdata) - app_msg_handler_tab 0x01011714 Data 200 ns_ble_task.o(.constdata) - .constdata 0x010117dc Section 12 ns_ble_task.o(.constdata) - .constdata 0x010117e8 Section 8 app_dis.o(.constdata) - .constdata 0x010117f0 Section 8 app_dis.o(.constdata) - .constdata 0x010117f8 Section 266 app_rdtss.o(.constdata) - .constdata 0x01011904 Section 24 app_rdtss.o(.constdata) - .constdata 0x0101191c Section 72 cli_core.o(.constdata) - s_cmds 0x0101191c Data 72 cli_core.o(.constdata) - .constdata 0x01011964 Section 6 app_info.o(.constdata) - s_all_items 0x01011964 Data 6 app_info.o(.constdata) - .conststring 0x0101196c Section 314 cli_core.o(.conststring) + .text 0x0100832c Section 0 strtoul.o(.text) + .text 0x010083a2 Section 0 fadd.o(.text) + .text 0x01008454 Section 0 fmul.o(.text) + .text 0x010084d0 Section 0 dadd.o(.text) + .text 0x01008634 Section 0 dmul.o(.text) + .text 0x01008704 Section 0 ddiv.o(.text) + .text 0x010087f4 Section 0 ffltui.o(.text) + .text 0x01008804 Section 0 dfltui.o(.text) + .text 0x01008820 Section 0 dfltul.o(.text) + .text 0x0100883c Section 0 ffixi.o(.text) + .text 0x01008870 Section 0 dfixul.o(.text) + .text 0x010088b0 Section 0 f2d.o(.text) + .text 0x010088d8 Section 0 d2f.o(.text) + .text 0x01008910 Section 0 llshl.o(.text) + .text 0x01008930 Section 0 llushr.o(.text) + .text 0x01008952 Section 0 llsshr.o(.text) + .text 0x01008978 Section 0 ctype_o.o(.text) + .text 0x01008980 Section 0 _strtoul.o(.text) + .text 0x01008a26 Section 0 iusefp.o(.text) + .text 0x01008a26 Section 0 fepilogue.o(.text) + .text 0x01008aa8 Section 0 depilogue.o(.text) + .text 0x01008b68 Section 40 cdrcmple.o(.text) + .text 0x01008b90 Section 36 init.o(.text) + .text 0x01008bb4 Section 0 _chval.o(.text) + .text 0x01008bd2 Section 0 __dczerorl2.o(.text) + i.ADC_ClearFlag 0x01008d00 Section 0 n32wb03x_adc.o(i.ADC_ClearFlag) + i.ADC_ConfigChannel 0x01008d06 Section 0 n32wb03x_adc.o(i.ADC_ConfigChannel) + i.ADC_ConverValueToTemperature 0x01008d14 Section 0 n32wb03x_adc.o(i.ADC_ConverValueToTemperature) + i.ADC_ConverValueToVoltage 0x01008d68 Section 0 n32wb03x_adc.o(i.ADC_ConverValueToVoltage) + i.ADC_DeInit 0x01008df0 Section 0 n32wb03x_adc.o(i.ADC_DeInit) + i.ADC_Enable 0x01008e44 Section 0 n32wb03x_adc.o(i.ADC_Enable) + i.ADC_EnableBypassFilter 0x01008e58 Section 0 n32wb03x_adc.o(i.ADC_EnableBypassFilter) + i.ADC_EnableTS 0x01008ea8 Section 0 n32wb03x_adc.o(i.ADC_EnableTS) + i.ADC_GetDat 0x01008eba Section 0 n32wb03x_adc.o(i.ADC_GetDat) + i.ADC_GetFlagStatus 0x01008ec0 Section 0 n32wb03x_adc.o(i.ADC_GetFlagStatus) + i.ADC_SetOverSampleCounter 0x01008ed0 Section 0 n32wb03x_adc.o(i.ADC_SetOverSampleCounter) + i.AppBootset_CmdBsdump 0x01008ee8 Section 0 app_bootset.o(i.AppBootset_CmdBsdump) + i.AppBootset_CmdBsset 0x01008f1c Section 0 app_bootset.o(i.AppBootset_CmdBsset) + i.AppCli_Init 0x0100924c Section 0 app_cli.o(i.AppCli_Init) + i.AppParams_CmdParam 0x01009274 Section 0 app_params.o(i.AppParams_CmdParam) + i.CliTask 0x01009528 Section 0 app_cli.o(i.CliTask) + CliTask 0x01009529 Thumb Code 984 app_cli.o(i.CliTask) + i.CmdBleLog 0x0100995c Section 0 cli_core.o(i.CmdBleLog) + CmdBleLog 0x0100995d Thumb Code 68 cli_core.o(i.CmdBleLog) + i.CmdDevInfo 0x010099d4 Section 0 cli_core.o(i.CmdDevInfo) + CmdDevInfo 0x010099d5 Thumb Code 150 cli_core.o(i.CmdDevInfo) + i.CmdHelp 0x01009b4c Section 0 cli_core.o(i.CmdHelp) + CmdHelp 0x01009b4d Thumb Code 44 cli_core.o(i.CmdHelp) + i.CmdLed 0x01009bc0 Section 0 cli_core.o(i.CmdLed) + CmdLed 0x01009bc1 Thumb Code 128 cli_core.o(i.CmdLed) + i.CmdSysInfo 0x01009c90 Section 0 cli_core.o(i.CmdSysInfo) + CmdSysInfo 0x01009c91 Thumb Code 88 cli_core.o(i.CmdSysInfo) + i.CmdVersion 0x01009d78 Section 0 cli_core.o(i.CmdVersion) + CmdVersion 0x01009d79 Thumb Code 28 cli_core.o(i.CmdVersion) + i.DMA_ClearFlag 0x01009e10 Section 0 n32wb03x_dma.o(i.DMA_ClearFlag) + i.DMA_DeInit 0x01009e14 Section 0 n32wb03x_dma.o(i.DMA_DeInit) + i.DMA_EnableChannel 0x01009e9c Section 0 n32wb03x_dma.o(i.DMA_EnableChannel) + i.DMA_GetFlagStatus 0x01009eb4 Section 0 n32wb03x_dma.o(i.DMA_GetFlagStatus) + i.DMA_Init 0x01009ec4 Section 0 n32wb03x_dma.o(i.DMA_Init) + i.DMA_RequestRemap 0x01009f04 Section 0 n32wb03x_dma.o(i.DMA_RequestRemap) + i.EXTI_ClrITPendBit 0x01009f14 Section 0 n32wb03x_exti.o(i.EXTI_ClrITPendBit) + i.EXTI_GetITStatus 0x01009f20 Section 0 n32wb03x_exti.o(i.EXTI_GetITStatus) + i.EXTI_InitPeripheral 0x01009f3c Section 0 n32wb03x_exti.o(i.EXTI_InitPeripheral) + i.GPIO_InitPeripheral 0x01009fac Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral) + i.GPIO_InitStruct 0x0100a064 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct) + i.GPIO_ResetBits 0x0100a080 Section 0 n32wb03x_gpio.o(i.GPIO_ResetBits) + i.GPIO_SetBits 0x0100a084 Section 0 n32wb03x_gpio.o(i.GPIO_SetBits) + i.GPIO_TogglePin 0x0100a088 Section 0 n32wb03x_gpio.o(i.GPIO_TogglePin) + i.HardFault_Handler 0x0100a090 Section 0 n32wb03x_it.o(i.HardFault_Handler) + i.LedBlink 0x0100a140 Section 0 app_gpio.o(i.LedBlink) + i.LedInit 0x0100a148 Section 0 app_gpio.o(i.LedInit) + i.LedOff 0x0100a194 Section 0 app_gpio.o(i.LedOff) + i.LedOn 0x0100a19c Section 0 app_gpio.o(i.LedOn) + i.NVIC_Init 0x0100a1a4 Section 0 misc.o(i.NVIC_Init) + i.OTPTrim_Read 0x0100a21c Section 0 system_n32wb03x.o(i.OTPTrim_Read) + i.Qflash_Erase_Sector 0x0100a2e8 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector) + i.Qflash_Init 0x0100a30c Section 0 n32wb03x_qflash.o(i.Qflash_Init) + i.Qflash_Write 0x0100a344 Section 0 n32wb03x_qflash.o(i.Qflash_Write) + i.RCC_ConfigAdcClk 0x0100a368 Section 0 n32wb03x_rcc.o(i.RCC_ConfigAdcClk) + i.RCC_EnableAHBPeriphClk 0x0100a37c Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) + i.RCC_EnableAHBPeriphReset 0x0100a394 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphReset) + i.RCC_EnableAPB2PeriphClk 0x0100a3ac Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) + i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL 0x0100a3c4 Section 0 n32wb03x_rcc.o(i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL) + i.RCC_GetClocksFreqValue 0x0100a3e0 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) + i.SVC_Handler 0x0100a454 Section 0 port.o(i.SVC_Handler) + i.SysTick_Handler 0x0100a458 Section 0 port.o(i.SysTick_Handler) + i.SystemGetMacAddr 0x0100a47c Section 0 system_n32wb03x.o(i.SystemGetMacAddr) + i.SystemInit 0x0100a4b0 Section 0 system_n32wb03x.o(i.SystemInit) + i.SystemTrimValueGet 0x0100a630 Section 0 system_n32wb03x.o(i.SystemTrimValueGet) + i.USART1_IRQHandler 0x0100a660 Section 0 n32wb03x_it.o(i.USART1_IRQHandler) + i.USART_ConfigInt 0x0100a668 Section 0 n32wb03x_usart.o(i.USART_ConfigInt) + i.USART_Enable 0x0100a69c Section 0 n32wb03x_usart.o(i.USART_Enable) + i.USART_EnableDMA 0x0100a6b8 Section 0 n32wb03x_usart.o(i.USART_EnableDMA) + i.USART_GetFlagStatus 0x0100a6c8 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus) + i.USART_GetIntStatus 0x0100a6d6 Section 0 n32wb03x_usart.o(i.USART_GetIntStatus) + i.USART_Init 0x0100a718 Section 0 n32wb03x_usart.o(i.USART_Init) + i.USART_ReceiveData 0x0100a7a0 Section 0 n32wb03x_usart.o(i.USART_ReceiveData) + i.USART_SendData 0x0100a7a8 Section 0 n32wb03x_usart.o(i.USART_SendData) + i.__0printf 0x0100a7b0 Section 0 printfa.o(i.__0printf) + i.__0sprintf 0x0100a7d0 Section 0 printfa.o(i.__0sprintf) + i.__0vsnprintf 0x0100a7f8 Section 0 printfa.o(i.__0vsnprintf) + i.__ARM_clz 0x0100a824 Section 0 depilogue.o(i.__ARM_clz) + i.__aeabi_errno_addr 0x0100a854 Section 0 errno.o(i.__aeabi_errno_addr) + i._fp_digits 0x0100a85c Section 0 printfa.o(i._fp_digits) + _fp_digits 0x0100a85d Thumb Code 344 printfa.o(i._fp_digits) + i._printf_core 0x0100a9d0 Section 0 printfa.o(i._printf_core) + _printf_core 0x0100a9d1 Thumb Code 1754 printfa.o(i._printf_core) + i._printf_post_padding 0x0100b0bc Section 0 printfa.o(i._printf_post_padding) + _printf_post_padding 0x0100b0bd Thumb Code 32 printfa.o(i._printf_post_padding) + i._printf_pre_padding 0x0100b0dc Section 0 printfa.o(i._printf_pre_padding) + _printf_pre_padding 0x0100b0dd Thumb Code 44 printfa.o(i._printf_pre_padding) + i._snputc 0x0100b108 Section 0 printfa.o(i._snputc) + _snputc 0x0100b109 Thumb Code 22 printfa.o(i._snputc) + i._sputc 0x0100b11e Section 0 printfa.o(i._sputc) + _sputc 0x0100b11f Thumb Code 10 printfa.o(i._sputc) + i.app_ble_adv_init 0x0100b128 Section 0 app_ble.o(i.app_ble_adv_init) + i.app_ble_adv_msg_handler 0x0100b19c Section 0 app_ble.o(i.app_ble_adv_msg_handler) + i.app_ble_connected 0x0100b1a0 Section 0 app_ble.o(i.app_ble_connected) + i.app_ble_disconnected 0x0100b1e4 Section 0 app_ble.o(i.app_ble_disconnected) + i.app_ble_gap_params_init 0x0100b240 Section 0 app_ble.o(i.app_ble_gap_params_init) + i.app_ble_init 0x0100b2d8 Section 0 app_ble.o(i.app_ble_init) + i.app_ble_msg_handler 0x0100b324 Section 0 app_ble.o(i.app_ble_msg_handler) + i.app_ble_proto_cli_exec 0x0100b390 Section 0 app_ble_proto.o(i.app_ble_proto_cli_exec) + i.app_ble_proto_cli_rsp 0x0100b478 Section 0 app_ble_proto.o(i.app_ble_proto_cli_rsp) + i.app_ble_proto_init 0x0100b48c Section 0 app_ble_proto.o(i.app_ble_proto_init) + i.app_ble_proto_log_get 0x0100b4a0 Section 0 app_ble_proto.o(i.app_ble_proto_log_get) + i.app_ble_proto_log_set 0x0100b4ac Section 0 app_ble_proto.o(i.app_ble_proto_log_set) + i.app_ble_proto_on_disconnect 0x0100b4bc Section 0 app_ble_proto.o(i.app_ble_proto_on_disconnect) + i.app_ble_proto_rx_bytes 0x0100b4d4 Section 0 app_ble_proto.o(i.app_ble_proto_rx_bytes) + i.app_ble_proto_send_frame 0x0100b674 Section 0 app_ble_proto.o(i.app_ble_proto_send_frame) + i.app_ble_sec_init 0x0100b72c Section 0 app_ble.o(i.app_ble_sec_init) + i.app_conn_params_update_evt_handler 0x0100b77c Section 0 ns_ble_task.o(i.app_conn_params_update_evt_handler) + app_conn_params_update_evt_handler 0x0100b77d Thumb Code 12 ns_ble_task.o(i.app_conn_params_update_evt_handler) + i.app_create_advertising 0x0100b78c Section 0 ns_ble.o(i.app_create_advertising) + app_create_advertising 0x0100b78d Thumb Code 192 ns_ble.o(i.app_create_advertising) + i.app_dis_add_dis 0x0100b858 Section 0 app_dis.o(i.app_dis_add_dis) + i.app_entry_point_handler 0x0100b8b4 Section 0 ns_ble_task.o(i.app_entry_point_handler) + i.app_fan_get_rpm 0x0100b9b8 Section 0 app_info.o(i.app_fan_get_rpm) + i.app_info_chip_temp_c10 0x0100b9c0 Section 0 app_info.o(i.app_info_chip_temp_c10) + i.app_info_handle_query 0x0100ba1c Section 0 app_info.o(i.app_info_handle_query) + i.app_info_last_temp_raw 0x0100ba68 Section 0 app_info.o(i.app_info_last_temp_raw) + i.app_info_tlv_snapshot 0x0100ba74 Section 0 app_info.o(i.app_info_tlv_snapshot) + i.app_info_vdd_mv 0x0100baa0 Section 0 app_info.o(i.app_info_vdd_mv) + i.app_init_timeout_evt_handler 0x0100bac0 Section 0 ns_ble_task.o(i.app_init_timeout_evt_handler) + app_init_timeout_evt_handler 0x0100bac1 Thumb Code 22 ns_ble_task.o(i.app_init_timeout_evt_handler) + i.app_lsi_calib_evt_handler 0x0100badc Section 0 ns_ble_task.o(i.app_lsi_calib_evt_handler) + app_lsi_calib_evt_handler 0x0100badd Thumb Code 140 ns_ble_task.o(i.app_lsi_calib_evt_handler) + i.app_ota_abort 0x0100bb88 Section 0 app_ota.o(i.app_ota_abort) + i.app_ota_handle_frame 0x0100bba0 Section 0 app_ota.o(i.app_ota_handle_frame) + i.app_params_get 0x0100bcbc Section 0 app_params.o(i.app_params_get) + i.app_params_init 0x0100bcc4 Section 0 app_params.o(i.app_params_init) + i.app_rdtss_add_rdts 0x0100bd20 Section 0 app_rdtss.o(i.app_rdtss_add_rdts) + i.app_sec_msg_dflt_handler 0x0100bd88 Section 0 ns_sec.o(i.app_sec_msg_dflt_handler) + app_sec_msg_dflt_handler 0x0100bd89 Thumb Code 4 ns_sec.o(i.app_sec_msg_dflt_handler) + i.app_set_adv_data 0x0100bd8c Section 0 ns_ble.o(i.app_set_adv_data) + app_set_adv_data 0x0100bd8d Thumb Code 100 ns_ble.o(i.app_set_adv_data) + i.app_set_scan_rsp_data 0x0100be04 Section 0 ns_ble.o(i.app_set_scan_rsp_data) + app_set_scan_rsp_data 0x0100be05 Thumb Code 172 ns_ble.o(i.app_set_scan_rsp_data) + i.app_start_advertising 0x0100bec8 Section 0 ns_ble.o(i.app_start_advertising) + app_start_advertising 0x0100bec9 Thumb Code 100 ns_ble.o(i.app_start_advertising) + i.app_user_msg_handler 0x0100bf38 Section 0 app_ble.o(i.app_user_msg_handler) + i.attm_att_set_value 0x0100bf3c Section 0 lib_att.o(i.attm_att_set_value) + i.ble_schedule_task 0x0100bffc Section 0 main.o(i.ble_schedule_task) + ble_schedule_task 0x0100bffd Thumb Code 16 main.o(i.ble_schedule_task) + i.ble_up_on_cfm 0x0100c00c Section 0 ble_up.o(i.ble_up_on_cfm) + i.ble_up_poll 0x0100c020 Section 0 ble_up.o(i.ble_up_poll) + i.ble_up_reset 0x0100c078 Section 0 ble_up.o(i.ble_up_reset) + i.ble_up_write 0x0100c088 Section 0 ble_up.o(i.ble_up_write) + i.bootset_print 0x0100c0d0 Section 0 app_bootset.o(i.bootset_print) + bootset_print 0x0100c0d1 Thumb Code 106 app_bootset.o(i.bootset_print) + i.bsp_usart_init 0x0100c248 Section 0 bsp_usart.o(i.bsp_usart_init) + i.bsp_usart_read_byte 0x0100c324 Section 0 bsp_usart.o(i.bsp_usart_read_byte) + i.bsp_usart_rx_isr_handler 0x0100c35c Section 0 bsp_usart.o(i.bsp_usart_rx_isr_handler) + i.bsp_usart_tx_lock 0x0100c3b0 Section 0 bsp_usart.o(i.bsp_usart_tx_lock) + i.bsp_usart_tx_unlock 0x0100c3d0 Section 0 bsp_usart.o(i.bsp_usart_tx_unlock) + i.bsp_usart_write_dma 0x0100c3f4 Section 0 bsp_usart.o(i.bsp_usart_write_dma) + i.caiic_crc32 0x0100c48c Section 0 boot_crc32.o(i.caiic_crc32) + i.check_client_char_cfg 0x0100c4c0 Section 0 rdts_common.o(i.check_client_char_cfg) + i.cli_cmd_count 0x0100c4ea Section 0 cli_core.o(i.cli_cmd_count) + i.cli_cmd_name 0x0100c4f0 Section 0 cli_core.o(i.cli_cmd_name) + i.cli_exec_line 0x0100c508 Section 0 cli_core.o(i.cli_exec_line) + i.cli_printf 0x0100c5bc Section 0 cli_core.o(i.cli_printf) + i.cli_redraw_line 0x0100c5e8 Section 0 app_cli.o(i.cli_redraw_line) + cli_redraw_line 0x0100c5e9 Thumb Code 94 app_cli.o(i.cli_redraw_line) + i.cli_rsp_out 0x0100c650 Section 0 app_ble_proto.o(i.cli_rsp_out) + cli_rsp_out 0x0100c651 Thumb Code 36 app_ble_proto.o(i.cli_rsp_out) + i.cli_set_output 0x0100c67c Section 0 cli_core.o(i.cli_set_output) + i.cli_write 0x0100c688 Section 0 cli_core.o(i.cli_write) + i.diss_check_val_len 0x0100c6ac Section 0 diss.o(i.diss_check_val_len) + i.diss_cleanup 0x0100c6d6 Section 0 diss.o(i.diss_cleanup) + diss_cleanup 0x0100c6d7 Thumb Code 2 diss.o(i.diss_cleanup) + i.diss_create 0x0100c6d8 Section 0 diss.o(i.diss_create) + diss_create 0x0100c6d9 Thumb Code 2 diss.o(i.diss_create) + i.diss_destroy 0x0100c6da Section 0 diss.o(i.diss_destroy) + diss_destroy 0x0100c6db Thumb Code 62 diss.o(i.diss_destroy) + i.diss_handle_to_value 0x0100c718 Section 0 diss.o(i.diss_handle_to_value) + i.diss_init 0x0100c74c Section 0 diss.o(i.diss_init) + diss_init 0x0100c74d Thumb Code 152 diss.o(i.diss_init) + i.diss_prf_itf_get 0x0100c7ec Section 0 diss.o(i.diss_prf_itf_get) + i.diss_set_value_req_handler 0x0100c7f4 Section 0 diss_task.o(i.diss_set_value_req_handler) + diss_set_value_req_handler 0x0100c7f5 Thumb Code 152 diss_task.o(i.diss_set_value_req_handler) + i.diss_task_init 0x0100c890 Section 0 diss_task.o(i.diss_task_init) + i.diss_value_cfm_handler 0x0100c8b0 Section 0 diss_task.o(i.diss_value_cfm_handler) + diss_value_cfm_handler 0x0100c8b1 Thumb Code 120 diss_task.o(i.diss_value_cfm_handler) + i.diss_value_req_ind_handler 0x0100c92c Section 0 app_dis.o(i.diss_value_req_ind_handler) + diss_value_req_ind_handler 0x0100c92d Thumb Code 118 app_dis.o(i.diss_value_req_ind_handler) + i.diss_value_to_handle 0x0100c9ec Section 0 diss.o(i.diss_value_to_handle) + i.eTaskGetState 0x0100ca28 Section 0 tasks.o(i.eTaskGetState) + i.fputc 0x0100ca88 Section 0 bsp_usart.o(i.fputc) + i.gapc_bond_ind_handler 0x0100cac4 Section 0 ns_sec.o(i.gapc_bond_ind_handler) + gapc_bond_ind_handler 0x0100cac5 Thumb Code 206 ns_sec.o(i.gapc_bond_ind_handler) + i.gapc_bond_req_ind_handler 0x0100cbb4 Section 0 ns_sec.o(i.gapc_bond_req_ind_handler) + gapc_bond_req_ind_handler 0x0100cbb5 Thumb Code 478 ns_sec.o(i.gapc_bond_req_ind_handler) + i.gapc_cmp_evt_handler 0x0100cdbc Section 0 ns_ble_task.o(i.gapc_cmp_evt_handler) + gapc_cmp_evt_handler 0x0100cdbd Thumb Code 36 ns_ble_task.o(i.gapc_cmp_evt_handler) + i.gapc_conn_rssi_ind_handler 0x0100cde4 Section 0 ns_ble_task.o(i.gapc_conn_rssi_ind_handler) + gapc_conn_rssi_ind_handler 0x0100cde5 Thumb Code 92 ns_ble_task.o(i.gapc_conn_rssi_ind_handler) + i.gapc_connection_req_ind_handler 0x0100ce50 Section 0 ns_ble_task.o(i.gapc_connection_req_ind_handler) + gapc_connection_req_ind_handler 0x0100ce51 Thumb Code 310 ns_ble_task.o(i.gapc_connection_req_ind_handler) + i.gapc_disconnect_ind_handler 0x0100cfa8 Section 0 ns_ble_task.o(i.gapc_disconnect_ind_handler) + gapc_disconnect_ind_handler 0x0100cfa9 Thumb Code 88 ns_ble_task.o(i.gapc_disconnect_ind_handler) + i.gapc_encrypt_ind_handler 0x0100d00c Section 0 ns_sec.o(i.gapc_encrypt_ind_handler) + gapc_encrypt_ind_handler 0x0100d00d Thumb Code 34 ns_sec.o(i.gapc_encrypt_ind_handler) + i.gapc_encrypt_req_ind_handler 0x0100d034 Section 0 ns_sec.o(i.gapc_encrypt_req_ind_handler) + gapc_encrypt_req_ind_handler 0x0100d035 Thumb Code 280 ns_sec.o(i.gapc_encrypt_req_ind_handler) + i.gapc_get_dev_info_req_ind_handler 0x0100d164 Section 0 ns_ble_task.o(i.gapc_get_dev_info_req_ind_handler) + gapc_get_dev_info_req_ind_handler 0x0100d165 Thumb Code 116 ns_ble_task.o(i.gapc_get_dev_info_req_ind_handler) + i.gapc_le_phy_ind_handler 0x0100d1e4 Section 0 ns_ble_task.o(i.gapc_le_phy_ind_handler) + gapc_le_phy_ind_handler 0x0100d1e5 Thumb Code 12 ns_ble_task.o(i.gapc_le_phy_ind_handler) + i.gapc_le_pkt_size_ind_handler 0x0100d1f0 Section 0 ns_ble_task.o(i.gapc_le_pkt_size_ind_handler) + gapc_le_pkt_size_ind_handler 0x0100d1f1 Thumb Code 22 ns_ble_task.o(i.gapc_le_pkt_size_ind_handler) + i.gapc_param_update_req_ind_handler 0x0100d20c Section 0 ns_ble_task.o(i.gapc_param_update_req_ind_handler) + gapc_param_update_req_ind_handler 0x0100d20d Thumb Code 94 ns_ble_task.o(i.gapc_param_update_req_ind_handler) + i.gapc_param_updated_ind_handler 0x0100d270 Section 0 ns_ble_task.o(i.gapc_param_updated_ind_handler) + gapc_param_updated_ind_handler 0x0100d271 Thumb Code 36 ns_ble_task.o(i.gapc_param_updated_ind_handler) + i.gapc_set_dev_info_req_ind_handler 0x0100d298 Section 0 ns_ble_task.o(i.gapc_set_dev_info_req_ind_handler) + gapc_set_dev_info_req_ind_handler 0x0100d299 Thumb Code 52 ns_ble_task.o(i.gapc_set_dev_info_req_ind_handler) + i.gapm_activity_created_ind_handler 0x0100d2d8 Section 0 ns_ble_task.o(i.gapm_activity_created_ind_handler) + gapm_activity_created_ind_handler 0x0100d2d9 Thumb Code 46 ns_ble_task.o(i.gapm_activity_created_ind_handler) + i.gapm_activity_stopped_ind_handler 0x0100d30c Section 0 ns_ble_task.o(i.gapm_activity_stopped_ind_handler) + gapm_activity_stopped_ind_handler 0x0100d30d Thumb Code 82 ns_ble_task.o(i.gapm_activity_stopped_ind_handler) + i.gapm_addr_solved_ind_handler 0x0100d36c Section 0 ns_ble_task.o(i.gapm_addr_solved_ind_handler) + gapm_addr_solved_ind_handler 0x0100d36d Thumb Code 32 ns_ble_task.o(i.gapm_addr_solved_ind_handler) + i.gapm_cmp_evt_handler 0x0100d398 Section 0 ns_ble_task.o(i.gapm_cmp_evt_handler) + gapm_cmp_evt_handler 0x0100d399 Thumb Code 912 ns_ble_task.o(i.gapm_cmp_evt_handler) + i.gapm_ext_adv_repoer_ind_handler 0x0100d778 Section 0 ns_ble_task.o(i.gapm_ext_adv_repoer_ind_handler) + gapm_ext_adv_repoer_ind_handler 0x0100d779 Thumb Code 164 ns_ble_task.o(i.gapm_ext_adv_repoer_ind_handler) + i.gapm_gen_rand_nb_ind_handler 0x0100d824 Section 0 ns_ble_task.o(i.gapm_gen_rand_nb_ind_handler) + gapm_gen_rand_nb_ind_handler 0x0100d825 Thumb Code 54 ns_ble_task.o(i.gapm_gen_rand_nb_ind_handler) + i.gapm_profile_added_ind_handler 0x0100d85a Section 0 ns_ble_task.o(i.gapm_profile_added_ind_handler) + gapm_profile_added_ind_handler 0x0100d85b Thumb Code 12 ns_ble_task.o(i.gapm_profile_added_ind_handler) + i.gapm_scan_request_ind_handler 0x0100d866 Section 0 ns_ble_task.o(i.gapm_scan_request_ind_handler) + gapm_scan_request_ind_handler 0x0100d867 Thumb Code 12 ns_ble_task.o(i.gapm_scan_request_ind_handler) + i.gattc_att_info_req_ind_handler 0x0100d874 Section 0 rdtss_task.o(i.gattc_att_info_req_ind_handler) + gattc_att_info_req_ind_handler 0x0100d875 Thumb Code 58 rdtss_task.o(i.gattc_att_info_req_ind_handler) + i.gattc_cmp_evt_handler 0x0100d8b4 Section 0 rdtss_task.o(i.gattc_cmp_evt_handler) + gattc_cmp_evt_handler 0x0100d8b5 Thumb Code 102 rdtss_task.o(i.gattc_cmp_evt_handler) + i.gattc_cmp_evt_handler 0x0100d924 Section 0 ns_ble_task.o(i.gattc_cmp_evt_handler) + gattc_cmp_evt_handler 0x0100d925 Thumb Code 36 ns_ble_task.o(i.gattc_cmp_evt_handler) + i.gattc_mtu_changed_ind_handler 0x0100d94c Section 0 ns_ble_task.o(i.gattc_mtu_changed_ind_handler) + gattc_mtu_changed_ind_handler 0x0100d94d Thumb Code 66 ns_ble_task.o(i.gattc_mtu_changed_ind_handler) + i.gattc_read_req_ind_handler 0x0100d998 Section 0 diss_task.o(i.gattc_read_req_ind_handler) + gattc_read_req_ind_handler 0x0100d999 Thumb Code 188 diss_task.o(i.gattc_read_req_ind_handler) + i.gattc_read_req_ind_handler 0x0100da5c Section 0 rdtss_task.o(i.gattc_read_req_ind_handler) + gattc_read_req_ind_handler 0x0100da5d Thumb Code 212 rdtss_task.o(i.gattc_read_req_ind_handler) + i.gattc_write_req_ind_handler 0x0100db3c Section 0 rdtss_task.o(i.gattc_write_req_ind_handler) + gattc_write_req_ind_handler 0x0100db3d Thumb Code 260 rdtss_task.o(i.gattc_write_req_ind_handler) + i.get_cfg_handle 0x0100dc4c Section 0 rdts_common.o(i.get_cfg_handle) + i.get_value_handle 0x0100dcb8 Section 0 rdts_common.o(i.get_value_handle) + i.info_adc_init 0x0100dd0c Section 0 app_info.o(i.info_adc_init) + info_adc_init 0x0100dd0d Thumb Code 92 app_info.o(i.info_adc_init) + i.info_adc_read 0x0100dd70 Section 0 app_info.o(i.info_adc_read) + info_adc_read 0x0100dd71 Thumb Code 96 app_info.o(i.info_adc_read) + i.info_fill_item 0x0100dddc Section 0 app_info.o(i.info_fill_item) + info_fill_item 0x0100dddd Thumb Code 258 app_info.o(i.info_fill_item) + i.info_put_tlv 0x0100def8 Section 0 app_info.o(i.info_put_tlv) + info_put_tlv 0x0100def9 Thumb Code 44 app_info.o(i.info_put_tlv) + i.led_task 0x0100df24 Section 0 main.o(i.led_task) + led_task 0x0100df25 Thumb Code 48 main.o(i.led_task) + i.llhwc_modem_setmode 0x0100df58 Section 0 rwip_driver.o(i.llhwc_modem_setmode) + i.llhwc_phy_prerx_flash 0x0100df88 Section 0 rwip_driver.o(i.llhwc_phy_prerx_flash) + i.llhwc_setmode_reg_config 0x0100e0b8 Section 0 rwip_driver.o(i.llhwc_setmode_reg_config) + llhwc_setmode_reg_config 0x0100e0b9 Thumb Code 88 rwip_driver.o(i.llhwc_setmode_reg_config) + i.main 0x0100e148 Section 0 main.o(i.main) + i.ns_EXTI4_12_IRQHandler 0x0100e2e8 Section 0 ns_ble.o(i.ns_EXTI4_12_IRQHandler) + i.ns_HardFault_Handler 0x0100e344 Section 0 ns_ble.o(i.ns_HardFault_Handler) + i.ns_ble_add_prf_func_register 0x0100e36c Section 0 ns_ble.o(i.ns_ble_add_prf_func_register) + i.ns_ble_add_svc 0x0100e38c Section 0 ns_ble.o(i.ns_ble_add_svc) + i.ns_ble_adv_fsm_next 0x0100e3b8 Section 0 ns_ble.o(i.ns_ble_adv_fsm_next) + i.ns_ble_adv_init 0x0100e494 Section 0 ns_ble.o(i.ns_ble_adv_init) + i.ns_ble_adv_start 0x0100e4dc Section 0 ns_ble.o(i.ns_ble_adv_start) + i.ns_ble_adv_stop 0x0100e52c Section 0 ns_ble.o(i.ns_ble_adv_stop) + i.ns_ble_delete_init 0x0100e578 Section 0 ns_ble.o(i.ns_ble_delete_init) + i.ns_ble_delete_scan 0x0100e5b4 Section 0 ns_ble.o(i.ns_ble_delete_scan) + i.ns_ble_disconnect 0x0100e5ec Section 0 ns_ble.o(i.ns_ble_disconnect) + i.ns_ble_gap_init 0x0100e618 Section 0 ns_ble.o(i.ns_ble_gap_init) + i.ns_ble_get_connection_num 0x0100e684 Section 0 ns_ble.o(i.ns_ble_get_connection_num) + i.ns_ble_list_set_ral 0x0100e6a8 Section 0 ns_ble.o(i.ns_ble_list_set_ral) + i.ns_ble_lsc_config 0x0100e6f8 Section 0 ns_ble.o(i.ns_ble_lsc_config) + i.ns_ble_mtu_set 0x0100e77c Section 0 ns_ble.o(i.ns_ble_mtu_set) + i.ns_ble_prf_task_register 0x0100e7b0 Section 0 ns_ble.o(i.ns_ble_prf_task_register) + i.ns_ble_scan_data_find 0x0100e7d8 Section 0 ns_ble.o(i.ns_ble_scan_data_find) + i.ns_ble_stack_init 0x0100e820 Section 0 ns_ble.o(i.ns_ble_stack_init) + i.ns_ble_start_init 0x0100ea98 Section 0 ns_ble.o(i.ns_ble_start_init) + i.ns_ble_start_scan 0x0100ebbc Section 0 ns_ble.o(i.ns_ble_start_scan) + i.ns_ble_stop_init 0x0100ec88 Section 0 ns_ble.o(i.ns_ble_stop_init) + i.ns_ble_stop_scan 0x0100ecc0 Section 0 ns_ble.o(i.ns_ble_stop_scan) + i.ns_ble_update_param 0x0100ecfc Section 0 ns_ble.o(i.ns_ble_update_param) + i.ns_bond_db_get_size 0x0100ed74 Section 0 ns_sec.o(i.ns_bond_db_get_size) + ns_bond_db_get_size 0x0100ed75 Thumb Code 36 ns_sec.o(i.ns_bond_db_get_size) + i.ns_bond_db_load 0x0100eda0 Section 0 ns_sec.o(i.ns_bond_db_load) + ns_bond_db_load 0x0100eda1 Thumb Code 24 ns_sec.o(i.ns_bond_db_load) + i.ns_bond_last_bonded_addr 0x0100edbc Section 0 ns_sec.o(i.ns_bond_last_bonded_addr) + i.ns_bond_last_bonded_peer_id 0x0100edec Section 0 ns_sec.o(i.ns_bond_last_bonded_peer_id) + i.ns_bond_last_bonded_ral_info 0x0100ee1c Section 0 ns_sec.o(i.ns_bond_last_bonded_ral_info) + i.ns_bond_resolv_addr_start 0x0100ee80 Section 0 ns_sec.o(i.ns_bond_resolv_addr_start) + i.ns_bond_search_addr_irk 0x0100eee0 Section 0 ns_sec.o(i.ns_bond_search_addr_irk) + i.ns_peripheral_config 0x0100ef5c Section 0 ns_ble.o(i.ns_peripheral_config) + i.ns_sec_bond_store_evt_handler 0x0100f030 Section 0 ns_sec.o(i.ns_sec_bond_store_evt_handler) + i.ns_sec_get_bond_status 0x0100f190 Section 0 ns_sec.o(i.ns_sec_get_bond_status) + i.ns_sec_get_iocap 0x0100f1a0 Section 0 ns_sec.o(i.ns_sec_get_iocap) + i.ns_sec_init 0x0100f1ac Section 0 ns_sec.o(i.ns_sec_init) + i.ns_sleep_lock_acquire 0x0100f214 Section 0 ns_sleep.o(i.ns_sleep_lock_acquire) + i.ns_sleep_lock_release 0x0100f22c Section 0 ns_sleep.o(i.ns_sleep_lock_release) + i.ns_timer_api_process_handler 0x0100f240 Section 0 ns_timer.o(i.ns_timer_api_process_handler) + i.ota_on_data 0x0100f308 Section 0 app_ota.o(i.ota_on_data) + ota_on_data 0x0100f309 Thumb Code 334 app_ota.o(i.ota_on_data) + i.ota_on_end 0x0100f460 Section 0 app_ota.o(i.ota_on_end) + ota_on_end 0x0100f461 Thumb Code 398 app_ota.o(i.ota_on_end) + i.ota_respond 0x0100f60c Section 0 app_ota.o(i.ota_respond) + ota_respond 0x0100f60d Thumb Code 40 app_ota.o(i.ota_respond) + i.params_save 0x0100f634 Section 0 app_params.o(i.params_save) + params_save 0x0100f635 Thumb Code 80 app_params.o(i.params_save) + i.patchx_enable 0x0100f690 Section 0 ns_ble.o(i.patchx_enable) + patchx_enable 0x0100f691 Thumb Code 58 ns_ble.o(i.patchx_enable) + i.prf_add_profile 0x0100f6d4 Section 0 prf.o(i.prf_add_profile) + i.prf_dst_task_get 0x0100f75c Section 0 prf.o(i.prf_dst_task_get) + i.prf_env_get 0x0100f76c Section 0 prf.o(i.prf_env_get) + i.prf_get_id_from_task 0x0100f79c Section 0 prf.o(i.prf_get_id_from_task) + i.prf_get_itf_func_register 0x0100f7d4 Section 0 prf.o(i.prf_get_itf_func_register) + i.prf_get_task_from_id 0x0100f7fc Section 0 prf.o(i.prf_get_task_from_id) + i.prf_init 0x0100f834 Section 0 prf.o(i.prf_init) + i.prf_itf_get 0x0100f8e8 Section 0 prf.o(i.prf_itf_get) + prf_itf_get 0x0100f8e9 Thumb Code 44 prf.o(i.prf_itf_get) + i.proto_cli_out 0x0100f918 Section 0 app_ble_proto.o(i.proto_cli_out) + proto_cli_out 0x0100f919 Thumb Code 52 app_ble_proto.o(i.proto_cli_out) + i.proto_dump 0x0100f950 Section 0 app_ble_proto.o(i.proto_dump) + proto_dump 0x0100f951 Thumb Code 70 app_ble_proto.o(i.proto_dump) + i.prvAddCurrentTaskToDelayedList 0x0100f9d0 Section 0 tasks.o(i.prvAddCurrentTaskToDelayedList) + prvAddCurrentTaskToDelayedList 0x0100f9d1 Thumb Code 78 tasks.o(i.prvAddCurrentTaskToDelayedList) + i.prvCopyDataToQueue 0x0100fa28 Section 0 queue.o(i.prvCopyDataToQueue) + prvCopyDataToQueue 0x0100fa29 Thumb Code 112 queue.o(i.prvCopyDataToQueue) + i.prvIdleTask 0x0100fa98 Section 0 tasks.o(i.prvIdleTask) + prvIdleTask 0x0100fa99 Thumb Code 72 tasks.o(i.prvIdleTask) + i.prvInsertBlockIntoFreeList 0x0100faec Section 0 heap_4.o(i.prvInsertBlockIntoFreeList) + prvInsertBlockIntoFreeList 0x0100faed Thumb Code 76 heap_4.o(i.prvInsertBlockIntoFreeList) + i.prvListTasksWithinSingleList 0x0100fb40 Section 0 tasks.o(i.prvListTasksWithinSingleList) + prvListTasksWithinSingleList 0x0100fb41 Thumb Code 200 tasks.o(i.prvListTasksWithinSingleList) + i.prvTaskExitError 0x0100fc0c Section 0 port.o(i.prvTaskExitError) + prvTaskExitError 0x0100fc0d Thumb Code 14 port.o(i.prvTaskExitError) + i.prvUnlockQueue 0x0100fc20 Section 0 queue.o(i.prvUnlockQueue) + prvUnlockQueue 0x0100fc21 Thumb Code 116 queue.o(i.prvUnlockQueue) + i.pvPortMalloc 0x0100fc94 Section 0 heap_4.o(i.pvPortMalloc) + i.pvTaskIncrementMutexHeldCount 0x0100fd88 Section 0 tasks.o(i.pvTaskIncrementMutexHeldCount) + i.pxPortInitialiseStack 0x0100fda0 Section 0 port.o(i.pxPortInitialiseStack) + i.rdtss_att_get_value 0x0100fdc4 Section 0 rdtss_task.o(i.rdtss_att_get_value) + rdtss_att_get_value 0x0100fdc5 Thumb Code 58 rdtss_task.o(i.rdtss_att_get_value) + i.rdtss_att_info_rsp_handler 0x0100fe00 Section 0 rdtss_task.o(i.rdtss_att_info_rsp_handler) + rdtss_att_info_rsp_handler 0x0100fe01 Thumb Code 60 rdtss_task.o(i.rdtss_att_info_rsp_handler) + i.rdtss_att_set_value 0x0100fe40 Section 0 rdtss_task.o(i.rdtss_att_set_value) + rdtss_att_set_value 0x0100fe41 Thumb Code 104 rdtss_task.o(i.rdtss_att_set_value) + i.rdtss_cleanup 0x0100fea8 Section 0 rdtss.o(i.rdtss_cleanup) + rdtss_cleanup 0x0100fea9 Thumb Code 70 rdtss.o(i.rdtss_cleanup) + i.rdtss_create 0x0100fef4 Section 0 rdtss.o(i.rdtss_create) + rdtss_create 0x0100fef5 Thumb Code 70 rdtss.o(i.rdtss_create) + i.rdtss_destroy 0x0100ff40 Section 0 rdtss.o(i.rdtss_destroy) + rdtss_destroy 0x0100ff41 Thumb Code 66 rdtss.o(i.rdtss_destroy) + i.rdtss_get_att_handle 0x0100ff82 Section 0 rdts_common.o(i.rdtss_get_att_handle) + i.rdtss_get_att_idx 0x0100ff9e Section 0 rdts_common.o(i.rdtss_get_att_idx) + i.rdtss_init 0x0100ffc6 Section 0 rdtss.o(i.rdtss_init) + rdtss_init 0x0100ffc7 Thumb Code 152 rdtss.o(i.rdtss_init) + i.rdtss_init_ccc_values 0x01010060 Section 0 rdtss_task.o(i.rdtss_init_ccc_values) + i.rdtss_prf_itf_get 0x01010104 Section 0 rdtss.o(i.rdtss_prf_itf_get) + i.rdtss_send_notify 0x0101010c Section 0 app_rdtss.o(i.rdtss_send_notify) + i.rdtss_set_ccc_value 0x01010160 Section 0 rdtss_task.o(i.rdtss_set_ccc_value) + i.rdtss_task_init 0x01010194 Section 0 rdtss_task.o(i.rdtss_task_init) + i.rdtss_val_ind_req_handler 0x010101b4 Section 0 rdtss_task.o(i.rdtss_val_ind_req_handler) + rdtss_val_ind_req_handler 0x010101b5 Thumb Code 176 rdtss_task.o(i.rdtss_val_ind_req_handler) + i.rdtss_val_ntf_cfm_handler 0x01010264 Section 0 app_rdtss.o(i.rdtss_val_ntf_cfm_handler) + rdtss_val_ntf_cfm_handler 0x01010265 Thumb Code 10 app_rdtss.o(i.rdtss_val_ntf_cfm_handler) + i.rdtss_val_ntf_req_handler 0x0101026e Section 0 rdtss_task.o(i.rdtss_val_ntf_req_handler) + rdtss_val_ntf_req_handler 0x0101026f Thumb Code 166 rdtss_task.o(i.rdtss_val_ntf_req_handler) + i.rdtss_val_set_req_handler 0x01010314 Section 0 rdtss_task.o(i.rdtss_val_set_req_handler) + rdtss_val_set_req_handler 0x01010315 Thumb Code 32 rdtss_task.o(i.rdtss_val_set_req_handler) + i.rdtss_val_write_ind_handler 0x01010334 Section 0 app_rdtss.o(i.rdtss_val_write_ind_handler) + rdtss_val_write_ind_handler 0x01010335 Thumb Code 170 app_rdtss.o(i.rdtss_val_write_ind_handler) + i.rdtss_value_req_ind_handler 0x0101044c Section 0 app_rdtss.o(i.rdtss_value_req_ind_handler) + rdtss_value_req_ind_handler 0x0101044d Thumb Code 110 app_rdtss.o(i.rdtss_value_req_ind_handler) + i.rdtss_value_req_rsp_handler 0x010104c8 Section 0 rdtss_task.o(i.rdtss_value_req_rsp_handler) + rdtss_value_req_rsp_handler 0x010104c9 Thumb Code 124 rdtss_task.o(i.rdtss_value_req_rsp_handler) + i.rwip_init 0x01010548 Section 0 rwip.o(i.rwip_init) + i.rwip_slp_isr 0x01010660 Section 0 rwip_driver.o(i.rwip_slp_isr) + i.timer_canceled_handler 0x01010758 Section 0 ns_timer.o(i.timer_canceled_handler) + timer_canceled_handler 0x01010759 Thumb Code 2 ns_timer.o(i.timer_canceled_handler) + i.timer_modified_handler 0x0101075a Section 0 ns_timer.o(i.timer_modified_handler) + timer_modified_handler 0x0101075b Thumb Code 2 ns_timer.o(i.timer_modified_handler) + i.uxListRemove 0x0101075c Section 0 list.o(i.uxListRemove) + i.uxTaskGetNumberOfTasks 0x01010784 Section 0 tasks.o(i.uxTaskGetNumberOfTasks) + i.uxTaskGetSystemState 0x01010790 Section 0 tasks.o(i.uxTaskGetSystemState) + i.vListInitialise 0x01010828 Section 0 list.o(i.vListInitialise) + i.vListInitialiseItem 0x0101083e Section 0 list.o(i.vListInitialiseItem) + i.vListInsert 0x01010844 Section 0 list.o(i.vListInsert) + i.vListInsertEnd 0x01010876 Section 0 list.o(i.vListInsertEnd) + i.vPortEnterCritical 0x01010890 Section 0 port.o(i.vPortEnterCritical) + i.vPortExitCritical 0x010108a8 Section 0 port.o(i.vPortExitCritical) + i.vPortFree 0x010108c4 Section 0 heap_4.o(i.vPortFree) + i.vPortYield 0x01010908 Section 0 port.o(i.vPortYield) + i.vTaskDelay 0x01010920 Section 0 tasks.o(i.vTaskDelay) + i.vTaskInternalSetTimeOutState 0x01010950 Section 0 tasks.o(i.vTaskInternalSetTimeOutState) + i.vTaskList 0x01010960 Section 0 tasks.o(i.vTaskList) + i.vTaskMissedYield 0x01010a30 Section 0 tasks.o(i.vTaskMissedYield) + i.vTaskPlaceOnEventList 0x01010a3c Section 0 tasks.o(i.vTaskPlaceOnEventList) + i.vTaskPriorityDisinheritAfterTimeout 0x01010a60 Section 0 tasks.o(i.vTaskPriorityDisinheritAfterTimeout) + i.vTaskStartScheduler 0x01010ad4 Section 0 tasks.o(i.vTaskStartScheduler) + i.vTaskSuspendAll 0x01010b24 Section 0 tasks.o(i.vTaskSuspendAll) + i.vTaskSwitchContext 0x01010b34 Section 0 tasks.o(i.vTaskSwitchContext) + i.xPortGetFreeHeapSize 0x01010b98 Section 0 heap_4.o(i.xPortGetFreeHeapSize) + i.xPortGetMinimumEverFreeHeapSize 0x01010ba4 Section 0 heap_4.o(i.xPortGetMinimumEverFreeHeapSize) + i.xPortStartScheduler 0x01010bb0 Section 0 port.o(i.xPortStartScheduler) + i.xQueueCreateMutex 0x01010c00 Section 0 queue.o(i.xQueueCreateMutex) + i.xQueueGenericCreate 0x01010c24 Section 0 queue.o(i.xQueueGenericCreate) + i.xQueueGenericReset 0x01010c68 Section 0 queue.o(i.xQueueGenericReset) + i.xQueueGenericSend 0x01010cd6 Section 0 queue.o(i.xQueueGenericSend) + i.xQueueGenericSendFromISR 0x01010e64 Section 0 queue.o(i.xQueueGenericSendFromISR) + i.xQueueReceive 0x01010ef2 Section 0 queue.o(i.xQueueReceive) + i.xQueueSemaphoreTake 0x01011034 Section 0 queue.o(i.xQueueSemaphoreTake) + i.xTaskCheckForTimeOut 0x010111a8 Section 0 tasks.o(i.xTaskCheckForTimeOut) + i.xTaskCreate 0x0101120c Section 0 tasks.o(i.xTaskCreate) + i.xTaskGetSchedulerState 0x01011384 Section 0 tasks.o(i.xTaskGetSchedulerState) + i.xTaskGetTickCount 0x010113a4 Section 0 tasks.o(i.xTaskGetTickCount) + i.xTaskIncrementTick 0x010113b0 Section 0 tasks.o(i.xTaskIncrementTick) + i.xTaskPriorityDisinherit 0x01011484 Section 0 tasks.o(i.xTaskPriorityDisinherit) + i.xTaskPriorityInherit 0x010114ec Section 0 tasks.o(i.xTaskPriorityInherit) + i.xTaskRemoveFromEventList 0x01011564 Section 0 tasks.o(i.xTaskRemoveFromEventList) + i.xTaskResumeAll 0x010115c8 Section 0 tasks.o(i.xTaskResumeAll) + .constdata 0x01011690 Section 472 system_n32wb03x.o(.constdata) + .constdata 0x01011868 Section 12 n32wb03x_rcc.o(.constdata) + s_AhbPresTable 0x01011868 Data 4 n32wb03x_rcc.o(.constdata) + s_ApbPresTable 0x0101186c Data 8 n32wb03x_rcc.o(.constdata) + .constdata 0x01011874 Section 804 n32wb03x_qflash.o(.constdata) + .constdata 0x01011b98 Section 30 rwip_driver.o(.constdata) + TXPWR_MAP 0x01011b98 Data 30 rwip_driver.o(.constdata) + .constdata 0x01011bb8 Section 168 diss.o(.constdata) + .constdata 0x01011c60 Section 24 diss_task.o(.constdata) + diss_msg_handler_tab 0x01011c60 Data 24 diss_task.o(.constdata) + .constdata 0x01011c78 Section 16 rdtss.o(.constdata) + .constdata 0x01011c88 Section 72 rdtss_task.o(.constdata) + rdtss_msg_handler_tab 0x01011c88 Data 72 rdtss_task.o(.constdata) + .constdata 0x01011cd0 Section 40 ns_sec.o(.constdata) + .constdata 0x01011cf8 Section 8 ns_sec.o(.constdata) + .constdata 0x01011d00 Section 820 ns_ble.o(.constdata) + fun_5_Array 0x01011d00 Data 820 ns_ble.o(.constdata) + .constdata 0x01012034 Section 152 ns_ble_task.o(.constdata) + gapm_att_db 0x01012034 Data 88 ns_ble_task.o(.constdata) + gattm_att_db 0x0101208c Data 64 ns_ble_task.o(.constdata) + .constdata 0x010120cc Section 200 ns_ble_task.o(.constdata) + app_msg_handler_tab 0x010120cc Data 200 ns_ble_task.o(.constdata) + .constdata 0x01012194 Section 12 ns_ble_task.o(.constdata) + .constdata 0x010121a0 Section 8 app_dis.o(.constdata) + .constdata 0x010121a8 Section 8 app_dis.o(.constdata) + .constdata 0x010121b0 Section 266 app_rdtss.o(.constdata) + .constdata 0x010122bc Section 24 app_rdtss.o(.constdata) + .constdata 0x010122d4 Section 108 cli_core.o(.constdata) + s_cmds 0x010122d4 Data 108 cli_core.o(.constdata) + .constdata 0x01012340 Section 6 app_info.o(.constdata) + s_all_items 0x01012340 Data 6 app_info.o(.constdata) + .constdata 0x01012346 Section 129 ctype_o.o(.constdata) + .constdata 0x010123c8 Section 4 ctype_o.o(.constdata) + table 0x010123c8 Data 4 ctype_o.o(.constdata) + .conststring 0x010123cc Section 502 cli_core.o(.conststring) + .conststring 0x010125c4 Section 73 app_bootset.o(.conststring) .data 0x20004000 Section 4 system_n32wb03x.o(.data) .data 0x20004004 Section 12 n32wb03x_qflash.o(.data) .data 0x20004010 Section 20 rwip_driver.o(.data) @@ -2536,66 +2642,75 @@ Image Symbol Table .data 0x20004784 Section 4 app_info.o(.data) s_adc_ready 0x20004784 Data 1 app_info.o(.data) s_last_temp_raw 0x20004786 Data 2 app_info.o(.data) - .data 0x20004788 Section 60 tasks.o(.data) - pxDelayedTaskList 0x2000478c Data 4 tasks.o(.data) - pxOverflowDelayedTaskList 0x20004790 Data 4 tasks.o(.data) - uxDeletedTasksWaitingCleanUp 0x20004794 Data 4 tasks.o(.data) - uxCurrentNumberOfTasks 0x20004798 Data 4 tasks.o(.data) - xTickCount 0x2000479c Data 4 tasks.o(.data) - uxTopReadyPriority 0x200047a0 Data 4 tasks.o(.data) - xSchedulerRunning 0x200047a4 Data 4 tasks.o(.data) - uxPendedTicks 0x200047a8 Data 4 tasks.o(.data) - xYieldPending 0x200047ac Data 4 tasks.o(.data) - xNumOfOverflows 0x200047b0 Data 4 tasks.o(.data) - uxTaskNumber 0x200047b4 Data 4 tasks.o(.data) - xNextTaskUnblockTime 0x200047b8 Data 4 tasks.o(.data) - xIdleTaskHandle 0x200047bc Data 4 tasks.o(.data) - uxSchedulerSuspended 0x200047c0 Data 4 tasks.o(.data) - .data 0x200047c4 Section 24 heap_4.o(.data) - pxEnd 0x200047c4 Data 4 heap_4.o(.data) - xFreeBytesRemaining 0x200047c8 Data 4 heap_4.o(.data) - xMinimumEverFreeBytesRemaining 0x200047cc Data 4 heap_4.o(.data) - xBlockAllocatedBit 0x200047d0 Data 4 heap_4.o(.data) - xStart 0x200047d4 Data 8 heap_4.o(.data) - .data 0x200047dc Section 4 port.o(.data) - uxCriticalNesting 0x200047dc Data 4 port.o(.data) - .data 0x200047e0 Section 4 rand.o(.data) - _rand_state 0x200047e0 Data 4 rand.o(.data) - .bss 0x200047e4 Section 52 system_n32wb03x.o(.bss) - .bss 0x20004818 Section 808 n32wb03x_qflash.o(.bss) - ram_qflash_cmd 0x20004818 Data 808 n32wb03x_qflash.o(.bss) - .bss 0x20004b40 Section 284 prf.o(.bss) - .bss 0x20004c5c Section 80 ns_timer.o(.bss) - timer_callback_array 0x20004c5c Data 40 ns_timer.o(.bss) - modified_timer_callback_array 0x20004c84 Data 40 ns_timer.o(.bss) - .bss 0x20004cac Section 92 ns_sec.o(.bss) - .bss 0x20004d08 Section 432 ns_ble.o(.bss) - .bss 0x20004eb8 Section 480 cli_core.o(.bss) - s_taskList 0x20004eb8 Data 384 cli_core.o(.bss) - s_txBuf 0x20005038 Data 96 cli_core.o(.bss) - .bss 0x20005098 Section 576 app_cli.o(.bss) - line 0x20005098 Data 64 app_cli.o(.bss) - s_history 0x200050d8 Data 512 app_cli.o(.bss) - .bss 0x200052d8 Section 512 ble_up.o(.bss) - s_buf 0x200052d8 Data 512 ble_up.o(.bss) - .bss 0x200054d8 Section 1403 app_ble_proto.o(.bss) - s_line 0x200054d8 Data 64 app_ble_proto.o(.bss) - s_line 0x20005518 Data 64 app_ble_proto.o(.bss) - s_rxBuf 0x20005558 Data 512 app_ble_proto.o(.bss) - s_txFrame 0x20005758 Data 251 app_ble_proto.o(.bss) - s_cliRsp 0x20005853 Data 512 app_ble_proto.o(.bss) - .bss 0x20005a53 Section 40 app_info.o(.bss) - s_tlv 0x20005a53 Data 40 app_info.o(.bss) - .bss 0x20005a7c Section 240 tasks.o(.bss) - pxReadyTasksLists 0x20005a7c Data 140 tasks.o(.bss) - xDelayedTaskList1 0x20005b08 Data 20 tasks.o(.bss) - xDelayedTaskList2 0x20005b1c Data 20 tasks.o(.bss) - xPendingReadyList 0x20005b30 Data 20 tasks.o(.bss) - xTasksWaitingTermination 0x20005b44 Data 20 tasks.o(.bss) - xSuspendedTaskList 0x20005b58 Data 20 tasks.o(.bss) - .bss 0x20005b6c Section 20480 heap_4.o(.bss) - ucHeap 0x20005b6c Data 20480 heap_4.o(.bss) - STACK 0x2000ab70 Section 2048 startup_n32wb03x.o(STACK) + .data 0x20004788 Section 2 app_params.o(.data) + s_valid 0x20004788 Data 1 app_params.o(.data) + s_qflash_ready 0x20004789 Data 1 app_params.o(.data) + .data 0x2000478a Section 1 app_bootset.o(.data) + s_qflash_ready 0x2000478a Data 1 app_bootset.o(.data) + .data 0x2000478c Section 60 tasks.o(.data) + pxDelayedTaskList 0x20004790 Data 4 tasks.o(.data) + pxOverflowDelayedTaskList 0x20004794 Data 4 tasks.o(.data) + uxDeletedTasksWaitingCleanUp 0x20004798 Data 4 tasks.o(.data) + uxCurrentNumberOfTasks 0x2000479c Data 4 tasks.o(.data) + xTickCount 0x200047a0 Data 4 tasks.o(.data) + uxTopReadyPriority 0x200047a4 Data 4 tasks.o(.data) + xSchedulerRunning 0x200047a8 Data 4 tasks.o(.data) + uxPendedTicks 0x200047ac Data 4 tasks.o(.data) + xYieldPending 0x200047b0 Data 4 tasks.o(.data) + xNumOfOverflows 0x200047b4 Data 4 tasks.o(.data) + uxTaskNumber 0x200047b8 Data 4 tasks.o(.data) + xNextTaskUnblockTime 0x200047bc Data 4 tasks.o(.data) + xIdleTaskHandle 0x200047c0 Data 4 tasks.o(.data) + uxSchedulerSuspended 0x200047c4 Data 4 tasks.o(.data) + .data 0x200047c8 Section 24 heap_4.o(.data) + pxEnd 0x200047c8 Data 4 heap_4.o(.data) + xFreeBytesRemaining 0x200047cc Data 4 heap_4.o(.data) + xMinimumEverFreeBytesRemaining 0x200047d0 Data 4 heap_4.o(.data) + xBlockAllocatedBit 0x200047d4 Data 4 heap_4.o(.data) + xStart 0x200047d8 Data 8 heap_4.o(.data) + .data 0x200047e0 Section 4 port.o(.data) + uxCriticalNesting 0x200047e0 Data 4 port.o(.data) + .data 0x200047e4 Section 4 rand.o(.data) + _rand_state 0x200047e4 Data 4 rand.o(.data) + .data 0x200047e8 Section 4 errno.o(.data) + _errno 0x200047e8 Data 4 errno.o(.data) + .bss 0x200047ec Section 52 system_n32wb03x.o(.bss) + .bss 0x20004820 Section 808 n32wb03x_qflash.o(.bss) + ram_qflash_cmd 0x20004820 Data 808 n32wb03x_qflash.o(.bss) + .bss 0x20004b48 Section 284 prf.o(.bss) + .bss 0x20004c64 Section 80 ns_timer.o(.bss) + timer_callback_array 0x20004c64 Data 40 ns_timer.o(.bss) + modified_timer_callback_array 0x20004c8c Data 40 ns_timer.o(.bss) + .bss 0x20004cb4 Section 92 ns_sec.o(.bss) + .bss 0x20004d10 Section 432 ns_ble.o(.bss) + .bss 0x20004ec0 Section 480 cli_core.o(.bss) + s_taskList 0x20004ec0 Data 384 cli_core.o(.bss) + s_txBuf 0x20005040 Data 96 cli_core.o(.bss) + .bss 0x200050a0 Section 576 app_cli.o(.bss) + line 0x200050a0 Data 64 app_cli.o(.bss) + s_history 0x200050e0 Data 512 app_cli.o(.bss) + .bss 0x200052e0 Section 512 ble_up.o(.bss) + s_buf 0x200052e0 Data 512 ble_up.o(.bss) + .bss 0x200054e0 Section 1403 app_ble_proto.o(.bss) + s_line 0x200054e0 Data 64 app_ble_proto.o(.bss) + s_line 0x20005520 Data 64 app_ble_proto.o(.bss) + s_rxBuf 0x20005560 Data 512 app_ble_proto.o(.bss) + s_txFrame 0x20005760 Data 251 app_ble_proto.o(.bss) + s_cliRsp 0x2000585b Data 512 app_ble_proto.o(.bss) + .bss 0x20005a5b Section 40 app_info.o(.bss) + s_tlv 0x20005a5b Data 40 app_info.o(.bss) + .bss 0x20005a84 Section 52 app_params.o(.bss) + s_params 0x20005a84 Data 52 app_params.o(.bss) + .bss 0x20005ab8 Section 240 tasks.o(.bss) + pxReadyTasksLists 0x20005ab8 Data 140 tasks.o(.bss) + xDelayedTaskList1 0x20005b44 Data 20 tasks.o(.bss) + xDelayedTaskList2 0x20005b58 Data 20 tasks.o(.bss) + xPendingReadyList 0x20005b6c Data 20 tasks.o(.bss) + xTasksWaitingTermination 0x20005b80 Data 20 tasks.o(.bss) + xSuspendedTaskList 0x20005b94 Data 20 tasks.o(.bss) + .bss 0x20005ba8 Section 20480 heap_4.o(.bss) + ucHeap 0x20005ba8 Data 20480 heap_4.o(.bss) + STACK 0x2000aba8 Section 2048 startup_n32wb03x.o(STACK) Global Symbols @@ -3534,299 +3649,311 @@ Image Symbol Table memcmp 0x010082e3 Thumb Code 26 memcmp.o(.text) strcpy 0x010082fd Thumb Code 18 strcpy.o(.text) strncmp 0x0100830f Thumb Code 30 strncmp.o(.text) - __aeabi_fadd 0x0100832d Thumb Code 162 fadd.o(.text) - __aeabi_fsub 0x010083cf Thumb Code 8 fadd.o(.text) - __aeabi_frsub 0x010083d7 Thumb Code 8 fadd.o(.text) - __aeabi_fmul 0x010083df Thumb Code 122 fmul.o(.text) - __aeabi_dadd 0x01008459 Thumb Code 328 dadd.o(.text) - __aeabi_dsub 0x010085a1 Thumb Code 12 dadd.o(.text) - __aeabi_drsub 0x010085ad Thumb Code 12 dadd.o(.text) - __aeabi_dmul 0x010085bd Thumb Code 202 dmul.o(.text) - __aeabi_ddiv 0x0100868d Thumb Code 234 ddiv.o(.text) - __aeabi_ui2f 0x0100877d Thumb Code 14 ffltui.o(.text) - __aeabi_ui2d 0x0100878d Thumb Code 24 dfltui.o(.text) - __aeabi_ul2d 0x010087a9 Thumb Code 22 dfltul.o(.text) - __aeabi_f2iz 0x010087c5 Thumb Code 50 ffixi.o(.text) - __aeabi_d2ulz 0x010087f9 Thumb Code 54 dfixul.o(.text) - __aeabi_f2d 0x01008839 Thumb Code 40 f2d.o(.text) - __aeabi_d2f 0x01008861 Thumb Code 56 d2f.o(.text) - __aeabi_llsl 0x01008899 Thumb Code 32 llshl.o(.text) - _ll_shift_l 0x01008899 Thumb Code 0 llshl.o(.text) - __aeabi_llsr 0x010088b9 Thumb Code 34 llushr.o(.text) - _ll_ushift_r 0x010088b9 Thumb Code 0 llushr.o(.text) - __aeabi_lasr 0x010088db Thumb Code 38 llsshr.o(.text) - _ll_sshift_r 0x010088db Thumb Code 0 llsshr.o(.text) - __I$use$fp 0x01008901 Thumb Code 0 iusefp.o(.text) - _float_round 0x01008901 Thumb Code 16 fepilogue.o(.text) - _float_epilogue 0x01008911 Thumb Code 114 fepilogue.o(.text) - _double_round 0x01008983 Thumb Code 26 depilogue.o(.text) - _double_epilogue 0x0100899d Thumb Code 164 depilogue.o(.text) - __aeabi_cdrcmple 0x01008a41 Thumb Code 38 cdrcmple.o(.text) - __scatterload 0x01008a69 Thumb Code 28 init.o(.text) - __scatterload_rt2 0x01008a69 Thumb Code 0 init.o(.text) - __decompress 0x01008a8d Thumb Code 0 __dczerorl2.o(.text) - __decompress1 0x01008a8d Thumb Code 86 __dczerorl2.o(.text) - Long Thumb to Thumb Veneer to __ARM_common_memcpy1_6 0x01008ae5 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to attmdb_get_attribute 0x01008af1 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to attmdb_uuid16_comp 0x01008afd Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to co_list_pop_front 0x01008b09 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to attm_svc_create_db 0x01008b15 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to co_list_init 0x01008b21 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to co_list_extract 0x01008b2d Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to co_list_push_back 0x01008b39 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to attmdb_att_get_permission 0x01008b45 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to attmdb_get_service 0x01008b51 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to attmdb_get_uuid 0x01008b5d Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to calib_lsi_clk 0x01008b69 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to attm_svc_create_db_128 0x01008b75 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to ecc_init 0x01008b81 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to h4tl_init 0x01008b8d Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to hci_init 0x01008b99 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to ahi_init 0x01008ba5 Thumb Code 12 anon$$obj.o(Veneer$$Code) - Long Thumb to Thumb Veneer to __ARM_common_ll_muluu 0x01008bb1 Thumb Code 12 anon$$obj.o(Veneer$$Code) - ADC_ClearFlag 0x01008bbd Thumb Code 6 n32wb03x_adc.o(i.ADC_ClearFlag) - ADC_ConfigChannel 0x01008bc3 Thumb Code 14 n32wb03x_adc.o(i.ADC_ConfigChannel) - ADC_ConverValueToTemperature 0x01008bd1 Thumb Code 66 n32wb03x_adc.o(i.ADC_ConverValueToTemperature) - ADC_ConverValueToVoltage 0x01008c25 Thumb Code 136 n32wb03x_adc.o(i.ADC_ConverValueToVoltage) - ADC_DeInit 0x01008cad Thumb Code 66 n32wb03x_adc.o(i.ADC_DeInit) - ADC_Enable 0x01008d01 Thumb Code 20 n32wb03x_adc.o(i.ADC_Enable) - ADC_EnableBypassFilter 0x01008d15 Thumb Code 48 n32wb03x_adc.o(i.ADC_EnableBypassFilter) - ADC_EnableTS 0x01008d65 Thumb Code 18 n32wb03x_adc.o(i.ADC_EnableTS) - ADC_GetDat 0x01008d77 Thumb Code 6 n32wb03x_adc.o(i.ADC_GetDat) - ADC_GetFlagStatus 0x01008d7d Thumb Code 14 n32wb03x_adc.o(i.ADC_GetFlagStatus) - ADC_SetOverSampleCounter 0x01008d8d Thumb Code 18 n32wb03x_adc.o(i.ADC_SetOverSampleCounter) - AppCli_Init 0x01008da5 Thumb Code 30 app_cli.o(i.AppCli_Init) - DMA_ClearFlag 0x010096b5 Thumb Code 4 n32wb03x_dma.o(i.DMA_ClearFlag) - DMA_DeInit 0x010096b9 Thumb Code 106 n32wb03x_dma.o(i.DMA_DeInit) - DMA_EnableChannel 0x01009741 Thumb Code 20 n32wb03x_dma.o(i.DMA_EnableChannel) - DMA_GetFlagStatus 0x01009759 Thumb Code 14 n32wb03x_dma.o(i.DMA_GetFlagStatus) - DMA_Init 0x01009769 Thumb Code 58 n32wb03x_dma.o(i.DMA_Init) - DMA_RequestRemap 0x010097a9 Thumb Code 14 n32wb03x_dma.o(i.DMA_RequestRemap) - EXTI_ClrITPendBit 0x010097b9 Thumb Code 6 n32wb03x_exti.o(i.EXTI_ClrITPendBit) - EXTI_GetITStatus 0x010097c5 Thumb Code 24 n32wb03x_exti.o(i.EXTI_GetITStatus) - EXTI_InitPeripheral 0x010097e1 Thumb Code 108 n32wb03x_exti.o(i.EXTI_InitPeripheral) - GPIO_InitPeripheral 0x01009851 Thumb Code 184 n32wb03x_gpio.o(i.GPIO_InitPeripheral) - GPIO_InitStruct 0x01009909 Thumb Code 22 n32wb03x_gpio.o(i.GPIO_InitStruct) - GPIO_ResetBits 0x01009925 Thumb Code 4 n32wb03x_gpio.o(i.GPIO_ResetBits) - GPIO_SetBits 0x01009929 Thumb Code 4 n32wb03x_gpio.o(i.GPIO_SetBits) - GPIO_TogglePin 0x0100992d Thumb Code 8 n32wb03x_gpio.o(i.GPIO_TogglePin) - HardFault_Handler 0x01009935 Thumb Code 58 n32wb03x_it.o(i.HardFault_Handler) - LedBlink 0x010099e5 Thumb Code 8 app_gpio.o(i.LedBlink) - LedInit 0x010099ed Thumb Code 64 app_gpio.o(i.LedInit) - LedOff 0x01009a39 Thumb Code 8 app_gpio.o(i.LedOff) - LedOn 0x01009a41 Thumb Code 8 app_gpio.o(i.LedOn) - NVIC_Init 0x01009a49 Thumb Code 102 misc.o(i.NVIC_Init) - OTPTrim_Read 0x01009ac1 Thumb Code 186 system_n32wb03x.o(i.OTPTrim_Read) - Qflash_Erase_Sector 0x01009b8d Thumb Code 30 n32wb03x_qflash.o(i.Qflash_Erase_Sector) - Qflash_Init 0x01009bb1 Thumb Code 30 n32wb03x_qflash.o(i.Qflash_Init) - Qflash_Write 0x01009be9 Thumb Code 30 n32wb03x_qflash.o(i.Qflash_Write) - RCC_ConfigAdcClk 0x01009c0d Thumb Code 14 n32wb03x_rcc.o(i.RCC_ConfigAdcClk) - RCC_EnableAHBPeriphClk 0x01009c21 Thumb Code 18 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) - RCC_EnableAHBPeriphReset 0x01009c39 Thumb Code 18 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphReset) - RCC_EnableAPB2PeriphClk 0x01009c51 Thumb Code 18 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) - RCC_Enable_ADC_CLK_SRC_AUDIOPLL 0x01009c69 Thumb Code 22 n32wb03x_rcc.o(i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL) - RCC_GetClocksFreqValue 0x01009c85 Thumb Code 90 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) - SVC_Handler 0x01009cf9 Thumb Code 2 port.o(i.SVC_Handler) - SysTick_Handler 0x01009cfd Thumb Code 32 port.o(i.SysTick_Handler) - SystemGetMacAddr 0x01009d21 Thumb Code 44 system_n32wb03x.o(i.SystemGetMacAddr) - SystemInit 0x01009d55 Thumb Code 346 system_n32wb03x.o(i.SystemInit) - SystemTrimValueGet 0x01009ed5 Thumb Code 44 system_n32wb03x.o(i.SystemTrimValueGet) - USART1_IRQHandler 0x01009f05 Thumb Code 8 n32wb03x_it.o(i.USART1_IRQHandler) - USART_ConfigInt 0x01009f0d Thumb Code 50 n32wb03x_usart.o(i.USART_ConfigInt) - USART_Enable 0x01009f41 Thumb Code 22 n32wb03x_usart.o(i.USART_Enable) - USART_EnableDMA 0x01009f5d Thumb Code 16 n32wb03x_usart.o(i.USART_EnableDMA) - USART_GetFlagStatus 0x01009f6d Thumb Code 14 n32wb03x_usart.o(i.USART_GetFlagStatus) - USART_GetIntStatus 0x01009f7b Thumb Code 64 n32wb03x_usart.o(i.USART_GetIntStatus) - USART_Init 0x01009fbd Thumb Code 120 n32wb03x_usart.o(i.USART_Init) - USART_ReceiveData 0x0100a045 Thumb Code 8 n32wb03x_usart.o(i.USART_ReceiveData) - USART_SendData 0x0100a04d Thumb Code 8 n32wb03x_usart.o(i.USART_SendData) - __0printf 0x0100a055 Thumb Code 24 printfa.o(i.__0printf) - __1printf 0x0100a055 Thumb Code 0 printfa.o(i.__0printf) - __2printf 0x0100a055 Thumb Code 0 printfa.o(i.__0printf) - __c89printf 0x0100a055 Thumb Code 0 printfa.o(i.__0printf) - printf 0x0100a055 Thumb Code 0 printfa.o(i.__0printf) - __0sprintf 0x0100a075 Thumb Code 36 printfa.o(i.__0sprintf) - __1sprintf 0x0100a075 Thumb Code 0 printfa.o(i.__0sprintf) - __2sprintf 0x0100a075 Thumb Code 0 printfa.o(i.__0sprintf) - __c89sprintf 0x0100a075 Thumb Code 0 printfa.o(i.__0sprintf) - sprintf 0x0100a075 Thumb Code 0 printfa.o(i.__0sprintf) - __0vsnprintf 0x0100a09d Thumb Code 40 printfa.o(i.__0vsnprintf) - __1vsnprintf 0x0100a09d Thumb Code 0 printfa.o(i.__0vsnprintf) - __2vsnprintf 0x0100a09d Thumb Code 0 printfa.o(i.__0vsnprintf) - __c89vsnprintf 0x0100a09d Thumb Code 0 printfa.o(i.__0vsnprintf) - vsnprintf 0x0100a09d Thumb Code 0 printfa.o(i.__0vsnprintf) - __ARM_clz 0x0100a0c9 Thumb Code 46 depilogue.o(i.__ARM_clz) - app_ble_adv_init 0x0100a9c5 Thumb Code 90 app_ble.o(i.app_ble_adv_init) - app_ble_adv_msg_handler 0x0100aa39 Thumb Code 2 app_ble.o(i.app_ble_adv_msg_handler) - app_ble_connected 0x0100aa3d Thumb Code 38 app_ble.o(i.app_ble_connected) - app_ble_disconnected 0x0100aa81 Thumb Code 40 app_ble.o(i.app_ble_disconnected) - app_ble_gap_params_init 0x0100aadd Thumb Code 118 app_ble.o(i.app_ble_gap_params_init) - app_ble_init 0x0100ab75 Thumb Code 58 app_ble.o(i.app_ble_init) - app_ble_msg_handler 0x0100abc1 Thumb Code 90 app_ble.o(i.app_ble_msg_handler) - app_ble_proto_cli_exec 0x0100ac2d Thumb Code 148 app_ble_proto.o(i.app_ble_proto_cli_exec) - app_ble_proto_cli_rsp 0x0100ad15 Thumb Code 10 app_ble_proto.o(i.app_ble_proto_cli_rsp) - app_ble_proto_init 0x0100ad29 Thumb Code 14 app_ble_proto.o(i.app_ble_proto_init) - app_ble_proto_log_get 0x0100ad3d Thumb Code 6 app_ble_proto.o(i.app_ble_proto_log_get) - app_ble_proto_log_set 0x0100ad49 Thumb Code 12 app_ble_proto.o(i.app_ble_proto_log_set) - app_ble_proto_on_disconnect 0x0100ad59 Thumb Code 20 app_ble_proto.o(i.app_ble_proto_on_disconnect) - app_ble_proto_rx_bytes 0x0100ad71 Thumb Code 380 app_ble_proto.o(i.app_ble_proto_rx_bytes) - app_ble_proto_send_frame 0x0100af11 Thumb Code 158 app_ble_proto.o(i.app_ble_proto_send_frame) - app_ble_sec_init 0x0100afc9 Thumb Code 70 app_ble.o(i.app_ble_sec_init) - app_dis_add_dis 0x0100b0f5 Thumb Code 74 app_dis.o(i.app_dis_add_dis) - app_entry_point_handler 0x0100b151 Thumb Code 238 ns_ble_task.o(i.app_entry_point_handler) - app_fan_get_rpm 0x0100b255 Thumb Code 4 app_info.o(i.app_fan_get_rpm) - app_info_chip_temp_c10 0x0100b25d Thumb Code 74 app_info.o(i.app_info_chip_temp_c10) - app_info_handle_query 0x0100b2b9 Thumb Code 70 app_info.o(i.app_info_handle_query) - app_info_last_temp_raw 0x0100b305 Thumb Code 6 app_info.o(i.app_info_last_temp_raw) - app_info_tlv_snapshot 0x0100b311 Thumb Code 34 app_info.o(i.app_info_tlv_snapshot) - app_info_vdd_mv 0x0100b33d Thumb Code 28 app_info.o(i.app_info_vdd_mv) - app_ota_abort 0x0100b425 Thumb Code 18 app_ota.o(i.app_ota_abort) - app_ota_handle_frame 0x0100b43d Thumb Code 268 app_ota.o(i.app_ota_handle_frame) - app_rdtss_add_rdts 0x0100b559 Thumb Code 82 app_rdtss.o(i.app_rdtss_add_rdts) - app_user_msg_handler 0x0100b771 Thumb Code 2 app_ble.o(i.app_user_msg_handler) - attm_att_set_value 0x0100b775 Thumb Code 172 lib_att.o(i.attm_att_set_value) - ble_up_on_cfm 0x0100b845 Thumb Code 14 ble_up.o(i.ble_up_on_cfm) - ble_up_poll 0x0100b859 Thumb Code 76 ble_up.o(i.ble_up_poll) - ble_up_reset 0x0100b8b1 Thumb Code 12 ble_up.o(i.ble_up_reset) - ble_up_write 0x0100b8c1 Thumb Code 58 ble_up.o(i.ble_up_write) - bsp_usart_init 0x0100b909 Thumb Code 196 bsp_usart.o(i.bsp_usart_init) - bsp_usart_read_byte 0x0100b9e5 Thumb Code 52 bsp_usart.o(i.bsp_usart_read_byte) - bsp_usart_rx_isr_handler 0x0100ba1d Thumb Code 68 bsp_usart.o(i.bsp_usart_rx_isr_handler) - bsp_usart_tx_lock 0x0100ba71 Thumb Code 28 bsp_usart.o(i.bsp_usart_tx_lock) - bsp_usart_tx_unlock 0x0100ba91 Thumb Code 32 bsp_usart.o(i.bsp_usart_tx_unlock) - bsp_usart_write_dma 0x0100bab5 Thumb Code 134 bsp_usart.o(i.bsp_usart_write_dma) - caiic_crc32 0x0100bb4d Thumb Code 48 boot_crc32.o(i.caiic_crc32) - check_client_char_cfg 0x0100bb81 Thumb Code 42 rdts_common.o(i.check_client_char_cfg) - cli_cmd_count 0x0100bbab Thumb Code 4 cli_core.o(i.cli_cmd_count) - cli_cmd_name 0x0100bbb1 Thumb Code 18 cli_core.o(i.cli_cmd_name) - cli_exec_line 0x0100bbc9 Thumb Code 140 cli_core.o(i.cli_exec_line) - cli_printf 0x0100bc7d Thumb Code 36 cli_core.o(i.cli_printf) - cli_set_output 0x0100bd3d Thumb Code 6 cli_core.o(i.cli_set_output) - cli_write 0x0100bd49 Thumb Code 30 cli_core.o(i.cli_write) - diss_check_val_len 0x0100bd6d Thumb Code 42 diss.o(i.diss_check_val_len) - diss_handle_to_value 0x0100bdd9 Thumb Code 52 diss.o(i.diss_handle_to_value) - diss_prf_itf_get 0x0100bead Thumb Code 4 diss.o(i.diss_prf_itf_get) - diss_task_init 0x0100bf51 Thumb Code 28 diss_task.o(i.diss_task_init) - diss_value_to_handle 0x0100c0ad Thumb Code 58 diss.o(i.diss_value_to_handle) - eTaskGetState 0x0100c0e9 Thumb Code 82 tasks.o(i.eTaskGetState) - fputc 0x0100c149 Thumb Code 54 bsp_usart.o(i.fputc) - get_cfg_handle 0x0100d30d Thumb Code 98 rdts_common.o(i.get_cfg_handle) - get_value_handle 0x0100d379 Thumb Code 78 rdts_common.o(i.get_value_handle) - llhwc_modem_setmode 0x0100d601 Thumb Code 44 rwip_driver.o(i.llhwc_modem_setmode) - llhwc_phy_prerx_flash 0x0100d631 Thumb Code 172 rwip_driver.o(i.llhwc_phy_prerx_flash) - main 0x0100d7f1 Thumb Code 132 main.o(i.main) - ns_EXTI4_12_IRQHandler 0x0100d98d Thumb Code 76 ns_ble.o(i.ns_EXTI4_12_IRQHandler) - ns_HardFault_Handler 0x0100d9e9 Thumb Code 26 ns_ble.o(i.ns_HardFault_Handler) - ns_ble_add_prf_func_register 0x0100da11 Thumb Code 28 ns_ble.o(i.ns_ble_add_prf_func_register) - ns_ble_add_svc 0x0100da31 Thumb Code 34 ns_ble.o(i.ns_ble_add_svc) - ns_ble_adv_fsm_next 0x0100da5d Thumb Code 202 ns_ble.o(i.ns_ble_adv_fsm_next) - ns_ble_adv_init 0x0100db39 Thumb Code 58 ns_ble.o(i.ns_ble_adv_init) - ns_ble_adv_start 0x0100db81 Thumb Code 72 ns_ble.o(i.ns_ble_adv_start) - ns_ble_adv_stop 0x0100dbd1 Thumb Code 66 ns_ble.o(i.ns_ble_adv_stop) - ns_ble_delete_init 0x0100dc1d Thumb Code 46 ns_ble.o(i.ns_ble_delete_init) - ns_ble_delete_scan 0x0100dc59 Thumb Code 42 ns_ble.o(i.ns_ble_delete_scan) - ns_ble_disconnect 0x0100dc91 Thumb Code 34 ns_ble.o(i.ns_ble_disconnect) - ns_ble_gap_init 0x0100dcbd Thumb Code 70 ns_ble.o(i.ns_ble_gap_init) - ns_ble_get_connection_num 0x0100dd29 Thumb Code 32 ns_ble.o(i.ns_ble_get_connection_num) - ns_ble_list_set_ral 0x0100dd4d Thumb Code 76 ns_ble.o(i.ns_ble_list_set_ral) - ns_ble_lsc_config 0x0100dd9d Thumb Code 106 ns_ble.o(i.ns_ble_lsc_config) - ns_ble_mtu_set 0x0100de21 Thumb Code 40 ns_ble.o(i.ns_ble_mtu_set) - ns_ble_prf_task_register 0x0100de55 Thumb Code 34 ns_ble.o(i.ns_ble_prf_task_register) - ns_ble_scan_data_find 0x0100de7d Thumb Code 72 ns_ble.o(i.ns_ble_scan_data_find) - ns_ble_stack_init 0x0100dec5 Thumb Code 448 ns_ble.o(i.ns_ble_stack_init) - ns_ble_start_init 0x0100e13d Thumb Code 260 ns_ble.o(i.ns_ble_start_init) - ns_ble_start_scan 0x0100e261 Thumb Code 178 ns_ble.o(i.ns_ble_start_scan) - ns_ble_stop_init 0x0100e32d Thumb Code 42 ns_ble.o(i.ns_ble_stop_init) - ns_ble_stop_scan 0x0100e365 Thumb Code 48 ns_ble.o(i.ns_ble_stop_scan) - ns_ble_update_param 0x0100e3a1 Thumb Code 112 ns_ble.o(i.ns_ble_update_param) - ns_bond_last_bonded_addr 0x0100e461 Thumb Code 48 ns_sec.o(i.ns_bond_last_bonded_addr) - ns_bond_last_bonded_peer_id 0x0100e491 Thumb Code 48 ns_sec.o(i.ns_bond_last_bonded_peer_id) - ns_bond_last_bonded_ral_info 0x0100e4c1 Thumb Code 92 ns_sec.o(i.ns_bond_last_bonded_ral_info) - ns_bond_resolv_addr_start 0x0100e525 Thumb Code 92 ns_sec.o(i.ns_bond_resolv_addr_start) - ns_bond_search_addr_irk 0x0100e585 Thumb Code 110 ns_sec.o(i.ns_bond_search_addr_irk) - ns_peripheral_config 0x0100e601 Thumb Code 162 ns_ble.o(i.ns_peripheral_config) - ns_sec_bond_store_evt_handler 0x0100e6d5 Thumb Code 308 ns_sec.o(i.ns_sec_bond_store_evt_handler) - ns_sec_get_bond_status 0x0100e835 Thumb Code 12 ns_sec.o(i.ns_sec_get_bond_status) - ns_sec_get_iocap 0x0100e845 Thumb Code 6 ns_sec.o(i.ns_sec_get_iocap) - ns_sec_init 0x0100e851 Thumb Code 94 ns_sec.o(i.ns_sec_init) - ns_sleep_lock_acquire 0x0100e8b9 Thumb Code 20 ns_sleep.o(i.ns_sleep_lock_acquire) - ns_sleep_lock_release 0x0100e8d1 Thumb Code 16 ns_sleep.o(i.ns_sleep_lock_release) - ns_timer_api_process_handler 0x0100e8e5 Thumb Code 166 ns_timer.o(i.ns_timer_api_process_handler) - prf_add_profile 0x0100ed1d Thumb Code 132 prf.o(i.prf_add_profile) - prf_dst_task_get 0x0100eda5 Thumb Code 16 prf.o(i.prf_dst_task_get) - prf_env_get 0x0100edb5 Thumb Code 44 prf.o(i.prf_env_get) - prf_get_id_from_task 0x0100ede5 Thumb Code 50 prf.o(i.prf_get_id_from_task) - prf_get_itf_func_register 0x0100ee1d Thumb Code 34 prf.o(i.prf_get_itf_func_register) - prf_get_task_from_id 0x0100ee45 Thumb Code 50 prf.o(i.prf_get_task_from_id) - prf_init 0x0100ee7d Thumb Code 170 prf.o(i.prf_init) - pvPortMalloc 0x0100f2dd Thumb Code 230 heap_4.o(i.pvPortMalloc) - pvTaskIncrementMutexHeldCount 0x0100f3d1 Thumb Code 20 tasks.o(i.pvTaskIncrementMutexHeldCount) - pxPortInitialiseStack 0x0100f3e9 Thumb Code 30 port.o(i.pxPortInitialiseStack) - rdtss_get_att_handle 0x0100f5cb Thumb Code 28 rdts_common.o(i.rdtss_get_att_handle) - rdtss_get_att_idx 0x0100f5e7 Thumb Code 40 rdts_common.o(i.rdtss_get_att_idx) - rdtss_init_ccc_values 0x0100f6a9 Thumb Code 160 rdtss_task.o(i.rdtss_init_ccc_values) - rdtss_prf_itf_get 0x0100f74d Thumb Code 4 rdtss.o(i.rdtss_prf_itf_get) - rdtss_send_notify 0x0100f755 Thumb Code 70 app_rdtss.o(i.rdtss_send_notify) - rdtss_set_ccc_value 0x0100f7a9 Thumb Code 52 rdtss_task.o(i.rdtss_set_ccc_value) - rdtss_task_init 0x0100f7dd Thumb Code 28 rdtss_task.o(i.rdtss_task_init) - rwip_init 0x0100fb91 Thumb Code 198 rwip.o(i.rwip_init) - rwip_slp_isr 0x0100fca9 Thumb Code 198 rwip_driver.o(i.rwip_slp_isr) - uxListRemove 0x0100fda5 Thumb Code 38 list.o(i.uxListRemove) - uxTaskGetNumberOfTasks 0x0100fdcd Thumb Code 6 tasks.o(i.uxTaskGetNumberOfTasks) - uxTaskGetSystemState 0x0100fdd9 Thumb Code 134 tasks.o(i.uxTaskGetSystemState) - vListInitialise 0x0100fe71 Thumb Code 22 list.o(i.vListInitialise) - vListInitialiseItem 0x0100fe87 Thumb Code 6 list.o(i.vListInitialiseItem) - vListInsert 0x0100fe8d Thumb Code 50 list.o(i.vListInsert) - vListInsertEnd 0x0100febf Thumb Code 24 list.o(i.vListInsertEnd) - vPortEnterCritical 0x0100fed9 Thumb Code 20 port.o(i.vPortEnterCritical) - vPortExitCritical 0x0100fef1 Thumb Code 22 port.o(i.vPortExitCritical) - vPortFree 0x0100ff0d Thumb Code 64 heap_4.o(i.vPortFree) - vPortYield 0x0100ff51 Thumb Code 18 port.o(i.vPortYield) - vTaskDelay 0x0100ff69 Thumb Code 44 tasks.o(i.vTaskDelay) - vTaskInternalSetTimeOutState 0x0100ff99 Thumb Code 12 tasks.o(i.vTaskInternalSetTimeOutState) - vTaskList 0x0100ffa9 Thumb Code 188 tasks.o(i.vTaskList) - vTaskMissedYield 0x01010079 Thumb Code 8 tasks.o(i.vTaskMissedYield) - vTaskPlaceOnEventList 0x01010085 Thumb Code 32 tasks.o(i.vTaskPlaceOnEventList) - vTaskPriorityDisinheritAfterTimeout 0x010100a9 Thumb Code 106 tasks.o(i.vTaskPriorityDisinheritAfterTimeout) - vTaskStartScheduler 0x0101011d Thumb Code 60 tasks.o(i.vTaskStartScheduler) - vTaskSuspendAll 0x0101016d Thumb Code 10 tasks.o(i.vTaskSuspendAll) - vTaskSwitchContext 0x0101017d Thumb Code 92 tasks.o(i.vTaskSwitchContext) - xPortGetFreeHeapSize 0x010101e1 Thumb Code 6 heap_4.o(i.xPortGetFreeHeapSize) - xPortGetMinimumEverFreeHeapSize 0x010101ed Thumb Code 6 heap_4.o(i.xPortGetMinimumEverFreeHeapSize) - xPortStartScheduler 0x010101f9 Thumb Code 62 port.o(i.xPortStartScheduler) - xQueueCreateMutex 0x01010249 Thumb Code 36 queue.o(i.xQueueCreateMutex) - xQueueGenericCreate 0x0101026d Thumb Code 68 queue.o(i.xQueueGenericCreate) - xQueueGenericReset 0x010102b1 Thumb Code 110 queue.o(i.xQueueGenericReset) - xQueueGenericSend 0x0101031f Thumb Code 398 queue.o(i.xQueueGenericSend) - xQueueGenericSendFromISR 0x010104ad Thumb Code 142 queue.o(i.xQueueGenericSendFromISR) - xQueueReceive 0x0101053b Thumb Code 322 queue.o(i.xQueueReceive) - xQueueSemaphoreTake 0x0101067d Thumb Code 370 queue.o(i.xQueueSemaphoreTake) - xTaskCheckForTimeOut 0x010107f1 Thumb Code 94 tasks.o(i.xTaskCheckForTimeOut) - xTaskCreate 0x01010855 Thumb Code 348 tasks.o(i.xTaskCreate) - xTaskGetSchedulerState 0x010109cd Thumb Code 26 tasks.o(i.xTaskGetSchedulerState) - xTaskGetTickCount 0x010109ed Thumb Code 6 tasks.o(i.xTaskGetTickCount) - xTaskIncrementTick 0x010109f9 Thumb Code 202 tasks.o(i.xTaskIncrementTick) - xTaskPriorityDisinherit 0x01010acd Thumb Code 96 tasks.o(i.xTaskPriorityDisinherit) - xTaskPriorityInherit 0x01010b35 Thumb Code 110 tasks.o(i.xTaskPriorityInherit) - xTaskRemoveFromEventList 0x01010bad Thumb Code 88 tasks.o(i.xTaskRemoveFromEventList) - xTaskResumeAll 0x01010c11 Thumb Code 186 tasks.o(i.xTaskResumeAll) - TRIM_READ_CMD_CODE 0x01010cd8 Data 320 system_n32wb03x.o(.constdata) - CMD_RDID 0x01010e18 Data 152 system_n32wb03x.o(.constdata) - const_qflash_cmd 0x01010ebc Data 804 n32wb03x_qflash.o(.constdata) - diss_att_db 0x01011200 Data 152 diss.o(.constdata) - diss_itf 0x01011298 Data 16 diss.o(.constdata) - rdtss_itf 0x010112c0 Data 16 rdtss.o(.constdata) - app_sec_msg_handler_list 0x01011318 Data 40 ns_sec.o(.constdata) - app_sec_handlers 0x01011340 Data 8 ns_sec.o(.constdata) - TASK_DESC_APP_M 0x010117dc Data 12 ns_ble_task.o(.constdata) - app_dis_msg_handler_list 0x010117e8 Data 8 app_dis.o(.constdata) - app_dis_handlers 0x010117f0 Data 8 app_dis.o(.constdata) - app_rdtss_handlers 0x010117f8 Data 8 app_rdtss.o(.constdata) - app_rdts_svc_uuid 0x01011800 Data 16 app_rdtss.o(.constdata) - app_rdts_att_db 0x01011810 Data 242 app_rdtss.o(.constdata) - app_rdtss_msg_handler_list 0x01011904 Data 24 app_rdtss.o(.constdata) - Region$$Table$$Base 0x01011aa8 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x01011ac8 Number 0 anon$$obj.o(Region$$Table) + strtoul 0x0100832d Thumb Code 118 strtoul.o(.text) + __aeabi_fadd 0x010083a3 Thumb Code 162 fadd.o(.text) + __aeabi_fsub 0x01008445 Thumb Code 8 fadd.o(.text) + __aeabi_frsub 0x0100844d Thumb Code 8 fadd.o(.text) + __aeabi_fmul 0x01008455 Thumb Code 122 fmul.o(.text) + __aeabi_dadd 0x010084d1 Thumb Code 328 dadd.o(.text) + __aeabi_dsub 0x01008619 Thumb Code 12 dadd.o(.text) + __aeabi_drsub 0x01008625 Thumb Code 12 dadd.o(.text) + __aeabi_dmul 0x01008635 Thumb Code 202 dmul.o(.text) + __aeabi_ddiv 0x01008705 Thumb Code 234 ddiv.o(.text) + __aeabi_ui2f 0x010087f5 Thumb Code 14 ffltui.o(.text) + __aeabi_ui2d 0x01008805 Thumb Code 24 dfltui.o(.text) + __aeabi_ul2d 0x01008821 Thumb Code 22 dfltul.o(.text) + __aeabi_f2iz 0x0100883d Thumb Code 50 ffixi.o(.text) + __aeabi_d2ulz 0x01008871 Thumb Code 54 dfixul.o(.text) + __aeabi_f2d 0x010088b1 Thumb Code 40 f2d.o(.text) + __aeabi_d2f 0x010088d9 Thumb Code 56 d2f.o(.text) + __aeabi_llsl 0x01008911 Thumb Code 32 llshl.o(.text) + _ll_shift_l 0x01008911 Thumb Code 0 llshl.o(.text) + __aeabi_llsr 0x01008931 Thumb Code 34 llushr.o(.text) + _ll_ushift_r 0x01008931 Thumb Code 0 llushr.o(.text) + __aeabi_lasr 0x01008953 Thumb Code 38 llsshr.o(.text) + _ll_sshift_r 0x01008953 Thumb Code 0 llsshr.o(.text) + __rt_ctype_table 0x01008979 Thumb Code 4 ctype_o.o(.text) + _strtoul 0x01008981 Thumb Code 166 _strtoul.o(.text) + __I$use$fp 0x01008a27 Thumb Code 0 iusefp.o(.text) + _float_round 0x01008a27 Thumb Code 16 fepilogue.o(.text) + _float_epilogue 0x01008a37 Thumb Code 114 fepilogue.o(.text) + _double_round 0x01008aa9 Thumb Code 26 depilogue.o(.text) + _double_epilogue 0x01008ac3 Thumb Code 164 depilogue.o(.text) + __aeabi_cdrcmple 0x01008b69 Thumb Code 38 cdrcmple.o(.text) + __scatterload 0x01008b91 Thumb Code 28 init.o(.text) + __scatterload_rt2 0x01008b91 Thumb Code 0 init.o(.text) + _chval 0x01008bb5 Thumb Code 30 _chval.o(.text) + __decompress 0x01008bd3 Thumb Code 0 __dczerorl2.o(.text) + __decompress1 0x01008bd3 Thumb Code 86 __dczerorl2.o(.text) + Long Thumb to Thumb Veneer to __ARM_common_memcpy1_6 0x01008c29 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to attmdb_get_attribute 0x01008c35 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to attmdb_uuid16_comp 0x01008c41 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to co_list_pop_front 0x01008c4d Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to attm_svc_create_db 0x01008c59 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to co_list_init 0x01008c65 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to co_list_extract 0x01008c71 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to co_list_push_back 0x01008c7d Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to attmdb_att_get_permission 0x01008c89 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to attmdb_get_service 0x01008c95 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to attmdb_get_uuid 0x01008ca1 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to calib_lsi_clk 0x01008cad Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to attm_svc_create_db_128 0x01008cb9 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to ecc_init 0x01008cc5 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to h4tl_init 0x01008cd1 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to hci_init 0x01008cdd Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to ahi_init 0x01008ce9 Thumb Code 12 anon$$obj.o(Veneer$$Code) + Long Thumb to Thumb Veneer to __ARM_common_ll_muluu 0x01008cf5 Thumb Code 12 anon$$obj.o(Veneer$$Code) + ADC_ClearFlag 0x01008d01 Thumb Code 6 n32wb03x_adc.o(i.ADC_ClearFlag) + ADC_ConfigChannel 0x01008d07 Thumb Code 14 n32wb03x_adc.o(i.ADC_ConfigChannel) + ADC_ConverValueToTemperature 0x01008d15 Thumb Code 66 n32wb03x_adc.o(i.ADC_ConverValueToTemperature) + ADC_ConverValueToVoltage 0x01008d69 Thumb Code 136 n32wb03x_adc.o(i.ADC_ConverValueToVoltage) + ADC_DeInit 0x01008df1 Thumb Code 66 n32wb03x_adc.o(i.ADC_DeInit) + ADC_Enable 0x01008e45 Thumb Code 20 n32wb03x_adc.o(i.ADC_Enable) + ADC_EnableBypassFilter 0x01008e59 Thumb Code 48 n32wb03x_adc.o(i.ADC_EnableBypassFilter) + ADC_EnableTS 0x01008ea9 Thumb Code 18 n32wb03x_adc.o(i.ADC_EnableTS) + ADC_GetDat 0x01008ebb Thumb Code 6 n32wb03x_adc.o(i.ADC_GetDat) + ADC_GetFlagStatus 0x01008ec1 Thumb Code 14 n32wb03x_adc.o(i.ADC_GetFlagStatus) + ADC_SetOverSampleCounter 0x01008ed1 Thumb Code 18 n32wb03x_adc.o(i.ADC_SetOverSampleCounter) + AppBootset_CmdBsdump 0x01008ee9 Thumb Code 48 app_bootset.o(i.AppBootset_CmdBsdump) + AppBootset_CmdBsset 0x01008f1d Thumb Code 410 app_bootset.o(i.AppBootset_CmdBsset) + AppCli_Init 0x0100924d Thumb Code 30 app_cli.o(i.AppCli_Init) + AppParams_CmdParam 0x01009275 Thumb Code 234 app_params.o(i.AppParams_CmdParam) + DMA_ClearFlag 0x01009e11 Thumb Code 4 n32wb03x_dma.o(i.DMA_ClearFlag) + DMA_DeInit 0x01009e15 Thumb Code 106 n32wb03x_dma.o(i.DMA_DeInit) + DMA_EnableChannel 0x01009e9d Thumb Code 20 n32wb03x_dma.o(i.DMA_EnableChannel) + DMA_GetFlagStatus 0x01009eb5 Thumb Code 14 n32wb03x_dma.o(i.DMA_GetFlagStatus) + DMA_Init 0x01009ec5 Thumb Code 58 n32wb03x_dma.o(i.DMA_Init) + DMA_RequestRemap 0x01009f05 Thumb Code 14 n32wb03x_dma.o(i.DMA_RequestRemap) + EXTI_ClrITPendBit 0x01009f15 Thumb Code 6 n32wb03x_exti.o(i.EXTI_ClrITPendBit) + EXTI_GetITStatus 0x01009f21 Thumb Code 24 n32wb03x_exti.o(i.EXTI_GetITStatus) + EXTI_InitPeripheral 0x01009f3d Thumb Code 108 n32wb03x_exti.o(i.EXTI_InitPeripheral) + GPIO_InitPeripheral 0x01009fad Thumb Code 184 n32wb03x_gpio.o(i.GPIO_InitPeripheral) + GPIO_InitStruct 0x0100a065 Thumb Code 22 n32wb03x_gpio.o(i.GPIO_InitStruct) + GPIO_ResetBits 0x0100a081 Thumb Code 4 n32wb03x_gpio.o(i.GPIO_ResetBits) + GPIO_SetBits 0x0100a085 Thumb Code 4 n32wb03x_gpio.o(i.GPIO_SetBits) + GPIO_TogglePin 0x0100a089 Thumb Code 8 n32wb03x_gpio.o(i.GPIO_TogglePin) + HardFault_Handler 0x0100a091 Thumb Code 58 n32wb03x_it.o(i.HardFault_Handler) + LedBlink 0x0100a141 Thumb Code 8 app_gpio.o(i.LedBlink) + LedInit 0x0100a149 Thumb Code 64 app_gpio.o(i.LedInit) + LedOff 0x0100a195 Thumb Code 8 app_gpio.o(i.LedOff) + LedOn 0x0100a19d Thumb Code 8 app_gpio.o(i.LedOn) + NVIC_Init 0x0100a1a5 Thumb Code 102 misc.o(i.NVIC_Init) + OTPTrim_Read 0x0100a21d Thumb Code 186 system_n32wb03x.o(i.OTPTrim_Read) + Qflash_Erase_Sector 0x0100a2e9 Thumb Code 30 n32wb03x_qflash.o(i.Qflash_Erase_Sector) + Qflash_Init 0x0100a30d Thumb Code 30 n32wb03x_qflash.o(i.Qflash_Init) + Qflash_Write 0x0100a345 Thumb Code 30 n32wb03x_qflash.o(i.Qflash_Write) + RCC_ConfigAdcClk 0x0100a369 Thumb Code 14 n32wb03x_rcc.o(i.RCC_ConfigAdcClk) + RCC_EnableAHBPeriphClk 0x0100a37d Thumb Code 18 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) + RCC_EnableAHBPeriphReset 0x0100a395 Thumb Code 18 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphReset) + RCC_EnableAPB2PeriphClk 0x0100a3ad Thumb Code 18 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) + RCC_Enable_ADC_CLK_SRC_AUDIOPLL 0x0100a3c5 Thumb Code 22 n32wb03x_rcc.o(i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL) + RCC_GetClocksFreqValue 0x0100a3e1 Thumb Code 90 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) + SVC_Handler 0x0100a455 Thumb Code 2 port.o(i.SVC_Handler) + SysTick_Handler 0x0100a459 Thumb Code 32 port.o(i.SysTick_Handler) + SystemGetMacAddr 0x0100a47d Thumb Code 44 system_n32wb03x.o(i.SystemGetMacAddr) + SystemInit 0x0100a4b1 Thumb Code 346 system_n32wb03x.o(i.SystemInit) + SystemTrimValueGet 0x0100a631 Thumb Code 44 system_n32wb03x.o(i.SystemTrimValueGet) + USART1_IRQHandler 0x0100a661 Thumb Code 8 n32wb03x_it.o(i.USART1_IRQHandler) + USART_ConfigInt 0x0100a669 Thumb Code 50 n32wb03x_usart.o(i.USART_ConfigInt) + USART_Enable 0x0100a69d Thumb Code 22 n32wb03x_usart.o(i.USART_Enable) + USART_EnableDMA 0x0100a6b9 Thumb Code 16 n32wb03x_usart.o(i.USART_EnableDMA) + USART_GetFlagStatus 0x0100a6c9 Thumb Code 14 n32wb03x_usart.o(i.USART_GetFlagStatus) + USART_GetIntStatus 0x0100a6d7 Thumb Code 64 n32wb03x_usart.o(i.USART_GetIntStatus) + USART_Init 0x0100a719 Thumb Code 120 n32wb03x_usart.o(i.USART_Init) + USART_ReceiveData 0x0100a7a1 Thumb Code 8 n32wb03x_usart.o(i.USART_ReceiveData) + USART_SendData 0x0100a7a9 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData) + __0printf 0x0100a7b1 Thumb Code 24 printfa.o(i.__0printf) + __1printf 0x0100a7b1 Thumb Code 0 printfa.o(i.__0printf) + __2printf 0x0100a7b1 Thumb Code 0 printfa.o(i.__0printf) + __c89printf 0x0100a7b1 Thumb Code 0 printfa.o(i.__0printf) + printf 0x0100a7b1 Thumb Code 0 printfa.o(i.__0printf) + __0sprintf 0x0100a7d1 Thumb Code 36 printfa.o(i.__0sprintf) + __1sprintf 0x0100a7d1 Thumb Code 0 printfa.o(i.__0sprintf) + __2sprintf 0x0100a7d1 Thumb Code 0 printfa.o(i.__0sprintf) + __c89sprintf 0x0100a7d1 Thumb Code 0 printfa.o(i.__0sprintf) + sprintf 0x0100a7d1 Thumb Code 0 printfa.o(i.__0sprintf) + __0vsnprintf 0x0100a7f9 Thumb Code 40 printfa.o(i.__0vsnprintf) + __1vsnprintf 0x0100a7f9 Thumb Code 0 printfa.o(i.__0vsnprintf) + __2vsnprintf 0x0100a7f9 Thumb Code 0 printfa.o(i.__0vsnprintf) + __c89vsnprintf 0x0100a7f9 Thumb Code 0 printfa.o(i.__0vsnprintf) + vsnprintf 0x0100a7f9 Thumb Code 0 printfa.o(i.__0vsnprintf) + __ARM_clz 0x0100a825 Thumb Code 46 depilogue.o(i.__ARM_clz) + __aeabi_errno_addr 0x0100a855 Thumb Code 4 errno.o(i.__aeabi_errno_addr) + __rt_errno_addr 0x0100a855 Thumb Code 0 errno.o(i.__aeabi_errno_addr) + app_ble_adv_init 0x0100b129 Thumb Code 90 app_ble.o(i.app_ble_adv_init) + app_ble_adv_msg_handler 0x0100b19d Thumb Code 2 app_ble.o(i.app_ble_adv_msg_handler) + app_ble_connected 0x0100b1a1 Thumb Code 38 app_ble.o(i.app_ble_connected) + app_ble_disconnected 0x0100b1e5 Thumb Code 40 app_ble.o(i.app_ble_disconnected) + app_ble_gap_params_init 0x0100b241 Thumb Code 118 app_ble.o(i.app_ble_gap_params_init) + app_ble_init 0x0100b2d9 Thumb Code 58 app_ble.o(i.app_ble_init) + app_ble_msg_handler 0x0100b325 Thumb Code 90 app_ble.o(i.app_ble_msg_handler) + app_ble_proto_cli_exec 0x0100b391 Thumb Code 148 app_ble_proto.o(i.app_ble_proto_cli_exec) + app_ble_proto_cli_rsp 0x0100b479 Thumb Code 10 app_ble_proto.o(i.app_ble_proto_cli_rsp) + app_ble_proto_init 0x0100b48d Thumb Code 14 app_ble_proto.o(i.app_ble_proto_init) + app_ble_proto_log_get 0x0100b4a1 Thumb Code 6 app_ble_proto.o(i.app_ble_proto_log_get) + app_ble_proto_log_set 0x0100b4ad Thumb Code 12 app_ble_proto.o(i.app_ble_proto_log_set) + app_ble_proto_on_disconnect 0x0100b4bd Thumb Code 20 app_ble_proto.o(i.app_ble_proto_on_disconnect) + app_ble_proto_rx_bytes 0x0100b4d5 Thumb Code 380 app_ble_proto.o(i.app_ble_proto_rx_bytes) + app_ble_proto_send_frame 0x0100b675 Thumb Code 158 app_ble_proto.o(i.app_ble_proto_send_frame) + app_ble_sec_init 0x0100b72d Thumb Code 70 app_ble.o(i.app_ble_sec_init) + app_dis_add_dis 0x0100b859 Thumb Code 74 app_dis.o(i.app_dis_add_dis) + app_entry_point_handler 0x0100b8b5 Thumb Code 238 ns_ble_task.o(i.app_entry_point_handler) + app_fan_get_rpm 0x0100b9b9 Thumb Code 4 app_info.o(i.app_fan_get_rpm) + app_info_chip_temp_c10 0x0100b9c1 Thumb Code 74 app_info.o(i.app_info_chip_temp_c10) + app_info_handle_query 0x0100ba1d Thumb Code 70 app_info.o(i.app_info_handle_query) + app_info_last_temp_raw 0x0100ba69 Thumb Code 6 app_info.o(i.app_info_last_temp_raw) + app_info_tlv_snapshot 0x0100ba75 Thumb Code 34 app_info.o(i.app_info_tlv_snapshot) + app_info_vdd_mv 0x0100baa1 Thumb Code 28 app_info.o(i.app_info_vdd_mv) + app_ota_abort 0x0100bb89 Thumb Code 18 app_ota.o(i.app_ota_abort) + app_ota_handle_frame 0x0100bba1 Thumb Code 268 app_ota.o(i.app_ota_handle_frame) + app_params_get 0x0100bcbd Thumb Code 4 app_params.o(i.app_params_get) + app_params_init 0x0100bcc5 Thumb Code 76 app_params.o(i.app_params_init) + app_rdtss_add_rdts 0x0100bd21 Thumb Code 82 app_rdtss.o(i.app_rdtss_add_rdts) + app_user_msg_handler 0x0100bf39 Thumb Code 2 app_ble.o(i.app_user_msg_handler) + attm_att_set_value 0x0100bf3d Thumb Code 172 lib_att.o(i.attm_att_set_value) + ble_up_on_cfm 0x0100c00d Thumb Code 14 ble_up.o(i.ble_up_on_cfm) + ble_up_poll 0x0100c021 Thumb Code 76 ble_up.o(i.ble_up_poll) + ble_up_reset 0x0100c079 Thumb Code 12 ble_up.o(i.ble_up_reset) + ble_up_write 0x0100c089 Thumb Code 58 ble_up.o(i.ble_up_write) + bsp_usart_init 0x0100c249 Thumb Code 196 bsp_usart.o(i.bsp_usart_init) + bsp_usart_read_byte 0x0100c325 Thumb Code 52 bsp_usart.o(i.bsp_usart_read_byte) + bsp_usart_rx_isr_handler 0x0100c35d Thumb Code 68 bsp_usart.o(i.bsp_usart_rx_isr_handler) + bsp_usart_tx_lock 0x0100c3b1 Thumb Code 28 bsp_usart.o(i.bsp_usart_tx_lock) + bsp_usart_tx_unlock 0x0100c3d1 Thumb Code 32 bsp_usart.o(i.bsp_usart_tx_unlock) + bsp_usart_write_dma 0x0100c3f5 Thumb Code 134 bsp_usart.o(i.bsp_usart_write_dma) + caiic_crc32 0x0100c48d Thumb Code 48 boot_crc32.o(i.caiic_crc32) + check_client_char_cfg 0x0100c4c1 Thumb Code 42 rdts_common.o(i.check_client_char_cfg) + cli_cmd_count 0x0100c4eb Thumb Code 4 cli_core.o(i.cli_cmd_count) + cli_cmd_name 0x0100c4f1 Thumb Code 18 cli_core.o(i.cli_cmd_name) + cli_exec_line 0x0100c509 Thumb Code 140 cli_core.o(i.cli_exec_line) + cli_printf 0x0100c5bd Thumb Code 36 cli_core.o(i.cli_printf) + cli_set_output 0x0100c67d Thumb Code 6 cli_core.o(i.cli_set_output) + cli_write 0x0100c689 Thumb Code 30 cli_core.o(i.cli_write) + diss_check_val_len 0x0100c6ad Thumb Code 42 diss.o(i.diss_check_val_len) + diss_handle_to_value 0x0100c719 Thumb Code 52 diss.o(i.diss_handle_to_value) + diss_prf_itf_get 0x0100c7ed Thumb Code 4 diss.o(i.diss_prf_itf_get) + diss_task_init 0x0100c891 Thumb Code 28 diss_task.o(i.diss_task_init) + diss_value_to_handle 0x0100c9ed Thumb Code 58 diss.o(i.diss_value_to_handle) + eTaskGetState 0x0100ca29 Thumb Code 82 tasks.o(i.eTaskGetState) + fputc 0x0100ca89 Thumb Code 54 bsp_usart.o(i.fputc) + get_cfg_handle 0x0100dc4d Thumb Code 98 rdts_common.o(i.get_cfg_handle) + get_value_handle 0x0100dcb9 Thumb Code 78 rdts_common.o(i.get_value_handle) + llhwc_modem_setmode 0x0100df59 Thumb Code 44 rwip_driver.o(i.llhwc_modem_setmode) + llhwc_phy_prerx_flash 0x0100df89 Thumb Code 172 rwip_driver.o(i.llhwc_phy_prerx_flash) + main 0x0100e149 Thumb Code 136 main.o(i.main) + ns_EXTI4_12_IRQHandler 0x0100e2e9 Thumb Code 76 ns_ble.o(i.ns_EXTI4_12_IRQHandler) + ns_HardFault_Handler 0x0100e345 Thumb Code 26 ns_ble.o(i.ns_HardFault_Handler) + ns_ble_add_prf_func_register 0x0100e36d Thumb Code 28 ns_ble.o(i.ns_ble_add_prf_func_register) + ns_ble_add_svc 0x0100e38d Thumb Code 34 ns_ble.o(i.ns_ble_add_svc) + ns_ble_adv_fsm_next 0x0100e3b9 Thumb Code 202 ns_ble.o(i.ns_ble_adv_fsm_next) + ns_ble_adv_init 0x0100e495 Thumb Code 58 ns_ble.o(i.ns_ble_adv_init) + ns_ble_adv_start 0x0100e4dd Thumb Code 72 ns_ble.o(i.ns_ble_adv_start) + ns_ble_adv_stop 0x0100e52d Thumb Code 66 ns_ble.o(i.ns_ble_adv_stop) + ns_ble_delete_init 0x0100e579 Thumb Code 46 ns_ble.o(i.ns_ble_delete_init) + ns_ble_delete_scan 0x0100e5b5 Thumb Code 42 ns_ble.o(i.ns_ble_delete_scan) + ns_ble_disconnect 0x0100e5ed Thumb Code 34 ns_ble.o(i.ns_ble_disconnect) + ns_ble_gap_init 0x0100e619 Thumb Code 70 ns_ble.o(i.ns_ble_gap_init) + ns_ble_get_connection_num 0x0100e685 Thumb Code 32 ns_ble.o(i.ns_ble_get_connection_num) + ns_ble_list_set_ral 0x0100e6a9 Thumb Code 76 ns_ble.o(i.ns_ble_list_set_ral) + ns_ble_lsc_config 0x0100e6f9 Thumb Code 106 ns_ble.o(i.ns_ble_lsc_config) + ns_ble_mtu_set 0x0100e77d Thumb Code 40 ns_ble.o(i.ns_ble_mtu_set) + ns_ble_prf_task_register 0x0100e7b1 Thumb Code 34 ns_ble.o(i.ns_ble_prf_task_register) + ns_ble_scan_data_find 0x0100e7d9 Thumb Code 72 ns_ble.o(i.ns_ble_scan_data_find) + ns_ble_stack_init 0x0100e821 Thumb Code 448 ns_ble.o(i.ns_ble_stack_init) + ns_ble_start_init 0x0100ea99 Thumb Code 260 ns_ble.o(i.ns_ble_start_init) + ns_ble_start_scan 0x0100ebbd Thumb Code 178 ns_ble.o(i.ns_ble_start_scan) + ns_ble_stop_init 0x0100ec89 Thumb Code 42 ns_ble.o(i.ns_ble_stop_init) + ns_ble_stop_scan 0x0100ecc1 Thumb Code 48 ns_ble.o(i.ns_ble_stop_scan) + ns_ble_update_param 0x0100ecfd Thumb Code 112 ns_ble.o(i.ns_ble_update_param) + ns_bond_last_bonded_addr 0x0100edbd Thumb Code 48 ns_sec.o(i.ns_bond_last_bonded_addr) + ns_bond_last_bonded_peer_id 0x0100eded Thumb Code 48 ns_sec.o(i.ns_bond_last_bonded_peer_id) + ns_bond_last_bonded_ral_info 0x0100ee1d Thumb Code 92 ns_sec.o(i.ns_bond_last_bonded_ral_info) + ns_bond_resolv_addr_start 0x0100ee81 Thumb Code 92 ns_sec.o(i.ns_bond_resolv_addr_start) + ns_bond_search_addr_irk 0x0100eee1 Thumb Code 110 ns_sec.o(i.ns_bond_search_addr_irk) + ns_peripheral_config 0x0100ef5d Thumb Code 162 ns_ble.o(i.ns_peripheral_config) + ns_sec_bond_store_evt_handler 0x0100f031 Thumb Code 308 ns_sec.o(i.ns_sec_bond_store_evt_handler) + ns_sec_get_bond_status 0x0100f191 Thumb Code 12 ns_sec.o(i.ns_sec_get_bond_status) + ns_sec_get_iocap 0x0100f1a1 Thumb Code 6 ns_sec.o(i.ns_sec_get_iocap) + ns_sec_init 0x0100f1ad Thumb Code 94 ns_sec.o(i.ns_sec_init) + ns_sleep_lock_acquire 0x0100f215 Thumb Code 20 ns_sleep.o(i.ns_sleep_lock_acquire) + ns_sleep_lock_release 0x0100f22d Thumb Code 16 ns_sleep.o(i.ns_sleep_lock_release) + ns_timer_api_process_handler 0x0100f241 Thumb Code 166 ns_timer.o(i.ns_timer_api_process_handler) + prf_add_profile 0x0100f6d5 Thumb Code 132 prf.o(i.prf_add_profile) + prf_dst_task_get 0x0100f75d Thumb Code 16 prf.o(i.prf_dst_task_get) + prf_env_get 0x0100f76d Thumb Code 44 prf.o(i.prf_env_get) + prf_get_id_from_task 0x0100f79d Thumb Code 50 prf.o(i.prf_get_id_from_task) + prf_get_itf_func_register 0x0100f7d5 Thumb Code 34 prf.o(i.prf_get_itf_func_register) + prf_get_task_from_id 0x0100f7fd Thumb Code 50 prf.o(i.prf_get_task_from_id) + prf_init 0x0100f835 Thumb Code 170 prf.o(i.prf_init) + pvPortMalloc 0x0100fc95 Thumb Code 230 heap_4.o(i.pvPortMalloc) + pvTaskIncrementMutexHeldCount 0x0100fd89 Thumb Code 20 tasks.o(i.pvTaskIncrementMutexHeldCount) + pxPortInitialiseStack 0x0100fda1 Thumb Code 30 port.o(i.pxPortInitialiseStack) + rdtss_get_att_handle 0x0100ff83 Thumb Code 28 rdts_common.o(i.rdtss_get_att_handle) + rdtss_get_att_idx 0x0100ff9f Thumb Code 40 rdts_common.o(i.rdtss_get_att_idx) + rdtss_init_ccc_values 0x01010061 Thumb Code 160 rdtss_task.o(i.rdtss_init_ccc_values) + rdtss_prf_itf_get 0x01010105 Thumb Code 4 rdtss.o(i.rdtss_prf_itf_get) + rdtss_send_notify 0x0101010d Thumb Code 70 app_rdtss.o(i.rdtss_send_notify) + rdtss_set_ccc_value 0x01010161 Thumb Code 52 rdtss_task.o(i.rdtss_set_ccc_value) + rdtss_task_init 0x01010195 Thumb Code 28 rdtss_task.o(i.rdtss_task_init) + rwip_init 0x01010549 Thumb Code 198 rwip.o(i.rwip_init) + rwip_slp_isr 0x01010661 Thumb Code 198 rwip_driver.o(i.rwip_slp_isr) + uxListRemove 0x0101075d Thumb Code 38 list.o(i.uxListRemove) + uxTaskGetNumberOfTasks 0x01010785 Thumb Code 6 tasks.o(i.uxTaskGetNumberOfTasks) + uxTaskGetSystemState 0x01010791 Thumb Code 134 tasks.o(i.uxTaskGetSystemState) + vListInitialise 0x01010829 Thumb Code 22 list.o(i.vListInitialise) + vListInitialiseItem 0x0101083f Thumb Code 6 list.o(i.vListInitialiseItem) + vListInsert 0x01010845 Thumb Code 50 list.o(i.vListInsert) + vListInsertEnd 0x01010877 Thumb Code 24 list.o(i.vListInsertEnd) + vPortEnterCritical 0x01010891 Thumb Code 20 port.o(i.vPortEnterCritical) + vPortExitCritical 0x010108a9 Thumb Code 22 port.o(i.vPortExitCritical) + vPortFree 0x010108c5 Thumb Code 64 heap_4.o(i.vPortFree) + vPortYield 0x01010909 Thumb Code 18 port.o(i.vPortYield) + vTaskDelay 0x01010921 Thumb Code 44 tasks.o(i.vTaskDelay) + vTaskInternalSetTimeOutState 0x01010951 Thumb Code 12 tasks.o(i.vTaskInternalSetTimeOutState) + vTaskList 0x01010961 Thumb Code 188 tasks.o(i.vTaskList) + vTaskMissedYield 0x01010a31 Thumb Code 8 tasks.o(i.vTaskMissedYield) + vTaskPlaceOnEventList 0x01010a3d Thumb Code 32 tasks.o(i.vTaskPlaceOnEventList) + vTaskPriorityDisinheritAfterTimeout 0x01010a61 Thumb Code 106 tasks.o(i.vTaskPriorityDisinheritAfterTimeout) + vTaskStartScheduler 0x01010ad5 Thumb Code 60 tasks.o(i.vTaskStartScheduler) + vTaskSuspendAll 0x01010b25 Thumb Code 10 tasks.o(i.vTaskSuspendAll) + vTaskSwitchContext 0x01010b35 Thumb Code 92 tasks.o(i.vTaskSwitchContext) + xPortGetFreeHeapSize 0x01010b99 Thumb Code 6 heap_4.o(i.xPortGetFreeHeapSize) + xPortGetMinimumEverFreeHeapSize 0x01010ba5 Thumb Code 6 heap_4.o(i.xPortGetMinimumEverFreeHeapSize) + xPortStartScheduler 0x01010bb1 Thumb Code 62 port.o(i.xPortStartScheduler) + xQueueCreateMutex 0x01010c01 Thumb Code 36 queue.o(i.xQueueCreateMutex) + xQueueGenericCreate 0x01010c25 Thumb Code 68 queue.o(i.xQueueGenericCreate) + xQueueGenericReset 0x01010c69 Thumb Code 110 queue.o(i.xQueueGenericReset) + xQueueGenericSend 0x01010cd7 Thumb Code 398 queue.o(i.xQueueGenericSend) + xQueueGenericSendFromISR 0x01010e65 Thumb Code 142 queue.o(i.xQueueGenericSendFromISR) + xQueueReceive 0x01010ef3 Thumb Code 322 queue.o(i.xQueueReceive) + xQueueSemaphoreTake 0x01011035 Thumb Code 370 queue.o(i.xQueueSemaphoreTake) + xTaskCheckForTimeOut 0x010111a9 Thumb Code 94 tasks.o(i.xTaskCheckForTimeOut) + xTaskCreate 0x0101120d Thumb Code 348 tasks.o(i.xTaskCreate) + xTaskGetSchedulerState 0x01011385 Thumb Code 26 tasks.o(i.xTaskGetSchedulerState) + xTaskGetTickCount 0x010113a5 Thumb Code 6 tasks.o(i.xTaskGetTickCount) + xTaskIncrementTick 0x010113b1 Thumb Code 202 tasks.o(i.xTaskIncrementTick) + xTaskPriorityDisinherit 0x01011485 Thumb Code 96 tasks.o(i.xTaskPriorityDisinherit) + xTaskPriorityInherit 0x010114ed Thumb Code 110 tasks.o(i.xTaskPriorityInherit) + xTaskRemoveFromEventList 0x01011565 Thumb Code 88 tasks.o(i.xTaskRemoveFromEventList) + xTaskResumeAll 0x010115c9 Thumb Code 186 tasks.o(i.xTaskResumeAll) + TRIM_READ_CMD_CODE 0x01011690 Data 320 system_n32wb03x.o(.constdata) + CMD_RDID 0x010117d0 Data 152 system_n32wb03x.o(.constdata) + const_qflash_cmd 0x01011874 Data 804 n32wb03x_qflash.o(.constdata) + diss_att_db 0x01011bb8 Data 152 diss.o(.constdata) + diss_itf 0x01011c50 Data 16 diss.o(.constdata) + rdtss_itf 0x01011c78 Data 16 rdtss.o(.constdata) + app_sec_msg_handler_list 0x01011cd0 Data 40 ns_sec.o(.constdata) + app_sec_handlers 0x01011cf8 Data 8 ns_sec.o(.constdata) + TASK_DESC_APP_M 0x01012194 Data 12 ns_ble_task.o(.constdata) + app_dis_msg_handler_list 0x010121a0 Data 8 app_dis.o(.constdata) + app_dis_handlers 0x010121a8 Data 8 app_dis.o(.constdata) + app_rdtss_handlers 0x010121b0 Data 8 app_rdtss.o(.constdata) + app_rdts_svc_uuid 0x010121b8 Data 16 app_rdtss.o(.constdata) + app_rdts_att_db 0x010121c8 Data 242 app_rdtss.o(.constdata) + app_rdtss_msg_handler_list 0x010122bc Data 24 app_rdtss.o(.constdata) + __ctype_table 0x01012346 Data 129 ctype_o.o(.constdata) + Region$$Table$$Base 0x01012610 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x01012630 Number 0 anon$$obj.o(Region$$Table) rwip_rst_state 0x20000000 Data 0 symbol_g15.obj ABSOLUTE ecc_env 0x20000004 Data 0 symbol_g15.obj ABSOLUTE aa_gen 0x20000010 Data 0 symbol_g15.obj ABSOLUTE @@ -3956,19 +4083,19 @@ Image Symbol Table user_EXTI4_12_IRQHandler 0x20004044 Data 4 ns_ble.o(.data) app_state 0x20004736 Data 1 ns_ble_task.o(.data) notify_en 0x20004737 Data 1 app_rdtss.o(.data) - pxCurrentTCB 0x20004788 Data 4 tasks.o(.data) - trim_stored 0x200047e4 Data 52 system_n32wb03x.o(.bss) - prf_env 0x20004b40 Data 200 prf.o(.bss) - get_itf 0x20004c08 Data 84 prf.o(.bss) - app_sec_bond_data 0x20004cac Data 58 ns_sec.o(.bss) - app_sec_env 0x20004ce8 Data 32 ns_sec.o(.bss) - add_prf_evn 0x20004d08 Data 44 ns_ble.o(.bss) - ble_prf_evn 0x20004d34 Data 84 ns_ble.o(.bss) - app_env 0x20004d88 Data 132 ns_ble.o(.bss) - gap_env 0x20004e0c Data 42 ns_ble.o(.bss) - adv_env 0x20004e38 Data 96 ns_ble.o(.bss) - scan_env 0x20004e98 Data 32 ns_ble.o(.bss) - __initial_sp 0x2000b370 Data 0 startup_n32wb03x.o(STACK) + pxCurrentTCB 0x2000478c Data 4 tasks.o(.data) + trim_stored 0x200047ec Data 52 system_n32wb03x.o(.bss) + prf_env 0x20004b48 Data 200 prf.o(.bss) + get_itf 0x20004c10 Data 84 prf.o(.bss) + app_sec_bond_data 0x20004cb4 Data 58 ns_sec.o(.bss) + app_sec_env 0x20004cf0 Data 32 ns_sec.o(.bss) + add_prf_evn 0x20004d10 Data 44 ns_ble.o(.bss) + ble_prf_evn 0x20004d3c Data 84 ns_ble.o(.bss) + app_env 0x20004d90 Data 132 ns_ble.o(.bss) + gap_env 0x20004e14 Data 42 ns_ble.o(.bss) + adv_env 0x20004e40 Data 96 ns_ble.o(.bss) + scan_env 0x20004ea0 Data 32 ns_ble.o(.bss) + __initial_sp 0x2000b3a8 Data 0 startup_n32wb03x.o(STACK) @@ -3978,439 +4105,456 @@ Memory Map of the image Image Entry point : 0x010080c1 - Load Region LR_IROM1 (Base: 0x01008000, Size: 0x0000a2ac, Max: 0x00038000, ABSOLUTE, COMPRESSED[0x0000a0d0]) + Load Region LR_IROM1 (Base: 0x01008000, Size: 0x0000ae1c, Max: 0x00038000, ABSOLUTE, COMPRESSED[0x0000ac38]) - Execution Region ER_IROM1 (Exec base: 0x01008000, Load base: 0x01008000, Size: 0x00009ac8, Max: 0x00038000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x01008000, Load base: 0x01008000, Size: 0x0000a630, Max: 0x00038000, ABSOLUTE) 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 5494 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) - 0x010080c0 0x010080c0 0x00000004 Code RO 5815 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) - 0x010080c4 0x010080c4 0x00000004 Code RO 5818 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) - 0x010080c8 0x010080c8 0x00000000 Code RO 5820 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) - 0x010080c8 0x010080c8 0x00000000 Code RO 5822 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) - 0x010080c8 0x010080c8 0x00000008 Code RO 5823 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) - 0x010080d0 0x010080d0 0x00000000 Code RO 5825 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) - 0x010080d0 0x010080d0 0x00000000 Code RO 5827 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) - 0x010080d0 0x010080d0 0x00000004 Code RO 5816 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) + 0x010080c0 0x010080c0 0x00000000 Code RO 5572 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) + 0x010080c0 0x010080c0 0x00000004 Code RO 5895 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) + 0x010080c4 0x010080c4 0x00000004 Code RO 5898 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) + 0x010080c8 0x010080c8 0x00000000 Code RO 5900 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) + 0x010080c8 0x010080c8 0x00000000 Code RO 5902 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) + 0x010080c8 0x010080c8 0x00000008 Code RO 5903 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) + 0x010080d0 0x010080d0 0x00000000 Code RO 5905 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) + 0x010080d0 0x010080d0 0x00000000 Code RO 5907 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) + 0x010080d0 0x010080d0 0x00000004 Code RO 5896 .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 4544 .emb_text n32wb03x_it.o - 0x010080f0 0x010080f0 0x00000078 Code RO 5429 .emb_text port.o + 0x010080e4 0x010080e4 0x0000000c Code RO 4550 .emb_text n32wb03x_it.o + 0x010080f0 0x010080f0 0x00000078 Code RO 5507 .emb_text port.o 0x01008168 0x01008168 0x0000001c Code RO 4 .text startup_n32wb03x.o - 0x01008184 0x01008184 0x0000002c Code RO 5497 .text mc_p.l(uidiv.o) - 0x010081b0 0x010081b0 0x00000028 Code RO 5499 .text mc_p.l(idiv.o) - 0x010081d8 0x010081d8 0x00000060 Code RO 5501 .text mc_p.l(uldiv.o) - 0x01008238 0x01008238 0x00000024 Code RO 5503 .text mc_p.l(rand.o) - 0x0100825c 0x0100825c 0x00000024 Code RO 5506 .text mc_p.l(memcpya.o) - 0x01008280 0x01008280 0x00000024 Code RO 5508 .text mc_p.l(memseta.o) - 0x010082a4 0x010082a4 0x0000000e Code RO 5510 .text mc_p.l(strlen.o) - 0x010082b2 0x010082b2 0x0000001c Code RO 5512 .text mc_p.l(strcmp.o) - 0x010082ce 0x010082ce 0x00000014 Code RO 5514 .text mc_p.l(memchr.o) - 0x010082e2 0x010082e2 0x0000001a Code RO 5516 .text mc_p.l(memcmp.o) - 0x010082fc 0x010082fc 0x00000012 Code RO 5518 .text mc_p.l(strcpy.o) - 0x0100830e 0x0100830e 0x0000001e Code RO 5520 .text mc_p.l(strncmp.o) - 0x0100832c 0x0100832c 0x000000b2 Code RO 5785 .text mf_p.l(fadd.o) - 0x010083de 0x010083de 0x0000007a Code RO 5787 .text mf_p.l(fmul.o) - 0x01008458 0x01008458 0x00000164 Code RO 5791 .text mf_p.l(dadd.o) - 0x010085bc 0x010085bc 0x000000d0 Code RO 5793 .text mf_p.l(dmul.o) - 0x0100868c 0x0100868c 0x000000f0 Code RO 5795 .text mf_p.l(ddiv.o) - 0x0100877c 0x0100877c 0x0000000e Code RO 5799 .text mf_p.l(ffltui.o) - 0x0100878a 0x0100878a 0x00000002 PAD - 0x0100878c 0x0100878c 0x0000001c Code RO 5801 .text mf_p.l(dfltui.o) - 0x010087a8 0x010087a8 0x0000001c Code RO 5803 .text mf_p.l(dfltul.o) - 0x010087c4 0x010087c4 0x00000032 Code RO 5805 .text mf_p.l(ffixi.o) - 0x010087f6 0x010087f6 0x00000002 PAD - 0x010087f8 0x010087f8 0x00000040 Code RO 5809 .text mf_p.l(dfixul.o) - 0x01008838 0x01008838 0x00000028 Code RO 5811 .text mf_p.l(f2d.o) - 0x01008860 0x01008860 0x00000038 Code RO 5813 .text mf_p.l(d2f.o) - 0x01008898 0x01008898 0x00000020 Code RO 5829 .text mc_p.l(llshl.o) - 0x010088b8 0x010088b8 0x00000022 Code RO 5831 .text mc_p.l(llushr.o) - 0x010088da 0x010088da 0x00000026 Code RO 5833 .text mc_p.l(llsshr.o) - 0x01008900 0x01008900 0x00000000 Code RO 5835 .text mc_p.l(iusefp.o) - 0x01008900 0x01008900 0x00000082 Code RO 5836 .text mf_p.l(fepilogue.o) - 0x01008982 0x01008982 0x000000be Code RO 5838 .text mf_p.l(depilogue.o) - 0x01008a40 0x01008a40 0x00000028 Code RO 5842 .text mf_p.l(cdrcmple.o) - 0x01008a68 0x01008a68 0x00000024 Code RO 5844 .text mc_p.l(init.o) - 0x01008a8c 0x01008a8c 0x00000056 Code RO 5848 .text mc_p.l(__dczerorl2.o) - 0x01008ae2 0x01008ae2 0x00000002 PAD - 0x01008ae4 0x01008ae4 0x0000000c Ven RO 5850 Veneer$$Code anon$$obj.o - 0x01008af0 0x01008af0 0x0000000c Ven RO 5851 Veneer$$Code anon$$obj.o - 0x01008afc 0x01008afc 0x0000000c Ven RO 5852 Veneer$$Code anon$$obj.o - 0x01008b08 0x01008b08 0x0000000c Ven RO 5853 Veneer$$Code anon$$obj.o - 0x01008b14 0x01008b14 0x0000000c Ven RO 5854 Veneer$$Code anon$$obj.o - 0x01008b20 0x01008b20 0x0000000c Ven RO 5855 Veneer$$Code anon$$obj.o - 0x01008b2c 0x01008b2c 0x0000000c Ven RO 5856 Veneer$$Code anon$$obj.o - 0x01008b38 0x01008b38 0x0000000c Ven RO 5857 Veneer$$Code anon$$obj.o - 0x01008b44 0x01008b44 0x0000000c Ven RO 5858 Veneer$$Code anon$$obj.o - 0x01008b50 0x01008b50 0x0000000c Ven RO 5859 Veneer$$Code anon$$obj.o - 0x01008b5c 0x01008b5c 0x0000000c Ven RO 5860 Veneer$$Code anon$$obj.o - 0x01008b68 0x01008b68 0x0000000c Ven RO 5861 Veneer$$Code anon$$obj.o - 0x01008b74 0x01008b74 0x0000000c Ven RO 5862 Veneer$$Code anon$$obj.o - 0x01008b80 0x01008b80 0x0000000c Ven RO 5863 Veneer$$Code anon$$obj.o - 0x01008b8c 0x01008b8c 0x0000000c Ven RO 5864 Veneer$$Code anon$$obj.o - 0x01008b98 0x01008b98 0x0000000c Ven RO 5865 Veneer$$Code anon$$obj.o - 0x01008ba4 0x01008ba4 0x0000000c Ven RO 5866 Veneer$$Code anon$$obj.o - 0x01008bb0 0x01008bb0 0x0000000c Ven RO 5867 Veneer$$Code anon$$obj.o - 0x01008bbc 0x01008bbc 0x00000006 Code RO 192 i.ADC_ClearFlag n32wb03x_adc.o - 0x01008bc2 0x01008bc2 0x0000000e Code RO 194 i.ADC_ConfigChannel n32wb03x_adc.o - 0x01008bd0 0x01008bd0 0x00000054 Code RO 199 i.ADC_ConverValueToTemperature n32wb03x_adc.o - 0x01008c24 0x01008c24 0x00000088 Code RO 200 i.ADC_ConverValueToVoltage n32wb03x_adc.o - 0x01008cac 0x01008cac 0x00000054 Code RO 201 i.ADC_DeInit n32wb03x_adc.o - 0x01008d00 0x01008d00 0x00000014 Code RO 202 i.ADC_Enable n32wb03x_adc.o - 0x01008d14 0x01008d14 0x00000050 Code RO 205 i.ADC_EnableBypassFilter n32wb03x_adc.o - 0x01008d64 0x01008d64 0x00000012 Code RO 210 i.ADC_EnableTS n32wb03x_adc.o - 0x01008d76 0x01008d76 0x00000006 Code RO 212 i.ADC_GetDat n32wb03x_adc.o - 0x01008d7c 0x01008d7c 0x0000000e Code RO 213 i.ADC_GetFlagStatus n32wb03x_adc.o - 0x01008d8a 0x01008d8a 0x00000002 PAD - 0x01008d8c 0x01008d8c 0x00000018 Code RO 218 i.ADC_SetOverSampleCounter n32wb03x_adc.o - 0x01008da4 0x01008da4 0x00000028 Code RO 4467 i.AppCli_Init app_cli.o - 0x01008dcc 0x01008dcc 0x00000434 Code RO 4469 i.CliTask app_cli.o - 0x01009200 0x01009200 0x00000078 Code RO 4371 i.CmdBleLog cli_core.o - 0x01009278 0x01009278 0x00000178 Code RO 4372 i.CmdDevInfo cli_core.o - 0x010093f0 0x010093f0 0x00000074 Code RO 4373 i.CmdHelp cli_core.o - 0x01009464 0x01009464 0x000000d0 Code RO 4374 i.CmdLed cli_core.o - 0x01009534 0x01009534 0x000000e8 Code RO 4375 i.CmdSysInfo cli_core.o - 0x0100961c 0x0100961c 0x00000098 Code RO 4376 i.CmdVersion cli_core.o - 0x010096b4 0x010096b4 0x00000004 Code RO 487 i.DMA_ClearFlag n32wb03x_dma.o - 0x010096b8 0x010096b8 0x00000088 Code RO 490 i.DMA_DeInit n32wb03x_dma.o - 0x01009740 0x01009740 0x00000018 Code RO 491 i.DMA_EnableChannel n32wb03x_dma.o - 0x01009758 0x01009758 0x0000000e Code RO 493 i.DMA_GetFlagStatus n32wb03x_dma.o - 0x01009766 0x01009766 0x00000002 PAD - 0x01009768 0x01009768 0x00000040 Code RO 495 i.DMA_Init n32wb03x_dma.o - 0x010097a8 0x010097a8 0x0000000e Code RO 496 i.DMA_RequestRemap n32wb03x_dma.o - 0x010097b6 0x010097b6 0x00000002 PAD - 0x010097b8 0x010097b8 0x0000000c Code RO 569 i.EXTI_ClrITPendBit n32wb03x_exti.o - 0x010097c4 0x010097c4 0x0000001c Code RO 572 i.EXTI_GetITStatus n32wb03x_exti.o - 0x010097e0 0x010097e0 0x00000070 Code RO 574 i.EXTI_InitPeripheral n32wb03x_exti.o - 0x01009850 0x01009850 0x000000b8 Code RO 634 i.GPIO_InitPeripheral n32wb03x_gpio.o - 0x01009908 0x01009908 0x0000001c Code RO 635 i.GPIO_InitStruct n32wb03x_gpio.o - 0x01009924 0x01009924 0x00000004 Code RO 640 i.GPIO_ResetBits n32wb03x_gpio.o - 0x01009928 0x01009928 0x00000004 Code RO 641 i.GPIO_SetBits n32wb03x_gpio.o - 0x0100992c 0x0100992c 0x00000008 Code RO 642 i.GPIO_TogglePin n32wb03x_gpio.o - 0x01009934 0x01009934 0x000000b0 Code RO 4545 i.HardFault_Handler n32wb03x_it.o - 0x010099e4 0x010099e4 0x00000008 Code RO 4788 i.LedBlink app_gpio.o - 0x010099ec 0x010099ec 0x0000004c Code RO 4789 i.LedInit app_gpio.o - 0x01009a38 0x01009a38 0x00000008 Code RO 4790 i.LedOff app_gpio.o - 0x01009a40 0x01009a40 0x00000008 Code RO 4791 i.LedOn app_gpio.o - 0x01009a48 0x01009a48 0x00000078 Code RO 159 i.NVIC_Init misc.o - 0x01009ac0 0x01009ac0 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o - 0x01009b8c 0x01009b8c 0x00000024 Code RO 1947 i.Qflash_Erase_Sector n32wb03x_qflash.o - 0x01009bb0 0x01009bb0 0x00000038 Code RO 1948 i.Qflash_Init n32wb03x_qflash.o - 0x01009be8 0x01009be8 0x00000024 Code RO 1950 i.Qflash_Write n32wb03x_qflash.o - 0x01009c0c 0x01009c0c 0x00000014 Code RO 748 i.RCC_ConfigAdcClk n32wb03x_rcc.o - 0x01009c20 0x01009c20 0x00000018 Code RO 762 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o - 0x01009c38 0x01009c38 0x00000018 Code RO 763 i.RCC_EnableAHBPeriphReset n32wb03x_rcc.o - 0x01009c50 0x01009c50 0x00000018 Code RO 766 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o - 0x01009c68 0x01009c68 0x0000001c Code RO 773 i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL n32wb03x_rcc.o - 0x01009c84 0x01009c84 0x00000074 Code RO 774 i.RCC_GetClocksFreqValue n32wb03x_rcc.o - 0x01009cf8 0x01009cf8 0x00000002 Code RO 5430 i.SVC_Handler port.o - 0x01009cfa 0x01009cfa 0x00000002 PAD - 0x01009cfc 0x01009cfc 0x00000024 Code RO 5431 i.SysTick_Handler port.o - 0x01009d20 0x01009d20 0x00000034 Code RO 13 i.SystemGetMacAddr system_n32wb03x.o - 0x01009d54 0x01009d54 0x00000180 Code RO 15 i.SystemInit system_n32wb03x.o - 0x01009ed4 0x01009ed4 0x00000030 Code RO 16 i.SystemTrimValueGet system_n32wb03x.o - 0x01009f04 0x01009f04 0x00000008 Code RO 4546 i.USART1_IRQHandler n32wb03x_it.o - 0x01009f0c 0x01009f0c 0x00000032 Code RO 1520 i.USART_ConfigInt n32wb03x_usart.o - 0x01009f3e 0x01009f3e 0x00000002 PAD - 0x01009f40 0x01009f40 0x0000001c Code RO 1525 i.USART_Enable n32wb03x_usart.o - 0x01009f5c 0x01009f5c 0x00000010 Code RO 1526 i.USART_EnableDMA n32wb03x_usart.o - 0x01009f6c 0x01009f6c 0x0000000e Code RO 1532 i.USART_GetFlagStatus n32wb03x_usart.o - 0x01009f7a 0x01009f7a 0x00000040 Code RO 1533 i.USART_GetIntStatus n32wb03x_usart.o - 0x01009fba 0x01009fba 0x00000002 PAD - 0x01009fbc 0x01009fbc 0x00000088 Code RO 1534 i.USART_Init n32wb03x_usart.o - 0x0100a044 0x0100a044 0x00000008 Code RO 1535 i.USART_ReceiveData n32wb03x_usart.o - 0x0100a04c 0x0100a04c 0x00000008 Code RO 1537 i.USART_SendData n32wb03x_usart.o - 0x0100a054 0x0100a054 0x00000020 Code RO 5757 i.__0printf mc_p.l(printfa.o) - 0x0100a074 0x0100a074 0x00000028 Code RO 5759 i.__0sprintf mc_p.l(printfa.o) - 0x0100a09c 0x0100a09c 0x0000002c Code RO 5762 i.__0vsnprintf mc_p.l(printfa.o) - 0x0100a0c8 0x0100a0c8 0x0000002e Code RO 5840 i.__ARM_clz mf_p.l(depilogue.o) - 0x0100a0f6 0x0100a0f6 0x00000002 PAD - 0x0100a0f8 0x0100a0f8 0x00000174 Code RO 5764 i._fp_digits mc_p.l(printfa.o) - 0x0100a26c 0x0100a26c 0x000006ec Code RO 5765 i._printf_core mc_p.l(printfa.o) - 0x0100a958 0x0100a958 0x00000020 Code RO 5766 i._printf_post_padding mc_p.l(printfa.o) - 0x0100a978 0x0100a978 0x0000002c Code RO 5767 i._printf_pre_padding mc_p.l(printfa.o) - 0x0100a9a4 0x0100a9a4 0x00000016 Code RO 5768 i._snputc mc_p.l(printfa.o) - 0x0100a9ba 0x0100a9ba 0x0000000a Code RO 5769 i._sputc mc_p.l(printfa.o) - 0x0100a9c4 0x0100a9c4 0x00000074 Code RO 4120 i.app_ble_adv_init app_ble.o - 0x0100aa38 0x0100aa38 0x00000002 Code RO 4121 i.app_ble_adv_msg_handler app_ble.o - 0x0100aa3a 0x0100aa3a 0x00000002 PAD - 0x0100aa3c 0x0100aa3c 0x00000044 Code RO 4122 i.app_ble_connected app_ble.o - 0x0100aa80 0x0100aa80 0x0000005c Code RO 4123 i.app_ble_disconnected app_ble.o - 0x0100aadc 0x0100aadc 0x00000098 Code RO 4124 i.app_ble_gap_params_init app_ble.o - 0x0100ab74 0x0100ab74 0x0000004c Code RO 4125 i.app_ble_init app_ble.o - 0x0100abc0 0x0100abc0 0x0000006c Code RO 4126 i.app_ble_msg_handler app_ble.o - 0x0100ac2c 0x0100ac2c 0x000000e8 Code RO 4569 i.app_ble_proto_cli_exec app_ble_proto.o - 0x0100ad14 0x0100ad14 0x00000014 Code RO 4570 i.app_ble_proto_cli_rsp app_ble_proto.o - 0x0100ad28 0x0100ad28 0x00000014 Code RO 4571 i.app_ble_proto_init app_ble_proto.o - 0x0100ad3c 0x0100ad3c 0x0000000c Code RO 4572 i.app_ble_proto_log_get app_ble_proto.o - 0x0100ad48 0x0100ad48 0x00000010 Code RO 4573 i.app_ble_proto_log_set app_ble_proto.o - 0x0100ad58 0x0100ad58 0x00000018 Code RO 4574 i.app_ble_proto_on_disconnect app_ble_proto.o - 0x0100ad70 0x0100ad70 0x000001a0 Code RO 4575 i.app_ble_proto_rx_bytes app_ble_proto.o - 0x0100af10 0x0100af10 0x000000b8 Code RO 4576 i.app_ble_proto_send_frame app_ble_proto.o - 0x0100afc8 0x0100afc8 0x00000050 Code RO 4128 i.app_ble_sec_init app_ble.o - 0x0100b018 0x0100b018 0x00000010 Code RO 3851 i.app_conn_params_update_evt_handler ns_ble_task.o - 0x0100b028 0x0100b028 0x000000cc Code RO 3452 i.app_create_advertising ns_ble.o - 0x0100b0f4 0x0100b0f4 0x0000005c Code RO 4005 i.app_dis_add_dis app_dis.o - 0x0100b150 0x0100b150 0x00000104 Code RO 3852 i.app_entry_point_handler ns_ble_task.o - 0x0100b254 0x0100b254 0x00000008 Code RO 4698 i.app_fan_get_rpm app_info.o - 0x0100b25c 0x0100b25c 0x0000005c Code RO 4699 i.app_info_chip_temp_c10 app_info.o - 0x0100b2b8 0x0100b2b8 0x0000004c Code RO 4700 i.app_info_handle_query app_info.o - 0x0100b304 0x0100b304 0x0000000c Code RO 4701 i.app_info_last_temp_raw app_info.o - 0x0100b310 0x0100b310 0x0000002c Code RO 4702 i.app_info_tlv_snapshot app_info.o - 0x0100b33c 0x0100b33c 0x00000020 Code RO 4703 i.app_info_vdd_mv app_info.o - 0x0100b35c 0x0100b35c 0x0000001c Code RO 3853 i.app_init_timeout_evt_handler ns_ble_task.o - 0x0100b378 0x0100b378 0x000000ac Code RO 3854 i.app_lsi_calib_evt_handler ns_ble_task.o - 0x0100b424 0x0100b424 0x00000018 Code RO 4645 i.app_ota_abort app_ota.o - 0x0100b43c 0x0100b43c 0x0000011c Code RO 4647 i.app_ota_handle_frame app_ota.o - 0x0100b558 0x0100b558 0x00000068 Code RO 4060 i.app_rdtss_add_rdts app_rdtss.o - 0x0100b5c0 0x0100b5c0 0x00000004 Code RO 3211 i.app_sec_msg_dflt_handler ns_sec.o - 0x0100b5c4 0x0100b5c4 0x00000078 Code RO 3453 i.app_set_adv_data ns_ble.o - 0x0100b63c 0x0100b63c 0x000000c4 Code RO 3454 i.app_set_scan_rsp_data ns_ble.o - 0x0100b700 0x0100b700 0x00000070 Code RO 3455 i.app_start_advertising ns_ble.o - 0x0100b770 0x0100b770 0x00000002 Code RO 4129 i.app_user_msg_handler app_ble.o - 0x0100b772 0x0100b772 0x00000002 PAD - 0x0100b774 0x0100b774 0x000000c0 Code RO 1987 i.attm_att_set_value lib_att.o - 0x0100b834 0x0100b834 0x00000010 Code RO 4226 i.ble_schedule_task main.o - 0x0100b844 0x0100b844 0x00000014 Code RO 4508 i.ble_up_on_cfm ble_up.o - 0x0100b858 0x0100b858 0x00000058 Code RO 4509 i.ble_up_poll ble_up.o - 0x0100b8b0 0x0100b8b0 0x00000010 Code RO 4510 i.ble_up_reset ble_up.o - 0x0100b8c0 0x0100b8c0 0x00000048 Code RO 4511 i.ble_up_write ble_up.o - 0x0100b908 0x0100b908 0x000000dc Code RO 4305 i.bsp_usart_init bsp_usart.o - 0x0100b9e4 0x0100b9e4 0x00000038 Code RO 4306 i.bsp_usart_read_byte bsp_usart.o - 0x0100ba1c 0x0100ba1c 0x00000054 Code RO 4308 i.bsp_usart_rx_isr_handler bsp_usart.o - 0x0100ba70 0x0100ba70 0x00000020 Code RO 4309 i.bsp_usart_tx_lock bsp_usart.o - 0x0100ba90 0x0100ba90 0x00000024 Code RO 4310 i.bsp_usart_tx_unlock bsp_usart.o - 0x0100bab4 0x0100bab4 0x00000098 Code RO 4311 i.bsp_usart_write_dma bsp_usart.o - 0x0100bb4c 0x0100bb4c 0x00000034 Code RO 4775 i.caiic_crc32 boot_crc32.o - 0x0100bb80 0x0100bb80 0x0000002a Code RO 3025 i.check_client_char_cfg rdts_common.o - 0x0100bbaa 0x0100bbaa 0x00000004 Code RO 4377 i.cli_cmd_count cli_core.o - 0x0100bbae 0x0100bbae 0x00000002 PAD - 0x0100bbb0 0x0100bbb0 0x00000018 Code RO 4378 i.cli_cmd_name cli_core.o - 0x0100bbc8 0x0100bbc8 0x000000b4 Code RO 4379 i.cli_exec_line cli_core.o - 0x0100bc7c 0x0100bc7c 0x0000002c Code RO 4380 i.cli_printf cli_core.o - 0x0100bca8 0x0100bca8 0x00000068 Code RO 4470 i.cli_redraw_line app_cli.o - 0x0100bd10 0x0100bd10 0x0000002c Code RO 4577 i.cli_rsp_out app_ble_proto.o - 0x0100bd3c 0x0100bd3c 0x0000000c Code RO 4381 i.cli_set_output cli_core.o - 0x0100bd48 0x0100bd48 0x00000024 Code RO 4382 i.cli_write cli_core.o - 0x0100bd6c 0x0100bd6c 0x0000002a Code RO 2663 i.diss_check_val_len diss.o - 0x0100bd96 0x0100bd96 0x00000002 Code RO 2664 i.diss_cleanup diss.o - 0x0100bd98 0x0100bd98 0x00000002 Code RO 2666 i.diss_create diss.o - 0x0100bd9a 0x0100bd9a 0x0000003e Code RO 2667 i.diss_destroy diss.o - 0x0100bdd8 0x0100bdd8 0x00000034 Code RO 2668 i.diss_handle_to_value diss.o - 0x0100be0c 0x0100be0c 0x000000a0 Code RO 2669 i.diss_init diss.o - 0x0100beac 0x0100beac 0x00000008 Code RO 2670 i.diss_prf_itf_get diss.o - 0x0100beb4 0x0100beb4 0x0000009c Code RO 2762 i.diss_set_value_req_handler diss_task.o - 0x0100bf50 0x0100bf50 0x00000020 Code RO 2763 i.diss_task_init diss_task.o - 0x0100bf70 0x0100bf70 0x0000007c Code RO 2764 i.diss_value_cfm_handler diss_task.o - 0x0100bfec 0x0100bfec 0x000000c0 Code RO 4007 i.diss_value_req_ind_handler app_dis.o - 0x0100c0ac 0x0100c0ac 0x0000003a Code RO 2671 i.diss_value_to_handle diss.o - 0x0100c0e6 0x0100c0e6 0x00000002 PAD - 0x0100c0e8 0x0100c0e8 0x00000060 Code RO 4821 i.eTaskGetState tasks.o - 0x0100c148 0x0100c148 0x0000003c Code RO 4312 i.fputc bsp_usart.o - 0x0100c184 0x0100c184 0x000000f0 Code RO 3212 i.gapc_bond_ind_handler ns_sec.o - 0x0100c274 0x0100c274 0x00000208 Code RO 3213 i.gapc_bond_req_ind_handler ns_sec.o - 0x0100c47c 0x0100c47c 0x00000028 Code RO 3855 i.gapc_cmp_evt_handler ns_ble_task.o - 0x0100c4a4 0x0100c4a4 0x0000006c Code RO 3856 i.gapc_conn_rssi_ind_handler ns_ble_task.o - 0x0100c510 0x0100c510 0x00000158 Code RO 3857 i.gapc_connection_req_ind_handler ns_ble_task.o - 0x0100c668 0x0100c668 0x00000064 Code RO 3858 i.gapc_disconnect_ind_handler ns_ble_task.o - 0x0100c6cc 0x0100c6cc 0x00000028 Code RO 3214 i.gapc_encrypt_ind_handler ns_sec.o - 0x0100c6f4 0x0100c6f4 0x00000130 Code RO 3215 i.gapc_encrypt_req_ind_handler ns_sec.o - 0x0100c824 0x0100c824 0x00000080 Code RO 3859 i.gapc_get_dev_info_req_ind_handler ns_ble_task.o - 0x0100c8a4 0x0100c8a4 0x0000000c Code RO 3860 i.gapc_le_phy_ind_handler ns_ble_task.o - 0x0100c8b0 0x0100c8b0 0x0000001c Code RO 3861 i.gapc_le_pkt_size_ind_handler ns_ble_task.o - 0x0100c8cc 0x0100c8cc 0x00000064 Code RO 3862 i.gapc_param_update_req_ind_handler ns_ble_task.o - 0x0100c930 0x0100c930 0x00000028 Code RO 3863 i.gapc_param_updated_ind_handler ns_ble_task.o - 0x0100c958 0x0100c958 0x00000040 Code RO 3864 i.gapc_set_dev_info_req_ind_handler ns_ble_task.o - 0x0100c998 0x0100c998 0x00000034 Code RO 3865 i.gapm_activity_created_ind_handler ns_ble_task.o - 0x0100c9cc 0x0100c9cc 0x00000060 Code RO 3866 i.gapm_activity_stopped_ind_handler ns_ble_task.o - 0x0100ca2c 0x0100ca2c 0x0000002c Code RO 3867 i.gapm_addr_solved_ind_handler ns_ble_task.o - 0x0100ca58 0x0100ca58 0x000003e0 Code RO 3868 i.gapm_cmp_evt_handler ns_ble_task.o - 0x0100ce38 0x0100ce38 0x000000ac Code RO 3869 i.gapm_ext_adv_repoer_ind_handler ns_ble_task.o - 0x0100cee4 0x0100cee4 0x00000036 Code RO 3870 i.gapm_gen_rand_nb_ind_handler ns_ble_task.o - 0x0100cf1a 0x0100cf1a 0x0000000c Code RO 3871 i.gapm_profile_added_ind_handler ns_ble_task.o - 0x0100cf26 0x0100cf26 0x0000000c Code RO 3872 i.gapm_scan_request_ind_handler ns_ble_task.o - 0x0100cf32 0x0100cf32 0x00000002 PAD - 0x0100cf34 0x0100cf34 0x00000040 Code RO 2903 i.gattc_att_info_req_ind_handler rdtss_task.o - 0x0100cf74 0x0100cf74 0x00000070 Code RO 2904 i.gattc_cmp_evt_handler rdtss_task.o - 0x0100cfe4 0x0100cfe4 0x00000028 Code RO 3873 i.gattc_cmp_evt_handler ns_ble_task.o - 0x0100d00c 0x0100d00c 0x0000004c Code RO 3874 i.gattc_mtu_changed_ind_handler ns_ble_task.o - 0x0100d058 0x0100d058 0x000000c4 Code RO 2765 i.gattc_read_req_ind_handler diss_task.o - 0x0100d11c 0x0100d11c 0x000000e0 Code RO 2905 i.gattc_read_req_ind_handler rdtss_task.o - 0x0100d1fc 0x0100d1fc 0x00000110 Code RO 2906 i.gattc_write_req_ind_handler rdtss_task.o - 0x0100d30c 0x0100d30c 0x0000006c Code RO 3026 i.get_cfg_handle rdts_common.o - 0x0100d378 0x0100d378 0x00000054 Code RO 3027 i.get_value_handle rdts_common.o - 0x0100d3cc 0x0100d3cc 0x00000064 Code RO 4704 i.info_adc_init app_info.o - 0x0100d430 0x0100d430 0x0000006c Code RO 4705 i.info_adc_read app_info.o - 0x0100d49c 0x0100d49c 0x0000011c Code RO 4706 i.info_fill_item app_info.o - 0x0100d5b8 0x0100d5b8 0x0000002c Code RO 4707 i.info_put_tlv app_info.o - 0x0100d5e4 0x0100d5e4 0x0000001c Code RO 4227 i.led_task main.o - 0x0100d600 0x0100d600 0x00000030 Code RO 2356 i.llhwc_modem_setmode rwip_driver.o - 0x0100d630 0x0100d630 0x00000130 Code RO 2357 i.llhwc_phy_prerx_flash rwip_driver.o - 0x0100d760 0x0100d760 0x00000090 Code RO 2358 i.llhwc_setmode_reg_config rwip_driver.o - 0x0100d7f0 0x0100d7f0 0x0000019c Code RO 4228 i.main main.o - 0x0100d98c 0x0100d98c 0x0000005c Code RO 3456 i.ns_EXTI4_12_IRQHandler ns_ble.o - 0x0100d9e8 0x0100d9e8 0x00000028 Code RO 3457 i.ns_HardFault_Handler ns_ble.o - 0x0100da10 0x0100da10 0x00000020 Code RO 3459 i.ns_ble_add_prf_func_register ns_ble.o - 0x0100da30 0x0100da30 0x0000002c Code RO 3460 i.ns_ble_add_svc ns_ble.o - 0x0100da5c 0x0100da5c 0x000000dc Code RO 3462 i.ns_ble_adv_fsm_next ns_ble.o - 0x0100db38 0x0100db38 0x00000048 Code RO 3463 i.ns_ble_adv_init ns_ble.o - 0x0100db80 0x0100db80 0x00000050 Code RO 3464 i.ns_ble_adv_start ns_ble.o - 0x0100dbd0 0x0100dbd0 0x0000004c Code RO 3465 i.ns_ble_adv_stop ns_ble.o - 0x0100dc1c 0x0100dc1c 0x0000003c Code RO 3468 i.ns_ble_delete_init ns_ble.o - 0x0100dc58 0x0100dc58 0x00000038 Code RO 3469 i.ns_ble_delete_scan ns_ble.o - 0x0100dc90 0x0100dc90 0x0000002c Code RO 3470 i.ns_ble_disconnect ns_ble.o - 0x0100dcbc 0x0100dcbc 0x0000006c Code RO 3473 i.ns_ble_gap_init ns_ble.o - 0x0100dd28 0x0100dd28 0x00000024 Code RO 3476 i.ns_ble_get_connection_num ns_ble.o - 0x0100dd4c 0x0100dd4c 0x00000050 Code RO 3479 i.ns_ble_list_set_ral ns_ble.o - 0x0100dd9c 0x0100dd9c 0x00000084 Code RO 3481 i.ns_ble_lsc_config ns_ble.o - 0x0100de20 0x0100de20 0x00000034 Code RO 3483 i.ns_ble_mtu_set ns_ble.o - 0x0100de54 0x0100de54 0x00000028 Code RO 3485 i.ns_ble_prf_task_register ns_ble.o - 0x0100de7c 0x0100de7c 0x00000048 Code RO 3490 i.ns_ble_scan_data_find ns_ble.o - 0x0100dec4 0x0100dec4 0x00000278 Code RO 3497 i.ns_ble_stack_init ns_ble.o - 0x0100e13c 0x0100e13c 0x00000124 Code RO 3498 i.ns_ble_start_init ns_ble.o - 0x0100e260 0x0100e260 0x000000cc Code RO 3499 i.ns_ble_start_scan ns_ble.o - 0x0100e32c 0x0100e32c 0x00000038 Code RO 3500 i.ns_ble_stop_init ns_ble.o - 0x0100e364 0x0100e364 0x0000003c Code RO 3501 i.ns_ble_stop_scan ns_ble.o - 0x0100e3a0 0x0100e3a0 0x00000078 Code RO 3502 i.ns_ble_update_param ns_ble.o - 0x0100e418 0x0100e418 0x0000002c Code RO 3216 i.ns_bond_db_get_size ns_sec.o - 0x0100e444 0x0100e444 0x0000001c Code RO 3217 i.ns_bond_db_load ns_sec.o - 0x0100e460 0x0100e460 0x00000030 Code RO 3218 i.ns_bond_last_bonded_addr ns_sec.o - 0x0100e490 0x0100e490 0x00000030 Code RO 3219 i.ns_bond_last_bonded_peer_id ns_sec.o - 0x0100e4c0 0x0100e4c0 0x00000064 Code RO 3220 i.ns_bond_last_bonded_ral_info ns_sec.o - 0x0100e524 0x0100e524 0x00000060 Code RO 3221 i.ns_bond_resolv_addr_start ns_sec.o - 0x0100e584 0x0100e584 0x0000007c Code RO 3222 i.ns_bond_search_addr_irk ns_sec.o - 0x0100e600 0x0100e600 0x000000d4 Code RO 3505 i.ns_peripheral_config ns_ble.o - 0x0100e6d4 0x0100e6d4 0x00000160 Code RO 3224 i.ns_sec_bond_store_evt_handler ns_sec.o - 0x0100e834 0x0100e834 0x00000010 Code RO 3225 i.ns_sec_get_bond_status ns_sec.o - 0x0100e844 0x0100e844 0x0000000c Code RO 3226 i.ns_sec_get_iocap ns_sec.o - 0x0100e850 0x0100e850 0x00000068 Code RO 3227 i.ns_sec_init ns_sec.o - 0x0100e8b8 0x0100e8b8 0x00000018 Code RO 3073 i.ns_sleep_lock_acquire ns_sleep.o - 0x0100e8d0 0x0100e8d0 0x00000014 Code RO 3074 i.ns_sleep_lock_release ns_sleep.o - 0x0100e8e4 0x0100e8e4 0x000000c8 Code RO 3149 i.ns_timer_api_process_handler ns_timer.o - 0x0100e9ac 0x0100e9ac 0x00000158 Code RO 4648 i.ota_on_data app_ota.o - 0x0100eb04 0x0100eb04 0x000001ac Code RO 4649 i.ota_on_end app_ota.o - 0x0100ecb0 0x0100ecb0 0x00000028 Code RO 4650 i.ota_respond app_ota.o - 0x0100ecd8 0x0100ecd8 0x00000044 Code RO 3506 i.patchx_enable ns_ble.o - 0x0100ed1c 0x0100ed1c 0x00000088 Code RO 2537 i.prf_add_profile prf.o - 0x0100eda4 0x0100eda4 0x00000010 Code RO 2540 i.prf_dst_task_get prf.o - 0x0100edb4 0x0100edb4 0x00000030 Code RO 2541 i.prf_env_get prf.o - 0x0100ede4 0x0100ede4 0x00000038 Code RO 2542 i.prf_get_id_from_task prf.o - 0x0100ee1c 0x0100ee1c 0x00000028 Code RO 2543 i.prf_get_itf_func_register prf.o - 0x0100ee44 0x0100ee44 0x00000038 Code RO 2544 i.prf_get_task_from_id prf.o - 0x0100ee7c 0x0100ee7c 0x000000b4 Code RO 2545 i.prf_init prf.o - 0x0100ef30 0x0100ef30 0x00000030 Code RO 2546 i.prf_itf_get prf.o - 0x0100ef60 0x0100ef60 0x00000038 Code RO 4578 i.proto_cli_out app_ble_proto.o - 0x0100ef98 0x0100ef98 0x00000080 Code RO 4579 i.proto_dump app_ble_proto.o - 0x0100f018 0x0100f018 0x00000058 Code RO 4823 i.prvAddCurrentTaskToDelayedList tasks.o - 0x0100f070 0x0100f070 0x00000070 Code RO 5155 i.prvCopyDataToQueue queue.o - 0x0100f0e0 0x0100f0e0 0x00000054 Code RO 4824 i.prvIdleTask tasks.o - 0x0100f134 0x0100f134 0x00000054 Code RO 5385 i.prvInsertBlockIntoFreeList heap_4.o - 0x0100f188 0x0100f188 0x000000cc Code RO 4825 i.prvListTasksWithinSingleList tasks.o - 0x0100f254 0x0100f254 0x00000014 Code RO 5432 i.prvTaskExitError port.o - 0x0100f268 0x0100f268 0x00000074 Code RO 5156 i.prvUnlockQueue queue.o - 0x0100f2dc 0x0100f2dc 0x000000f4 Code RO 5386 i.pvPortMalloc heap_4.o - 0x0100f3d0 0x0100f3d0 0x00000018 Code RO 4826 i.pvTaskIncrementMutexHeldCount tasks.o - 0x0100f3e8 0x0100f3e8 0x00000024 Code RO 5433 i.pxPortInitialiseStack port.o - 0x0100f40c 0x0100f40c 0x0000003a Code RO 2907 i.rdtss_att_get_value rdtss_task.o - 0x0100f446 0x0100f446 0x00000002 PAD - 0x0100f448 0x0100f448 0x00000040 Code RO 2908 i.rdtss_att_info_rsp_handler rdtss_task.o - 0x0100f488 0x0100f488 0x00000068 Code RO 2909 i.rdtss_att_set_value rdtss_task.o - 0x0100f4f0 0x0100f4f0 0x0000004c Code RO 2852 i.rdtss_cleanup rdtss.o - 0x0100f53c 0x0100f53c 0x0000004c Code RO 2853 i.rdtss_create rdtss.o - 0x0100f588 0x0100f588 0x00000042 Code RO 2854 i.rdtss_destroy rdtss.o - 0x0100f5ca 0x0100f5ca 0x0000001c Code RO 3028 i.rdtss_get_att_handle rdts_common.o - 0x0100f5e6 0x0100f5e6 0x00000028 Code RO 3029 i.rdtss_get_att_idx rdts_common.o - 0x0100f60e 0x0100f60e 0x00000098 Code RO 2855 i.rdtss_init rdtss.o - 0x0100f6a6 0x0100f6a6 0x00000002 PAD - 0x0100f6a8 0x0100f6a8 0x000000a4 Code RO 2910 i.rdtss_init_ccc_values rdtss_task.o - 0x0100f74c 0x0100f74c 0x00000008 Code RO 2856 i.rdtss_prf_itf_get rdtss.o - 0x0100f754 0x0100f754 0x00000054 Code RO 4062 i.rdtss_send_notify app_rdtss.o - 0x0100f7a8 0x0100f7a8 0x00000034 Code RO 2911 i.rdtss_set_ccc_value rdtss_task.o - 0x0100f7dc 0x0100f7dc 0x00000020 Code RO 2912 i.rdtss_task_init rdtss_task.o - 0x0100f7fc 0x0100f7fc 0x000000b0 Code RO 2913 i.rdtss_val_ind_req_handler rdtss_task.o - 0x0100f8ac 0x0100f8ac 0x0000000a Code RO 4063 i.rdtss_val_ntf_cfm_handler app_rdtss.o - 0x0100f8b6 0x0100f8b6 0x000000a6 Code RO 2914 i.rdtss_val_ntf_req_handler rdtss_task.o - 0x0100f95c 0x0100f95c 0x00000020 Code RO 2915 i.rdtss_val_set_req_handler rdtss_task.o - 0x0100f97c 0x0100f97c 0x00000118 Code RO 4064 i.rdtss_val_write_ind_handler app_rdtss.o - 0x0100fa94 0x0100fa94 0x0000007c Code RO 4065 i.rdtss_value_req_ind_handler app_rdtss.o - 0x0100fb10 0x0100fb10 0x00000080 Code RO 2916 i.rdtss_value_req_rsp_handler rdtss_task.o - 0x0100fb90 0x0100fb90 0x00000118 Code RO 2105 i.rwip_init rwip.o - 0x0100fca8 0x0100fca8 0x000000f8 Code RO 2365 i.rwip_slp_isr rwip_driver.o - 0x0100fda0 0x0100fda0 0x00000002 Code RO 3154 i.timer_canceled_handler ns_timer.o - 0x0100fda2 0x0100fda2 0x00000002 Code RO 3155 i.timer_modified_handler ns_timer.o - 0x0100fda4 0x0100fda4 0x00000026 Code RO 5343 i.uxListRemove list.o - 0x0100fdca 0x0100fdca 0x00000002 PAD - 0x0100fdcc 0x0100fdcc 0x0000000c Code RO 4828 i.uxTaskGetNumberOfTasks tasks.o - 0x0100fdd8 0x0100fdd8 0x00000098 Code RO 4829 i.uxTaskGetSystemState tasks.o - 0x0100fe70 0x0100fe70 0x00000016 Code RO 5344 i.vListInitialise list.o - 0x0100fe86 0x0100fe86 0x00000006 Code RO 5345 i.vListInitialiseItem list.o - 0x0100fe8c 0x0100fe8c 0x00000032 Code RO 5346 i.vListInsert list.o - 0x0100febe 0x0100febe 0x00000018 Code RO 5347 i.vListInsertEnd list.o - 0x0100fed6 0x0100fed6 0x00000002 PAD - 0x0100fed8 0x0100fed8 0x00000018 Code RO 5435 i.vPortEnterCritical port.o - 0x0100fef0 0x0100fef0 0x0000001c Code RO 5436 i.vPortExitCritical port.o - 0x0100ff0c 0x0100ff0c 0x00000044 Code RO 5387 i.vPortFree heap_4.o - 0x0100ff50 0x0100ff50 0x00000018 Code RO 5437 i.vPortYield port.o - 0x0100ff68 0x0100ff68 0x00000030 Code RO 4834 i.vTaskDelay tasks.o - 0x0100ff98 0x0100ff98 0x00000010 Code RO 4839 i.vTaskInternalSetTimeOutState tasks.o - 0x0100ffa8 0x0100ffa8 0x000000d0 Code RO 4840 i.vTaskList tasks.o - 0x01010078 0x01010078 0x0000000c Code RO 4841 i.vTaskMissedYield tasks.o - 0x01010084 0x01010084 0x00000024 Code RO 4843 i.vTaskPlaceOnEventList tasks.o - 0x010100a8 0x010100a8 0x00000074 Code RO 4845 i.vTaskPriorityDisinheritAfterTimeout tasks.o - 0x0101011c 0x0101011c 0x00000050 Code RO 4851 i.vTaskStartScheduler tasks.o - 0x0101016c 0x0101016c 0x00000010 Code RO 4853 i.vTaskSuspendAll tasks.o - 0x0101017c 0x0101017c 0x00000064 Code RO 4854 i.vTaskSwitchContext tasks.o - 0x010101e0 0x010101e0 0x0000000c Code RO 5389 i.xPortGetFreeHeapSize heap_4.o - 0x010101ec 0x010101ec 0x0000000c Code RO 5390 i.xPortGetMinimumEverFreeHeapSize heap_4.o - 0x010101f8 0x010101f8 0x00000050 Code RO 5438 i.xPortStartScheduler port.o - 0x01010248 0x01010248 0x00000024 Code RO 5167 i.xQueueCreateMutex queue.o - 0x0101026c 0x0101026c 0x00000044 Code RO 5168 i.xQueueGenericCreate queue.o - 0x010102b0 0x010102b0 0x0000006e Code RO 5169 i.xQueueGenericReset queue.o - 0x0101031e 0x0101031e 0x0000018e Code RO 5170 i.xQueueGenericSend queue.o - 0x010104ac 0x010104ac 0x0000008e Code RO 5171 i.xQueueGenericSendFromISR queue.o - 0x0101053a 0x0101053a 0x00000142 Code RO 5180 i.xQueueReceive queue.o - 0x0101067c 0x0101067c 0x00000172 Code RO 5182 i.xQueueSemaphoreTake queue.o - 0x010107ee 0x010107ee 0x00000002 PAD - 0x010107f0 0x010107f0 0x00000064 Code RO 4855 i.xTaskCheckForTimeOut tasks.o - 0x01010854 0x01010854 0x00000178 Code RO 4856 i.xTaskCreate tasks.o - 0x010109cc 0x010109cc 0x00000020 Code RO 4860 i.xTaskGetSchedulerState tasks.o - 0x010109ec 0x010109ec 0x0000000c Code RO 4861 i.xTaskGetTickCount tasks.o - 0x010109f8 0x010109f8 0x000000d4 Code RO 4863 i.xTaskIncrementTick tasks.o - 0x01010acc 0x01010acc 0x00000068 Code RO 4866 i.xTaskPriorityDisinherit tasks.o - 0x01010b34 0x01010b34 0x00000078 Code RO 4867 i.xTaskPriorityInherit tasks.o - 0x01010bac 0x01010bac 0x00000064 Code RO 4868 i.xTaskRemoveFromEventList tasks.o - 0x01010c10 0x01010c10 0x000000c8 Code RO 4869 i.xTaskResumeAll tasks.o - 0x01010cd8 0x01010cd8 0x000001d8 Data RO 20 .constdata system_n32wb03x.o - 0x01010eb0 0x01010eb0 0x0000000c Data RO 782 .constdata n32wb03x_rcc.o - 0x01010ebc 0x01010ebc 0x00000324 Data RO 1952 .constdata n32wb03x_qflash.o - 0x010111e0 0x010111e0 0x0000001e Data RO 2366 .constdata rwip_driver.o - 0x010111fe 0x010111fe 0x00000002 PAD - 0x01011200 0x01011200 0x000000a8 Data RO 2672 .constdata diss.o - 0x010112a8 0x010112a8 0x00000018 Data RO 2766 .constdata diss_task.o - 0x010112c0 0x010112c0 0x00000010 Data RO 2857 .constdata rdtss.o - 0x010112d0 0x010112d0 0x00000048 Data RO 2917 .constdata rdtss_task.o - 0x01011318 0x01011318 0x00000028 Data RO 3233 .constdata ns_sec.o - 0x01011340 0x01011340 0x00000008 Data RO 3234 .constdata ns_sec.o - 0x01011348 0x01011348 0x00000334 Data RO 3508 .constdata ns_ble.o - 0x0101167c 0x0101167c 0x00000098 Data RO 3875 .constdata ns_ble_task.o - 0x01011714 0x01011714 0x000000c8 Data RO 3876 .constdata ns_ble_task.o - 0x010117dc 0x010117dc 0x0000000c Data RO 3877 .constdata ns_ble_task.o - 0x010117e8 0x010117e8 0x00000008 Data RO 4008 .constdata app_dis.o - 0x010117f0 0x010117f0 0x00000008 Data RO 4009 .constdata app_dis.o - 0x010117f8 0x010117f8 0x0000010a Data RO 4066 .constdata app_rdtss.o - 0x01011902 0x01011902 0x00000002 PAD - 0x01011904 0x01011904 0x00000018 Data RO 4067 .constdata app_rdtss.o - 0x0101191c 0x0101191c 0x00000048 Data RO 4384 .constdata cli_core.o - 0x01011964 0x01011964 0x00000006 Data RO 4709 .constdata app_info.o - 0x0101196a 0x0101196a 0x00000002 PAD - 0x0101196c 0x0101196c 0x0000013a Data RO 4385 .conststring cli_core.o - 0x01011aa6 0x01011aa6 0x00000002 PAD - 0x01011aa8 0x01011aa8 0x00000020 Data RO 5846 Region$$Table anon$$obj.o + 0x01008184 0x01008184 0x0000002c Code RO 5575 .text mc_p.l(uidiv.o) + 0x010081b0 0x010081b0 0x00000028 Code RO 5577 .text mc_p.l(idiv.o) + 0x010081d8 0x010081d8 0x00000060 Code RO 5579 .text mc_p.l(uldiv.o) + 0x01008238 0x01008238 0x00000024 Code RO 5581 .text mc_p.l(rand.o) + 0x0100825c 0x0100825c 0x00000024 Code RO 5584 .text mc_p.l(memcpya.o) + 0x01008280 0x01008280 0x00000024 Code RO 5586 .text mc_p.l(memseta.o) + 0x010082a4 0x010082a4 0x0000000e Code RO 5588 .text mc_p.l(strlen.o) + 0x010082b2 0x010082b2 0x0000001c Code RO 5590 .text mc_p.l(strcmp.o) + 0x010082ce 0x010082ce 0x00000014 Code RO 5592 .text mc_p.l(memchr.o) + 0x010082e2 0x010082e2 0x0000001a Code RO 5594 .text mc_p.l(memcmp.o) + 0x010082fc 0x010082fc 0x00000012 Code RO 5596 .text mc_p.l(strcpy.o) + 0x0100830e 0x0100830e 0x0000001e Code RO 5598 .text mc_p.l(strncmp.o) + 0x0100832c 0x0100832c 0x00000076 Code RO 5863 .text mc_p.l(strtoul.o) + 0x010083a2 0x010083a2 0x000000b2 Code RO 5865 .text mf_p.l(fadd.o) + 0x01008454 0x01008454 0x0000007a Code RO 5867 .text mf_p.l(fmul.o) + 0x010084ce 0x010084ce 0x00000002 PAD + 0x010084d0 0x010084d0 0x00000164 Code RO 5871 .text mf_p.l(dadd.o) + 0x01008634 0x01008634 0x000000d0 Code RO 5873 .text mf_p.l(dmul.o) + 0x01008704 0x01008704 0x000000f0 Code RO 5875 .text mf_p.l(ddiv.o) + 0x010087f4 0x010087f4 0x0000000e Code RO 5879 .text mf_p.l(ffltui.o) + 0x01008802 0x01008802 0x00000002 PAD + 0x01008804 0x01008804 0x0000001c Code RO 5881 .text mf_p.l(dfltui.o) + 0x01008820 0x01008820 0x0000001c Code RO 5883 .text mf_p.l(dfltul.o) + 0x0100883c 0x0100883c 0x00000032 Code RO 5885 .text mf_p.l(ffixi.o) + 0x0100886e 0x0100886e 0x00000002 PAD + 0x01008870 0x01008870 0x00000040 Code RO 5889 .text mf_p.l(dfixul.o) + 0x010088b0 0x010088b0 0x00000028 Code RO 5891 .text mf_p.l(f2d.o) + 0x010088d8 0x010088d8 0x00000038 Code RO 5893 .text mf_p.l(d2f.o) + 0x01008910 0x01008910 0x00000020 Code RO 5909 .text mc_p.l(llshl.o) + 0x01008930 0x01008930 0x00000022 Code RO 5911 .text mc_p.l(llushr.o) + 0x01008952 0x01008952 0x00000026 Code RO 5913 .text mc_p.l(llsshr.o) + 0x01008978 0x01008978 0x00000008 Code RO 5915 .text mc_p.l(ctype_o.o) + 0x01008980 0x01008980 0x000000a6 Code RO 5950 .text mc_p.l(_strtoul.o) + 0x01008a26 0x01008a26 0x00000000 Code RO 5952 .text mc_p.l(iusefp.o) + 0x01008a26 0x01008a26 0x00000082 Code RO 5953 .text mf_p.l(fepilogue.o) + 0x01008aa8 0x01008aa8 0x000000be Code RO 5955 .text mf_p.l(depilogue.o) + 0x01008b66 0x01008b66 0x00000002 PAD + 0x01008b68 0x01008b68 0x00000028 Code RO 5959 .text mf_p.l(cdrcmple.o) + 0x01008b90 0x01008b90 0x00000024 Code RO 5961 .text mc_p.l(init.o) + 0x01008bb4 0x01008bb4 0x0000001e Code RO 5963 .text mc_p.l(_chval.o) + 0x01008bd2 0x01008bd2 0x00000056 Code RO 5967 .text mc_p.l(__dczerorl2.o) + 0x01008c28 0x01008c28 0x0000000c Ven RO 5969 Veneer$$Code anon$$obj.o + 0x01008c34 0x01008c34 0x0000000c Ven RO 5970 Veneer$$Code anon$$obj.o + 0x01008c40 0x01008c40 0x0000000c Ven RO 5971 Veneer$$Code anon$$obj.o + 0x01008c4c 0x01008c4c 0x0000000c Ven RO 5972 Veneer$$Code anon$$obj.o + 0x01008c58 0x01008c58 0x0000000c Ven RO 5973 Veneer$$Code anon$$obj.o + 0x01008c64 0x01008c64 0x0000000c Ven RO 5974 Veneer$$Code anon$$obj.o + 0x01008c70 0x01008c70 0x0000000c Ven RO 5975 Veneer$$Code anon$$obj.o + 0x01008c7c 0x01008c7c 0x0000000c Ven RO 5976 Veneer$$Code anon$$obj.o + 0x01008c88 0x01008c88 0x0000000c Ven RO 5977 Veneer$$Code anon$$obj.o + 0x01008c94 0x01008c94 0x0000000c Ven RO 5978 Veneer$$Code anon$$obj.o + 0x01008ca0 0x01008ca0 0x0000000c Ven RO 5979 Veneer$$Code anon$$obj.o + 0x01008cac 0x01008cac 0x0000000c Ven RO 5980 Veneer$$Code anon$$obj.o + 0x01008cb8 0x01008cb8 0x0000000c Ven RO 5981 Veneer$$Code anon$$obj.o + 0x01008cc4 0x01008cc4 0x0000000c Ven RO 5982 Veneer$$Code anon$$obj.o + 0x01008cd0 0x01008cd0 0x0000000c Ven RO 5983 Veneer$$Code anon$$obj.o + 0x01008cdc 0x01008cdc 0x0000000c Ven RO 5984 Veneer$$Code anon$$obj.o + 0x01008ce8 0x01008ce8 0x0000000c Ven RO 5985 Veneer$$Code anon$$obj.o + 0x01008cf4 0x01008cf4 0x0000000c Ven RO 5986 Veneer$$Code anon$$obj.o + 0x01008d00 0x01008d00 0x00000006 Code RO 192 i.ADC_ClearFlag n32wb03x_adc.o + 0x01008d06 0x01008d06 0x0000000e Code RO 194 i.ADC_ConfigChannel n32wb03x_adc.o + 0x01008d14 0x01008d14 0x00000054 Code RO 199 i.ADC_ConverValueToTemperature n32wb03x_adc.o + 0x01008d68 0x01008d68 0x00000088 Code RO 200 i.ADC_ConverValueToVoltage n32wb03x_adc.o + 0x01008df0 0x01008df0 0x00000054 Code RO 201 i.ADC_DeInit n32wb03x_adc.o + 0x01008e44 0x01008e44 0x00000014 Code RO 202 i.ADC_Enable n32wb03x_adc.o + 0x01008e58 0x01008e58 0x00000050 Code RO 205 i.ADC_EnableBypassFilter n32wb03x_adc.o + 0x01008ea8 0x01008ea8 0x00000012 Code RO 210 i.ADC_EnableTS n32wb03x_adc.o + 0x01008eba 0x01008eba 0x00000006 Code RO 212 i.ADC_GetDat n32wb03x_adc.o + 0x01008ec0 0x01008ec0 0x0000000e Code RO 213 i.ADC_GetFlagStatus n32wb03x_adc.o + 0x01008ece 0x01008ece 0x00000002 PAD + 0x01008ed0 0x01008ed0 0x00000018 Code RO 218 i.ADC_SetOverSampleCounter n32wb03x_adc.o + 0x01008ee8 0x01008ee8 0x00000034 Code RO 4870 i.AppBootset_CmdBsdump app_bootset.o + 0x01008f1c 0x01008f1c 0x00000330 Code RO 4871 i.AppBootset_CmdBsset app_bootset.o + 0x0100924c 0x0100924c 0x00000028 Code RO 4473 i.AppCli_Init app_cli.o + 0x01009274 0x01009274 0x000002b4 Code RO 4828 i.AppParams_CmdParam app_params.o + 0x01009528 0x01009528 0x00000434 Code RO 4475 i.CliTask app_cli.o + 0x0100995c 0x0100995c 0x00000078 Code RO 4374 i.CmdBleLog cli_core.o + 0x010099d4 0x010099d4 0x00000178 Code RO 4375 i.CmdDevInfo cli_core.o + 0x01009b4c 0x01009b4c 0x00000074 Code RO 4376 i.CmdHelp cli_core.o + 0x01009bc0 0x01009bc0 0x000000d0 Code RO 4377 i.CmdLed cli_core.o + 0x01009c90 0x01009c90 0x000000e8 Code RO 4378 i.CmdSysInfo cli_core.o + 0x01009d78 0x01009d78 0x00000098 Code RO 4379 i.CmdVersion cli_core.o + 0x01009e10 0x01009e10 0x00000004 Code RO 487 i.DMA_ClearFlag n32wb03x_dma.o + 0x01009e14 0x01009e14 0x00000088 Code RO 490 i.DMA_DeInit n32wb03x_dma.o + 0x01009e9c 0x01009e9c 0x00000018 Code RO 491 i.DMA_EnableChannel n32wb03x_dma.o + 0x01009eb4 0x01009eb4 0x0000000e Code RO 493 i.DMA_GetFlagStatus n32wb03x_dma.o + 0x01009ec2 0x01009ec2 0x00000002 PAD + 0x01009ec4 0x01009ec4 0x00000040 Code RO 495 i.DMA_Init n32wb03x_dma.o + 0x01009f04 0x01009f04 0x0000000e Code RO 496 i.DMA_RequestRemap n32wb03x_dma.o + 0x01009f12 0x01009f12 0x00000002 PAD + 0x01009f14 0x01009f14 0x0000000c Code RO 569 i.EXTI_ClrITPendBit n32wb03x_exti.o + 0x01009f20 0x01009f20 0x0000001c Code RO 572 i.EXTI_GetITStatus n32wb03x_exti.o + 0x01009f3c 0x01009f3c 0x00000070 Code RO 574 i.EXTI_InitPeripheral n32wb03x_exti.o + 0x01009fac 0x01009fac 0x000000b8 Code RO 634 i.GPIO_InitPeripheral n32wb03x_gpio.o + 0x0100a064 0x0100a064 0x0000001c Code RO 635 i.GPIO_InitStruct n32wb03x_gpio.o + 0x0100a080 0x0100a080 0x00000004 Code RO 640 i.GPIO_ResetBits n32wb03x_gpio.o + 0x0100a084 0x0100a084 0x00000004 Code RO 641 i.GPIO_SetBits n32wb03x_gpio.o + 0x0100a088 0x0100a088 0x00000008 Code RO 642 i.GPIO_TogglePin n32wb03x_gpio.o + 0x0100a090 0x0100a090 0x000000b0 Code RO 4551 i.HardFault_Handler n32wb03x_it.o + 0x0100a140 0x0100a140 0x00000008 Code RO 4794 i.LedBlink app_gpio.o + 0x0100a148 0x0100a148 0x0000004c Code RO 4795 i.LedInit app_gpio.o + 0x0100a194 0x0100a194 0x00000008 Code RO 4796 i.LedOff app_gpio.o + 0x0100a19c 0x0100a19c 0x00000008 Code RO 4797 i.LedOn app_gpio.o + 0x0100a1a4 0x0100a1a4 0x00000078 Code RO 159 i.NVIC_Init misc.o + 0x0100a21c 0x0100a21c 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o + 0x0100a2e8 0x0100a2e8 0x00000024 Code RO 1947 i.Qflash_Erase_Sector n32wb03x_qflash.o + 0x0100a30c 0x0100a30c 0x00000038 Code RO 1948 i.Qflash_Init n32wb03x_qflash.o + 0x0100a344 0x0100a344 0x00000024 Code RO 1950 i.Qflash_Write n32wb03x_qflash.o + 0x0100a368 0x0100a368 0x00000014 Code RO 748 i.RCC_ConfigAdcClk n32wb03x_rcc.o + 0x0100a37c 0x0100a37c 0x00000018 Code RO 762 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o + 0x0100a394 0x0100a394 0x00000018 Code RO 763 i.RCC_EnableAHBPeriphReset n32wb03x_rcc.o + 0x0100a3ac 0x0100a3ac 0x00000018 Code RO 766 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o + 0x0100a3c4 0x0100a3c4 0x0000001c Code RO 773 i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL n32wb03x_rcc.o + 0x0100a3e0 0x0100a3e0 0x00000074 Code RO 774 i.RCC_GetClocksFreqValue n32wb03x_rcc.o + 0x0100a454 0x0100a454 0x00000002 Code RO 5508 i.SVC_Handler port.o + 0x0100a456 0x0100a456 0x00000002 PAD + 0x0100a458 0x0100a458 0x00000024 Code RO 5509 i.SysTick_Handler port.o + 0x0100a47c 0x0100a47c 0x00000034 Code RO 13 i.SystemGetMacAddr system_n32wb03x.o + 0x0100a4b0 0x0100a4b0 0x00000180 Code RO 15 i.SystemInit system_n32wb03x.o + 0x0100a630 0x0100a630 0x00000030 Code RO 16 i.SystemTrimValueGet system_n32wb03x.o + 0x0100a660 0x0100a660 0x00000008 Code RO 4552 i.USART1_IRQHandler n32wb03x_it.o + 0x0100a668 0x0100a668 0x00000032 Code RO 1520 i.USART_ConfigInt n32wb03x_usart.o + 0x0100a69a 0x0100a69a 0x00000002 PAD + 0x0100a69c 0x0100a69c 0x0000001c Code RO 1525 i.USART_Enable n32wb03x_usart.o + 0x0100a6b8 0x0100a6b8 0x00000010 Code RO 1526 i.USART_EnableDMA n32wb03x_usart.o + 0x0100a6c8 0x0100a6c8 0x0000000e Code RO 1532 i.USART_GetFlagStatus n32wb03x_usart.o + 0x0100a6d6 0x0100a6d6 0x00000040 Code RO 1533 i.USART_GetIntStatus n32wb03x_usart.o + 0x0100a716 0x0100a716 0x00000002 PAD + 0x0100a718 0x0100a718 0x00000088 Code RO 1534 i.USART_Init n32wb03x_usart.o + 0x0100a7a0 0x0100a7a0 0x00000008 Code RO 1535 i.USART_ReceiveData n32wb03x_usart.o + 0x0100a7a8 0x0100a7a8 0x00000008 Code RO 1537 i.USART_SendData n32wb03x_usart.o + 0x0100a7b0 0x0100a7b0 0x00000020 Code RO 5835 i.__0printf mc_p.l(printfa.o) + 0x0100a7d0 0x0100a7d0 0x00000028 Code RO 5837 i.__0sprintf mc_p.l(printfa.o) + 0x0100a7f8 0x0100a7f8 0x0000002c Code RO 5840 i.__0vsnprintf mc_p.l(printfa.o) + 0x0100a824 0x0100a824 0x0000002e Code RO 5957 i.__ARM_clz mf_p.l(depilogue.o) + 0x0100a852 0x0100a852 0x00000002 PAD + 0x0100a854 0x0100a854 0x00000008 Code RO 5943 i.__aeabi_errno_addr mc_p.l(errno.o) + 0x0100a85c 0x0100a85c 0x00000174 Code RO 5842 i._fp_digits mc_p.l(printfa.o) + 0x0100a9d0 0x0100a9d0 0x000006ec Code RO 5843 i._printf_core mc_p.l(printfa.o) + 0x0100b0bc 0x0100b0bc 0x00000020 Code RO 5844 i._printf_post_padding mc_p.l(printfa.o) + 0x0100b0dc 0x0100b0dc 0x0000002c Code RO 5845 i._printf_pre_padding mc_p.l(printfa.o) + 0x0100b108 0x0100b108 0x00000016 Code RO 5846 i._snputc mc_p.l(printfa.o) + 0x0100b11e 0x0100b11e 0x0000000a Code RO 5847 i._sputc mc_p.l(printfa.o) + 0x0100b128 0x0100b128 0x00000074 Code RO 4120 i.app_ble_adv_init app_ble.o + 0x0100b19c 0x0100b19c 0x00000002 Code RO 4121 i.app_ble_adv_msg_handler app_ble.o + 0x0100b19e 0x0100b19e 0x00000002 PAD + 0x0100b1a0 0x0100b1a0 0x00000044 Code RO 4122 i.app_ble_connected app_ble.o + 0x0100b1e4 0x0100b1e4 0x0000005c Code RO 4123 i.app_ble_disconnected app_ble.o + 0x0100b240 0x0100b240 0x00000098 Code RO 4124 i.app_ble_gap_params_init app_ble.o + 0x0100b2d8 0x0100b2d8 0x0000004c Code RO 4125 i.app_ble_init app_ble.o + 0x0100b324 0x0100b324 0x0000006c Code RO 4126 i.app_ble_msg_handler app_ble.o + 0x0100b390 0x0100b390 0x000000e8 Code RO 4575 i.app_ble_proto_cli_exec app_ble_proto.o + 0x0100b478 0x0100b478 0x00000014 Code RO 4576 i.app_ble_proto_cli_rsp app_ble_proto.o + 0x0100b48c 0x0100b48c 0x00000014 Code RO 4577 i.app_ble_proto_init app_ble_proto.o + 0x0100b4a0 0x0100b4a0 0x0000000c Code RO 4578 i.app_ble_proto_log_get app_ble_proto.o + 0x0100b4ac 0x0100b4ac 0x00000010 Code RO 4579 i.app_ble_proto_log_set app_ble_proto.o + 0x0100b4bc 0x0100b4bc 0x00000018 Code RO 4580 i.app_ble_proto_on_disconnect app_ble_proto.o + 0x0100b4d4 0x0100b4d4 0x000001a0 Code RO 4581 i.app_ble_proto_rx_bytes app_ble_proto.o + 0x0100b674 0x0100b674 0x000000b8 Code RO 4582 i.app_ble_proto_send_frame app_ble_proto.o + 0x0100b72c 0x0100b72c 0x00000050 Code RO 4128 i.app_ble_sec_init app_ble.o + 0x0100b77c 0x0100b77c 0x00000010 Code RO 3851 i.app_conn_params_update_evt_handler ns_ble_task.o + 0x0100b78c 0x0100b78c 0x000000cc Code RO 3452 i.app_create_advertising ns_ble.o + 0x0100b858 0x0100b858 0x0000005c Code RO 4005 i.app_dis_add_dis app_dis.o + 0x0100b8b4 0x0100b8b4 0x00000104 Code RO 3852 i.app_entry_point_handler ns_ble_task.o + 0x0100b9b8 0x0100b9b8 0x00000008 Code RO 4704 i.app_fan_get_rpm app_info.o + 0x0100b9c0 0x0100b9c0 0x0000005c Code RO 4705 i.app_info_chip_temp_c10 app_info.o + 0x0100ba1c 0x0100ba1c 0x0000004c Code RO 4706 i.app_info_handle_query app_info.o + 0x0100ba68 0x0100ba68 0x0000000c Code RO 4707 i.app_info_last_temp_raw app_info.o + 0x0100ba74 0x0100ba74 0x0000002c Code RO 4708 i.app_info_tlv_snapshot app_info.o + 0x0100baa0 0x0100baa0 0x00000020 Code RO 4709 i.app_info_vdd_mv app_info.o + 0x0100bac0 0x0100bac0 0x0000001c Code RO 3853 i.app_init_timeout_evt_handler ns_ble_task.o + 0x0100badc 0x0100badc 0x000000ac Code RO 3854 i.app_lsi_calib_evt_handler ns_ble_task.o + 0x0100bb88 0x0100bb88 0x00000018 Code RO 4651 i.app_ota_abort app_ota.o + 0x0100bba0 0x0100bba0 0x0000011c Code RO 4653 i.app_ota_handle_frame app_ota.o + 0x0100bcbc 0x0100bcbc 0x00000008 Code RO 4829 i.app_params_get app_params.o + 0x0100bcc4 0x0100bcc4 0x0000005c Code RO 4830 i.app_params_init app_params.o + 0x0100bd20 0x0100bd20 0x00000068 Code RO 4060 i.app_rdtss_add_rdts app_rdtss.o + 0x0100bd88 0x0100bd88 0x00000004 Code RO 3211 i.app_sec_msg_dflt_handler ns_sec.o + 0x0100bd8c 0x0100bd8c 0x00000078 Code RO 3453 i.app_set_adv_data ns_ble.o + 0x0100be04 0x0100be04 0x000000c4 Code RO 3454 i.app_set_scan_rsp_data ns_ble.o + 0x0100bec8 0x0100bec8 0x00000070 Code RO 3455 i.app_start_advertising ns_ble.o + 0x0100bf38 0x0100bf38 0x00000002 Code RO 4129 i.app_user_msg_handler app_ble.o + 0x0100bf3a 0x0100bf3a 0x00000002 PAD + 0x0100bf3c 0x0100bf3c 0x000000c0 Code RO 1987 i.attm_att_set_value lib_att.o + 0x0100bffc 0x0100bffc 0x00000010 Code RO 4226 i.ble_schedule_task main.o + 0x0100c00c 0x0100c00c 0x00000014 Code RO 4514 i.ble_up_on_cfm ble_up.o + 0x0100c020 0x0100c020 0x00000058 Code RO 4515 i.ble_up_poll ble_up.o + 0x0100c078 0x0100c078 0x00000010 Code RO 4516 i.ble_up_reset ble_up.o + 0x0100c088 0x0100c088 0x00000048 Code RO 4517 i.ble_up_write ble_up.o + 0x0100c0d0 0x0100c0d0 0x00000178 Code RO 4872 i.bootset_print app_bootset.o + 0x0100c248 0x0100c248 0x000000dc Code RO 4308 i.bsp_usart_init bsp_usart.o + 0x0100c324 0x0100c324 0x00000038 Code RO 4309 i.bsp_usart_read_byte bsp_usart.o + 0x0100c35c 0x0100c35c 0x00000054 Code RO 4311 i.bsp_usart_rx_isr_handler bsp_usart.o + 0x0100c3b0 0x0100c3b0 0x00000020 Code RO 4312 i.bsp_usart_tx_lock bsp_usart.o + 0x0100c3d0 0x0100c3d0 0x00000024 Code RO 4313 i.bsp_usart_tx_unlock bsp_usart.o + 0x0100c3f4 0x0100c3f4 0x00000098 Code RO 4314 i.bsp_usart_write_dma bsp_usart.o + 0x0100c48c 0x0100c48c 0x00000034 Code RO 4781 i.caiic_crc32 boot_crc32.o + 0x0100c4c0 0x0100c4c0 0x0000002a Code RO 3025 i.check_client_char_cfg rdts_common.o + 0x0100c4ea 0x0100c4ea 0x00000004 Code RO 4380 i.cli_cmd_count cli_core.o + 0x0100c4ee 0x0100c4ee 0x00000002 PAD + 0x0100c4f0 0x0100c4f0 0x00000018 Code RO 4381 i.cli_cmd_name cli_core.o + 0x0100c508 0x0100c508 0x000000b4 Code RO 4382 i.cli_exec_line cli_core.o + 0x0100c5bc 0x0100c5bc 0x0000002c Code RO 4383 i.cli_printf cli_core.o + 0x0100c5e8 0x0100c5e8 0x00000068 Code RO 4476 i.cli_redraw_line app_cli.o + 0x0100c650 0x0100c650 0x0000002c Code RO 4583 i.cli_rsp_out app_ble_proto.o + 0x0100c67c 0x0100c67c 0x0000000c Code RO 4384 i.cli_set_output cli_core.o + 0x0100c688 0x0100c688 0x00000024 Code RO 4385 i.cli_write cli_core.o + 0x0100c6ac 0x0100c6ac 0x0000002a Code RO 2663 i.diss_check_val_len diss.o + 0x0100c6d6 0x0100c6d6 0x00000002 Code RO 2664 i.diss_cleanup diss.o + 0x0100c6d8 0x0100c6d8 0x00000002 Code RO 2666 i.diss_create diss.o + 0x0100c6da 0x0100c6da 0x0000003e Code RO 2667 i.diss_destroy diss.o + 0x0100c718 0x0100c718 0x00000034 Code RO 2668 i.diss_handle_to_value diss.o + 0x0100c74c 0x0100c74c 0x000000a0 Code RO 2669 i.diss_init diss.o + 0x0100c7ec 0x0100c7ec 0x00000008 Code RO 2670 i.diss_prf_itf_get diss.o + 0x0100c7f4 0x0100c7f4 0x0000009c Code RO 2762 i.diss_set_value_req_handler diss_task.o + 0x0100c890 0x0100c890 0x00000020 Code RO 2763 i.diss_task_init diss_task.o + 0x0100c8b0 0x0100c8b0 0x0000007c Code RO 2764 i.diss_value_cfm_handler diss_task.o + 0x0100c92c 0x0100c92c 0x000000c0 Code RO 4007 i.diss_value_req_ind_handler app_dis.o + 0x0100c9ec 0x0100c9ec 0x0000003a Code RO 2671 i.diss_value_to_handle diss.o + 0x0100ca26 0x0100ca26 0x00000002 PAD + 0x0100ca28 0x0100ca28 0x00000060 Code RO 4899 i.eTaskGetState tasks.o + 0x0100ca88 0x0100ca88 0x0000003c Code RO 4315 i.fputc bsp_usart.o + 0x0100cac4 0x0100cac4 0x000000f0 Code RO 3212 i.gapc_bond_ind_handler ns_sec.o + 0x0100cbb4 0x0100cbb4 0x00000208 Code RO 3213 i.gapc_bond_req_ind_handler ns_sec.o + 0x0100cdbc 0x0100cdbc 0x00000028 Code RO 3855 i.gapc_cmp_evt_handler ns_ble_task.o + 0x0100cde4 0x0100cde4 0x0000006c Code RO 3856 i.gapc_conn_rssi_ind_handler ns_ble_task.o + 0x0100ce50 0x0100ce50 0x00000158 Code RO 3857 i.gapc_connection_req_ind_handler ns_ble_task.o + 0x0100cfa8 0x0100cfa8 0x00000064 Code RO 3858 i.gapc_disconnect_ind_handler ns_ble_task.o + 0x0100d00c 0x0100d00c 0x00000028 Code RO 3214 i.gapc_encrypt_ind_handler ns_sec.o + 0x0100d034 0x0100d034 0x00000130 Code RO 3215 i.gapc_encrypt_req_ind_handler ns_sec.o + 0x0100d164 0x0100d164 0x00000080 Code RO 3859 i.gapc_get_dev_info_req_ind_handler ns_ble_task.o + 0x0100d1e4 0x0100d1e4 0x0000000c Code RO 3860 i.gapc_le_phy_ind_handler ns_ble_task.o + 0x0100d1f0 0x0100d1f0 0x0000001c Code RO 3861 i.gapc_le_pkt_size_ind_handler ns_ble_task.o + 0x0100d20c 0x0100d20c 0x00000064 Code RO 3862 i.gapc_param_update_req_ind_handler ns_ble_task.o + 0x0100d270 0x0100d270 0x00000028 Code RO 3863 i.gapc_param_updated_ind_handler ns_ble_task.o + 0x0100d298 0x0100d298 0x00000040 Code RO 3864 i.gapc_set_dev_info_req_ind_handler ns_ble_task.o + 0x0100d2d8 0x0100d2d8 0x00000034 Code RO 3865 i.gapm_activity_created_ind_handler ns_ble_task.o + 0x0100d30c 0x0100d30c 0x00000060 Code RO 3866 i.gapm_activity_stopped_ind_handler ns_ble_task.o + 0x0100d36c 0x0100d36c 0x0000002c Code RO 3867 i.gapm_addr_solved_ind_handler ns_ble_task.o + 0x0100d398 0x0100d398 0x000003e0 Code RO 3868 i.gapm_cmp_evt_handler ns_ble_task.o + 0x0100d778 0x0100d778 0x000000ac Code RO 3869 i.gapm_ext_adv_repoer_ind_handler ns_ble_task.o + 0x0100d824 0x0100d824 0x00000036 Code RO 3870 i.gapm_gen_rand_nb_ind_handler ns_ble_task.o + 0x0100d85a 0x0100d85a 0x0000000c Code RO 3871 i.gapm_profile_added_ind_handler ns_ble_task.o + 0x0100d866 0x0100d866 0x0000000c Code RO 3872 i.gapm_scan_request_ind_handler ns_ble_task.o + 0x0100d872 0x0100d872 0x00000002 PAD + 0x0100d874 0x0100d874 0x00000040 Code RO 2903 i.gattc_att_info_req_ind_handler rdtss_task.o + 0x0100d8b4 0x0100d8b4 0x00000070 Code RO 2904 i.gattc_cmp_evt_handler rdtss_task.o + 0x0100d924 0x0100d924 0x00000028 Code RO 3873 i.gattc_cmp_evt_handler ns_ble_task.o + 0x0100d94c 0x0100d94c 0x0000004c Code RO 3874 i.gattc_mtu_changed_ind_handler ns_ble_task.o + 0x0100d998 0x0100d998 0x000000c4 Code RO 2765 i.gattc_read_req_ind_handler diss_task.o + 0x0100da5c 0x0100da5c 0x000000e0 Code RO 2905 i.gattc_read_req_ind_handler rdtss_task.o + 0x0100db3c 0x0100db3c 0x00000110 Code RO 2906 i.gattc_write_req_ind_handler rdtss_task.o + 0x0100dc4c 0x0100dc4c 0x0000006c Code RO 3026 i.get_cfg_handle rdts_common.o + 0x0100dcb8 0x0100dcb8 0x00000054 Code RO 3027 i.get_value_handle rdts_common.o + 0x0100dd0c 0x0100dd0c 0x00000064 Code RO 4710 i.info_adc_init app_info.o + 0x0100dd70 0x0100dd70 0x0000006c Code RO 4711 i.info_adc_read app_info.o + 0x0100dddc 0x0100dddc 0x0000011c Code RO 4712 i.info_fill_item app_info.o + 0x0100def8 0x0100def8 0x0000002c Code RO 4713 i.info_put_tlv app_info.o + 0x0100df24 0x0100df24 0x00000034 Code RO 4227 i.led_task main.o + 0x0100df58 0x0100df58 0x00000030 Code RO 2356 i.llhwc_modem_setmode rwip_driver.o + 0x0100df88 0x0100df88 0x00000130 Code RO 2357 i.llhwc_phy_prerx_flash rwip_driver.o + 0x0100e0b8 0x0100e0b8 0x00000090 Code RO 2358 i.llhwc_setmode_reg_config rwip_driver.o + 0x0100e148 0x0100e148 0x000001a0 Code RO 4228 i.main main.o + 0x0100e2e8 0x0100e2e8 0x0000005c Code RO 3456 i.ns_EXTI4_12_IRQHandler ns_ble.o + 0x0100e344 0x0100e344 0x00000028 Code RO 3457 i.ns_HardFault_Handler ns_ble.o + 0x0100e36c 0x0100e36c 0x00000020 Code RO 3459 i.ns_ble_add_prf_func_register ns_ble.o + 0x0100e38c 0x0100e38c 0x0000002c Code RO 3460 i.ns_ble_add_svc ns_ble.o + 0x0100e3b8 0x0100e3b8 0x000000dc Code RO 3462 i.ns_ble_adv_fsm_next ns_ble.o + 0x0100e494 0x0100e494 0x00000048 Code RO 3463 i.ns_ble_adv_init ns_ble.o + 0x0100e4dc 0x0100e4dc 0x00000050 Code RO 3464 i.ns_ble_adv_start ns_ble.o + 0x0100e52c 0x0100e52c 0x0000004c Code RO 3465 i.ns_ble_adv_stop ns_ble.o + 0x0100e578 0x0100e578 0x0000003c Code RO 3468 i.ns_ble_delete_init ns_ble.o + 0x0100e5b4 0x0100e5b4 0x00000038 Code RO 3469 i.ns_ble_delete_scan ns_ble.o + 0x0100e5ec 0x0100e5ec 0x0000002c Code RO 3470 i.ns_ble_disconnect ns_ble.o + 0x0100e618 0x0100e618 0x0000006c Code RO 3473 i.ns_ble_gap_init ns_ble.o + 0x0100e684 0x0100e684 0x00000024 Code RO 3476 i.ns_ble_get_connection_num ns_ble.o + 0x0100e6a8 0x0100e6a8 0x00000050 Code RO 3479 i.ns_ble_list_set_ral ns_ble.o + 0x0100e6f8 0x0100e6f8 0x00000084 Code RO 3481 i.ns_ble_lsc_config ns_ble.o + 0x0100e77c 0x0100e77c 0x00000034 Code RO 3483 i.ns_ble_mtu_set ns_ble.o + 0x0100e7b0 0x0100e7b0 0x00000028 Code RO 3485 i.ns_ble_prf_task_register ns_ble.o + 0x0100e7d8 0x0100e7d8 0x00000048 Code RO 3490 i.ns_ble_scan_data_find ns_ble.o + 0x0100e820 0x0100e820 0x00000278 Code RO 3497 i.ns_ble_stack_init ns_ble.o + 0x0100ea98 0x0100ea98 0x00000124 Code RO 3498 i.ns_ble_start_init ns_ble.o + 0x0100ebbc 0x0100ebbc 0x000000cc Code RO 3499 i.ns_ble_start_scan ns_ble.o + 0x0100ec88 0x0100ec88 0x00000038 Code RO 3500 i.ns_ble_stop_init ns_ble.o + 0x0100ecc0 0x0100ecc0 0x0000003c Code RO 3501 i.ns_ble_stop_scan ns_ble.o + 0x0100ecfc 0x0100ecfc 0x00000078 Code RO 3502 i.ns_ble_update_param ns_ble.o + 0x0100ed74 0x0100ed74 0x0000002c Code RO 3216 i.ns_bond_db_get_size ns_sec.o + 0x0100eda0 0x0100eda0 0x0000001c Code RO 3217 i.ns_bond_db_load ns_sec.o + 0x0100edbc 0x0100edbc 0x00000030 Code RO 3218 i.ns_bond_last_bonded_addr ns_sec.o + 0x0100edec 0x0100edec 0x00000030 Code RO 3219 i.ns_bond_last_bonded_peer_id ns_sec.o + 0x0100ee1c 0x0100ee1c 0x00000064 Code RO 3220 i.ns_bond_last_bonded_ral_info ns_sec.o + 0x0100ee80 0x0100ee80 0x00000060 Code RO 3221 i.ns_bond_resolv_addr_start ns_sec.o + 0x0100eee0 0x0100eee0 0x0000007c Code RO 3222 i.ns_bond_search_addr_irk ns_sec.o + 0x0100ef5c 0x0100ef5c 0x000000d4 Code RO 3505 i.ns_peripheral_config ns_ble.o + 0x0100f030 0x0100f030 0x00000160 Code RO 3224 i.ns_sec_bond_store_evt_handler ns_sec.o + 0x0100f190 0x0100f190 0x00000010 Code RO 3225 i.ns_sec_get_bond_status ns_sec.o + 0x0100f1a0 0x0100f1a0 0x0000000c Code RO 3226 i.ns_sec_get_iocap ns_sec.o + 0x0100f1ac 0x0100f1ac 0x00000068 Code RO 3227 i.ns_sec_init ns_sec.o + 0x0100f214 0x0100f214 0x00000018 Code RO 3073 i.ns_sleep_lock_acquire ns_sleep.o + 0x0100f22c 0x0100f22c 0x00000014 Code RO 3074 i.ns_sleep_lock_release ns_sleep.o + 0x0100f240 0x0100f240 0x000000c8 Code RO 3149 i.ns_timer_api_process_handler ns_timer.o + 0x0100f308 0x0100f308 0x00000158 Code RO 4654 i.ota_on_data app_ota.o + 0x0100f460 0x0100f460 0x000001ac Code RO 4655 i.ota_on_end app_ota.o + 0x0100f60c 0x0100f60c 0x00000028 Code RO 4656 i.ota_respond app_ota.o + 0x0100f634 0x0100f634 0x0000005c Code RO 4832 i.params_save app_params.o + 0x0100f690 0x0100f690 0x00000044 Code RO 3506 i.patchx_enable ns_ble.o + 0x0100f6d4 0x0100f6d4 0x00000088 Code RO 2537 i.prf_add_profile prf.o + 0x0100f75c 0x0100f75c 0x00000010 Code RO 2540 i.prf_dst_task_get prf.o + 0x0100f76c 0x0100f76c 0x00000030 Code RO 2541 i.prf_env_get prf.o + 0x0100f79c 0x0100f79c 0x00000038 Code RO 2542 i.prf_get_id_from_task prf.o + 0x0100f7d4 0x0100f7d4 0x00000028 Code RO 2543 i.prf_get_itf_func_register prf.o + 0x0100f7fc 0x0100f7fc 0x00000038 Code RO 2544 i.prf_get_task_from_id prf.o + 0x0100f834 0x0100f834 0x000000b4 Code RO 2545 i.prf_init prf.o + 0x0100f8e8 0x0100f8e8 0x00000030 Code RO 2546 i.prf_itf_get prf.o + 0x0100f918 0x0100f918 0x00000038 Code RO 4584 i.proto_cli_out app_ble_proto.o + 0x0100f950 0x0100f950 0x00000080 Code RO 4585 i.proto_dump app_ble_proto.o + 0x0100f9d0 0x0100f9d0 0x00000058 Code RO 4901 i.prvAddCurrentTaskToDelayedList tasks.o + 0x0100fa28 0x0100fa28 0x00000070 Code RO 5233 i.prvCopyDataToQueue queue.o + 0x0100fa98 0x0100fa98 0x00000054 Code RO 4902 i.prvIdleTask tasks.o + 0x0100faec 0x0100faec 0x00000054 Code RO 5463 i.prvInsertBlockIntoFreeList heap_4.o + 0x0100fb40 0x0100fb40 0x000000cc Code RO 4903 i.prvListTasksWithinSingleList tasks.o + 0x0100fc0c 0x0100fc0c 0x00000014 Code RO 5510 i.prvTaskExitError port.o + 0x0100fc20 0x0100fc20 0x00000074 Code RO 5234 i.prvUnlockQueue queue.o + 0x0100fc94 0x0100fc94 0x000000f4 Code RO 5464 i.pvPortMalloc heap_4.o + 0x0100fd88 0x0100fd88 0x00000018 Code RO 4904 i.pvTaskIncrementMutexHeldCount tasks.o + 0x0100fda0 0x0100fda0 0x00000024 Code RO 5511 i.pxPortInitialiseStack port.o + 0x0100fdc4 0x0100fdc4 0x0000003a Code RO 2907 i.rdtss_att_get_value rdtss_task.o + 0x0100fdfe 0x0100fdfe 0x00000002 PAD + 0x0100fe00 0x0100fe00 0x00000040 Code RO 2908 i.rdtss_att_info_rsp_handler rdtss_task.o + 0x0100fe40 0x0100fe40 0x00000068 Code RO 2909 i.rdtss_att_set_value rdtss_task.o + 0x0100fea8 0x0100fea8 0x0000004c Code RO 2852 i.rdtss_cleanup rdtss.o + 0x0100fef4 0x0100fef4 0x0000004c Code RO 2853 i.rdtss_create rdtss.o + 0x0100ff40 0x0100ff40 0x00000042 Code RO 2854 i.rdtss_destroy rdtss.o + 0x0100ff82 0x0100ff82 0x0000001c Code RO 3028 i.rdtss_get_att_handle rdts_common.o + 0x0100ff9e 0x0100ff9e 0x00000028 Code RO 3029 i.rdtss_get_att_idx rdts_common.o + 0x0100ffc6 0x0100ffc6 0x00000098 Code RO 2855 i.rdtss_init rdtss.o + 0x0101005e 0x0101005e 0x00000002 PAD + 0x01010060 0x01010060 0x000000a4 Code RO 2910 i.rdtss_init_ccc_values rdtss_task.o + 0x01010104 0x01010104 0x00000008 Code RO 2856 i.rdtss_prf_itf_get rdtss.o + 0x0101010c 0x0101010c 0x00000054 Code RO 4062 i.rdtss_send_notify app_rdtss.o + 0x01010160 0x01010160 0x00000034 Code RO 2911 i.rdtss_set_ccc_value rdtss_task.o + 0x01010194 0x01010194 0x00000020 Code RO 2912 i.rdtss_task_init rdtss_task.o + 0x010101b4 0x010101b4 0x000000b0 Code RO 2913 i.rdtss_val_ind_req_handler rdtss_task.o + 0x01010264 0x01010264 0x0000000a Code RO 4063 i.rdtss_val_ntf_cfm_handler app_rdtss.o + 0x0101026e 0x0101026e 0x000000a6 Code RO 2914 i.rdtss_val_ntf_req_handler rdtss_task.o + 0x01010314 0x01010314 0x00000020 Code RO 2915 i.rdtss_val_set_req_handler rdtss_task.o + 0x01010334 0x01010334 0x00000118 Code RO 4064 i.rdtss_val_write_ind_handler app_rdtss.o + 0x0101044c 0x0101044c 0x0000007c Code RO 4065 i.rdtss_value_req_ind_handler app_rdtss.o + 0x010104c8 0x010104c8 0x00000080 Code RO 2916 i.rdtss_value_req_rsp_handler rdtss_task.o + 0x01010548 0x01010548 0x00000118 Code RO 2105 i.rwip_init rwip.o + 0x01010660 0x01010660 0x000000f8 Code RO 2365 i.rwip_slp_isr rwip_driver.o + 0x01010758 0x01010758 0x00000002 Code RO 3154 i.timer_canceled_handler ns_timer.o + 0x0101075a 0x0101075a 0x00000002 Code RO 3155 i.timer_modified_handler ns_timer.o + 0x0101075c 0x0101075c 0x00000026 Code RO 5421 i.uxListRemove list.o + 0x01010782 0x01010782 0x00000002 PAD + 0x01010784 0x01010784 0x0000000c Code RO 4906 i.uxTaskGetNumberOfTasks tasks.o + 0x01010790 0x01010790 0x00000098 Code RO 4907 i.uxTaskGetSystemState tasks.o + 0x01010828 0x01010828 0x00000016 Code RO 5422 i.vListInitialise list.o + 0x0101083e 0x0101083e 0x00000006 Code RO 5423 i.vListInitialiseItem list.o + 0x01010844 0x01010844 0x00000032 Code RO 5424 i.vListInsert list.o + 0x01010876 0x01010876 0x00000018 Code RO 5425 i.vListInsertEnd list.o + 0x0101088e 0x0101088e 0x00000002 PAD + 0x01010890 0x01010890 0x00000018 Code RO 5513 i.vPortEnterCritical port.o + 0x010108a8 0x010108a8 0x0000001c Code RO 5514 i.vPortExitCritical port.o + 0x010108c4 0x010108c4 0x00000044 Code RO 5465 i.vPortFree heap_4.o + 0x01010908 0x01010908 0x00000018 Code RO 5515 i.vPortYield port.o + 0x01010920 0x01010920 0x00000030 Code RO 4912 i.vTaskDelay tasks.o + 0x01010950 0x01010950 0x00000010 Code RO 4917 i.vTaskInternalSetTimeOutState tasks.o + 0x01010960 0x01010960 0x000000d0 Code RO 4918 i.vTaskList tasks.o + 0x01010a30 0x01010a30 0x0000000c Code RO 4919 i.vTaskMissedYield tasks.o + 0x01010a3c 0x01010a3c 0x00000024 Code RO 4921 i.vTaskPlaceOnEventList tasks.o + 0x01010a60 0x01010a60 0x00000074 Code RO 4923 i.vTaskPriorityDisinheritAfterTimeout tasks.o + 0x01010ad4 0x01010ad4 0x00000050 Code RO 4929 i.vTaskStartScheduler tasks.o + 0x01010b24 0x01010b24 0x00000010 Code RO 4931 i.vTaskSuspendAll tasks.o + 0x01010b34 0x01010b34 0x00000064 Code RO 4932 i.vTaskSwitchContext tasks.o + 0x01010b98 0x01010b98 0x0000000c Code RO 5467 i.xPortGetFreeHeapSize heap_4.o + 0x01010ba4 0x01010ba4 0x0000000c Code RO 5468 i.xPortGetMinimumEverFreeHeapSize heap_4.o + 0x01010bb0 0x01010bb0 0x00000050 Code RO 5516 i.xPortStartScheduler port.o + 0x01010c00 0x01010c00 0x00000024 Code RO 5245 i.xQueueCreateMutex queue.o + 0x01010c24 0x01010c24 0x00000044 Code RO 5246 i.xQueueGenericCreate queue.o + 0x01010c68 0x01010c68 0x0000006e Code RO 5247 i.xQueueGenericReset queue.o + 0x01010cd6 0x01010cd6 0x0000018e Code RO 5248 i.xQueueGenericSend queue.o + 0x01010e64 0x01010e64 0x0000008e Code RO 5249 i.xQueueGenericSendFromISR queue.o + 0x01010ef2 0x01010ef2 0x00000142 Code RO 5258 i.xQueueReceive queue.o + 0x01011034 0x01011034 0x00000172 Code RO 5260 i.xQueueSemaphoreTake queue.o + 0x010111a6 0x010111a6 0x00000002 PAD + 0x010111a8 0x010111a8 0x00000064 Code RO 4933 i.xTaskCheckForTimeOut tasks.o + 0x0101120c 0x0101120c 0x00000178 Code RO 4934 i.xTaskCreate tasks.o + 0x01011384 0x01011384 0x00000020 Code RO 4938 i.xTaskGetSchedulerState tasks.o + 0x010113a4 0x010113a4 0x0000000c Code RO 4939 i.xTaskGetTickCount tasks.o + 0x010113b0 0x010113b0 0x000000d4 Code RO 4941 i.xTaskIncrementTick tasks.o + 0x01011484 0x01011484 0x00000068 Code RO 4944 i.xTaskPriorityDisinherit tasks.o + 0x010114ec 0x010114ec 0x00000078 Code RO 4945 i.xTaskPriorityInherit tasks.o + 0x01011564 0x01011564 0x00000064 Code RO 4946 i.xTaskRemoveFromEventList tasks.o + 0x010115c8 0x010115c8 0x000000c8 Code RO 4947 i.xTaskResumeAll tasks.o + 0x01011690 0x01011690 0x000001d8 Data RO 20 .constdata system_n32wb03x.o + 0x01011868 0x01011868 0x0000000c Data RO 782 .constdata n32wb03x_rcc.o + 0x01011874 0x01011874 0x00000324 Data RO 1952 .constdata n32wb03x_qflash.o + 0x01011b98 0x01011b98 0x0000001e Data RO 2366 .constdata rwip_driver.o + 0x01011bb6 0x01011bb6 0x00000002 PAD + 0x01011bb8 0x01011bb8 0x000000a8 Data RO 2672 .constdata diss.o + 0x01011c60 0x01011c60 0x00000018 Data RO 2766 .constdata diss_task.o + 0x01011c78 0x01011c78 0x00000010 Data RO 2857 .constdata rdtss.o + 0x01011c88 0x01011c88 0x00000048 Data RO 2917 .constdata rdtss_task.o + 0x01011cd0 0x01011cd0 0x00000028 Data RO 3233 .constdata ns_sec.o + 0x01011cf8 0x01011cf8 0x00000008 Data RO 3234 .constdata ns_sec.o + 0x01011d00 0x01011d00 0x00000334 Data RO 3508 .constdata ns_ble.o + 0x01012034 0x01012034 0x00000098 Data RO 3875 .constdata ns_ble_task.o + 0x010120cc 0x010120cc 0x000000c8 Data RO 3876 .constdata ns_ble_task.o + 0x01012194 0x01012194 0x0000000c Data RO 3877 .constdata ns_ble_task.o + 0x010121a0 0x010121a0 0x00000008 Data RO 4008 .constdata app_dis.o + 0x010121a8 0x010121a8 0x00000008 Data RO 4009 .constdata app_dis.o + 0x010121b0 0x010121b0 0x0000010a Data RO 4066 .constdata app_rdtss.o + 0x010122ba 0x010122ba 0x00000002 PAD + 0x010122bc 0x010122bc 0x00000018 Data RO 4067 .constdata app_rdtss.o + 0x010122d4 0x010122d4 0x0000006c Data RO 4387 .constdata cli_core.o + 0x01012340 0x01012340 0x00000006 Data RO 4715 .constdata app_info.o + 0x01012346 0x01012346 0x00000081 Data RO 5916 .constdata mc_p.l(ctype_o.o) + 0x010123c7 0x010123c7 0x00000001 PAD + 0x010123c8 0x010123c8 0x00000004 Data RO 5917 .constdata mc_p.l(ctype_o.o) + 0x010123cc 0x010123cc 0x000001f6 Data RO 4388 .conststring cli_core.o + 0x010125c2 0x010125c2 0x00000002 PAD + 0x010125c4 0x010125c4 0x00000049 Data RO 4873 .conststring app_bootset.o + 0x0101260d 0x0101260d 0x00000003 PAD + 0x01012610 0x01012610 0x00000020 Data RO 5965 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x01011ac8, Size: 0x00007370, Max: 0x0000c000, ABSOLUTE, COMPRESSED[0x00000608]) + Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x01012630, Size: 0x000073a8, Max: 0x0000c000, ABSOLUTE, COMPRESSED[0x00000608]) Exec Addr Load Addr Size Type Attr Idx E Section Name Object @@ -4423,34 +4567,38 @@ Memory Map of the image 0x20004734 COMPRESSED 0x00000002 Data RW 3878 .data ns_ble_task.o 0x20004736 COMPRESSED 0x00000001 Data RW 3879 .data ns_ble_task.o 0x20004737 COMPRESSED 0x00000001 Data RW 4068 .data app_rdtss.o - 0x20004738 COMPRESSED 0x00000008 Data RW 4313 .data bsp_usart.o - 0x20004740 COMPRESSED 0x00000004 Data RW 4386 .data cli_core.o - 0x20004744 COMPRESSED 0x00000002 Data RW 4472 .data app_cli.o - 0x20004746 COMPRESSED 0x00000006 Data RW 4513 .data ble_up.o - 0x2000474c COMPRESSED 0x0000000a Data RW 4581 .data app_ble_proto.o + 0x20004738 COMPRESSED 0x00000008 Data RW 4316 .data bsp_usart.o + 0x20004740 COMPRESSED 0x00000004 Data RW 4389 .data cli_core.o + 0x20004744 COMPRESSED 0x00000002 Data RW 4478 .data app_cli.o + 0x20004746 COMPRESSED 0x00000006 Data RW 4519 .data ble_up.o + 0x2000474c COMPRESSED 0x0000000a Data RW 4587 .data app_ble_proto.o 0x20004756 COMPRESSED 0x00000002 PAD - 0x20004758 COMPRESSED 0x0000002c Data RW 4651 .data app_ota.o - 0x20004784 COMPRESSED 0x00000004 Data RW 4710 .data app_info.o - 0x20004788 COMPRESSED 0x0000003c Data RW 4872 .data tasks.o - 0x200047c4 COMPRESSED 0x00000018 Data RW 5392 .data heap_4.o - 0x200047dc COMPRESSED 0x00000004 Data RW 5439 .data port.o - 0x200047e0 COMPRESSED 0x00000004 Data RW 5504 .data mc_p.l(rand.o) - 0x200047e4 - 0x00000034 Zero RW 19 .bss system_n32wb03x.o - 0x20004818 - 0x00000328 Zero RW 1951 .bss n32wb03x_qflash.o - 0x20004b40 - 0x0000011c Zero RW 2548 .bss prf.o - 0x20004c5c - 0x00000050 Zero RW 3156 .bss ns_timer.o - 0x20004cac - 0x0000005c Zero RW 3232 .bss ns_sec.o - 0x20004d08 - 0x000001b0 Zero RW 3507 .bss ns_ble.o - 0x20004eb8 - 0x000001e0 Zero RW 4383 .bss cli_core.o - 0x20005098 - 0x00000240 Zero RW 4471 .bss app_cli.o - 0x200052d8 - 0x00000200 Zero RW 4512 .bss ble_up.o - 0x200054d8 - 0x0000057b Zero RW 4580 .bss app_ble_proto.o - 0x20005a53 - 0x00000028 Zero RW 4708 .bss app_info.o - 0x20005a7b COMPRESSED 0x00000001 PAD - 0x20005a7c - 0x000000f0 Zero RW 4871 .bss tasks.o - 0x20005b6c - 0x00005000 Zero RW 5391 .bss heap_4.o - 0x2000ab6c COMPRESSED 0x00000004 PAD - 0x2000ab70 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o + 0x20004758 COMPRESSED 0x0000002c Data RW 4657 .data app_ota.o + 0x20004784 COMPRESSED 0x00000004 Data RW 4716 .data app_info.o + 0x20004788 COMPRESSED 0x00000002 Data RW 4834 .data app_params.o + 0x2000478a COMPRESSED 0x00000001 Data RW 4874 .data app_bootset.o + 0x2000478b COMPRESSED 0x00000001 PAD + 0x2000478c COMPRESSED 0x0000003c Data RW 4950 .data tasks.o + 0x200047c8 COMPRESSED 0x00000018 Data RW 5470 .data heap_4.o + 0x200047e0 COMPRESSED 0x00000004 Data RW 5517 .data port.o + 0x200047e4 COMPRESSED 0x00000004 Data RW 5582 .data mc_p.l(rand.o) + 0x200047e8 COMPRESSED 0x00000004 Data RW 5946 .data mc_p.l(errno.o) + 0x200047ec - 0x00000034 Zero RW 19 .bss system_n32wb03x.o + 0x20004820 - 0x00000328 Zero RW 1951 .bss n32wb03x_qflash.o + 0x20004b48 - 0x0000011c Zero RW 2548 .bss prf.o + 0x20004c64 - 0x00000050 Zero RW 3156 .bss ns_timer.o + 0x20004cb4 - 0x0000005c Zero RW 3232 .bss ns_sec.o + 0x20004d10 - 0x000001b0 Zero RW 3507 .bss ns_ble.o + 0x20004ec0 - 0x000001e0 Zero RW 4386 .bss cli_core.o + 0x200050a0 - 0x00000240 Zero RW 4477 .bss app_cli.o + 0x200052e0 - 0x00000200 Zero RW 4518 .bss ble_up.o + 0x200054e0 - 0x0000057b Zero RW 4586 .bss app_ble_proto.o + 0x20005a5b - 0x00000028 Zero RW 4714 .bss app_info.o + 0x20005a83 COMPRESSED 0x00000001 PAD + 0x20005a84 - 0x00000034 Zero RW 4833 .bss app_params.o + 0x20005ab8 - 0x000000f0 Zero RW 4949 .bss tasks.o + 0x20005ba8 - 0x00005000 Zero RW 5469 .bss heap_4.o + 0x2000aba8 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o ============================================================================== @@ -4462,22 +4610,24 @@ Image component sizes 696 188 0 0 0 12840 app_ble.o 1152 246 0 10 1403 9232 app_ble_proto.o + 1244 680 73 1 0 3605 app_bootset.o 1220 112 0 2 576 5970 app_cli.o 284 102 16 0 0 8644 app_dis.o 100 12 0 0 0 2298 app_gpio.o 800 102 6 4 40 7372 app_info.o 1120 62 0 44 0 7879 app_ota.o + 884 490 0 2 52 3616 app_params.o 602 160 290 1 0 5690 app_rdtss.o 196 36 0 6 512 2736 ble_up.o 52 4 0 0 0 958 boot_crc32.o 640 76 0 8 0 9346 bsp_usart.o - 1504 764 386 4 480 8811 cli_core.o + 1504 764 610 4 480 8855 cli_core.o 386 12 168 0 0 18834 diss.o 508 20 24 0 0 20126 diss_task.o 420 38 0 24 20480 5428 heap_4.o 192 20 0 0 0 31670 lib_att.o 140 0 0 0 0 3746 list.o - 456 286 0 0 0 10839 main.o + 484 284 0 0 0 11543 main.o 120 18 0 0 0 7160 misc.o 486 74 0 0 0 8360 n32wb03x_adc.o 256 40 0 0 0 5231 n32wb03x_dma.o @@ -4505,15 +4655,18 @@ Image component sizes 2548 254 0 60 240 27724 tasks.o ---------------------------------------------------------------------- - 31028 4774 3760 2016 27532 841648 Object Totals + 33184 5942 4058 2020 27580 849617 Object Totals 216 72 32 0 0 0 (incl. Generated) - 34 0 8 22 5 0 (incl. Padding) + 34 0 9 23 1 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name 86 0 0 0 0 0 __dczerorl2.o + 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 @@ -4522,6 +4675,7 @@ 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 40 0 0 0 0 72 idiv.o 36 8 0 0 0 68 init.o 0 0 0 0 0 0 iusefp.o @@ -4538,6 +4692,7 @@ Image component sizes 18 0 0 0 0 60 strcpy.o 14 0 0 0 0 60 strlen.o 30 0 0 0 0 72 strncmp.o + 118 0 0 0 0 84 strtoul.o 44 0 0 0 0 72 uidiv.o 96 0 0 0 0 84 uldiv.o 40 2 0 0 0 68 cdrcmple.o @@ -4557,18 +4712,18 @@ Image component sizes 122 0 0 0 0 72 fmul.o ---------------------------------------------------------------------- - 4836 172 0 4 0 3240 Library Totals - 8 0 0 0 0 0 (incl. Padding) + 5168 180 134 8 0 3588 Library Totals + 10 0 1 0 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name - 3038 134 0 4 0 1860 mc_p.l + 3368 142 133 8 0 2208 mc_p.l 1790 38 0 0 0 1380 mf_p.l ---------------------------------------------------------------------- - 4836 172 0 4 0 3240 Library Totals + 5168 180 134 8 0 3588 Library Totals ---------------------------------------------------------------------- @@ -4577,15 +4732,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 35864 4946 3760 2020 27532 829828 Grand Totals - 35864 4946 3760 1544 27532 829828 ELF Image Totals (compressed) - 35864 4946 3760 1544 0 0 ROM Totals + 38352 6122 4192 2028 27580 837617 Grand Totals + 38352 6122 4192 1544 27580 837617 ELF Image Totals (compressed) + 38352 6122 4192 1544 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 39624 ( 38.70kB) - Total RW Size (RW Data + ZI Data) 29552 ( 28.86kB) - Total ROM Size (Code + RO Data + RW Data) 41168 ( 40.20kB) + Total RO Size (Code + RO Data) 42544 ( 41.55kB) + Total RW Size (RW Data + ZI Data) 29608 ( 28.91kB) + Total ROM Size (Code + RO Data + RW Data) 44088 ( 43.05kB) ============================================================================== 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 14ad53e03cf6f087278fc6036dd1e8673693e11b..fc8dc8b905765e7d10f0701286694ddb4fef4616 100644 GIT binary patch delta 14992 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 T{ijP_Rw>m>MKR|ju0j6|vOSp| diff --git a/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvprojx b/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvprojx index 46eb020..852596c 100644 --- a/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvprojx +++ b/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvprojx @@ -1078,6 +1078,16 @@ 1 ..\src\app_gpio.c + + app_params.c + 1 + ..\src\app_params.c + + + app_bootset.c + 1 + ..\src\app_bootset.c + @@ -1918,6 +1928,16 @@ 1 ..\src\app_gpio.c + + app_params.c + 1 + ..\src\app_params.c + + + app_bootset.c + 1 + ..\src\app_bootset.c + @@ -2758,6 +2778,16 @@ 1 ..\src\app_gpio.c + + app_params.c + 1 + ..\src\app_params.c + + + app_bootset.c + 1 + ..\src\app_bootset.c + diff --git a/mcm-ddc-ble/inc/app_bootset.h b/mcm-ddc-ble/inc/app_bootset.h new file mode 100644 index 0000000..75b0370 --- /dev/null +++ b/mcm-ddc-ble/inc/app_bootset.h @@ -0,0 +1,25 @@ +/** + * @file app_bootset.h + * @brief Structured read/write of the bootsetting record (0x01004000). + * Raw writes are not exposed: every modification goes through a + * field setter that recomputes the record CRC32, erases the sector, + * programs and verifies. CLI handlers are registered in cli_core.c. + */ +#ifndef __APP_BOOTSET_H__ +#define __APP_BOOTSET_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/** "bsdump": dump the bootsetting record fields + magic/CRC check result. */ +void AppBootset_CmdBsdump(int argc, char* argv[]); + +/** "bsset ": modify one bootsetting field (see app_bootset.c). */ +void AppBootset_CmdBsset(int argc, char* argv[]); + +#ifdef __cplusplus +} +#endif + +#endif /* __APP_BOOTSET_H__ */ diff --git a/mcm-ddc-ble/inc/app_params.h b/mcm-ddc-ble/inc/app_params.h new file mode 100644 index 0000000..e9da0ff --- /dev/null +++ b/mcm-ddc-ble/inc/app_params.h @@ -0,0 +1,57 @@ +/** + * @file app_params.h + * @brief Application parameter record stored in the APP_DATA flash region + * (0x01006000, 8KB reserved). Structured access only: parameters are + * read/modified by name through the "param" CLI command (UART and the + * BLE CLI read/write characteristic); no raw region access is exposed. + */ +#ifndef __APP_PARAMS_H__ +#define __APP_PARAMS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* Parameter record layout (stored at CAIIC_APP_DATA_ADDR) */ +#define CAIIC_PARAMS_MAGIC 0xCA12DA7Au +#define CAIIC_PARAMS_LAYOUT_VER 1u + +#define PARAM_LED1_BLINK_MS_MIN 50u +#define PARAM_LED1_BLINK_MS_MAX 10000u +#define PARAM_LED1_BLINK_MS_DEF 500u +#define PARAM_PWM_DUTY_PCT_MAX 100u + +typedef struct +{ + uint32_t magic; /* CAIIC_PARAMS_MAGIC */ + uint32_t layout_ver; /* parameter layout version */ + uint16_t led1_blink_ms; /* LED1 blink half period in ms */ + uint16_t flags; /* reserved */ + uint32_t pwm_duty_pct; /* PWM duty 0..100, stored only (no PWM output yet) */ + uint32_t reserved[8]; /* future parameters */ + uint32_t crc32; /* IEEE CRC32 over all fields above this one */ +} caiic_params_t; + +/** + * @brief Load the parameter record from flash; fall back to defaults in RAM + * when the record is missing/invalid (flash is left untouched until + * the first "param set"/"param save"). + */ +void app_params_init(void); + +/** Current RAM copy of the parameters (always valid after init). */ +const caiic_params_t* app_params_get(void); + +/** 1 when the on-flash record passed magic+CRC validation at init. */ +uint8_t app_params_is_valid(void); + +/** "param [set | save]" CLI handler (registered in cli_core.c). */ +void AppParams_CmdParam(int argc, char* argv[]); + +#ifdef __cplusplus +} +#endif + +#endif /* __APP_PARAMS_H__ */ diff --git a/mcm-ddc-ble/inc/app_version.h b/mcm-ddc-ble/inc/app_version.h index 201d1d4..92776fb 100644 --- a/mcm-ddc-ble/inc/app_version.h +++ b/mcm-ddc-ble/inc/app_version.h @@ -5,8 +5,8 @@ #ifndef __APP_VERSION_H__ #define __APP_VERSION_H__ -#define APP_FW_VERSION "V1.00.08" +#define APP_FW_VERSION "V1.00.09" /* Numeric form used by the BLE info query / OTA records: 0x00MMmmpp */ -#define APP_FW_VERSION_NUM 0x00010008u +#define APP_FW_VERSION_NUM 0x00010009u #endif /* __APP_VERSION_H__ */ diff --git a/mcm-ddc-ble/src/app_bootset.c b/mcm-ddc-ble/src/app_bootset.c new file mode 100644 index 0000000..2070da9 --- /dev/null +++ b/mcm-ddc-ble/src/app_bootset.c @@ -0,0 +1,208 @@ +/** + * @file app_bootset.c + * @brief Structured read/write of the bootsetting record (0x01004000). + * + * bsdump prints every field of caiic_bootsetting_t plus the magic/CRC32 + * validation result. bsset modifies a single named field, then rewrites the + * whole record: read current record (rebuilt zeroed when invalid) -> set + * field -> recompute CRC32 -> erase sector -> program -> read-back verify. + * Same write pattern as app_ota.c::ota_update_bootsetting(). + * + * WARNING: a bad active_bank/start_address makes the bootloader jump to an + * invalid image (falls back to APP1 or hangs; recovery is SWD reflash of + * the full package). This is a maintenance tool command. + */ +#include "app_bootset.h" +#include "cli_core.h" +#include "dfu_layout.h" +#include "boot_crc32.h" +#include "n32wb03x.h" +#include "n32wb03x_qflash.h" + +#include +#include +#include + +static uint8_t s_qflash_ready; + +/* ------------------------------------------------------------------ */ +/* Helpers */ +/* ------------------------------------------------------------------ */ + +static void bootset_ensure_qflash(void) +{ + if (!s_qflash_ready) + { + Qflash_Init(); /* copy the flash algorithm to RAM (once) */ + s_qflash_ready = 1; + } +} + +static uint32_t bootset_crc(const caiic_bootsetting_t* bs) +{ + return caiic_crc32((const uint8_t*)bs, + (uint32_t)offsetof(caiic_bootsetting_t, crc32)); +} + +static uint8_t bootset_valid(const caiic_bootsetting_t* bs) +{ + return (bs->magic == CAIIC_BOOT_MAGIC && bs->crc32 == bootset_crc(bs)) ? 1 : 0; +} + +static void bootset_print(const caiic_bootsetting_t* bs) +{ + cli_printf("bootsetting @ 0x%08lX: %s\r\n", + (unsigned long)CAIIC_BOOTSETTING_ADDR, + bootset_valid(bs) ? "valid" : "INVALID (bad magic/crc)"); + cli_printf(" magic = 0x%08lX\r\n", (unsigned long)bs->magic); + cli_printf(" active_bank = %lu\r\n", (unsigned long)bs->active_bank); + cli_printf(" bank1: addr=0x%08lX size=%lu crc=0x%08lX\r\n", + (unsigned long)bs->bank1.start_address, + (unsigned long)bs->bank1.size, + (unsigned long)bs->bank1.crc32); + cli_printf(" ver=0x%08lX\r\n", (unsigned long)bs->bank1.version); + cli_printf(" bank2: addr=0x%08lX size=%lu crc=0x%08lX\r\n", + (unsigned long)bs->bank2.start_address, + (unsigned long)bs->bank2.size, + (unsigned long)bs->bank2.crc32); + cli_printf(" ver=0x%08lX\r\n", (unsigned long)bs->bank2.version); + cli_printf(" crc32 = 0x%08lX\r\n", (unsigned long)bs->crc32); +} + +static uint8_t parse_u32(const char* s, uint32_t* out) +{ + char* end = NULL; + uint32_t v = strtoul(s, &end, 0); + if (end == s || *end != '\0') + { + return 1; + } + *out = v; + return 0; +} + +/* ------------------------------------------------------------------ */ +/* CLI handlers */ +/* ------------------------------------------------------------------ */ + +void AppBootset_CmdBsdump(int argc, char* argv[]) +{ + caiic_bootsetting_t bs; + (void)argc; + (void)argv; + + memcpy(&bs, (const void*)CAIIC_BOOTSETTING_ADDR, sizeof(bs)); + bootset_print(&bs); +} + +/** + * @brief Program the modified record and verify by read-back. + * @return 0 on success. + */ +static uint8_t bootset_commit(caiic_bootsetting_t* bs) +{ + bootset_ensure_qflash(); + bs->magic = CAIIC_BOOT_MAGIC; + bs->crc32 = bootset_crc(bs); + + if (Qflash_Erase_Sector(CAIIC_BOOTSETTING_ADDR) != 0) + { + return 1; + } + /* sizeof(caiic_bootsetting_t) = 44, already 4-byte aligned */ + if (Qflash_Write(CAIIC_BOOTSETTING_ADDR, (uint8_t*)bs, sizeof(*bs)) != 0) + { + return 1; + } + if (memcmp(bs, (const void*)CAIIC_BOOTSETTING_ADDR, sizeof(*bs)) != 0) + { + return 1; + } + return 0; +} + +void AppBootset_CmdBsset(int argc, char* argv[]) +{ + caiic_bootsetting_t bs; + caiic_bank_t* bank; + uint32_t v; + + if (argc < 3) + { + cli_write("usage: bsset \r\n"); + cli_write(" field: active <1|2>\r\n"); + cli_write(" b1addr|b2addr|b1size|b2size|b1crc|b2crc|b1ver|b2ver \r\n"); + return; + } + if (parse_u32(argv[2], &v) != 0) + { + cli_write("bsset: bad value\r\n"); + return; + } + + memcpy(&bs, (const void*)CAIIC_BOOTSETTING_ADDR, sizeof(bs)); + if (!bootset_valid(&bs)) + { + memset(&bs, 0, sizeof(bs)); + cli_write("bsset: existing record invalid, rebuild from scratch\r\n"); + } + + if (strcmp(argv[1], "active") == 0) + { + if (v != CAIIC_ACTIVE_BANK1 && v != CAIIC_ACTIVE_BANK2) + { + cli_write("bsset: active must be 1 or 2\r\n"); + return; + } + bs.active_bank = v; + } + else if (argv[1][0] == 'b' && (argv[1][1] == '1' || argv[1][1] == '2')) + { + bank = (argv[1][1] == '1') ? &bs.bank1 : &bs.bank2; + if (strcmp(argv[1] + 2, "addr") == 0) + { + if (v != CAIIC_APP1_BASE && v != CAIIC_APP2_BASE) + { + cli_write("bsset: addr must be 0x01008000 or 0x01040000\r\n"); + return; + } + bank->start_address = v; + } + else if (strcmp(argv[1] + 2, "size") == 0) + { + if (v > CAIIC_APP_BANK_SIZE) + { + cli_write("bsset: size exceeds 224KB bank\r\n"); + return; + } + bank->size = v; + } + else if (strcmp(argv[1] + 2, "crc") == 0) + { + bank->crc32 = v; + } + else if (strcmp(argv[1] + 2, "ver") == 0) + { + bank->version = v; + } + else + { + cli_write("bsset: unknown field\r\n"); + return; + } + } + else + { + cli_write("bsset: unknown field\r\n"); + return; + } + + cli_printf("bsset: %s = 0x%08lX, writing...\r\n", argv[1], (unsigned long)v); + if (bootset_commit(&bs) != 0) + { + cli_write("bsset: flash fail\r\n"); + return; + } + cli_write("bsset: ok (verified)\r\n"); + bootset_print(&bs); +} diff --git a/mcm-ddc-ble/src/app_params.c b/mcm-ddc-ble/src/app_params.c new file mode 100644 index 0000000..971afa2 --- /dev/null +++ b/mcm-ddc-ble/src/app_params.c @@ -0,0 +1,210 @@ +/** + * @file app_params.c + * @brief Application parameter record in the APP_DATA flash region. + * + * caiic_params_t lives at CAIIC_APP_DATA_ADDR with magic + CRC32 (same + * pattern as the bootsetting record). "param set" modifies the RAM copy, + * then erases the first APP_DATA sector and programs the record back with + * read-back verification. No raw flash access is exposed: the only way to + * touch the region is by named parameter. + * + * Qflash erase/write disables interrupts for tens of ms per sector (SDK + * driver runs the flash algorithm from RAM); the BLE link survives via the + * connection supervision timeout - same behaviour as the OTA path. + */ +#include "app_params.h" +#include "cli_core.h" +#include "dfu_layout.h" +#include "boot_crc32.h" +#include "n32wb03x.h" +#include "n32wb03x_qflash.h" + +#include +#include +#include + +static caiic_params_t s_params; +static uint8_t s_valid; /* flash record valid at init */ +static uint8_t s_qflash_ready; + +/* ------------------------------------------------------------------ */ +/* Helpers */ +/* ------------------------------------------------------------------ */ + +static void params_ensure_qflash(void) +{ + if (!s_qflash_ready) + { + Qflash_Init(); /* copy the flash algorithm to RAM (once) */ + s_qflash_ready = 1; + } +} + +static void params_load_defaults(void) +{ + memset(&s_params, 0, sizeof(s_params)); + s_params.magic = CAIIC_PARAMS_MAGIC; + s_params.layout_ver = CAIIC_PARAMS_LAYOUT_VER; + s_params.led1_blink_ms = PARAM_LED1_BLINK_MS_DEF; + s_params.pwm_duty_pct = 0; +} + +static uint32_t params_crc(const caiic_params_t* p) +{ + return caiic_crc32((const uint8_t*)p, (uint32_t)offsetof(caiic_params_t, crc32)); +} + +/** + * @brief Program the RAM parameter copy to flash and verify by read-back. + * @return 0 on success, 1 on flash failure. + */ +static uint8_t params_save(void) +{ + params_ensure_qflash(); + s_params.crc32 = params_crc(&s_params); + + if (Qflash_Erase_Sector(CAIIC_APP_DATA_ADDR) != 0) + { + return 1; + } + /* sizeof(caiic_params_t) = 52, already 4-byte aligned */ + if (Qflash_Write(CAIIC_APP_DATA_ADDR, (uint8_t*)&s_params, sizeof(s_params)) != 0) + { + return 1; + } + if (memcmp(&s_params, (const void*)CAIIC_APP_DATA_ADDR, sizeof(s_params)) != 0) + { + return 1; + } + s_valid = 1; + return 0; +} + +/** + * @brief Parse a u32 argument, decimal or 0x-prefixed hex. + * @return 0 on success. + */ +static uint8_t parse_u32(const char* s, uint32_t* out) +{ + char* end = NULL; + uint32_t v = strtoul(s, &end, 0); + if (end == s || *end != '\0') + { + return 1; + } + *out = v; + return 0; +} + +/* ------------------------------------------------------------------ */ +/* Public interface */ +/* ------------------------------------------------------------------ */ + +void app_params_init(void) +{ + memcpy(&s_params, (const void*)CAIIC_APP_DATA_ADDR, sizeof(s_params)); + if (s_params.magic == CAIIC_PARAMS_MAGIC && + s_params.layout_ver == CAIIC_PARAMS_LAYOUT_VER && + s_params.crc32 == params_crc(&s_params)) + { + s_valid = 1; + } + else + { + params_load_defaults(); + s_valid = 0; + } +} + +const caiic_params_t* app_params_get(void) +{ + return &s_params; +} + +uint8_t app_params_is_valid(void) +{ + return s_valid; +} + +/* ------------------------------------------------------------------ */ +/* CLI: param */ +/* ------------------------------------------------------------------ */ + +static void param_print_all(void) +{ + cli_printf("params: %s\r\n", s_valid ? "valid" : "default (not saved)"); + cli_printf(" led1_blink_ms = %u\r\n", (unsigned int)s_params.led1_blink_ms); + cli_printf(" pwm_duty_pct = %lu\r\n", (unsigned long)s_params.pwm_duty_pct); + cli_printf(" flags = 0x%04X\r\n", (unsigned int)s_params.flags); +} + +void AppParams_CmdParam(int argc, char* argv[]) +{ + uint32_t v; + + if (argc < 2) + { + param_print_all(); + return; + } + + if (strcmp(argv[1], "save") == 0) + { + if (params_save() == 0) + { + cli_write("param saved\r\n"); + } + else + { + cli_write("param save: flash fail\r\n"); + } + return; + } + + if (strcmp(argv[1], "set") != 0 || argc < 4) + { + cli_write("usage: param [set | save]\r\n"); + return; + } + if (parse_u32(argv[3], &v) != 0) + { + cli_write("param set: bad value\r\n"); + return; + } + + if (strcmp(argv[2], "led1_blink_ms") == 0) + { + if (v < PARAM_LED1_BLINK_MS_MIN || v > PARAM_LED1_BLINK_MS_MAX) + { + cli_printf("led1_blink_ms range %u..%u\r\n", + (unsigned int)PARAM_LED1_BLINK_MS_MIN, + (unsigned int)PARAM_LED1_BLINK_MS_MAX); + return; + } + s_params.led1_blink_ms = (uint16_t)v; + } + else if (strcmp(argv[2], "pwm_duty_pct") == 0) + { + if (v > PARAM_PWM_DUTY_PCT_MAX) + { + cli_printf("pwm_duty_pct range 0..%u\r\n", + (unsigned int)PARAM_PWM_DUTY_PCT_MAX); + return; + } + s_params.pwm_duty_pct = v; + } + else + { + cli_write("unknown param (led1_blink_ms, pwm_duty_pct)\r\n"); + return; + } + + if (params_save() == 0) + { + cli_printf("%s set ok\r\n", argv[2]); + } + else + { + cli_write("param set: flash fail\r\n"); + } +} diff --git a/mcm-ddc-ble/src/cli_core.c b/mcm-ddc-ble/src/cli_core.c index 8c6acef..ce07e09 100644 --- a/mcm-ddc-ble/src/cli_core.c +++ b/mcm-ddc-ble/src/cli_core.c @@ -12,6 +12,8 @@ #include "app_gpio.h" #include "app_info.h" #include "app_ble_proto.h" +#include "app_params.h" +#include "app_bootset.h" #include "n32wb03x.h" /* SystemTrimValueGet (temp debug) */ #include @@ -245,6 +247,9 @@ static const CliCmd_t s_cmds[] = { {"devinfo", "show device info (temp/vdd/fan, same as BLE INFO_QUERY all)", CmdDevInfo}, {"blelog", "blelog [on|off]: BLE traffic log (events + frame hex dump)", CmdBleLog}, {"led", "led <1|2> : control board LED", CmdLed}, + {"param", "param [set |save]: app params", AppParams_CmdParam}, + {"bsdump", "bsdump: show bootsetting record + crc check", AppBootset_CmdBsdump}, + {"bsset", "bsset : write bootsetting field (careful!)", AppBootset_CmdBsset}, }; #define CLI_CMD_COUNT (sizeof(s_cmds) / sizeof(s_cmds[0])) diff --git a/mcm-ddc-ble/src/main.c b/mcm-ddc-ble/src/main.c index a7519d1..d00cf80 100644 --- a/mcm-ddc-ble/src/main.c +++ b/mcm-ddc-ble/src/main.c @@ -80,6 +80,7 @@ #include "ble_up.h" #include "app_cli.h" #include "app_ble_proto.h" +#include "app_params.h" #include "app_version.h" #include "app_user_config.h" @@ -121,16 +122,23 @@ static void ble_schedule_task(void *pvParameters) } /** - * @brief LED blink task: toggle LED1 (PB0) every 500 ms as a run indicator. - * LED2 (PA6) stays owned by app_ble.c as the connection state LED. + * @brief LED blink task: toggle LED1 (PB0) as a run indicator; the half + * period comes from the APP_DATA parameter record (led1_blink_ms, + * "param set led1_blink_ms <50..10000>"). LED2 (PA6) stays owned by + * app_ble.c as the connection state LED. */ static void led_task(void *pvParameters) { (void)pvParameters; for (;;) { + uint16_t period = app_params_get()->led1_blink_ms; + if (period < PARAM_LED1_BLINK_MS_MIN) + { + period = PARAM_LED1_BLINK_MS_DEF; + } LedBlink(LED1_PORT, LED1_PIN); - vTaskDelay(pdMS_TO_TICKS(500)); + vTaskDelay(pdMS_TO_TICKS(period)); } } @@ -175,6 +183,9 @@ int main(void) LedInit(LED1_PORT,LED1_PIN); // power led LedInit(LED2_PORT,LED2_PIN); //connection state + /* Load APP_DATA parameter record (defaults in RAM when invalid) */ + app_params_init(); + /* Keep SWD debug accessible: never enter sleep (also required because * deep sleep conflicts with the FreeRTOS tick). */ ns_sleep_lock_acquire(); diff --git a/tools/out/caiic_ble_full.bin b/tools/out/caiic_ble_full.bin index 63d9d99099911d0a253cde2cc9ae7d49dcbfb72d..f3509a514075b658697a68b9f029190024defe91 100644 GIT binary patch delta 15047 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%0D|U*I)jXKo?P=IokHP zicS%3kK&XlYzwLAIl&%j3#e(fFfG#dvzk6FG)G>3TtlB1==QexdU~laHvIB7Jsn4L zFHrAFP;Vi^as-8vZO06BtU_F%*)WLxPX_wo(0q>>>C&NOMH*c@l-!#}7b(XS@8&>T zMml}{KiQX0q|-MvP4nc1p1-u6FF*Th)`7@fW zz332zYR|jq5b+Vb5gd*9VjrQoi1Aw+>dSw*dIUYGYU(*a=o3(DPxleJ2XRI}p?Qc) zFe<-}S%Ex3+<`bB@gkHzg?Pg${FV;!?Z^wjavo;Ku`NMNG06N62pz@;L%&&wS0gS* z{G%UKK)m-uLXDYZDXB++4Fz8!PDk8DDI zsa6CDeNUwH63%EOmk1#7#AAed&7cpM>Y(N2=xCZro93x;(+fIX4EpI1*Mpu5@yi$& z!n{WbwIjA7Z1@9ioDpv>GrGiSW(GvTGzbgKBA@iSDBmDAj=-~sRq4HMc&-8!z8*I>` z{OSM4->-O{H?Wi0z)1Nu%P)ULG+p^6OuhKuFGrML6p7ZQwQK5cTff{~+O{m0{y1gH z+Pd{C+|$Liu2sMNMf0Iw4o%>%LByr5`lZVTe-1&~ZqB3An+DO(2Y;S}e*R6aB^CUo%El#A2BV6#4Rh|QN0z@d*|?+v z7$T#5EAT=EX?*d+wED)4b@fY!ep1DM@JH-K{8mRu-vfkJmQ(sI813N8hx4dTt6!K( KU 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 T{ijP_Rw>m>MKR|ju0j6|vOSp| diff --git a/tools/out/caiic_ble_full_ota.json b/tools/out/caiic_ble_full_ota.json index e3703a7..570ad37 100644 --- a/tools/out/caiic_ble_full_ota.json +++ b/tools/out/caiic_ble_full_ota.json @@ -1,6 +1,6 @@ { "file": "caiic_ble_full_ota.bin", - "size": 41168, - "crc32": "0x26056D5B", - "version": 65544 + "size": 44088, + "crc32": "0xE246E2B2", + "version": 65545 } \ No newline at end of file