From d82b6217a4e2dfa9cde14071641084ebc1cbb0e9 Mon Sep 17 00:00:00 2001 From: "evan.liu" <583229071@qq.com> Date: Fri, 4 Sep 2026 11:29:28 +0800 Subject: [PATCH] =?UTF-8?q?mcm-ddc-ble=20V1.00.11~13:CLI=E6=96=B0=E5=A2=9E?= =?UTF-8?q?reset/factory/uartrst/uartinfo=E5=9B=9B=E6=9D=A1=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4=E5=91=BD=E4=BB=A4(=E5=A4=8D=E4=BD=8D=E5=8D=95?= =?UTF-8?q?=E6=9D=BF/=E6=81=A2=E5=A4=8D=E5=87=BA=E5=8E=82=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE/=E5=A4=8D=E4=BD=8D=E4=B8=B2=E5=8F=A3/=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=B8=B2=E5=8F=A3=E5=8F=82=E6=95=B0);CLI=E8=AF=BB?= =?UTF-8?q?=E5=86=99=E7=89=B9=E5=BE=81=E5=BA=94=E7=AD=94=E6=94=B9=E5=88=86?= =?UTF-8?q?=E5=8C=85=E4=B8=8A=E6=8A=A5(=E7=BC=93=E5=86=B2512B->1024B+?= =?UTF-8?q?=E8=AF=BB=E6=B8=B8=E6=A0=87,=E7=89=87=E9=95=BFatt=5Fmtu-2?= =?UTF-8?q?=E6=81=92=E7=9F=AD=E8=AF=BB=E9=81=BF=E5=BC=80Read=20Blob?= =?UTF-8?q?=E5=81=8F=E7=A7=BB=E4=B8=8D=E4=B8=8B=E5=8F=91=E7=9A=84=E6=A0=88?= =?UTF-8?q?=E9=99=90=E5=88=B6,0=E9=95=BF=E5=BA=A6=E5=8C=85=3D=E5=BA=94?= =?UTF-8?q?=E7=AD=94=E7=BB=93=E6=9D=9F);help=E6=81=A2=E5=A4=8D=E5=AE=8C?= =?UTF-8?q?=E6=95=B4=E5=B8=AE=E5=8A=A9=E8=A1=A8+help=20=E5=8D=95?= =?UTF-8?q?=E6=9D=A1=E6=9F=A5=E8=AF=A2;ble=5Fcli=5Ftest.py=E4=B8=8EApp=20M?= =?UTF-8?q?cmCli.ts=E5=90=8C=E6=AD=A5=E6=94=B9=E5=BE=AA=E7=8E=AF=E8=AF=BB;?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=90=8C=E6=AD=A5(=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E6=97=A5=E5=BF=9731~33/ble=5Fprotocol.md/AGENTS.md/App?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=B0=E5=BD=95);=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 | 17 +- Boot/MDK-ARM/build.log | 2 +- .../修改记录_2026-09-04_CLI读写特征分包读.md | 35 + SmartAssiter/src/mcm/McmCli.ts | 28 +- docs/ble_protocol.md | 23 +- docs/开发日志.md | 62 + mcm-ddc-ble/MDK-ARM/Listings/mcm-ddc-ble.map | 2440 ++++---- mcm-ddc-ble/MDK-ARM/bin/mcm-ddc-ble.bin | Bin 44088 -> 45056 bytes mcm-ddc-ble/inc/app_ble_proto.h | 5 +- mcm-ddc-ble/inc/app_params.h | 10 +- mcm-ddc-ble/inc/app_version.h | 4 +- mcm-ddc-ble/inc/bsp_usart.h | 4 + mcm-ddc-ble/src/app_ble_proto.c | 33 +- mcm-ddc-ble/src/app_params.c | 77 +- mcm-ddc-ble/src/app_profile/app_rdtss.c | 2 +- mcm-ddc-ble/src/bsp_usart.c | 35 + mcm-ddc-ble/src/cli_core.c | 94 +- mcm-ddc-ble/src/main.c | 2 +- tools/ble_cli.bat | 6 +- tools/ble_cli_test.py | 29 +- tools/out/caiic_ble_full.bin | Bin 76856 -> 77824 bytes tools/out/caiic_ble_full.hex | 5052 +++++++++-------- tools/out/caiic_ble_full_ota.bin | Bin 44088 -> 45056 bytes tools/out/caiic_ble_full_ota.json | 6 +- 24 files changed, 4177 insertions(+), 3789 deletions(-) create mode 100644 SmartAssiter/docs/修改记录_2026-09-04_CLI读写特征分包读.md diff --git a/AGENTS.md b/AGENTS.md index 0e317df..58d1424 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,14 +5,14 @@ 本仓库是 **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/` 主工程,**已删除**,其功能已全部并入本工程。 + - **`mcm-ddc-ble/`** — 唯一活跃的应用固件工程(APP,链接在 APP1 bank `0x01008000`/224KB)。以 SDK rdtss 例程为蓝本,集成 FreeRTOS、UART CLI、BLE 自定义 GATT 服务(CLI 透传 / 设备信息查询 / BLE OTA 双 bank 直写升级)、bootsetting 与 APP_DATA 参数区结构化读写命令。当前版本 **V1.00.13**(`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 蓝牙测试客户端。 关键文档: -- `docs/开发日志.md` — 固件全程开发日志(29 节,含所有踩坑根因与设计决策,排查问题先查这里) +- `docs/开发日志.md` — 固件全程开发日志(33 节,含所有踩坑根因与设计决策,排查问题先查这里) - `docs/ble_protocol.md` — CAIIC BLE 通信协议 V1.1(帧格式/GATT UUID/三类业务流程/维护命令/手机端开发指南) - `SmartAssiter/docs/修改记录_*.md` — App 侧每次改造的详细记录 @@ -57,13 +57,14 @@ mcm-ddc-ble/ │ ├── 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 +│ │ # 命令:help / version / sysinfo / devinfo / blelog / led / appget / appset / +│ │ # bsdump / bsset / reset / factory / uartrst / uartinfo │ ├── 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_params.c # APP_DATA 参数记录(caiic_params_t,magic+CRC)+ appget/appset 命令(led/pwm) │ ├── app_bootset.c # bootsetting 结构化读写 bsdump/bsset(自动重算 CRC,防裸写变砖) │ ├── ble_up.c # CLI 应答的 BLE notify 上行(ke_msg 上下文约束:环形缓冲 + BLE 任务内发送) │ ├── n32wb03x_it.c # 异常处理(HardFault 栈帧打印)+ USART1_IRQHandler 转发 @@ -87,7 +88,7 @@ mcm-ddc-ble/ "D:\Keil_v5\UV4\UV4.exe" -b caiic_boot.uvprojx -j0 -o build.log # Boot 增量构建 ``` -要求保持 **0 Error(s), 0 Warning(s)**。当前基线(V1.00.09):`Code=38352 RO-data=4192 RW-data=2028 ZI-data=27580`。 +要求保持 **0 Error(s), 0 Warning(s)**。当前基线(V1.00.13):`Code=38988 RO-data=4524 RW-data=2028 ZI-data=28092`。 **固件版本号约定(重要)**:每次修改固件代码必须递增 `mcm-ddc-ble/inc/app_version.h` 中的 `APP_FW_VERSION` 与 `APP_FW_VERSION_NUM`(格式 `0x00MMmmpp`,通常补丁位 +1),用于识别板上实际运行的固件;工程名与出包文件名保持不变。 @@ -113,7 +114,7 @@ mcm-ddc-ble/ |---|---|---| | `...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 新增 | +| `...c72ee003` | Read + Write(带响应) | **CLI 读写特征**:写原始命令行(≤63B)→ **分包读回**输出文本(每片 ≤att_mtu−2,0 长度包=结束,V1.00.13 起;此前单读 ≤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 是本仓库最重要的待办。 @@ -121,7 +122,7 @@ mcm-ddc-ble/ - 连接后设备主动发起 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。 +- **维护命令(V1.00.10 起)**:bootsetting 与 APP_DATA 参数区为**结构化**读写(`appget`/`appset`/`bsdump`/`bsset`,不暴露裸读写),UART 与 BLE CLI 读写特征 `...e0003` 均可调用;V1.00.11 起新增 `reset`(复位单板)/`factory`(恢复出厂设置)/`uartrst`(复位串口)/`uartinfo`(查询串口参数)。详见 `docs/ble_protocol.md` §6.5。 ## 手机 App(SmartAssiter) @@ -129,7 +130,7 @@ mcm-ddc-ble/ - 由 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`(业务命令封装) + - `src/mcm/` — 设备业务层:`McmCli.ts`(CLI 特征写命令/分包读应答——读到 0 长度包止,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(官方组件,无第三方插件) diff --git a/Boot/MDK-ARM/build.log b/Boot/MDK-ARM/build.log index 1d68b51..4c324cd 100644 --- a/Boot/MDK-ARM/build.log +++ b/Boot/MDK-ARM/build.log @@ -9,4 +9,4 @@ Program Size: Code=1320 RO-data=680 RW-data=0 ZI-data=2104 FromELF: creating hex file... After Build - User command #1: fromelf --bin --output=.\bin\caiic_boot.bin .\Objects\caiic_boot.axf ".\Objects\caiic_boot.axf" - 0 Error(s), 0 Warning(s). -Build Time Elapsed: 00:00:01 +Build Time Elapsed: 00:00:00 diff --git a/SmartAssiter/docs/修改记录_2026-09-04_CLI读写特征分包读.md b/SmartAssiter/docs/修改记录_2026-09-04_CLI读写特征分包读.md new file mode 100644 index 0000000..c9c4c92 --- /dev/null +++ b/SmartAssiter/docs/修改记录_2026-09-04_CLI读写特征分包读.md @@ -0,0 +1,35 @@ +# 修改记录 2026-09-04:CLI 读写特征应答改分包读 + +CLI 特征 `...c72e0003` 的应答读取从「单读 ≤512B」改为「分包循环读,读到 +0 长度包为止」,解除命令输出 512B 截断(14 条命令的 help 全表约 840B)。 + +## 固件侧(mcm-ddc-ble V1.00.13) + +- `app_ble_proto.c`:应答缓冲 512B→1024B;新增读游标 `s_cliRspOff`,每次 + ATT 读返回下一片,片长 = 协商 MTU−2(MTU 247 时 245B/片;默认 23 时 21B/片)。 + 单片恒为短读,对端协议栈不会发起 Read Blob(blob 偏移不下发应用层, + 会切错窗口,详见 docs/开发日志.md §33)。 +- 写入新命令或断连时游标归零;读到 0 长度包 = 应答结束。 +- `help` 恢复完整帮助表(`help ` 单条查询保留)。 +- 固件新增维护命令(V1.00.11):`reset` 复位单板、`factory` 恢复出厂设置 + (参数区缺省+落盘+复位)、`uartrst` 复位串口、`uartinfo` 查询串口参数。 + +## App 侧修改 + +- `src/mcm/McmCli.ts`:`doExecCli` 读应答改为循环读 `Ble.readChar`, + 拼接各片直到读到 0 长度包(64 片兜底);文件头注释同步更新。 + +## 兼容性 + +- **App 与固件需配套升级**:旧固件(≤V1.00.12)重复读返回同一静态缓冲, + 循环读会重复拼接直至兜底次数上限;旧 App 单读新固件只能拿到第一片 + (MTU 247 时 245B)。 +- PC 工具 `tools/ble_cli_test.py`(`-rw` 模式)已同步改循环读。 + +## 验证 + +- 固件 `UV4 -r` 全量重建 0 Error / 0 Warning;`tools/out/caiic_ble_full.hex` + 出包,OTA 清单 version=0x0001000D(_ota.bin 45056B,crc32=0xB2469318)。 +- PC 侧验证(烧录后):`tools\ble_cli.bat help` 应完整输出 14 条命令 + (多片拼接),`tools\ble_cli.bat devinfo`/`uartinfo` 等回归。 +- 真机回归:CLI 终端页执行 help/sysinfo 输出完整、无重复拼接。 diff --git a/SmartAssiter/src/mcm/McmCli.ts b/SmartAssiter/src/mcm/McmCli.ts index 8c7b850..bb8de60 100644 --- a/SmartAssiter/src/mcm/McmCli.ts +++ b/SmartAssiter/src/mcm/McmCli.ts @@ -2,8 +2,9 @@ * CAIIC-MCM CLI 通道(读写特征方式,不依赖 notify) * * 链路:手机把原始命令行写入 CLI 特征 ...c72e0003(write-with-response), - * 固件在写回调里同步执行命令并把输出捕获到静态缓冲;手机随后读同一特征 - * 取回输出文本(≤512B,单读实际上限为 mtu-1,建议连接后先协商 MTU 247)。 + * 固件在写回调里同步执行命令并把输出捕获到静态缓冲;手机随后分包读同一 + * 特征取回输出文本——每次读返回下一片(≤ att_mtu-2),读到 0 长度包为 + * 应答结束(V1.00.13 起分包上报,单条命令输出上限 1024B)。 * * 所有命令经 Promise 链串行执行,避免并发写/读交错。 */ @@ -70,14 +71,23 @@ async function doExecCli(cmd: string, timeoutMs: number): Promise { return { text: "", status: wr.type == 10001 ? -4 : -3 } as CliResult } await delay(CLI_RSP_DELAY_MS) - const rd = await new Promise((resolve) => { - Ble.readChar(Ble.MCM_CLI_UUID, (res: MyApiResult) => { resolve(res) }) - }) - if (rd.type != 0) { - const st = rd.type == 10001 ? -4 : -1 - return { text: "", status: st } as CliResult + // 分包读:每次读返回下一片,0 长度包 = 应答结束 + let all: number[] = [] + for (let i = 0; i < 64; i++) { // 64 片上限兜底(单片 ≤ att_mtu-2) + const rd = await new Promise((resolve) => { + Ble.readChar(Ble.MCM_CLI_UUID, (res: MyApiResult) => { resolve(res) }) + }) + if (rd.type != 0) { + const st = rd.type == 10001 ? -4 : -1 + return { text: "", status: st } as CliResult + } + const arr = rd.data as number[] + if (arr.length == 0) { + break + } + all = all.concat(arr) } - const text = toText(rd.data as number[]) + const text = toText(all) // 固件对无输出的成功命令回 "ok\r\n",对未知命令/超长行回 "unknown command\r\n" const status = text == "unknown command\r\n" ? 1 : 0 return { text: text, status: status } as CliResult diff --git a/docs/ble_protocol.md b/docs/ble_protocol.md index 890ff1c..d58122f 100644 --- a/docs/ble_protocol.md +++ b/docs/ble_protocol.md @@ -15,6 +15,8 @@ | Service | `00002760-08C2-11E1-9073-0E8AC72E1001` | Primary Service | | 下行特征(手机→设备) | `00002760-08C2-11E1-9073-0E8AC72EE001` | Write Without Response | | 上行特征(设备→手机) | `00002760-08C2-11E1-9073-0E8AC72EE002` | Notify(需写 CCCD=0x0001 使能) | +| CLI 读写特征 | `00002760-08C2-11E1-9073-0E8AC72EE003` | Read + Write(带响应):写原始命令行(≤63B)→ 分包读回输出文本(见 §6.5) | +| 只读参数特征 | `00002760-08C2-11E1-9073-0E8AC72EE004` | Read:全部信息项 TLV(同 INFO_RSP(all),见 §5) | MTU:**设备在连接建立后主动发起 MTU 交换(请求 247)**;手机端也可自行发起。 一次 BLE 写入/通知的最大数据量 = att_mtu − 3(默认 MTU 23 时为 20B)。 @@ -127,24 +129,33 @@ flash 擦除单位 = 4KB 扇区。设备侧**直写 flash,不做扇区级 RAM 注意:flash 擦写期间设备关中断数十 ms/扇区(Qflash 算法在 RAM 执行),BLE 链路靠 5s supervision timeout 维持,属正常现象;但请避免在 OTA 期间主动断开。 -## 6.5 维护命令:bootsetting 与 APP_DATA 参数区(V1.00.09 起,结构化访问) +## 6.5 维护命令:bootsetting 与 APP_DATA 参数区(V1.00.09 起,结构化访问;V1.00.10 起参数命令为 appget/appset;V1.00.11 起新增 reset/factory/uartrst/uartinfo) bootsetting 与 APP_DATA 保留区(0x01006000/8KB)的读写以 CLI 命令形式提供, **只暴露结构化字段访问,无裸读写命令**。UART CLI 与 BLE CLI 读写特征 -`...c72e0003`(写原始命令行 → 读回文本应答,≤512B)命令集完全相同: +`...c72e0003`(写原始命令行 → 分包读回文本应答)命令集完全相同: | 命令 | 说明 | |---|---| -| `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 参数强制写盘 | +| `appget` | 打印 APP_DATA 参数记录与 valid/default 状态(led = LED1 闪烁半周期 ms;pwm = PWM 占空比 %) | +| `appset ` | 修改参数并立即落盘(led 50~10000 即时生效于 LED1 闪烁;pwm 0~100 仅存储备用) | | `bsdump` | 打印 bootsetting 记录全字段 + magic/CRC 校验结果 | | `bsset ` | 写 bootsetting 单字段(`active 1\|2`、`b1addr/b2addr/b1size/b2size/b1crc/b2crc/b1ver/b2ver`),自动重算 CRC、擦除+编程+校验。**写错 active/addr 会导致 Boot 跳错,恢复靠 SWD 重烧整片包** | +| `reset` | 复位单板:应答后延时 200ms 执行 `NVIC_SystemReset()`,Boot 按 active bank 跳转 | +| `factory` | 恢复出厂设置:APP_DATA 参数区恢复缺省值并落盘后复位(**不动 bootsetting**) | +| `uartrst` | 复位串口:USART1 按 115200 8N1 重新初始化并清空 RX 队列 | +| `uartinfo` | 查询串口参数:引脚(PB6/PB7 AF4)、波特率/数据位/校验/停止位、TX DMA/RX 中断形态 | 参数记录(APP_DATA 区头,52B):magic `0xCA12DA7A` + layout_ver + 参数字段 + -reserved[8] + CRC32;记录无效时固件以缺省值运行,`param set`/`param save` 时落盘。 +reserved[8] + CRC32;记录无效时固件以缺省值运行,`appset` 时落盘。 注意:flash 擦写关中断数十 ms/扇区,BLE 应答可能延迟;MTU 协商失败(20B/包)时 长应答会被截断到 19B,建议先协商 MTU 247。 +读写特征应答读取(V1.00.13 起分包上报):命令输出捕获上限 1024B;每次读 +`...e0003` 返回下一片(≤ att_mtu−2,单片恒为"短读",不会触发 Read Blob—— +blob 偏移不下发应用层,协议栈会切错窗口),**读到 0 长度包为应答结束**; +写入新命令即重置分包游标。客户端必须循环读至空包。**需搭配 V1.00.13+ 固件**: +旧固件为单读 ≤512B 静态缓冲,重复读返回同一内容,循环读会重复拼接直至 +客户端兜底次数上限。 ## 7. 首次烧录与恢复 diff --git a/docs/开发日志.md b/docs/开发日志.md index b9e85f6..8ea7c84 100644 --- a/docs/开发日志.md +++ b/docs/开发日志.md @@ -773,3 +773,65 @@ BLE(CLI 读写特征 ...c72e0003,写命令行读应答)双通道可用。 擦写关中断数十 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)。 + +## 30. 参数命令改名 appget/appset(2026-09-04,V1.00.10) + +`param [set |save]` 拆成两条短命令,参数名缩短: + +- `appget` — 打印全部参数(led = LED1 闪烁半周期 ms,pwm = PWM 占空比 %)+ 记录状态。 +- `appset ` — 修改并立即落盘(led 50~10000;pwm 0~100)。 + 取消独立 save 子命令(每次 set 即保存)。 +- 构建 0 Error/0 Warning,V1.00.10 `Code=38224 RO=4232 RW=2028 ZI=27580`, + 整包/OTA 镜像已生成(_ota.bin 44000B,crc32=0x51756221)。 + +## 31. CLI 新增 reset/factory/uartrst/uartinfo(2026-09-04,V1.00.11) + +四条维护命令(UART 与 BLE CLI 读写特征 `...e0003` 均可用): + +- `reset` — 复位单板:打印应答后延时 200ms(与 OTA 复位同一约定, + 保证应答帧先出去),`NVIC_SystemReset()` 重启,Boot 按 active bank 跳转。 +- `factory` — 恢复出厂设置:新增 `app_params_restore_defaults()`(装载缺省值 + + 落盘 flash),随后同样延时 200ms 复位。**只恢复 APP_DATA 参数区,不动 + bootsetting**(bootsetting 决定启动 bank,不是用户配置,动它有变砖风险)。 +- `uartrst` — 复位串口:补上 `bsp_usart.h` 里早已声明但未实现的 + `bsp_usart_set_baud()`(等 TXC 排空 → 关 USART → 按默认 115200 8N1 重 init → + xQueueReset 清空 RX 队列 → 重开 RXDNE 中断与 USART)。 +- `uartinfo` — 查询串口参数:打印 TX=PB6/RX=PB7(AF4)、波特率/数据位/校验/停止位、 + TX DMA CH1 + RX 中断队列形态。 + +构建 0 Error/0 Warning,V1.00.11 `Code=38840 RO=4492 RW=2028 ZI=27580`, +整包/OTA 镜像已生成(_ota.bin 44876B,crc32=0x3DB21431)。 + +## 32. help 改两级输出(2026-09-04,V1.00.12) + +实测 BLE 读写特征跑 `help` 只收到 512B 被截断:14 条命令的完整帮助表约 840B, +超过读写特征应答的 ATT 属性值硬上限 512B(`CLI_RW_RSP_MAX`),排在表尾的 +reset/factory/uartrst/uartinfo 整条丢失。 + +- `help`(无参)改为只列命令名(约 230B,任何 MTU 下都完整); +- `help ` 输出单条命令的完整帮助/usage; +- UART 与 BLE 两侧行为一致,Tab 补全不受影响(走 `cli_cmd_name()`)。 + +构建 0 Error/0 Warning,V1.00.12 `Code=38972 RO=4524 RW=2028 ZI=27580`, +整包/OTA 镜像已生成(_ota.bin 45040B,crc32=0x458CCBD6)。 + +## 33. CLI 读写特征改分包上报(2026-09-04,V1.00.13) + +V1.00.12 的 help 紧凑列表是绕过 512B 上限的权宜之计;根因是 ATT 属性值硬上限 +512B,而命令表全表已约 840B。本节把读写特征应答改为**分包上报**,彻底解除限制: + +- **为什么不能靠 Read Blob 扩长**:SDK rdtss profile 的 `RDTSS_VALUE_REQ_IND` + 不下发 blob 偏移(`rdtss_task.h` 结构体只有 conidx/att_idx),ROM GATT 收到 + blob 读会再次问应用层要全量值再自行切片——应用层若按"每次读推进游标"返回下一片, + blob 偏移会切到错误的窗口。因此分片必须避开 blob:**单片 ≤ att_mtu−2,恒为短读, + 对端协议栈不会发起 blob**;读到 0 长度包 = 应答结束。 +- 固件(app_ble_proto.c):应答缓冲 512B→1024B;新增 `s_cliRspOff` 游标, + 每次 `app_ble_proto_cli_rsp()` 返回下一片(片长 = `app_env.max_mtu`−2, + 连接后默认 23→21B/片,MTU 247 后 245B/片);写新命令或断连重置游标。 +- `help` 恢复完整帮助表(UART 体验不变),`help ` 单条查询保留。 +- PC 工具 ble_cli_test.py 与 App `McmCli.ts` 同步改循环读(读到空包止, + 各带 64 片兜底)。**客户端必须配套升级**:旧固件重复读返回同一缓冲, + 循环读会重复拼接。 + +构建 0 Error/0 Warning,V1.00.13 `Code=38988 RO=4524 RW=2028 ZI=28092`, +整包/OTA 镜像已生成(_ota.bin 45056B,crc32=0xB2469318)。 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 ca49c86..b9f3008 100644 --- a/mcm-ddc-ble/MDK-ARM/Listings/mcm-ddc-ble.map +++ b/mcm-ddc-ble/MDK-ARM/Listings/mcm-ddc-ble.map @@ -599,6 +599,13 @@ Section Cross References bsp_usart.o(i.bsp_usart_rx_isr_handler) refers to n32wb03x_usart.o(i.USART_ReceiveData) for USART_ReceiveData bsp_usart.o(i.bsp_usart_rx_isr_handler) refers to queue.o(i.xQueueGenericSendFromISR) for xQueueGenericSendFromISR bsp_usart.o(i.bsp_usart_rx_isr_handler) refers to bsp_usart.o(.data) for .data + bsp_usart.o(i.bsp_usart_set_baud) refers to n32wb03x_usart.o(i.USART_GetFlagStatus) for USART_GetFlagStatus + bsp_usart.o(i.bsp_usart_set_baud) refers to n32wb03x_usart.o(i.USART_Enable) for USART_Enable + bsp_usart.o(i.bsp_usart_set_baud) refers to n32wb03x_usart.o(i.USART_Init) for USART_Init + bsp_usart.o(i.bsp_usart_set_baud) refers to tasks.o(i.xTaskGetSchedulerState) for xTaskGetSchedulerState + bsp_usart.o(i.bsp_usart_set_baud) refers to queue.o(i.xQueueGenericReset) for xQueueGenericReset + bsp_usart.o(i.bsp_usart_set_baud) refers to n32wb03x_usart.o(i.USART_ConfigInt) for USART_ConfigInt + bsp_usart.o(i.bsp_usart_set_baud) refers to bsp_usart.o(.data) for .data bsp_usart.o(i.bsp_usart_tx_lock) refers to tasks.o(i.xTaskGetSchedulerState) for xTaskGetSchedulerState bsp_usart.o(i.bsp_usart_tx_lock) refers to queue.o(i.xQueueSemaphoreTake) for xQueueSemaphoreTake bsp_usart.o(i.bsp_usart_tx_lock) refers to bsp_usart.o(.data) for .data @@ -628,8 +635,12 @@ Section Cross References cli_core.o(i.CmdDevInfo) refers to tasks.o(i.xTaskGetTickCount) for xTaskGetTickCount cli_core.o(i.CmdDevInfo) refers to uidiv.o(.text) for __aeabi_uidivmod cli_core.o(i.CmdDevInfo) refers to heap_4.o(i.xPortGetFreeHeapSize) for xPortGetFreeHeapSize - cli_core.o(i.CmdHelp) refers to cli_core.o(i.cli_write) for cli_write + cli_core.o(i.CmdFactory) refers to app_params.o(i.app_params_restore_defaults) for app_params_restore_defaults + cli_core.o(i.CmdFactory) refers to cli_core.o(i.cli_write) for cli_write + cli_core.o(i.CmdFactory) refers to tasks.o(i.vTaskDelay) for vTaskDelay + cli_core.o(i.CmdHelp) refers to strcmp.o(.text) for strcmp cli_core.o(i.CmdHelp) refers to cli_core.o(i.cli_printf) for cli_printf + cli_core.o(i.CmdHelp) refers to cli_core.o(i.cli_write) for cli_write cli_core.o(i.CmdHelp) refers to cli_core.o(.constdata) for .constdata cli_core.o(i.CmdLed) refers to strcmp.o(.text) for strcmp cli_core.o(i.CmdLed) refers to cli_core.o(i.cli_write) for cli_write @@ -637,6 +648,8 @@ Section Cross References cli_core.o(i.CmdLed) refers to app_gpio.o(i.LedOff) for LedOff cli_core.o(i.CmdLed) refers to app_gpio.o(i.LedBlink) for LedBlink cli_core.o(i.CmdLed) refers to cli_core.o(i.cli_printf) for cli_printf + cli_core.o(i.CmdReset) refers to cli_core.o(i.cli_write) for cli_write + cli_core.o(i.CmdReset) refers to tasks.o(i.vTaskDelay) for vTaskDelay cli_core.o(i.CmdSysInfo) refers to tasks.o(i.xTaskGetTickCount) for xTaskGetTickCount cli_core.o(i.CmdSysInfo) refers to uidiv.o(.text) for __aeabi_uidivmod cli_core.o(i.CmdSysInfo) refers to cli_core.o(i.cli_printf) for cli_printf @@ -646,6 +659,10 @@ Section Cross References cli_core.o(i.CmdSysInfo) refers to cli_core.o(i.cli_write) for cli_write cli_core.o(i.CmdSysInfo) refers to tasks.o(i.vTaskList) for vTaskList cli_core.o(i.CmdSysInfo) refers to cli_core.o(.bss) for .bss + cli_core.o(i.CmdUartInfo) refers to cli_core.o(i.cli_write) for cli_write + cli_core.o(i.CmdUartInfo) refers to cli_core.o(i.cli_printf) for cli_printf + cli_core.o(i.CmdUartRst) refers to bsp_usart.o(i.bsp_usart_set_baud) for bsp_usart_set_baud + cli_core.o(i.CmdUartRst) refers to cli_core.o(i.cli_printf) for cli_printf cli_core.o(i.CmdVersion) refers to cli_core.o(i.cli_printf) for cli_printf cli_core.o(i.CmdVersion) refers to cli_core.o(i.cli_write) for cli_write cli_core.o(i.CmdVersion) refers to system_n32wb03x.o(.data) for SystemCoreClock @@ -667,9 +684,14 @@ 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_params.o(i.AppParams_CmdAppget) for AppParams_CmdAppget + cli_core.o(.constdata) refers to app_params.o(i.AppParams_CmdAppset) for AppParams_CmdAppset 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 + cli_core.o(.constdata) refers to cli_core.o(i.CmdReset) for CmdReset + cli_core.o(.constdata) refers to cli_core.o(i.CmdFactory) for CmdFactory + cli_core.o(.constdata) refers to cli_core.o(i.CmdUartRst) for CmdUartRst + cli_core.o(.constdata) refers to cli_core.o(i.CmdUartInfo) for CmdUartInfo 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 @@ -713,6 +735,7 @@ Section Cross References app_ble_proto.o(i.app_ble_proto_cli_exec) refers to app_ble_proto.o(.data) for .data app_ble_proto.o(i.app_ble_proto_cli_exec) refers to app_ble_proto.o(.bss) for .bss app_ble_proto.o(i.app_ble_proto_cli_exec) refers to app_ble_proto.o(i.cli_rsp_out) for cli_rsp_out + app_ble_proto.o(i.app_ble_proto_cli_rsp) refers to ns_ble.o(.bss) for app_env app_ble_proto.o(i.app_ble_proto_cli_rsp) refers to app_ble_proto.o(.data) for .data app_ble_proto.o(i.app_ble_proto_cli_rsp) refers to app_ble_proto.o(.bss) for .bss app_ble_proto.o(i.app_ble_proto_init) refers to app_ble_proto.o(.data) for .data @@ -814,13 +837,15 @@ 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.AppParams_CmdAppget) refers to cli_core.o(i.cli_printf) for cli_printf + app_params.o(i.AppParams_CmdAppget) refers to app_params.o(.data) for .data + app_params.o(i.AppParams_CmdAppget) refers to app_params.o(.bss) for .bss + app_params.o(i.AppParams_CmdAppset) refers to cli_core.o(i.cli_write) for cli_write + app_params.o(i.AppParams_CmdAppset) refers to strtoul.o(.text) for strtoul + app_params.o(i.AppParams_CmdAppset) refers to strcmp.o(.text) for strcmp + app_params.o(i.AppParams_CmdAppset) refers to cli_core.o(i.cli_printf) for cli_printf + app_params.o(i.AppParams_CmdAppset) refers to app_params.o(i.params_save) for params_save + app_params.o(i.AppParams_CmdAppset) refers to app_params.o(.bss) for .bss 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 @@ -828,6 +853,9 @@ Section Cross References 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.app_params_restore_defaults) refers to memseta.o(.text) for __aeabi_memclr4 + app_params.o(i.app_params_restore_defaults) refers to app_params.o(i.params_save) for params_save + app_params.o(i.app_params_restore_defaults) refers to app_params.o(.bss) for .bss 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 @@ -1794,6 +1822,7 @@ Removing Unused input sections from the image. Removing app_cli.o(.emb_text), (8 bytes). Removing app_cli.o(i.AppCli_InputBytes), (8 bytes). Removing ble_up.o(.emb_text), (8 bytes). + Removing app_ble_proto.o(.emb_text), (8 bytes). Removing app_ota.o(.emb_text), (8 bytes). Removing app_ota.o(i.app_ota_current_bank_base), (8 bytes). Removing app_info.o(.emb_text), (8 bytes). @@ -1861,7 +1890,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). -412 unused section(s) (total 15316 bytes) removed from the image. +413 unused section(s) (total 15324 bytes) removed from the image. ============================================================================== @@ -1898,46 +1927,46 @@ Image Symbol Table ../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 iscntrl_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalpha_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE + ../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_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/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 uldiv.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/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 entry10a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.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 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.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 printf7.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.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/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 @@ -1945,8 +1974,8 @@ Image Symbol Table ../clib/microlib/stdlib/rand.c 0x00000000 Number 0 rand.o ABSOLUTE ../clib/microlib/string/memchr.c 0x00000000 Number 0 memchr.o ABSOLUTE ../clib/microlib/string/memcmp.c 0x00000000 Number 0 memcmp.o ABSOLUTE - ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE ../clib/microlib/string/strcmp.c 0x00000000 Number 0 strcmp.o ABSOLUTE ../clib/microlib/string/strcpy.c 0x00000000 Number 0 strcpy.o ABSOLUTE @@ -1962,14 +1991,14 @@ Image Symbol Table ../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 fepilogue.o ABSOLUTE ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE + ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 fepilogue.o ABSOLUTE + ../fplib/microlib/fpfix.c 0x00000000 Number 0 ffixi.o ABSOLUTE ../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixul.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 dfltul.o ABSOLUTE ../fplib/microlib/fpflt.c 0x00000000 Number 0 fflti.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 @@ -2044,6 +2073,7 @@ 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_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 @@ -2122,8 +2152,8 @@ Image Symbol Table .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 0x01008a26 Section 0 iusefp.o(.text) .text 0x01008aa8 Section 0 depilogue.o(.text) .text 0x01008b68 Section 40 cdrcmple.o(.text) .text 0x01008b90 Section 36 init.o(.text) @@ -2143,448 +2173,459 @@ Image Symbol Table 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) + i.AppParams_CmdAppget 0x01009274 Section 0 app_params.o(i.AppParams_CmdAppget) + i.AppParams_CmdAppset 0x01009320 Section 0 app_params.o(i.AppParams_CmdAppset) + i.CliTask 0x010094c0 Section 0 app_cli.o(i.CliTask) + CliTask 0x010094c1 Thumb Code 984 app_cli.o(i.CliTask) + i.CmdBleLog 0x010098f4 Section 0 cli_core.o(i.CmdBleLog) + CmdBleLog 0x010098f5 Thumb Code 68 cli_core.o(i.CmdBleLog) + i.CmdDevInfo 0x0100996c Section 0 cli_core.o(i.CmdDevInfo) + CmdDevInfo 0x0100996d Thumb Code 150 cli_core.o(i.CmdDevInfo) + i.CmdFactory 0x01009ae4 Section 0 cli_core.o(i.CmdFactory) + CmdFactory 0x01009ae5 Thumb Code 40 cli_core.o(i.CmdFactory) + i.CmdHelp 0x01009b74 Section 0 cli_core.o(i.CmdHelp) + CmdHelp 0x01009b75 Thumb Code 102 cli_core.o(i.CmdHelp) + i.CmdLed 0x01009c48 Section 0 cli_core.o(i.CmdLed) + CmdLed 0x01009c49 Thumb Code 128 cli_core.o(i.CmdLed) + i.CmdReset 0x01009d18 Section 0 cli_core.o(i.CmdReset) + CmdReset 0x01009d19 Thumb Code 28 cli_core.o(i.CmdReset) + i.CmdSysInfo 0x01009d4c Section 0 cli_core.o(i.CmdSysInfo) + CmdSysInfo 0x01009d4d Thumb Code 88 cli_core.o(i.CmdSysInfo) + i.CmdUartInfo 0x01009e34 Section 0 cli_core.o(i.CmdUartInfo) + CmdUartInfo 0x01009e35 Thumb Code 26 cli_core.o(i.CmdUartInfo) + i.CmdUartRst 0x01009ee0 Section 0 cli_core.o(i.CmdUartRst) + CmdUartRst 0x01009ee1 Thumb Code 22 cli_core.o(i.CmdUartRst) + i.CmdVersion 0x01009f24 Section 0 cli_core.o(i.CmdVersion) + CmdVersion 0x01009f25 Thumb Code 28 cli_core.o(i.CmdVersion) + i.DMA_ClearFlag 0x01009fbc Section 0 n32wb03x_dma.o(i.DMA_ClearFlag) + i.DMA_DeInit 0x01009fc0 Section 0 n32wb03x_dma.o(i.DMA_DeInit) + i.DMA_EnableChannel 0x0100a048 Section 0 n32wb03x_dma.o(i.DMA_EnableChannel) + i.DMA_GetFlagStatus 0x0100a060 Section 0 n32wb03x_dma.o(i.DMA_GetFlagStatus) + i.DMA_Init 0x0100a070 Section 0 n32wb03x_dma.o(i.DMA_Init) + i.DMA_RequestRemap 0x0100a0b0 Section 0 n32wb03x_dma.o(i.DMA_RequestRemap) + i.EXTI_ClrITPendBit 0x0100a0c0 Section 0 n32wb03x_exti.o(i.EXTI_ClrITPendBit) + i.EXTI_GetITStatus 0x0100a0cc Section 0 n32wb03x_exti.o(i.EXTI_GetITStatus) + i.EXTI_InitPeripheral 0x0100a0e8 Section 0 n32wb03x_exti.o(i.EXTI_InitPeripheral) + i.GPIO_InitPeripheral 0x0100a158 Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral) + i.GPIO_InitStruct 0x0100a210 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct) + i.GPIO_ResetBits 0x0100a22c Section 0 n32wb03x_gpio.o(i.GPIO_ResetBits) + i.GPIO_SetBits 0x0100a230 Section 0 n32wb03x_gpio.o(i.GPIO_SetBits) + i.GPIO_TogglePin 0x0100a234 Section 0 n32wb03x_gpio.o(i.GPIO_TogglePin) + i.HardFault_Handler 0x0100a23c Section 0 n32wb03x_it.o(i.HardFault_Handler) + i.LedBlink 0x0100a2ec Section 0 app_gpio.o(i.LedBlink) + i.LedInit 0x0100a2f4 Section 0 app_gpio.o(i.LedInit) + i.LedOff 0x0100a340 Section 0 app_gpio.o(i.LedOff) + i.LedOn 0x0100a348 Section 0 app_gpio.o(i.LedOn) + i.NVIC_Init 0x0100a350 Section 0 misc.o(i.NVIC_Init) + i.OTPTrim_Read 0x0100a3c8 Section 0 system_n32wb03x.o(i.OTPTrim_Read) + i.Qflash_Erase_Sector 0x0100a494 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector) + i.Qflash_Init 0x0100a4b8 Section 0 n32wb03x_qflash.o(i.Qflash_Init) + i.Qflash_Write 0x0100a4f0 Section 0 n32wb03x_qflash.o(i.Qflash_Write) + i.RCC_ConfigAdcClk 0x0100a514 Section 0 n32wb03x_rcc.o(i.RCC_ConfigAdcClk) + i.RCC_EnableAHBPeriphClk 0x0100a528 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) + i.RCC_EnableAHBPeriphReset 0x0100a540 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphReset) + i.RCC_EnableAPB2PeriphClk 0x0100a558 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) + i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL 0x0100a570 Section 0 n32wb03x_rcc.o(i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL) + i.RCC_GetClocksFreqValue 0x0100a58c Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) + i.SVC_Handler 0x0100a600 Section 0 port.o(i.SVC_Handler) + i.SysTick_Handler 0x0100a604 Section 0 port.o(i.SysTick_Handler) + i.SystemGetMacAddr 0x0100a628 Section 0 system_n32wb03x.o(i.SystemGetMacAddr) + i.SystemInit 0x0100a65c Section 0 system_n32wb03x.o(i.SystemInit) + i.SystemTrimValueGet 0x0100a7dc Section 0 system_n32wb03x.o(i.SystemTrimValueGet) + i.USART1_IRQHandler 0x0100a80c Section 0 n32wb03x_it.o(i.USART1_IRQHandler) + i.USART_ConfigInt 0x0100a814 Section 0 n32wb03x_usart.o(i.USART_ConfigInt) + i.USART_Enable 0x0100a848 Section 0 n32wb03x_usart.o(i.USART_Enable) + i.USART_EnableDMA 0x0100a864 Section 0 n32wb03x_usart.o(i.USART_EnableDMA) + i.USART_GetFlagStatus 0x0100a874 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus) + i.USART_GetIntStatus 0x0100a882 Section 0 n32wb03x_usart.o(i.USART_GetIntStatus) + i.USART_Init 0x0100a8c4 Section 0 n32wb03x_usart.o(i.USART_Init) + i.USART_ReceiveData 0x0100a94c Section 0 n32wb03x_usart.o(i.USART_ReceiveData) + i.USART_SendData 0x0100a954 Section 0 n32wb03x_usart.o(i.USART_SendData) + i.__0printf 0x0100a95c Section 0 printfa.o(i.__0printf) + i.__0sprintf 0x0100a97c Section 0 printfa.o(i.__0sprintf) + i.__0vsnprintf 0x0100a9a4 Section 0 printfa.o(i.__0vsnprintf) + i.__ARM_clz 0x0100a9d0 Section 0 depilogue.o(i.__ARM_clz) + i.__aeabi_errno_addr 0x0100aa00 Section 0 errno.o(i.__aeabi_errno_addr) + i._fp_digits 0x0100aa08 Section 0 printfa.o(i._fp_digits) + _fp_digits 0x0100aa09 Thumb Code 344 printfa.o(i._fp_digits) + i._printf_core 0x0100ab7c Section 0 printfa.o(i._printf_core) + _printf_core 0x0100ab7d Thumb Code 1754 printfa.o(i._printf_core) + i._printf_post_padding 0x0100b268 Section 0 printfa.o(i._printf_post_padding) + _printf_post_padding 0x0100b269 Thumb Code 32 printfa.o(i._printf_post_padding) + i._printf_pre_padding 0x0100b288 Section 0 printfa.o(i._printf_pre_padding) + _printf_pre_padding 0x0100b289 Thumb Code 44 printfa.o(i._printf_pre_padding) + i._snputc 0x0100b2b4 Section 0 printfa.o(i._snputc) + _snputc 0x0100b2b5 Thumb Code 22 printfa.o(i._snputc) + i._sputc 0x0100b2ca Section 0 printfa.o(i._sputc) + _sputc 0x0100b2cb Thumb Code 10 printfa.o(i._sputc) + i.app_ble_adv_init 0x0100b2d4 Section 0 app_ble.o(i.app_ble_adv_init) + i.app_ble_adv_msg_handler 0x0100b348 Section 0 app_ble.o(i.app_ble_adv_msg_handler) + i.app_ble_connected 0x0100b34c Section 0 app_ble.o(i.app_ble_connected) + i.app_ble_disconnected 0x0100b390 Section 0 app_ble.o(i.app_ble_disconnected) + i.app_ble_gap_params_init 0x0100b3ec Section 0 app_ble.o(i.app_ble_gap_params_init) + i.app_ble_init 0x0100b484 Section 0 app_ble.o(i.app_ble_init) + i.app_ble_msg_handler 0x0100b4d0 Section 0 app_ble.o(i.app_ble_msg_handler) + i.app_ble_proto_cli_exec 0x0100b53c Section 0 app_ble_proto.o(i.app_ble_proto_cli_exec) + i.app_ble_proto_cli_rsp 0x0100b628 Section 0 app_ble_proto.o(i.app_ble_proto_cli_rsp) + i.app_ble_proto_init 0x0100b668 Section 0 app_ble_proto.o(i.app_ble_proto_init) + i.app_ble_proto_log_get 0x0100b67c Section 0 app_ble_proto.o(i.app_ble_proto_log_get) + i.app_ble_proto_log_set 0x0100b688 Section 0 app_ble_proto.o(i.app_ble_proto_log_set) + i.app_ble_proto_on_disconnect 0x0100b698 Section 0 app_ble_proto.o(i.app_ble_proto_on_disconnect) + i.app_ble_proto_rx_bytes 0x0100b6b4 Section 0 app_ble_proto.o(i.app_ble_proto_rx_bytes) + i.app_ble_proto_send_frame 0x0100b854 Section 0 app_ble_proto.o(i.app_ble_proto_send_frame) + i.app_ble_sec_init 0x0100b90c Section 0 app_ble.o(i.app_ble_sec_init) + i.app_conn_params_update_evt_handler 0x0100b95c Section 0 ns_ble_task.o(i.app_conn_params_update_evt_handler) + app_conn_params_update_evt_handler 0x0100b95d Thumb Code 12 ns_ble_task.o(i.app_conn_params_update_evt_handler) + i.app_create_advertising 0x0100b96c Section 0 ns_ble.o(i.app_create_advertising) + app_create_advertising 0x0100b96d Thumb Code 192 ns_ble.o(i.app_create_advertising) + i.app_dis_add_dis 0x0100ba38 Section 0 app_dis.o(i.app_dis_add_dis) + i.app_entry_point_handler 0x0100ba94 Section 0 ns_ble_task.o(i.app_entry_point_handler) + i.app_fan_get_rpm 0x0100bb98 Section 0 app_info.o(i.app_fan_get_rpm) + i.app_info_chip_temp_c10 0x0100bba0 Section 0 app_info.o(i.app_info_chip_temp_c10) + i.app_info_handle_query 0x0100bbfc Section 0 app_info.o(i.app_info_handle_query) + i.app_info_last_temp_raw 0x0100bc48 Section 0 app_info.o(i.app_info_last_temp_raw) + i.app_info_tlv_snapshot 0x0100bc54 Section 0 app_info.o(i.app_info_tlv_snapshot) + i.app_info_vdd_mv 0x0100bc80 Section 0 app_info.o(i.app_info_vdd_mv) + i.app_init_timeout_evt_handler 0x0100bca0 Section 0 ns_ble_task.o(i.app_init_timeout_evt_handler) + app_init_timeout_evt_handler 0x0100bca1 Thumb Code 22 ns_ble_task.o(i.app_init_timeout_evt_handler) + i.app_lsi_calib_evt_handler 0x0100bcbc Section 0 ns_ble_task.o(i.app_lsi_calib_evt_handler) + app_lsi_calib_evt_handler 0x0100bcbd Thumb Code 140 ns_ble_task.o(i.app_lsi_calib_evt_handler) + i.app_ota_abort 0x0100bd68 Section 0 app_ota.o(i.app_ota_abort) + i.app_ota_handle_frame 0x0100bd80 Section 0 app_ota.o(i.app_ota_handle_frame) + i.app_params_get 0x0100be9c Section 0 app_params.o(i.app_params_get) + i.app_params_init 0x0100bea4 Section 0 app_params.o(i.app_params_init) + i.app_params_restore_defaults 0x0100bf00 Section 0 app_params.o(i.app_params_restore_defaults) + i.app_rdtss_add_rdts 0x0100bf2c Section 0 app_rdtss.o(i.app_rdtss_add_rdts) + i.app_sec_msg_dflt_handler 0x0100bf94 Section 0 ns_sec.o(i.app_sec_msg_dflt_handler) + app_sec_msg_dflt_handler 0x0100bf95 Thumb Code 4 ns_sec.o(i.app_sec_msg_dflt_handler) + i.app_set_adv_data 0x0100bf98 Section 0 ns_ble.o(i.app_set_adv_data) + app_set_adv_data 0x0100bf99 Thumb Code 100 ns_ble.o(i.app_set_adv_data) + i.app_set_scan_rsp_data 0x0100c010 Section 0 ns_ble.o(i.app_set_scan_rsp_data) + app_set_scan_rsp_data 0x0100c011 Thumb Code 172 ns_ble.o(i.app_set_scan_rsp_data) + i.app_start_advertising 0x0100c0d4 Section 0 ns_ble.o(i.app_start_advertising) + app_start_advertising 0x0100c0d5 Thumb Code 100 ns_ble.o(i.app_start_advertising) + i.app_user_msg_handler 0x0100c144 Section 0 app_ble.o(i.app_user_msg_handler) + i.attm_att_set_value 0x0100c148 Section 0 lib_att.o(i.attm_att_set_value) + i.ble_schedule_task 0x0100c208 Section 0 main.o(i.ble_schedule_task) + ble_schedule_task 0x0100c209 Thumb Code 16 main.o(i.ble_schedule_task) + i.ble_up_on_cfm 0x0100c218 Section 0 ble_up.o(i.ble_up_on_cfm) + i.ble_up_poll 0x0100c22c Section 0 ble_up.o(i.ble_up_poll) + i.ble_up_reset 0x0100c284 Section 0 ble_up.o(i.ble_up_reset) + i.ble_up_write 0x0100c294 Section 0 ble_up.o(i.ble_up_write) + i.bootset_print 0x0100c2dc Section 0 app_bootset.o(i.bootset_print) + bootset_print 0x0100c2dd Thumb Code 106 app_bootset.o(i.bootset_print) + i.bsp_usart_init 0x0100c454 Section 0 bsp_usart.o(i.bsp_usart_init) + i.bsp_usart_read_byte 0x0100c530 Section 0 bsp_usart.o(i.bsp_usart_read_byte) + i.bsp_usart_rx_isr_handler 0x0100c568 Section 0 bsp_usart.o(i.bsp_usart_rx_isr_handler) + i.bsp_usart_set_baud 0x0100c5bc Section 0 bsp_usart.o(i.bsp_usart_set_baud) + i.bsp_usart_tx_lock 0x0100c62c Section 0 bsp_usart.o(i.bsp_usart_tx_lock) + i.bsp_usart_tx_unlock 0x0100c64c Section 0 bsp_usart.o(i.bsp_usart_tx_unlock) + i.bsp_usart_write_dma 0x0100c670 Section 0 bsp_usart.o(i.bsp_usart_write_dma) + i.caiic_crc32 0x0100c708 Section 0 boot_crc32.o(i.caiic_crc32) + i.check_client_char_cfg 0x0100c73c Section 0 rdts_common.o(i.check_client_char_cfg) + i.cli_cmd_count 0x0100c766 Section 0 cli_core.o(i.cli_cmd_count) + i.cli_cmd_name 0x0100c76c Section 0 cli_core.o(i.cli_cmd_name) + i.cli_exec_line 0x0100c784 Section 0 cli_core.o(i.cli_exec_line) + i.cli_printf 0x0100c838 Section 0 cli_core.o(i.cli_printf) + i.cli_redraw_line 0x0100c864 Section 0 app_cli.o(i.cli_redraw_line) + cli_redraw_line 0x0100c865 Thumb Code 94 app_cli.o(i.cli_redraw_line) + i.cli_rsp_out 0x0100c8cc Section 0 app_ble_proto.o(i.cli_rsp_out) + cli_rsp_out 0x0100c8cd Thumb Code 36 app_ble_proto.o(i.cli_rsp_out) + i.cli_set_output 0x0100c8f8 Section 0 cli_core.o(i.cli_set_output) + i.cli_write 0x0100c904 Section 0 cli_core.o(i.cli_write) + i.diss_check_val_len 0x0100c928 Section 0 diss.o(i.diss_check_val_len) + i.diss_cleanup 0x0100c952 Section 0 diss.o(i.diss_cleanup) + diss_cleanup 0x0100c953 Thumb Code 2 diss.o(i.diss_cleanup) + i.diss_create 0x0100c954 Section 0 diss.o(i.diss_create) + diss_create 0x0100c955 Thumb Code 2 diss.o(i.diss_create) + i.diss_destroy 0x0100c956 Section 0 diss.o(i.diss_destroy) + diss_destroy 0x0100c957 Thumb Code 62 diss.o(i.diss_destroy) + i.diss_handle_to_value 0x0100c994 Section 0 diss.o(i.diss_handle_to_value) + i.diss_init 0x0100c9c8 Section 0 diss.o(i.diss_init) + diss_init 0x0100c9c9 Thumb Code 152 diss.o(i.diss_init) + i.diss_prf_itf_get 0x0100ca68 Section 0 diss.o(i.diss_prf_itf_get) + i.diss_set_value_req_handler 0x0100ca70 Section 0 diss_task.o(i.diss_set_value_req_handler) + diss_set_value_req_handler 0x0100ca71 Thumb Code 152 diss_task.o(i.diss_set_value_req_handler) + i.diss_task_init 0x0100cb0c Section 0 diss_task.o(i.diss_task_init) + i.diss_value_cfm_handler 0x0100cb2c Section 0 diss_task.o(i.diss_value_cfm_handler) + diss_value_cfm_handler 0x0100cb2d Thumb Code 120 diss_task.o(i.diss_value_cfm_handler) + i.diss_value_req_ind_handler 0x0100cba8 Section 0 app_dis.o(i.diss_value_req_ind_handler) + diss_value_req_ind_handler 0x0100cba9 Thumb Code 118 app_dis.o(i.diss_value_req_ind_handler) + i.diss_value_to_handle 0x0100cc68 Section 0 diss.o(i.diss_value_to_handle) + i.eTaskGetState 0x0100cca4 Section 0 tasks.o(i.eTaskGetState) + i.fputc 0x0100cd04 Section 0 bsp_usart.o(i.fputc) + i.gapc_bond_ind_handler 0x0100cd40 Section 0 ns_sec.o(i.gapc_bond_ind_handler) + gapc_bond_ind_handler 0x0100cd41 Thumb Code 206 ns_sec.o(i.gapc_bond_ind_handler) + i.gapc_bond_req_ind_handler 0x0100ce30 Section 0 ns_sec.o(i.gapc_bond_req_ind_handler) + gapc_bond_req_ind_handler 0x0100ce31 Thumb Code 478 ns_sec.o(i.gapc_bond_req_ind_handler) + i.gapc_cmp_evt_handler 0x0100d038 Section 0 ns_ble_task.o(i.gapc_cmp_evt_handler) + gapc_cmp_evt_handler 0x0100d039 Thumb Code 36 ns_ble_task.o(i.gapc_cmp_evt_handler) + i.gapc_conn_rssi_ind_handler 0x0100d060 Section 0 ns_ble_task.o(i.gapc_conn_rssi_ind_handler) + gapc_conn_rssi_ind_handler 0x0100d061 Thumb Code 92 ns_ble_task.o(i.gapc_conn_rssi_ind_handler) + i.gapc_connection_req_ind_handler 0x0100d0cc Section 0 ns_ble_task.o(i.gapc_connection_req_ind_handler) + gapc_connection_req_ind_handler 0x0100d0cd Thumb Code 310 ns_ble_task.o(i.gapc_connection_req_ind_handler) + i.gapc_disconnect_ind_handler 0x0100d224 Section 0 ns_ble_task.o(i.gapc_disconnect_ind_handler) + gapc_disconnect_ind_handler 0x0100d225 Thumb Code 88 ns_ble_task.o(i.gapc_disconnect_ind_handler) + i.gapc_encrypt_ind_handler 0x0100d288 Section 0 ns_sec.o(i.gapc_encrypt_ind_handler) + gapc_encrypt_ind_handler 0x0100d289 Thumb Code 34 ns_sec.o(i.gapc_encrypt_ind_handler) + i.gapc_encrypt_req_ind_handler 0x0100d2b0 Section 0 ns_sec.o(i.gapc_encrypt_req_ind_handler) + gapc_encrypt_req_ind_handler 0x0100d2b1 Thumb Code 280 ns_sec.o(i.gapc_encrypt_req_ind_handler) + i.gapc_get_dev_info_req_ind_handler 0x0100d3e0 Section 0 ns_ble_task.o(i.gapc_get_dev_info_req_ind_handler) + gapc_get_dev_info_req_ind_handler 0x0100d3e1 Thumb Code 116 ns_ble_task.o(i.gapc_get_dev_info_req_ind_handler) + i.gapc_le_phy_ind_handler 0x0100d460 Section 0 ns_ble_task.o(i.gapc_le_phy_ind_handler) + gapc_le_phy_ind_handler 0x0100d461 Thumb Code 12 ns_ble_task.o(i.gapc_le_phy_ind_handler) + i.gapc_le_pkt_size_ind_handler 0x0100d46c Section 0 ns_ble_task.o(i.gapc_le_pkt_size_ind_handler) + gapc_le_pkt_size_ind_handler 0x0100d46d Thumb Code 22 ns_ble_task.o(i.gapc_le_pkt_size_ind_handler) + i.gapc_param_update_req_ind_handler 0x0100d488 Section 0 ns_ble_task.o(i.gapc_param_update_req_ind_handler) + gapc_param_update_req_ind_handler 0x0100d489 Thumb Code 94 ns_ble_task.o(i.gapc_param_update_req_ind_handler) + i.gapc_param_updated_ind_handler 0x0100d4ec Section 0 ns_ble_task.o(i.gapc_param_updated_ind_handler) + gapc_param_updated_ind_handler 0x0100d4ed Thumb Code 36 ns_ble_task.o(i.gapc_param_updated_ind_handler) + i.gapc_set_dev_info_req_ind_handler 0x0100d514 Section 0 ns_ble_task.o(i.gapc_set_dev_info_req_ind_handler) + gapc_set_dev_info_req_ind_handler 0x0100d515 Thumb Code 52 ns_ble_task.o(i.gapc_set_dev_info_req_ind_handler) + i.gapm_activity_created_ind_handler 0x0100d554 Section 0 ns_ble_task.o(i.gapm_activity_created_ind_handler) + gapm_activity_created_ind_handler 0x0100d555 Thumb Code 46 ns_ble_task.o(i.gapm_activity_created_ind_handler) + i.gapm_activity_stopped_ind_handler 0x0100d588 Section 0 ns_ble_task.o(i.gapm_activity_stopped_ind_handler) + gapm_activity_stopped_ind_handler 0x0100d589 Thumb Code 82 ns_ble_task.o(i.gapm_activity_stopped_ind_handler) + i.gapm_addr_solved_ind_handler 0x0100d5e8 Section 0 ns_ble_task.o(i.gapm_addr_solved_ind_handler) + gapm_addr_solved_ind_handler 0x0100d5e9 Thumb Code 32 ns_ble_task.o(i.gapm_addr_solved_ind_handler) + i.gapm_cmp_evt_handler 0x0100d614 Section 0 ns_ble_task.o(i.gapm_cmp_evt_handler) + gapm_cmp_evt_handler 0x0100d615 Thumb Code 912 ns_ble_task.o(i.gapm_cmp_evt_handler) + i.gapm_ext_adv_repoer_ind_handler 0x0100d9f4 Section 0 ns_ble_task.o(i.gapm_ext_adv_repoer_ind_handler) + gapm_ext_adv_repoer_ind_handler 0x0100d9f5 Thumb Code 164 ns_ble_task.o(i.gapm_ext_adv_repoer_ind_handler) + i.gapm_gen_rand_nb_ind_handler 0x0100daa0 Section 0 ns_ble_task.o(i.gapm_gen_rand_nb_ind_handler) + gapm_gen_rand_nb_ind_handler 0x0100daa1 Thumb Code 54 ns_ble_task.o(i.gapm_gen_rand_nb_ind_handler) + i.gapm_profile_added_ind_handler 0x0100dad6 Section 0 ns_ble_task.o(i.gapm_profile_added_ind_handler) + gapm_profile_added_ind_handler 0x0100dad7 Thumb Code 12 ns_ble_task.o(i.gapm_profile_added_ind_handler) + i.gapm_scan_request_ind_handler 0x0100dae2 Section 0 ns_ble_task.o(i.gapm_scan_request_ind_handler) + gapm_scan_request_ind_handler 0x0100dae3 Thumb Code 12 ns_ble_task.o(i.gapm_scan_request_ind_handler) + i.gattc_att_info_req_ind_handler 0x0100daf0 Section 0 rdtss_task.o(i.gattc_att_info_req_ind_handler) + gattc_att_info_req_ind_handler 0x0100daf1 Thumb Code 58 rdtss_task.o(i.gattc_att_info_req_ind_handler) + i.gattc_cmp_evt_handler 0x0100db30 Section 0 rdtss_task.o(i.gattc_cmp_evt_handler) + gattc_cmp_evt_handler 0x0100db31 Thumb Code 102 rdtss_task.o(i.gattc_cmp_evt_handler) + i.gattc_cmp_evt_handler 0x0100dba0 Section 0 ns_ble_task.o(i.gattc_cmp_evt_handler) + gattc_cmp_evt_handler 0x0100dba1 Thumb Code 36 ns_ble_task.o(i.gattc_cmp_evt_handler) + i.gattc_mtu_changed_ind_handler 0x0100dbc8 Section 0 ns_ble_task.o(i.gattc_mtu_changed_ind_handler) + gattc_mtu_changed_ind_handler 0x0100dbc9 Thumb Code 66 ns_ble_task.o(i.gattc_mtu_changed_ind_handler) + i.gattc_read_req_ind_handler 0x0100dc14 Section 0 diss_task.o(i.gattc_read_req_ind_handler) + gattc_read_req_ind_handler 0x0100dc15 Thumb Code 188 diss_task.o(i.gattc_read_req_ind_handler) + i.gattc_read_req_ind_handler 0x0100dcd8 Section 0 rdtss_task.o(i.gattc_read_req_ind_handler) + gattc_read_req_ind_handler 0x0100dcd9 Thumb Code 212 rdtss_task.o(i.gattc_read_req_ind_handler) + i.gattc_write_req_ind_handler 0x0100ddb8 Section 0 rdtss_task.o(i.gattc_write_req_ind_handler) + gattc_write_req_ind_handler 0x0100ddb9 Thumb Code 260 rdtss_task.o(i.gattc_write_req_ind_handler) + i.get_cfg_handle 0x0100dec8 Section 0 rdts_common.o(i.get_cfg_handle) + i.get_value_handle 0x0100df34 Section 0 rdts_common.o(i.get_value_handle) + i.info_adc_init 0x0100df88 Section 0 app_info.o(i.info_adc_init) + info_adc_init 0x0100df89 Thumb Code 92 app_info.o(i.info_adc_init) + i.info_adc_read 0x0100dfec Section 0 app_info.o(i.info_adc_read) + info_adc_read 0x0100dfed Thumb Code 96 app_info.o(i.info_adc_read) + i.info_fill_item 0x0100e058 Section 0 app_info.o(i.info_fill_item) + info_fill_item 0x0100e059 Thumb Code 258 app_info.o(i.info_fill_item) + i.info_put_tlv 0x0100e174 Section 0 app_info.o(i.info_put_tlv) + info_put_tlv 0x0100e175 Thumb Code 44 app_info.o(i.info_put_tlv) + i.led_task 0x0100e1a0 Section 0 main.o(i.led_task) + led_task 0x0100e1a1 Thumb Code 48 main.o(i.led_task) + i.llhwc_modem_setmode 0x0100e1d4 Section 0 rwip_driver.o(i.llhwc_modem_setmode) + i.llhwc_phy_prerx_flash 0x0100e204 Section 0 rwip_driver.o(i.llhwc_phy_prerx_flash) + i.llhwc_setmode_reg_config 0x0100e334 Section 0 rwip_driver.o(i.llhwc_setmode_reg_config) + llhwc_setmode_reg_config 0x0100e335 Thumb Code 88 rwip_driver.o(i.llhwc_setmode_reg_config) + i.main 0x0100e3c4 Section 0 main.o(i.main) + i.ns_EXTI4_12_IRQHandler 0x0100e564 Section 0 ns_ble.o(i.ns_EXTI4_12_IRQHandler) + i.ns_HardFault_Handler 0x0100e5c0 Section 0 ns_ble.o(i.ns_HardFault_Handler) + i.ns_ble_add_prf_func_register 0x0100e5e8 Section 0 ns_ble.o(i.ns_ble_add_prf_func_register) + i.ns_ble_add_svc 0x0100e608 Section 0 ns_ble.o(i.ns_ble_add_svc) + i.ns_ble_adv_fsm_next 0x0100e634 Section 0 ns_ble.o(i.ns_ble_adv_fsm_next) + i.ns_ble_adv_init 0x0100e710 Section 0 ns_ble.o(i.ns_ble_adv_init) + i.ns_ble_adv_start 0x0100e758 Section 0 ns_ble.o(i.ns_ble_adv_start) + i.ns_ble_adv_stop 0x0100e7a8 Section 0 ns_ble.o(i.ns_ble_adv_stop) + i.ns_ble_delete_init 0x0100e7f4 Section 0 ns_ble.o(i.ns_ble_delete_init) + i.ns_ble_delete_scan 0x0100e830 Section 0 ns_ble.o(i.ns_ble_delete_scan) + i.ns_ble_disconnect 0x0100e868 Section 0 ns_ble.o(i.ns_ble_disconnect) + i.ns_ble_gap_init 0x0100e894 Section 0 ns_ble.o(i.ns_ble_gap_init) + i.ns_ble_get_connection_num 0x0100e900 Section 0 ns_ble.o(i.ns_ble_get_connection_num) + i.ns_ble_list_set_ral 0x0100e924 Section 0 ns_ble.o(i.ns_ble_list_set_ral) + i.ns_ble_lsc_config 0x0100e974 Section 0 ns_ble.o(i.ns_ble_lsc_config) + i.ns_ble_mtu_set 0x0100e9f8 Section 0 ns_ble.o(i.ns_ble_mtu_set) + i.ns_ble_prf_task_register 0x0100ea2c Section 0 ns_ble.o(i.ns_ble_prf_task_register) + i.ns_ble_scan_data_find 0x0100ea54 Section 0 ns_ble.o(i.ns_ble_scan_data_find) + i.ns_ble_stack_init 0x0100ea9c Section 0 ns_ble.o(i.ns_ble_stack_init) + i.ns_ble_start_init 0x0100ed14 Section 0 ns_ble.o(i.ns_ble_start_init) + i.ns_ble_start_scan 0x0100ee38 Section 0 ns_ble.o(i.ns_ble_start_scan) + i.ns_ble_stop_init 0x0100ef04 Section 0 ns_ble.o(i.ns_ble_stop_init) + i.ns_ble_stop_scan 0x0100ef3c Section 0 ns_ble.o(i.ns_ble_stop_scan) + i.ns_ble_update_param 0x0100ef78 Section 0 ns_ble.o(i.ns_ble_update_param) + i.ns_bond_db_get_size 0x0100eff0 Section 0 ns_sec.o(i.ns_bond_db_get_size) + ns_bond_db_get_size 0x0100eff1 Thumb Code 36 ns_sec.o(i.ns_bond_db_get_size) + i.ns_bond_db_load 0x0100f01c Section 0 ns_sec.o(i.ns_bond_db_load) + ns_bond_db_load 0x0100f01d Thumb Code 24 ns_sec.o(i.ns_bond_db_load) + i.ns_bond_last_bonded_addr 0x0100f038 Section 0 ns_sec.o(i.ns_bond_last_bonded_addr) + i.ns_bond_last_bonded_peer_id 0x0100f068 Section 0 ns_sec.o(i.ns_bond_last_bonded_peer_id) + i.ns_bond_last_bonded_ral_info 0x0100f098 Section 0 ns_sec.o(i.ns_bond_last_bonded_ral_info) + i.ns_bond_resolv_addr_start 0x0100f0fc Section 0 ns_sec.o(i.ns_bond_resolv_addr_start) + i.ns_bond_search_addr_irk 0x0100f15c Section 0 ns_sec.o(i.ns_bond_search_addr_irk) + i.ns_peripheral_config 0x0100f1d8 Section 0 ns_ble.o(i.ns_peripheral_config) + i.ns_sec_bond_store_evt_handler 0x0100f2ac Section 0 ns_sec.o(i.ns_sec_bond_store_evt_handler) + i.ns_sec_get_bond_status 0x0100f40c Section 0 ns_sec.o(i.ns_sec_get_bond_status) + i.ns_sec_get_iocap 0x0100f41c Section 0 ns_sec.o(i.ns_sec_get_iocap) + i.ns_sec_init 0x0100f428 Section 0 ns_sec.o(i.ns_sec_init) + i.ns_sleep_lock_acquire 0x0100f490 Section 0 ns_sleep.o(i.ns_sleep_lock_acquire) + i.ns_sleep_lock_release 0x0100f4a8 Section 0 ns_sleep.o(i.ns_sleep_lock_release) + i.ns_timer_api_process_handler 0x0100f4bc Section 0 ns_timer.o(i.ns_timer_api_process_handler) + i.ota_on_data 0x0100f584 Section 0 app_ota.o(i.ota_on_data) + ota_on_data 0x0100f585 Thumb Code 334 app_ota.o(i.ota_on_data) + i.ota_on_end 0x0100f6dc Section 0 app_ota.o(i.ota_on_end) + ota_on_end 0x0100f6dd Thumb Code 398 app_ota.o(i.ota_on_end) + i.ota_respond 0x0100f888 Section 0 app_ota.o(i.ota_respond) + ota_respond 0x0100f889 Thumb Code 40 app_ota.o(i.ota_respond) + i.params_save 0x0100f8b0 Section 0 app_params.o(i.params_save) + params_save 0x0100f8b1 Thumb Code 80 app_params.o(i.params_save) + i.patchx_enable 0x0100f90c Section 0 ns_ble.o(i.patchx_enable) + patchx_enable 0x0100f90d Thumb Code 58 ns_ble.o(i.patchx_enable) + i.prf_add_profile 0x0100f950 Section 0 prf.o(i.prf_add_profile) + i.prf_dst_task_get 0x0100f9d8 Section 0 prf.o(i.prf_dst_task_get) + i.prf_env_get 0x0100f9e8 Section 0 prf.o(i.prf_env_get) + i.prf_get_id_from_task 0x0100fa18 Section 0 prf.o(i.prf_get_id_from_task) + i.prf_get_itf_func_register 0x0100fa50 Section 0 prf.o(i.prf_get_itf_func_register) + i.prf_get_task_from_id 0x0100fa78 Section 0 prf.o(i.prf_get_task_from_id) + i.prf_init 0x0100fab0 Section 0 prf.o(i.prf_init) + i.prf_itf_get 0x0100fb64 Section 0 prf.o(i.prf_itf_get) + prf_itf_get 0x0100fb65 Thumb Code 44 prf.o(i.prf_itf_get) + i.proto_cli_out 0x0100fb94 Section 0 app_ble_proto.o(i.proto_cli_out) + proto_cli_out 0x0100fb95 Thumb Code 52 app_ble_proto.o(i.proto_cli_out) + i.proto_dump 0x0100fbcc Section 0 app_ble_proto.o(i.proto_dump) + proto_dump 0x0100fbcd Thumb Code 70 app_ble_proto.o(i.proto_dump) + i.prvAddCurrentTaskToDelayedList 0x0100fc4c Section 0 tasks.o(i.prvAddCurrentTaskToDelayedList) + prvAddCurrentTaskToDelayedList 0x0100fc4d Thumb Code 78 tasks.o(i.prvAddCurrentTaskToDelayedList) + i.prvCopyDataToQueue 0x0100fca4 Section 0 queue.o(i.prvCopyDataToQueue) + prvCopyDataToQueue 0x0100fca5 Thumb Code 112 queue.o(i.prvCopyDataToQueue) + i.prvIdleTask 0x0100fd14 Section 0 tasks.o(i.prvIdleTask) + prvIdleTask 0x0100fd15 Thumb Code 72 tasks.o(i.prvIdleTask) + i.prvInsertBlockIntoFreeList 0x0100fd68 Section 0 heap_4.o(i.prvInsertBlockIntoFreeList) + prvInsertBlockIntoFreeList 0x0100fd69 Thumb Code 76 heap_4.o(i.prvInsertBlockIntoFreeList) + i.prvListTasksWithinSingleList 0x0100fdbc Section 0 tasks.o(i.prvListTasksWithinSingleList) + prvListTasksWithinSingleList 0x0100fdbd Thumb Code 200 tasks.o(i.prvListTasksWithinSingleList) + i.prvTaskExitError 0x0100fe88 Section 0 port.o(i.prvTaskExitError) + prvTaskExitError 0x0100fe89 Thumb Code 14 port.o(i.prvTaskExitError) + i.prvUnlockQueue 0x0100fe9c Section 0 queue.o(i.prvUnlockQueue) + prvUnlockQueue 0x0100fe9d Thumb Code 116 queue.o(i.prvUnlockQueue) + i.pvPortMalloc 0x0100ff10 Section 0 heap_4.o(i.pvPortMalloc) + i.pvTaskIncrementMutexHeldCount 0x01010004 Section 0 tasks.o(i.pvTaskIncrementMutexHeldCount) + i.pxPortInitialiseStack 0x0101001c Section 0 port.o(i.pxPortInitialiseStack) + i.rdtss_att_get_value 0x01010040 Section 0 rdtss_task.o(i.rdtss_att_get_value) + rdtss_att_get_value 0x01010041 Thumb Code 58 rdtss_task.o(i.rdtss_att_get_value) + i.rdtss_att_info_rsp_handler 0x0101007c Section 0 rdtss_task.o(i.rdtss_att_info_rsp_handler) + rdtss_att_info_rsp_handler 0x0101007d Thumb Code 60 rdtss_task.o(i.rdtss_att_info_rsp_handler) + i.rdtss_att_set_value 0x010100bc Section 0 rdtss_task.o(i.rdtss_att_set_value) + rdtss_att_set_value 0x010100bd Thumb Code 104 rdtss_task.o(i.rdtss_att_set_value) + i.rdtss_cleanup 0x01010124 Section 0 rdtss.o(i.rdtss_cleanup) + rdtss_cleanup 0x01010125 Thumb Code 70 rdtss.o(i.rdtss_cleanup) + i.rdtss_create 0x01010170 Section 0 rdtss.o(i.rdtss_create) + rdtss_create 0x01010171 Thumb Code 70 rdtss.o(i.rdtss_create) + i.rdtss_destroy 0x010101bc Section 0 rdtss.o(i.rdtss_destroy) + rdtss_destroy 0x010101bd Thumb Code 66 rdtss.o(i.rdtss_destroy) + i.rdtss_get_att_handle 0x010101fe Section 0 rdts_common.o(i.rdtss_get_att_handle) + i.rdtss_get_att_idx 0x0101021a Section 0 rdts_common.o(i.rdtss_get_att_idx) + i.rdtss_init 0x01010242 Section 0 rdtss.o(i.rdtss_init) + rdtss_init 0x01010243 Thumb Code 152 rdtss.o(i.rdtss_init) + i.rdtss_init_ccc_values 0x010102dc Section 0 rdtss_task.o(i.rdtss_init_ccc_values) + i.rdtss_prf_itf_get 0x01010380 Section 0 rdtss.o(i.rdtss_prf_itf_get) + i.rdtss_send_notify 0x01010388 Section 0 app_rdtss.o(i.rdtss_send_notify) + i.rdtss_set_ccc_value 0x010103dc Section 0 rdtss_task.o(i.rdtss_set_ccc_value) + i.rdtss_task_init 0x01010410 Section 0 rdtss_task.o(i.rdtss_task_init) + i.rdtss_val_ind_req_handler 0x01010430 Section 0 rdtss_task.o(i.rdtss_val_ind_req_handler) + rdtss_val_ind_req_handler 0x01010431 Thumb Code 176 rdtss_task.o(i.rdtss_val_ind_req_handler) + i.rdtss_val_ntf_cfm_handler 0x010104e0 Section 0 app_rdtss.o(i.rdtss_val_ntf_cfm_handler) + rdtss_val_ntf_cfm_handler 0x010104e1 Thumb Code 10 app_rdtss.o(i.rdtss_val_ntf_cfm_handler) + i.rdtss_val_ntf_req_handler 0x010104ea Section 0 rdtss_task.o(i.rdtss_val_ntf_req_handler) + rdtss_val_ntf_req_handler 0x010104eb Thumb Code 166 rdtss_task.o(i.rdtss_val_ntf_req_handler) + i.rdtss_val_set_req_handler 0x01010590 Section 0 rdtss_task.o(i.rdtss_val_set_req_handler) + rdtss_val_set_req_handler 0x01010591 Thumb Code 32 rdtss_task.o(i.rdtss_val_set_req_handler) + i.rdtss_val_write_ind_handler 0x010105b0 Section 0 app_rdtss.o(i.rdtss_val_write_ind_handler) + rdtss_val_write_ind_handler 0x010105b1 Thumb Code 170 app_rdtss.o(i.rdtss_val_write_ind_handler) + i.rdtss_value_req_ind_handler 0x010106c8 Section 0 app_rdtss.o(i.rdtss_value_req_ind_handler) + rdtss_value_req_ind_handler 0x010106c9 Thumb Code 110 app_rdtss.o(i.rdtss_value_req_ind_handler) + i.rdtss_value_req_rsp_handler 0x01010744 Section 0 rdtss_task.o(i.rdtss_value_req_rsp_handler) + rdtss_value_req_rsp_handler 0x01010745 Thumb Code 124 rdtss_task.o(i.rdtss_value_req_rsp_handler) + i.rwip_init 0x010107c4 Section 0 rwip.o(i.rwip_init) + i.rwip_slp_isr 0x010108dc Section 0 rwip_driver.o(i.rwip_slp_isr) + i.timer_canceled_handler 0x010109d4 Section 0 ns_timer.o(i.timer_canceled_handler) + timer_canceled_handler 0x010109d5 Thumb Code 2 ns_timer.o(i.timer_canceled_handler) + i.timer_modified_handler 0x010109d6 Section 0 ns_timer.o(i.timer_modified_handler) + timer_modified_handler 0x010109d7 Thumb Code 2 ns_timer.o(i.timer_modified_handler) + i.uxListRemove 0x010109d8 Section 0 list.o(i.uxListRemove) + i.uxTaskGetNumberOfTasks 0x01010a00 Section 0 tasks.o(i.uxTaskGetNumberOfTasks) + i.uxTaskGetSystemState 0x01010a0c Section 0 tasks.o(i.uxTaskGetSystemState) + i.vListInitialise 0x01010aa4 Section 0 list.o(i.vListInitialise) + i.vListInitialiseItem 0x01010aba Section 0 list.o(i.vListInitialiseItem) + i.vListInsert 0x01010ac0 Section 0 list.o(i.vListInsert) + i.vListInsertEnd 0x01010af2 Section 0 list.o(i.vListInsertEnd) + i.vPortEnterCritical 0x01010b0c Section 0 port.o(i.vPortEnterCritical) + i.vPortExitCritical 0x01010b24 Section 0 port.o(i.vPortExitCritical) + i.vPortFree 0x01010b40 Section 0 heap_4.o(i.vPortFree) + i.vPortYield 0x01010b84 Section 0 port.o(i.vPortYield) + i.vTaskDelay 0x01010b9c Section 0 tasks.o(i.vTaskDelay) + i.vTaskInternalSetTimeOutState 0x01010bcc Section 0 tasks.o(i.vTaskInternalSetTimeOutState) + i.vTaskList 0x01010bdc Section 0 tasks.o(i.vTaskList) + i.vTaskMissedYield 0x01010cac Section 0 tasks.o(i.vTaskMissedYield) + i.vTaskPlaceOnEventList 0x01010cb8 Section 0 tasks.o(i.vTaskPlaceOnEventList) + i.vTaskPriorityDisinheritAfterTimeout 0x01010cdc Section 0 tasks.o(i.vTaskPriorityDisinheritAfterTimeout) + i.vTaskStartScheduler 0x01010d50 Section 0 tasks.o(i.vTaskStartScheduler) + i.vTaskSuspendAll 0x01010da0 Section 0 tasks.o(i.vTaskSuspendAll) + i.vTaskSwitchContext 0x01010db0 Section 0 tasks.o(i.vTaskSwitchContext) + i.xPortGetFreeHeapSize 0x01010e14 Section 0 heap_4.o(i.xPortGetFreeHeapSize) + i.xPortGetMinimumEverFreeHeapSize 0x01010e20 Section 0 heap_4.o(i.xPortGetMinimumEverFreeHeapSize) + i.xPortStartScheduler 0x01010e2c Section 0 port.o(i.xPortStartScheduler) + i.xQueueCreateMutex 0x01010e7c Section 0 queue.o(i.xQueueCreateMutex) + i.xQueueGenericCreate 0x01010ea0 Section 0 queue.o(i.xQueueGenericCreate) + i.xQueueGenericReset 0x01010ee4 Section 0 queue.o(i.xQueueGenericReset) + i.xQueueGenericSend 0x01010f52 Section 0 queue.o(i.xQueueGenericSend) + i.xQueueGenericSendFromISR 0x010110e0 Section 0 queue.o(i.xQueueGenericSendFromISR) + i.xQueueReceive 0x0101116e Section 0 queue.o(i.xQueueReceive) + i.xQueueSemaphoreTake 0x010112b0 Section 0 queue.o(i.xQueueSemaphoreTake) + i.xTaskCheckForTimeOut 0x01011424 Section 0 tasks.o(i.xTaskCheckForTimeOut) + i.xTaskCreate 0x01011488 Section 0 tasks.o(i.xTaskCreate) + i.xTaskGetSchedulerState 0x01011600 Section 0 tasks.o(i.xTaskGetSchedulerState) + i.xTaskGetTickCount 0x01011620 Section 0 tasks.o(i.xTaskGetTickCount) + i.xTaskIncrementTick 0x0101162c Section 0 tasks.o(i.xTaskIncrementTick) + i.xTaskPriorityDisinherit 0x01011700 Section 0 tasks.o(i.xTaskPriorityDisinherit) + i.xTaskPriorityInherit 0x01011768 Section 0 tasks.o(i.xTaskPriorityInherit) + i.xTaskRemoveFromEventList 0x010117e0 Section 0 tasks.o(i.xTaskRemoveFromEventList) + i.xTaskResumeAll 0x01011844 Section 0 tasks.o(i.xTaskResumeAll) + .constdata 0x0101190c Section 472 system_n32wb03x.o(.constdata) + .constdata 0x01011ae4 Section 12 n32wb03x_rcc.o(.constdata) + s_AhbPresTable 0x01011ae4 Data 4 n32wb03x_rcc.o(.constdata) + s_ApbPresTable 0x01011ae8 Data 8 n32wb03x_rcc.o(.constdata) + .constdata 0x01011af0 Section 804 n32wb03x_qflash.o(.constdata) + .constdata 0x01011e14 Section 30 rwip_driver.o(.constdata) + TXPWR_MAP 0x01011e14 Data 30 rwip_driver.o(.constdata) + .constdata 0x01011e34 Section 168 diss.o(.constdata) + .constdata 0x01011edc Section 24 diss_task.o(.constdata) + diss_msg_handler_tab 0x01011edc Data 24 diss_task.o(.constdata) + .constdata 0x01011ef4 Section 16 rdtss.o(.constdata) + .constdata 0x01011f04 Section 72 rdtss_task.o(.constdata) + rdtss_msg_handler_tab 0x01011f04 Data 72 rdtss_task.o(.constdata) + .constdata 0x01011f4c Section 40 ns_sec.o(.constdata) + .constdata 0x01011f74 Section 8 ns_sec.o(.constdata) + .constdata 0x01011f7c Section 820 ns_ble.o(.constdata) + fun_5_Array 0x01011f7c Data 820 ns_ble.o(.constdata) + .constdata 0x010122b0 Section 152 ns_ble_task.o(.constdata) + gapm_att_db 0x010122b0 Data 88 ns_ble_task.o(.constdata) + gattm_att_db 0x01012308 Data 64 ns_ble_task.o(.constdata) + .constdata 0x01012348 Section 200 ns_ble_task.o(.constdata) + app_msg_handler_tab 0x01012348 Data 200 ns_ble_task.o(.constdata) + .constdata 0x01012410 Section 12 ns_ble_task.o(.constdata) + .constdata 0x0101241c Section 8 app_dis.o(.constdata) + .constdata 0x01012424 Section 8 app_dis.o(.constdata) + .constdata 0x0101242c Section 266 app_rdtss.o(.constdata) + .constdata 0x01012538 Section 24 app_rdtss.o(.constdata) + .constdata 0x01012550 Section 168 cli_core.o(.constdata) + s_cmds 0x01012550 Data 168 cli_core.o(.constdata) + .constdata 0x010125f8 Section 6 app_info.o(.constdata) + s_all_items 0x010125f8 Data 6 app_info.o(.constdata) + .constdata 0x010125fe Section 129 ctype_o.o(.constdata) + .constdata 0x01012680 Section 4 ctype_o.o(.constdata) + table 0x01012680 Data 4 ctype_o.o(.constdata) + .conststring 0x01012684 Section 776 cli_core.o(.conststring) + .conststring 0x0101298c 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) @@ -2619,13 +2660,14 @@ Image Symbol Table s_wait_cfm 0x20004746 Data 1 ble_up.o(.data) s_head 0x20004748 Data 2 ble_up.o(.data) s_tail 0x2000474a Data 2 ble_up.o(.data) - .data 0x2000474c Section 10 app_ble_proto.o(.data) + .data 0x2000474c Section 12 app_ble_proto.o(.data) s_rxState 0x2000474c Data 1 app_ble_proto.o(.data) s_txSeq 0x2000474d Data 1 app_ble_proto.o(.data) s_logEn 0x2000474e Data 1 app_ble_proto.o(.data) s_rxHave 0x20004750 Data 2 app_ble_proto.o(.data) s_rxNeed 0x20004752 Data 2 app_ble_proto.o(.data) s_cliRspLen 0x20004754 Data 2 app_ble_proto.o(.data) + s_cliRspOff 0x20004756 Data 2 app_ble_proto.o(.data) .data 0x20004758 Section 44 app_ota.o(.data) s_active 0x20004758 Data 1 app_ota.o(.data) s_qflash_ready 0x20004759 Data 1 app_ota.o(.data) @@ -2691,26 +2733,26 @@ Image Symbol Table 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) + .bss 0x200054e0 Section 1915 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) + s_cliRsp 0x2000585b Data 1024 app_ble_proto.o(.bss) + .bss 0x20005c5b Section 40 app_info.o(.bss) + s_tlv 0x20005c5b Data 40 app_info.o(.bss) + .bss 0x20005c84 Section 52 app_params.o(.bss) + s_params 0x20005c84 Data 52 app_params.o(.bss) + .bss 0x20005cb8 Section 240 tasks.o(.bss) + pxReadyTasksLists 0x20005cb8 Data 140 tasks.o(.bss) + xDelayedTaskList1 0x20005d44 Data 20 tasks.o(.bss) + xDelayedTaskList2 0x20005d58 Data 20 tasks.o(.bss) + xPendingReadyList 0x20005d6c Data 20 tasks.o(.bss) + xTasksWaitingTermination 0x20005d80 Data 20 tasks.o(.bss) + xSuspendedTaskList 0x20005d94 Data 20 tasks.o(.bss) + .bss 0x20005da8 Section 20480 heap_4.o(.bss) + ucHeap 0x20005da8 Data 20480 heap_4.o(.bss) + STACK 0x2000ada8 Section 2048 startup_n32wb03x.o(STACK) Global Symbols @@ -3717,243 +3759,246 @@ Image Symbol Table 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) + AppParams_CmdAppget 0x01009275 Thumb Code 42 app_params.o(i.AppParams_CmdAppget) + AppParams_CmdAppset 0x01009321 Thumb Code 154 app_params.o(i.AppParams_CmdAppset) + DMA_ClearFlag 0x01009fbd Thumb Code 4 n32wb03x_dma.o(i.DMA_ClearFlag) + DMA_DeInit 0x01009fc1 Thumb Code 106 n32wb03x_dma.o(i.DMA_DeInit) + DMA_EnableChannel 0x0100a049 Thumb Code 20 n32wb03x_dma.o(i.DMA_EnableChannel) + DMA_GetFlagStatus 0x0100a061 Thumb Code 14 n32wb03x_dma.o(i.DMA_GetFlagStatus) + DMA_Init 0x0100a071 Thumb Code 58 n32wb03x_dma.o(i.DMA_Init) + DMA_RequestRemap 0x0100a0b1 Thumb Code 14 n32wb03x_dma.o(i.DMA_RequestRemap) + EXTI_ClrITPendBit 0x0100a0c1 Thumb Code 6 n32wb03x_exti.o(i.EXTI_ClrITPendBit) + EXTI_GetITStatus 0x0100a0cd Thumb Code 24 n32wb03x_exti.o(i.EXTI_GetITStatus) + EXTI_InitPeripheral 0x0100a0e9 Thumb Code 108 n32wb03x_exti.o(i.EXTI_InitPeripheral) + GPIO_InitPeripheral 0x0100a159 Thumb Code 184 n32wb03x_gpio.o(i.GPIO_InitPeripheral) + GPIO_InitStruct 0x0100a211 Thumb Code 22 n32wb03x_gpio.o(i.GPIO_InitStruct) + GPIO_ResetBits 0x0100a22d Thumb Code 4 n32wb03x_gpio.o(i.GPIO_ResetBits) + GPIO_SetBits 0x0100a231 Thumb Code 4 n32wb03x_gpio.o(i.GPIO_SetBits) + GPIO_TogglePin 0x0100a235 Thumb Code 8 n32wb03x_gpio.o(i.GPIO_TogglePin) + HardFault_Handler 0x0100a23d Thumb Code 58 n32wb03x_it.o(i.HardFault_Handler) + LedBlink 0x0100a2ed Thumb Code 8 app_gpio.o(i.LedBlink) + LedInit 0x0100a2f5 Thumb Code 64 app_gpio.o(i.LedInit) + LedOff 0x0100a341 Thumb Code 8 app_gpio.o(i.LedOff) + LedOn 0x0100a349 Thumb Code 8 app_gpio.o(i.LedOn) + NVIC_Init 0x0100a351 Thumb Code 102 misc.o(i.NVIC_Init) + OTPTrim_Read 0x0100a3c9 Thumb Code 186 system_n32wb03x.o(i.OTPTrim_Read) + Qflash_Erase_Sector 0x0100a495 Thumb Code 30 n32wb03x_qflash.o(i.Qflash_Erase_Sector) + Qflash_Init 0x0100a4b9 Thumb Code 30 n32wb03x_qflash.o(i.Qflash_Init) + Qflash_Write 0x0100a4f1 Thumb Code 30 n32wb03x_qflash.o(i.Qflash_Write) + RCC_ConfigAdcClk 0x0100a515 Thumb Code 14 n32wb03x_rcc.o(i.RCC_ConfigAdcClk) + RCC_EnableAHBPeriphClk 0x0100a529 Thumb Code 18 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk) + RCC_EnableAHBPeriphReset 0x0100a541 Thumb Code 18 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphReset) + RCC_EnableAPB2PeriphClk 0x0100a559 Thumb Code 18 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) + RCC_Enable_ADC_CLK_SRC_AUDIOPLL 0x0100a571 Thumb Code 22 n32wb03x_rcc.o(i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL) + RCC_GetClocksFreqValue 0x0100a58d Thumb Code 90 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue) + SVC_Handler 0x0100a601 Thumb Code 2 port.o(i.SVC_Handler) + SysTick_Handler 0x0100a605 Thumb Code 32 port.o(i.SysTick_Handler) + SystemGetMacAddr 0x0100a629 Thumb Code 44 system_n32wb03x.o(i.SystemGetMacAddr) + SystemInit 0x0100a65d Thumb Code 346 system_n32wb03x.o(i.SystemInit) + SystemTrimValueGet 0x0100a7dd Thumb Code 44 system_n32wb03x.o(i.SystemTrimValueGet) + USART1_IRQHandler 0x0100a80d Thumb Code 8 n32wb03x_it.o(i.USART1_IRQHandler) + USART_ConfigInt 0x0100a815 Thumb Code 50 n32wb03x_usart.o(i.USART_ConfigInt) + USART_Enable 0x0100a849 Thumb Code 22 n32wb03x_usart.o(i.USART_Enable) + USART_EnableDMA 0x0100a865 Thumb Code 16 n32wb03x_usart.o(i.USART_EnableDMA) + USART_GetFlagStatus 0x0100a875 Thumb Code 14 n32wb03x_usart.o(i.USART_GetFlagStatus) + USART_GetIntStatus 0x0100a883 Thumb Code 64 n32wb03x_usart.o(i.USART_GetIntStatus) + USART_Init 0x0100a8c5 Thumb Code 120 n32wb03x_usart.o(i.USART_Init) + USART_ReceiveData 0x0100a94d Thumb Code 8 n32wb03x_usart.o(i.USART_ReceiveData) + USART_SendData 0x0100a955 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData) + __0printf 0x0100a95d Thumb Code 24 printfa.o(i.__0printf) + __1printf 0x0100a95d Thumb Code 0 printfa.o(i.__0printf) + __2printf 0x0100a95d Thumb Code 0 printfa.o(i.__0printf) + __c89printf 0x0100a95d Thumb Code 0 printfa.o(i.__0printf) + printf 0x0100a95d Thumb Code 0 printfa.o(i.__0printf) + __0sprintf 0x0100a97d Thumb Code 36 printfa.o(i.__0sprintf) + __1sprintf 0x0100a97d Thumb Code 0 printfa.o(i.__0sprintf) + __2sprintf 0x0100a97d Thumb Code 0 printfa.o(i.__0sprintf) + __c89sprintf 0x0100a97d Thumb Code 0 printfa.o(i.__0sprintf) + sprintf 0x0100a97d Thumb Code 0 printfa.o(i.__0sprintf) + __0vsnprintf 0x0100a9a5 Thumb Code 40 printfa.o(i.__0vsnprintf) + __1vsnprintf 0x0100a9a5 Thumb Code 0 printfa.o(i.__0vsnprintf) + __2vsnprintf 0x0100a9a5 Thumb Code 0 printfa.o(i.__0vsnprintf) + __c89vsnprintf 0x0100a9a5 Thumb Code 0 printfa.o(i.__0vsnprintf) + vsnprintf 0x0100a9a5 Thumb Code 0 printfa.o(i.__0vsnprintf) + __ARM_clz 0x0100a9d1 Thumb Code 46 depilogue.o(i.__ARM_clz) + __aeabi_errno_addr 0x0100aa01 Thumb Code 4 errno.o(i.__aeabi_errno_addr) + __rt_errno_addr 0x0100aa01 Thumb Code 0 errno.o(i.__aeabi_errno_addr) + app_ble_adv_init 0x0100b2d5 Thumb Code 90 app_ble.o(i.app_ble_adv_init) + app_ble_adv_msg_handler 0x0100b349 Thumb Code 2 app_ble.o(i.app_ble_adv_msg_handler) + app_ble_connected 0x0100b34d Thumb Code 38 app_ble.o(i.app_ble_connected) + app_ble_disconnected 0x0100b391 Thumb Code 40 app_ble.o(i.app_ble_disconnected) + app_ble_gap_params_init 0x0100b3ed Thumb Code 118 app_ble.o(i.app_ble_gap_params_init) + app_ble_init 0x0100b485 Thumb Code 58 app_ble.o(i.app_ble_init) + app_ble_msg_handler 0x0100b4d1 Thumb Code 90 app_ble.o(i.app_ble_msg_handler) + app_ble_proto_cli_exec 0x0100b53d Thumb Code 150 app_ble_proto.o(i.app_ble_proto_cli_exec) + app_ble_proto_cli_rsp 0x0100b629 Thumb Code 50 app_ble_proto.o(i.app_ble_proto_cli_rsp) + app_ble_proto_init 0x0100b669 Thumb Code 14 app_ble_proto.o(i.app_ble_proto_init) + app_ble_proto_log_get 0x0100b67d Thumb Code 6 app_ble_proto.o(i.app_ble_proto_log_get) + app_ble_proto_log_set 0x0100b689 Thumb Code 12 app_ble_proto.o(i.app_ble_proto_log_set) + app_ble_proto_on_disconnect 0x0100b699 Thumb Code 22 app_ble_proto.o(i.app_ble_proto_on_disconnect) + app_ble_proto_rx_bytes 0x0100b6b5 Thumb Code 380 app_ble_proto.o(i.app_ble_proto_rx_bytes) + app_ble_proto_send_frame 0x0100b855 Thumb Code 158 app_ble_proto.o(i.app_ble_proto_send_frame) + app_ble_sec_init 0x0100b90d Thumb Code 70 app_ble.o(i.app_ble_sec_init) + app_dis_add_dis 0x0100ba39 Thumb Code 74 app_dis.o(i.app_dis_add_dis) + app_entry_point_handler 0x0100ba95 Thumb Code 238 ns_ble_task.o(i.app_entry_point_handler) + app_fan_get_rpm 0x0100bb99 Thumb Code 4 app_info.o(i.app_fan_get_rpm) + app_info_chip_temp_c10 0x0100bba1 Thumb Code 74 app_info.o(i.app_info_chip_temp_c10) + app_info_handle_query 0x0100bbfd Thumb Code 70 app_info.o(i.app_info_handle_query) + app_info_last_temp_raw 0x0100bc49 Thumb Code 6 app_info.o(i.app_info_last_temp_raw) + app_info_tlv_snapshot 0x0100bc55 Thumb Code 34 app_info.o(i.app_info_tlv_snapshot) + app_info_vdd_mv 0x0100bc81 Thumb Code 28 app_info.o(i.app_info_vdd_mv) + app_ota_abort 0x0100bd69 Thumb Code 18 app_ota.o(i.app_ota_abort) + app_ota_handle_frame 0x0100bd81 Thumb Code 268 app_ota.o(i.app_ota_handle_frame) + app_params_get 0x0100be9d Thumb Code 4 app_params.o(i.app_params_get) + app_params_init 0x0100bea5 Thumb Code 76 app_params.o(i.app_params_init) + app_params_restore_defaults 0x0100bf01 Thumb Code 36 app_params.o(i.app_params_restore_defaults) + app_rdtss_add_rdts 0x0100bf2d Thumb Code 82 app_rdtss.o(i.app_rdtss_add_rdts) + app_user_msg_handler 0x0100c145 Thumb Code 2 app_ble.o(i.app_user_msg_handler) + attm_att_set_value 0x0100c149 Thumb Code 172 lib_att.o(i.attm_att_set_value) + ble_up_on_cfm 0x0100c219 Thumb Code 14 ble_up.o(i.ble_up_on_cfm) + ble_up_poll 0x0100c22d Thumb Code 76 ble_up.o(i.ble_up_poll) + ble_up_reset 0x0100c285 Thumb Code 12 ble_up.o(i.ble_up_reset) + ble_up_write 0x0100c295 Thumb Code 58 ble_up.o(i.ble_up_write) + bsp_usart_init 0x0100c455 Thumb Code 196 bsp_usart.o(i.bsp_usart_init) + bsp_usart_read_byte 0x0100c531 Thumb Code 52 bsp_usart.o(i.bsp_usart_read_byte) + bsp_usart_rx_isr_handler 0x0100c569 Thumb Code 68 bsp_usart.o(i.bsp_usart_rx_isr_handler) + bsp_usart_set_baud 0x0100c5bd Thumb Code 98 bsp_usart.o(i.bsp_usart_set_baud) + bsp_usart_tx_lock 0x0100c62d Thumb Code 28 bsp_usart.o(i.bsp_usart_tx_lock) + bsp_usart_tx_unlock 0x0100c64d Thumb Code 32 bsp_usart.o(i.bsp_usart_tx_unlock) + bsp_usart_write_dma 0x0100c671 Thumb Code 134 bsp_usart.o(i.bsp_usart_write_dma) + caiic_crc32 0x0100c709 Thumb Code 48 boot_crc32.o(i.caiic_crc32) + check_client_char_cfg 0x0100c73d Thumb Code 42 rdts_common.o(i.check_client_char_cfg) + cli_cmd_count 0x0100c767 Thumb Code 4 cli_core.o(i.cli_cmd_count) + cli_cmd_name 0x0100c76d Thumb Code 18 cli_core.o(i.cli_cmd_name) + cli_exec_line 0x0100c785 Thumb Code 140 cli_core.o(i.cli_exec_line) + cli_printf 0x0100c839 Thumb Code 36 cli_core.o(i.cli_printf) + cli_set_output 0x0100c8f9 Thumb Code 6 cli_core.o(i.cli_set_output) + cli_write 0x0100c905 Thumb Code 30 cli_core.o(i.cli_write) + diss_check_val_len 0x0100c929 Thumb Code 42 diss.o(i.diss_check_val_len) + diss_handle_to_value 0x0100c995 Thumb Code 52 diss.o(i.diss_handle_to_value) + diss_prf_itf_get 0x0100ca69 Thumb Code 4 diss.o(i.diss_prf_itf_get) + diss_task_init 0x0100cb0d Thumb Code 28 diss_task.o(i.diss_task_init) + diss_value_to_handle 0x0100cc69 Thumb Code 58 diss.o(i.diss_value_to_handle) + eTaskGetState 0x0100cca5 Thumb Code 82 tasks.o(i.eTaskGetState) + fputc 0x0100cd05 Thumb Code 54 bsp_usart.o(i.fputc) + get_cfg_handle 0x0100dec9 Thumb Code 98 rdts_common.o(i.get_cfg_handle) + get_value_handle 0x0100df35 Thumb Code 78 rdts_common.o(i.get_value_handle) + llhwc_modem_setmode 0x0100e1d5 Thumb Code 44 rwip_driver.o(i.llhwc_modem_setmode) + llhwc_phy_prerx_flash 0x0100e205 Thumb Code 172 rwip_driver.o(i.llhwc_phy_prerx_flash) + main 0x0100e3c5 Thumb Code 136 main.o(i.main) + ns_EXTI4_12_IRQHandler 0x0100e565 Thumb Code 76 ns_ble.o(i.ns_EXTI4_12_IRQHandler) + ns_HardFault_Handler 0x0100e5c1 Thumb Code 26 ns_ble.o(i.ns_HardFault_Handler) + ns_ble_add_prf_func_register 0x0100e5e9 Thumb Code 28 ns_ble.o(i.ns_ble_add_prf_func_register) + ns_ble_add_svc 0x0100e609 Thumb Code 34 ns_ble.o(i.ns_ble_add_svc) + ns_ble_adv_fsm_next 0x0100e635 Thumb Code 202 ns_ble.o(i.ns_ble_adv_fsm_next) + ns_ble_adv_init 0x0100e711 Thumb Code 58 ns_ble.o(i.ns_ble_adv_init) + ns_ble_adv_start 0x0100e759 Thumb Code 72 ns_ble.o(i.ns_ble_adv_start) + ns_ble_adv_stop 0x0100e7a9 Thumb Code 66 ns_ble.o(i.ns_ble_adv_stop) + ns_ble_delete_init 0x0100e7f5 Thumb Code 46 ns_ble.o(i.ns_ble_delete_init) + ns_ble_delete_scan 0x0100e831 Thumb Code 42 ns_ble.o(i.ns_ble_delete_scan) + ns_ble_disconnect 0x0100e869 Thumb Code 34 ns_ble.o(i.ns_ble_disconnect) + ns_ble_gap_init 0x0100e895 Thumb Code 70 ns_ble.o(i.ns_ble_gap_init) + ns_ble_get_connection_num 0x0100e901 Thumb Code 32 ns_ble.o(i.ns_ble_get_connection_num) + ns_ble_list_set_ral 0x0100e925 Thumb Code 76 ns_ble.o(i.ns_ble_list_set_ral) + ns_ble_lsc_config 0x0100e975 Thumb Code 106 ns_ble.o(i.ns_ble_lsc_config) + ns_ble_mtu_set 0x0100e9f9 Thumb Code 40 ns_ble.o(i.ns_ble_mtu_set) + ns_ble_prf_task_register 0x0100ea2d Thumb Code 34 ns_ble.o(i.ns_ble_prf_task_register) + ns_ble_scan_data_find 0x0100ea55 Thumb Code 72 ns_ble.o(i.ns_ble_scan_data_find) + ns_ble_stack_init 0x0100ea9d Thumb Code 448 ns_ble.o(i.ns_ble_stack_init) + ns_ble_start_init 0x0100ed15 Thumb Code 260 ns_ble.o(i.ns_ble_start_init) + ns_ble_start_scan 0x0100ee39 Thumb Code 178 ns_ble.o(i.ns_ble_start_scan) + ns_ble_stop_init 0x0100ef05 Thumb Code 42 ns_ble.o(i.ns_ble_stop_init) + ns_ble_stop_scan 0x0100ef3d Thumb Code 48 ns_ble.o(i.ns_ble_stop_scan) + ns_ble_update_param 0x0100ef79 Thumb Code 112 ns_ble.o(i.ns_ble_update_param) + ns_bond_last_bonded_addr 0x0100f039 Thumb Code 48 ns_sec.o(i.ns_bond_last_bonded_addr) + ns_bond_last_bonded_peer_id 0x0100f069 Thumb Code 48 ns_sec.o(i.ns_bond_last_bonded_peer_id) + ns_bond_last_bonded_ral_info 0x0100f099 Thumb Code 92 ns_sec.o(i.ns_bond_last_bonded_ral_info) + ns_bond_resolv_addr_start 0x0100f0fd Thumb Code 92 ns_sec.o(i.ns_bond_resolv_addr_start) + ns_bond_search_addr_irk 0x0100f15d Thumb Code 110 ns_sec.o(i.ns_bond_search_addr_irk) + ns_peripheral_config 0x0100f1d9 Thumb Code 162 ns_ble.o(i.ns_peripheral_config) + ns_sec_bond_store_evt_handler 0x0100f2ad Thumb Code 308 ns_sec.o(i.ns_sec_bond_store_evt_handler) + ns_sec_get_bond_status 0x0100f40d Thumb Code 12 ns_sec.o(i.ns_sec_get_bond_status) + ns_sec_get_iocap 0x0100f41d Thumb Code 6 ns_sec.o(i.ns_sec_get_iocap) + ns_sec_init 0x0100f429 Thumb Code 94 ns_sec.o(i.ns_sec_init) + ns_sleep_lock_acquire 0x0100f491 Thumb Code 20 ns_sleep.o(i.ns_sleep_lock_acquire) + ns_sleep_lock_release 0x0100f4a9 Thumb Code 16 ns_sleep.o(i.ns_sleep_lock_release) + ns_timer_api_process_handler 0x0100f4bd Thumb Code 166 ns_timer.o(i.ns_timer_api_process_handler) + prf_add_profile 0x0100f951 Thumb Code 132 prf.o(i.prf_add_profile) + prf_dst_task_get 0x0100f9d9 Thumb Code 16 prf.o(i.prf_dst_task_get) + prf_env_get 0x0100f9e9 Thumb Code 44 prf.o(i.prf_env_get) + prf_get_id_from_task 0x0100fa19 Thumb Code 50 prf.o(i.prf_get_id_from_task) + prf_get_itf_func_register 0x0100fa51 Thumb Code 34 prf.o(i.prf_get_itf_func_register) + prf_get_task_from_id 0x0100fa79 Thumb Code 50 prf.o(i.prf_get_task_from_id) + prf_init 0x0100fab1 Thumb Code 170 prf.o(i.prf_init) + pvPortMalloc 0x0100ff11 Thumb Code 230 heap_4.o(i.pvPortMalloc) + pvTaskIncrementMutexHeldCount 0x01010005 Thumb Code 20 tasks.o(i.pvTaskIncrementMutexHeldCount) + pxPortInitialiseStack 0x0101001d Thumb Code 30 port.o(i.pxPortInitialiseStack) + rdtss_get_att_handle 0x010101ff Thumb Code 28 rdts_common.o(i.rdtss_get_att_handle) + rdtss_get_att_idx 0x0101021b Thumb Code 40 rdts_common.o(i.rdtss_get_att_idx) + rdtss_init_ccc_values 0x010102dd Thumb Code 160 rdtss_task.o(i.rdtss_init_ccc_values) + rdtss_prf_itf_get 0x01010381 Thumb Code 4 rdtss.o(i.rdtss_prf_itf_get) + rdtss_send_notify 0x01010389 Thumb Code 70 app_rdtss.o(i.rdtss_send_notify) + rdtss_set_ccc_value 0x010103dd Thumb Code 52 rdtss_task.o(i.rdtss_set_ccc_value) + rdtss_task_init 0x01010411 Thumb Code 28 rdtss_task.o(i.rdtss_task_init) + rwip_init 0x010107c5 Thumb Code 198 rwip.o(i.rwip_init) + rwip_slp_isr 0x010108dd Thumb Code 198 rwip_driver.o(i.rwip_slp_isr) + uxListRemove 0x010109d9 Thumb Code 38 list.o(i.uxListRemove) + uxTaskGetNumberOfTasks 0x01010a01 Thumb Code 6 tasks.o(i.uxTaskGetNumberOfTasks) + uxTaskGetSystemState 0x01010a0d Thumb Code 134 tasks.o(i.uxTaskGetSystemState) + vListInitialise 0x01010aa5 Thumb Code 22 list.o(i.vListInitialise) + vListInitialiseItem 0x01010abb Thumb Code 6 list.o(i.vListInitialiseItem) + vListInsert 0x01010ac1 Thumb Code 50 list.o(i.vListInsert) + vListInsertEnd 0x01010af3 Thumb Code 24 list.o(i.vListInsertEnd) + vPortEnterCritical 0x01010b0d Thumb Code 20 port.o(i.vPortEnterCritical) + vPortExitCritical 0x01010b25 Thumb Code 22 port.o(i.vPortExitCritical) + vPortFree 0x01010b41 Thumb Code 64 heap_4.o(i.vPortFree) + vPortYield 0x01010b85 Thumb Code 18 port.o(i.vPortYield) + vTaskDelay 0x01010b9d Thumb Code 44 tasks.o(i.vTaskDelay) + vTaskInternalSetTimeOutState 0x01010bcd Thumb Code 12 tasks.o(i.vTaskInternalSetTimeOutState) + vTaskList 0x01010bdd Thumb Code 188 tasks.o(i.vTaskList) + vTaskMissedYield 0x01010cad Thumb Code 8 tasks.o(i.vTaskMissedYield) + vTaskPlaceOnEventList 0x01010cb9 Thumb Code 32 tasks.o(i.vTaskPlaceOnEventList) + vTaskPriorityDisinheritAfterTimeout 0x01010cdd Thumb Code 106 tasks.o(i.vTaskPriorityDisinheritAfterTimeout) + vTaskStartScheduler 0x01010d51 Thumb Code 60 tasks.o(i.vTaskStartScheduler) + vTaskSuspendAll 0x01010da1 Thumb Code 10 tasks.o(i.vTaskSuspendAll) + vTaskSwitchContext 0x01010db1 Thumb Code 92 tasks.o(i.vTaskSwitchContext) + xPortGetFreeHeapSize 0x01010e15 Thumb Code 6 heap_4.o(i.xPortGetFreeHeapSize) + xPortGetMinimumEverFreeHeapSize 0x01010e21 Thumb Code 6 heap_4.o(i.xPortGetMinimumEverFreeHeapSize) + xPortStartScheduler 0x01010e2d Thumb Code 62 port.o(i.xPortStartScheduler) + xQueueCreateMutex 0x01010e7d Thumb Code 36 queue.o(i.xQueueCreateMutex) + xQueueGenericCreate 0x01010ea1 Thumb Code 68 queue.o(i.xQueueGenericCreate) + xQueueGenericReset 0x01010ee5 Thumb Code 110 queue.o(i.xQueueGenericReset) + xQueueGenericSend 0x01010f53 Thumb Code 398 queue.o(i.xQueueGenericSend) + xQueueGenericSendFromISR 0x010110e1 Thumb Code 142 queue.o(i.xQueueGenericSendFromISR) + xQueueReceive 0x0101116f Thumb Code 322 queue.o(i.xQueueReceive) + xQueueSemaphoreTake 0x010112b1 Thumb Code 370 queue.o(i.xQueueSemaphoreTake) + xTaskCheckForTimeOut 0x01011425 Thumb Code 94 tasks.o(i.xTaskCheckForTimeOut) + xTaskCreate 0x01011489 Thumb Code 348 tasks.o(i.xTaskCreate) + xTaskGetSchedulerState 0x01011601 Thumb Code 26 tasks.o(i.xTaskGetSchedulerState) + xTaskGetTickCount 0x01011621 Thumb Code 6 tasks.o(i.xTaskGetTickCount) + xTaskIncrementTick 0x0101162d Thumb Code 202 tasks.o(i.xTaskIncrementTick) + xTaskPriorityDisinherit 0x01011701 Thumb Code 96 tasks.o(i.xTaskPriorityDisinherit) + xTaskPriorityInherit 0x01011769 Thumb Code 110 tasks.o(i.xTaskPriorityInherit) + xTaskRemoveFromEventList 0x010117e1 Thumb Code 88 tasks.o(i.xTaskRemoveFromEventList) + xTaskResumeAll 0x01011845 Thumb Code 186 tasks.o(i.xTaskResumeAll) + TRIM_READ_CMD_CODE 0x0101190c Data 320 system_n32wb03x.o(.constdata) + CMD_RDID 0x01011a4c Data 152 system_n32wb03x.o(.constdata) + const_qflash_cmd 0x01011af0 Data 804 n32wb03x_qflash.o(.constdata) + diss_att_db 0x01011e34 Data 152 diss.o(.constdata) + diss_itf 0x01011ecc Data 16 diss.o(.constdata) + rdtss_itf 0x01011ef4 Data 16 rdtss.o(.constdata) + app_sec_msg_handler_list 0x01011f4c Data 40 ns_sec.o(.constdata) + app_sec_handlers 0x01011f74 Data 8 ns_sec.o(.constdata) + TASK_DESC_APP_M 0x01012410 Data 12 ns_ble_task.o(.constdata) + app_dis_msg_handler_list 0x0101241c Data 8 app_dis.o(.constdata) + app_dis_handlers 0x01012424 Data 8 app_dis.o(.constdata) + app_rdtss_handlers 0x0101242c Data 8 app_rdtss.o(.constdata) + app_rdts_svc_uuid 0x01012434 Data 16 app_rdtss.o(.constdata) + app_rdts_att_db 0x01012444 Data 242 app_rdtss.o(.constdata) + app_rdtss_msg_handler_list 0x01012538 Data 24 app_rdtss.o(.constdata) + __ctype_table 0x010125fe Data 129 ctype_o.o(.constdata) + Region$$Table$$Base 0x010129d8 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x010129f8 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 @@ -4095,7 +4140,7 @@ Image Symbol Table 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) + __initial_sp 0x2000b5a8 Data 0 startup_n32wb03x.o(STACK) @@ -4105,86 +4150,86 @@ Memory Map of the image Image Entry point : 0x010080c1 - Load Region LR_IROM1 (Base: 0x01008000, Size: 0x0000ae1c, Max: 0x00038000, ABSOLUTE, COMPRESSED[0x0000ac38]) + Load Region LR_IROM1 (Base: 0x01008000, Size: 0x0000b1e4, Max: 0x00038000, ABSOLUTE, COMPRESSED[0x0000b000]) - Execution Region ER_IROM1 (Exec base: 0x01008000, Load base: 0x01008000, Size: 0x0000a630, Max: 0x00038000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x01008000, Load base: 0x01008000, Size: 0x0000a9f8, 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 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) + 0x010080c0 0x010080c0 0x00000000 Code RO 5614 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) + 0x010080c0 0x010080c0 0x00000004 Code RO 5937 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) + 0x010080c4 0x010080c4 0x00000004 Code RO 5940 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) + 0x010080c8 0x010080c8 0x00000000 Code RO 5942 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) + 0x010080c8 0x010080c8 0x00000000 Code RO 5944 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) + 0x010080c8 0x010080c8 0x00000008 Code RO 5945 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) + 0x010080d0 0x010080d0 0x00000000 Code RO 5947 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) + 0x010080d0 0x010080d0 0x00000000 Code RO 5949 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) + 0x010080d0 0x010080d0 0x00000004 Code RO 5938 .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 4550 .emb_text n32wb03x_it.o - 0x010080f0 0x010080f0 0x00000078 Code RO 5507 .emb_text port.o + 0x010080e4 0x010080e4 0x0000000c Code RO 4579 .emb_text n32wb03x_it.o + 0x010080f0 0x010080f0 0x00000078 Code RO 5549 .emb_text port.o 0x01008168 0x01008168 0x0000001c Code RO 4 .text startup_n32wb03x.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) + 0x01008184 0x01008184 0x0000002c Code RO 5617 .text mc_p.l(uidiv.o) + 0x010081b0 0x010081b0 0x00000028 Code RO 5619 .text mc_p.l(idiv.o) + 0x010081d8 0x010081d8 0x00000060 Code RO 5621 .text mc_p.l(uldiv.o) + 0x01008238 0x01008238 0x00000024 Code RO 5623 .text mc_p.l(rand.o) + 0x0100825c 0x0100825c 0x00000024 Code RO 5626 .text mc_p.l(memcpya.o) + 0x01008280 0x01008280 0x00000024 Code RO 5628 .text mc_p.l(memseta.o) + 0x010082a4 0x010082a4 0x0000000e Code RO 5630 .text mc_p.l(strlen.o) + 0x010082b2 0x010082b2 0x0000001c Code RO 5632 .text mc_p.l(strcmp.o) + 0x010082ce 0x010082ce 0x00000014 Code RO 5634 .text mc_p.l(memchr.o) + 0x010082e2 0x010082e2 0x0000001a Code RO 5636 .text mc_p.l(memcmp.o) + 0x010082fc 0x010082fc 0x00000012 Code RO 5638 .text mc_p.l(strcpy.o) + 0x0100830e 0x0100830e 0x0000001e Code RO 5640 .text mc_p.l(strncmp.o) + 0x0100832c 0x0100832c 0x00000076 Code RO 5905 .text mc_p.l(strtoul.o) + 0x010083a2 0x010083a2 0x000000b2 Code RO 5907 .text mf_p.l(fadd.o) + 0x01008454 0x01008454 0x0000007a Code RO 5909 .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) + 0x010084d0 0x010084d0 0x00000164 Code RO 5913 .text mf_p.l(dadd.o) + 0x01008634 0x01008634 0x000000d0 Code RO 5915 .text mf_p.l(dmul.o) + 0x01008704 0x01008704 0x000000f0 Code RO 5917 .text mf_p.l(ddiv.o) + 0x010087f4 0x010087f4 0x0000000e Code RO 5921 .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) + 0x01008804 0x01008804 0x0000001c Code RO 5923 .text mf_p.l(dfltui.o) + 0x01008820 0x01008820 0x0000001c Code RO 5925 .text mf_p.l(dfltul.o) + 0x0100883c 0x0100883c 0x00000032 Code RO 5927 .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) + 0x01008870 0x01008870 0x00000040 Code RO 5931 .text mf_p.l(dfixul.o) + 0x010088b0 0x010088b0 0x00000028 Code RO 5933 .text mf_p.l(f2d.o) + 0x010088d8 0x010088d8 0x00000038 Code RO 5935 .text mf_p.l(d2f.o) + 0x01008910 0x01008910 0x00000020 Code RO 5951 .text mc_p.l(llshl.o) + 0x01008930 0x01008930 0x00000022 Code RO 5953 .text mc_p.l(llushr.o) + 0x01008952 0x01008952 0x00000026 Code RO 5955 .text mc_p.l(llsshr.o) + 0x01008978 0x01008978 0x00000008 Code RO 5957 .text mc_p.l(ctype_o.o) + 0x01008980 0x01008980 0x000000a6 Code RO 5992 .text mc_p.l(_strtoul.o) + 0x01008a26 0x01008a26 0x00000000 Code RO 5994 .text mc_p.l(iusefp.o) + 0x01008a26 0x01008a26 0x00000082 Code RO 5995 .text mf_p.l(fepilogue.o) + 0x01008aa8 0x01008aa8 0x000000be Code RO 5997 .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 + 0x01008b68 0x01008b68 0x00000028 Code RO 6001 .text mf_p.l(cdrcmple.o) + 0x01008b90 0x01008b90 0x00000024 Code RO 6003 .text mc_p.l(init.o) + 0x01008bb4 0x01008bb4 0x0000001e Code RO 6005 .text mc_p.l(_chval.o) + 0x01008bd2 0x01008bd2 0x00000056 Code RO 6009 .text mc_p.l(__dczerorl2.o) + 0x01008c28 0x01008c28 0x0000000c Ven RO 6011 Veneer$$Code anon$$obj.o + 0x01008c34 0x01008c34 0x0000000c Ven RO 6012 Veneer$$Code anon$$obj.o + 0x01008c40 0x01008c40 0x0000000c Ven RO 6013 Veneer$$Code anon$$obj.o + 0x01008c4c 0x01008c4c 0x0000000c Ven RO 6014 Veneer$$Code anon$$obj.o + 0x01008c58 0x01008c58 0x0000000c Ven RO 6015 Veneer$$Code anon$$obj.o + 0x01008c64 0x01008c64 0x0000000c Ven RO 6016 Veneer$$Code anon$$obj.o + 0x01008c70 0x01008c70 0x0000000c Ven RO 6017 Veneer$$Code anon$$obj.o + 0x01008c7c 0x01008c7c 0x0000000c Ven RO 6018 Veneer$$Code anon$$obj.o + 0x01008c88 0x01008c88 0x0000000c Ven RO 6019 Veneer$$Code anon$$obj.o + 0x01008c94 0x01008c94 0x0000000c Ven RO 6020 Veneer$$Code anon$$obj.o + 0x01008ca0 0x01008ca0 0x0000000c Ven RO 6021 Veneer$$Code anon$$obj.o + 0x01008cac 0x01008cac 0x0000000c Ven RO 6022 Veneer$$Code anon$$obj.o + 0x01008cb8 0x01008cb8 0x0000000c Ven RO 6023 Veneer$$Code anon$$obj.o + 0x01008cc4 0x01008cc4 0x0000000c Ven RO 6024 Veneer$$Code anon$$obj.o + 0x01008cd0 0x01008cd0 0x0000000c Ven RO 6025 Veneer$$Code anon$$obj.o + 0x01008cdc 0x01008cdc 0x0000000c Ven RO 6026 Veneer$$Code anon$$obj.o + 0x01008ce8 0x01008ce8 0x0000000c Ven RO 6027 Veneer$$Code anon$$obj.o + 0x01008cf4 0x01008cf4 0x0000000c Ven RO 6028 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 @@ -4197,364 +4242,370 @@ Memory Map of the image 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 + 0x01008ee8 0x01008ee8 0x00000034 Code RO 4912 i.AppBootset_CmdBsdump app_bootset.o + 0x01008f1c 0x01008f1c 0x00000330 Code RO 4913 i.AppBootset_CmdBsset app_bootset.o + 0x0100924c 0x0100924c 0x00000028 Code RO 4502 i.AppCli_Init app_cli.o + 0x01009274 0x01009274 0x000000ac Code RO 4858 i.AppParams_CmdAppget app_params.o + 0x01009320 0x01009320 0x000001a0 Code RO 4859 i.AppParams_CmdAppset app_params.o + 0x010094c0 0x010094c0 0x00000434 Code RO 4504 i.CliTask app_cli.o + 0x010098f4 0x010098f4 0x00000078 Code RO 4380 i.CmdBleLog cli_core.o + 0x0100996c 0x0100996c 0x00000178 Code RO 4381 i.CmdDevInfo cli_core.o + 0x01009ae4 0x01009ae4 0x00000090 Code RO 4382 i.CmdFactory cli_core.o + 0x01009b74 0x01009b74 0x000000d4 Code RO 4383 i.CmdHelp cli_core.o + 0x01009c48 0x01009c48 0x000000d0 Code RO 4384 i.CmdLed cli_core.o + 0x01009d18 0x01009d18 0x00000034 Code RO 4385 i.CmdReset cli_core.o + 0x01009d4c 0x01009d4c 0x000000e8 Code RO 4386 i.CmdSysInfo cli_core.o + 0x01009e34 0x01009e34 0x000000ac Code RO 4387 i.CmdUartInfo cli_core.o + 0x01009ee0 0x01009ee0 0x00000044 Code RO 4388 i.CmdUartRst cli_core.o + 0x01009f24 0x01009f24 0x00000098 Code RO 4389 i.CmdVersion cli_core.o + 0x01009fbc 0x01009fbc 0x00000004 Code RO 487 i.DMA_ClearFlag n32wb03x_dma.o + 0x01009fc0 0x01009fc0 0x00000088 Code RO 490 i.DMA_DeInit n32wb03x_dma.o + 0x0100a048 0x0100a048 0x00000018 Code RO 491 i.DMA_EnableChannel n32wb03x_dma.o + 0x0100a060 0x0100a060 0x0000000e Code RO 493 i.DMA_GetFlagStatus n32wb03x_dma.o + 0x0100a06e 0x0100a06e 0x00000002 PAD + 0x0100a070 0x0100a070 0x00000040 Code RO 495 i.DMA_Init n32wb03x_dma.o + 0x0100a0b0 0x0100a0b0 0x0000000e Code RO 496 i.DMA_RequestRemap n32wb03x_dma.o + 0x0100a0be 0x0100a0be 0x00000002 PAD + 0x0100a0c0 0x0100a0c0 0x0000000c Code RO 569 i.EXTI_ClrITPendBit n32wb03x_exti.o + 0x0100a0cc 0x0100a0cc 0x0000001c Code RO 572 i.EXTI_GetITStatus n32wb03x_exti.o + 0x0100a0e8 0x0100a0e8 0x00000070 Code RO 574 i.EXTI_InitPeripheral n32wb03x_exti.o + 0x0100a158 0x0100a158 0x000000b8 Code RO 634 i.GPIO_InitPeripheral n32wb03x_gpio.o + 0x0100a210 0x0100a210 0x0000001c Code RO 635 i.GPIO_InitStruct n32wb03x_gpio.o + 0x0100a22c 0x0100a22c 0x00000004 Code RO 640 i.GPIO_ResetBits n32wb03x_gpio.o + 0x0100a230 0x0100a230 0x00000004 Code RO 641 i.GPIO_SetBits n32wb03x_gpio.o + 0x0100a234 0x0100a234 0x00000008 Code RO 642 i.GPIO_TogglePin n32wb03x_gpio.o + 0x0100a23c 0x0100a23c 0x000000b0 Code RO 4580 i.HardFault_Handler n32wb03x_it.o + 0x0100a2ec 0x0100a2ec 0x00000008 Code RO 4824 i.LedBlink app_gpio.o + 0x0100a2f4 0x0100a2f4 0x0000004c Code RO 4825 i.LedInit app_gpio.o + 0x0100a340 0x0100a340 0x00000008 Code RO 4826 i.LedOff app_gpio.o + 0x0100a348 0x0100a348 0x00000008 Code RO 4827 i.LedOn app_gpio.o + 0x0100a350 0x0100a350 0x00000078 Code RO 159 i.NVIC_Init misc.o + 0x0100a3c8 0x0100a3c8 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o + 0x0100a494 0x0100a494 0x00000024 Code RO 1947 i.Qflash_Erase_Sector n32wb03x_qflash.o + 0x0100a4b8 0x0100a4b8 0x00000038 Code RO 1948 i.Qflash_Init n32wb03x_qflash.o + 0x0100a4f0 0x0100a4f0 0x00000024 Code RO 1950 i.Qflash_Write n32wb03x_qflash.o + 0x0100a514 0x0100a514 0x00000014 Code RO 748 i.RCC_ConfigAdcClk n32wb03x_rcc.o + 0x0100a528 0x0100a528 0x00000018 Code RO 762 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o + 0x0100a540 0x0100a540 0x00000018 Code RO 763 i.RCC_EnableAHBPeriphReset n32wb03x_rcc.o + 0x0100a558 0x0100a558 0x00000018 Code RO 766 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o + 0x0100a570 0x0100a570 0x0000001c Code RO 773 i.RCC_Enable_ADC_CLK_SRC_AUDIOPLL n32wb03x_rcc.o + 0x0100a58c 0x0100a58c 0x00000074 Code RO 774 i.RCC_GetClocksFreqValue n32wb03x_rcc.o + 0x0100a600 0x0100a600 0x00000002 Code RO 5550 i.SVC_Handler port.o + 0x0100a602 0x0100a602 0x00000002 PAD + 0x0100a604 0x0100a604 0x00000024 Code RO 5551 i.SysTick_Handler port.o + 0x0100a628 0x0100a628 0x00000034 Code RO 13 i.SystemGetMacAddr system_n32wb03x.o + 0x0100a65c 0x0100a65c 0x00000180 Code RO 15 i.SystemInit system_n32wb03x.o + 0x0100a7dc 0x0100a7dc 0x00000030 Code RO 16 i.SystemTrimValueGet system_n32wb03x.o + 0x0100a80c 0x0100a80c 0x00000008 Code RO 4581 i.USART1_IRQHandler n32wb03x_it.o + 0x0100a814 0x0100a814 0x00000032 Code RO 1520 i.USART_ConfigInt n32wb03x_usart.o + 0x0100a846 0x0100a846 0x00000002 PAD + 0x0100a848 0x0100a848 0x0000001c Code RO 1525 i.USART_Enable n32wb03x_usart.o + 0x0100a864 0x0100a864 0x00000010 Code RO 1526 i.USART_EnableDMA n32wb03x_usart.o + 0x0100a874 0x0100a874 0x0000000e Code RO 1532 i.USART_GetFlagStatus n32wb03x_usart.o + 0x0100a882 0x0100a882 0x00000040 Code RO 1533 i.USART_GetIntStatus n32wb03x_usart.o + 0x0100a8c2 0x0100a8c2 0x00000002 PAD + 0x0100a8c4 0x0100a8c4 0x00000088 Code RO 1534 i.USART_Init n32wb03x_usart.o + 0x0100a94c 0x0100a94c 0x00000008 Code RO 1535 i.USART_ReceiveData n32wb03x_usart.o + 0x0100a954 0x0100a954 0x00000008 Code RO 1537 i.USART_SendData n32wb03x_usart.o + 0x0100a95c 0x0100a95c 0x00000020 Code RO 5877 i.__0printf mc_p.l(printfa.o) + 0x0100a97c 0x0100a97c 0x00000028 Code RO 5879 i.__0sprintf mc_p.l(printfa.o) + 0x0100a9a4 0x0100a9a4 0x0000002c Code RO 5882 i.__0vsnprintf mc_p.l(printfa.o) + 0x0100a9d0 0x0100a9d0 0x0000002e Code RO 5999 i.__ARM_clz mf_p.l(depilogue.o) + 0x0100a9fe 0x0100a9fe 0x00000002 PAD + 0x0100aa00 0x0100aa00 0x00000008 Code RO 5985 i.__aeabi_errno_addr mc_p.l(errno.o) + 0x0100aa08 0x0100aa08 0x00000174 Code RO 5884 i._fp_digits mc_p.l(printfa.o) + 0x0100ab7c 0x0100ab7c 0x000006ec Code RO 5885 i._printf_core mc_p.l(printfa.o) + 0x0100b268 0x0100b268 0x00000020 Code RO 5886 i._printf_post_padding mc_p.l(printfa.o) + 0x0100b288 0x0100b288 0x0000002c Code RO 5887 i._printf_pre_padding mc_p.l(printfa.o) + 0x0100b2b4 0x0100b2b4 0x00000016 Code RO 5888 i._snputc mc_p.l(printfa.o) + 0x0100b2ca 0x0100b2ca 0x0000000a Code RO 5889 i._sputc mc_p.l(printfa.o) + 0x0100b2d4 0x0100b2d4 0x00000074 Code RO 4120 i.app_ble_adv_init app_ble.o + 0x0100b348 0x0100b348 0x00000002 Code RO 4121 i.app_ble_adv_msg_handler app_ble.o + 0x0100b34a 0x0100b34a 0x00000002 PAD + 0x0100b34c 0x0100b34c 0x00000044 Code RO 4122 i.app_ble_connected app_ble.o + 0x0100b390 0x0100b390 0x0000005c Code RO 4123 i.app_ble_disconnected app_ble.o + 0x0100b3ec 0x0100b3ec 0x00000098 Code RO 4124 i.app_ble_gap_params_init app_ble.o + 0x0100b484 0x0100b484 0x0000004c Code RO 4125 i.app_ble_init app_ble.o + 0x0100b4d0 0x0100b4d0 0x0000006c Code RO 4126 i.app_ble_msg_handler app_ble.o + 0x0100b53c 0x0100b53c 0x000000ec Code RO 4605 i.app_ble_proto_cli_exec app_ble_proto.o + 0x0100b628 0x0100b628 0x00000040 Code RO 4606 i.app_ble_proto_cli_rsp app_ble_proto.o + 0x0100b668 0x0100b668 0x00000014 Code RO 4607 i.app_ble_proto_init app_ble_proto.o + 0x0100b67c 0x0100b67c 0x0000000c Code RO 4608 i.app_ble_proto_log_get app_ble_proto.o + 0x0100b688 0x0100b688 0x00000010 Code RO 4609 i.app_ble_proto_log_set app_ble_proto.o + 0x0100b698 0x0100b698 0x0000001c Code RO 4610 i.app_ble_proto_on_disconnect app_ble_proto.o + 0x0100b6b4 0x0100b6b4 0x000001a0 Code RO 4611 i.app_ble_proto_rx_bytes app_ble_proto.o + 0x0100b854 0x0100b854 0x000000b8 Code RO 4612 i.app_ble_proto_send_frame app_ble_proto.o + 0x0100b90c 0x0100b90c 0x00000050 Code RO 4128 i.app_ble_sec_init app_ble.o + 0x0100b95c 0x0100b95c 0x00000010 Code RO 3851 i.app_conn_params_update_evt_handler ns_ble_task.o + 0x0100b96c 0x0100b96c 0x000000cc Code RO 3452 i.app_create_advertising ns_ble.o + 0x0100ba38 0x0100ba38 0x0000005c Code RO 4005 i.app_dis_add_dis app_dis.o + 0x0100ba94 0x0100ba94 0x00000104 Code RO 3852 i.app_entry_point_handler ns_ble_task.o + 0x0100bb98 0x0100bb98 0x00000008 Code RO 4734 i.app_fan_get_rpm app_info.o + 0x0100bba0 0x0100bba0 0x0000005c Code RO 4735 i.app_info_chip_temp_c10 app_info.o + 0x0100bbfc 0x0100bbfc 0x0000004c Code RO 4736 i.app_info_handle_query app_info.o + 0x0100bc48 0x0100bc48 0x0000000c Code RO 4737 i.app_info_last_temp_raw app_info.o + 0x0100bc54 0x0100bc54 0x0000002c Code RO 4738 i.app_info_tlv_snapshot app_info.o + 0x0100bc80 0x0100bc80 0x00000020 Code RO 4739 i.app_info_vdd_mv app_info.o + 0x0100bca0 0x0100bca0 0x0000001c Code RO 3853 i.app_init_timeout_evt_handler ns_ble_task.o + 0x0100bcbc 0x0100bcbc 0x000000ac Code RO 3854 i.app_lsi_calib_evt_handler ns_ble_task.o + 0x0100bd68 0x0100bd68 0x00000018 Code RO 4684 i.app_ota_abort app_ota.o + 0x0100bd80 0x0100bd80 0x0000011c Code RO 4686 i.app_ota_handle_frame app_ota.o + 0x0100be9c 0x0100be9c 0x00000008 Code RO 4860 i.app_params_get app_params.o + 0x0100bea4 0x0100bea4 0x0000005c Code RO 4861 i.app_params_init app_params.o + 0x0100bf00 0x0100bf00 0x0000002c Code RO 4863 i.app_params_restore_defaults app_params.o + 0x0100bf2c 0x0100bf2c 0x00000068 Code RO 4060 i.app_rdtss_add_rdts app_rdtss.o + 0x0100bf94 0x0100bf94 0x00000004 Code RO 3211 i.app_sec_msg_dflt_handler ns_sec.o + 0x0100bf98 0x0100bf98 0x00000078 Code RO 3453 i.app_set_adv_data ns_ble.o + 0x0100c010 0x0100c010 0x000000c4 Code RO 3454 i.app_set_scan_rsp_data ns_ble.o + 0x0100c0d4 0x0100c0d4 0x00000070 Code RO 3455 i.app_start_advertising ns_ble.o + 0x0100c144 0x0100c144 0x00000002 Code RO 4129 i.app_user_msg_handler app_ble.o + 0x0100c146 0x0100c146 0x00000002 PAD + 0x0100c148 0x0100c148 0x000000c0 Code RO 1987 i.attm_att_set_value lib_att.o + 0x0100c208 0x0100c208 0x00000010 Code RO 4226 i.ble_schedule_task main.o + 0x0100c218 0x0100c218 0x00000014 Code RO 4543 i.ble_up_on_cfm ble_up.o + 0x0100c22c 0x0100c22c 0x00000058 Code RO 4544 i.ble_up_poll ble_up.o + 0x0100c284 0x0100c284 0x00000010 Code RO 4545 i.ble_up_reset ble_up.o + 0x0100c294 0x0100c294 0x00000048 Code RO 4546 i.ble_up_write ble_up.o + 0x0100c2dc 0x0100c2dc 0x00000178 Code RO 4914 i.bootset_print app_bootset.o + 0x0100c454 0x0100c454 0x000000dc Code RO 4308 i.bsp_usart_init bsp_usart.o + 0x0100c530 0x0100c530 0x00000038 Code RO 4309 i.bsp_usart_read_byte bsp_usart.o + 0x0100c568 0x0100c568 0x00000054 Code RO 4311 i.bsp_usart_rx_isr_handler bsp_usart.o + 0x0100c5bc 0x0100c5bc 0x00000070 Code RO 4312 i.bsp_usart_set_baud bsp_usart.o + 0x0100c62c 0x0100c62c 0x00000020 Code RO 4313 i.bsp_usart_tx_lock bsp_usart.o + 0x0100c64c 0x0100c64c 0x00000024 Code RO 4314 i.bsp_usart_tx_unlock bsp_usart.o + 0x0100c670 0x0100c670 0x00000098 Code RO 4315 i.bsp_usart_write_dma bsp_usart.o + 0x0100c708 0x0100c708 0x00000034 Code RO 4811 i.caiic_crc32 boot_crc32.o + 0x0100c73c 0x0100c73c 0x0000002a Code RO 3025 i.check_client_char_cfg rdts_common.o + 0x0100c766 0x0100c766 0x00000004 Code RO 4390 i.cli_cmd_count cli_core.o + 0x0100c76a 0x0100c76a 0x00000002 PAD + 0x0100c76c 0x0100c76c 0x00000018 Code RO 4391 i.cli_cmd_name cli_core.o + 0x0100c784 0x0100c784 0x000000b4 Code RO 4392 i.cli_exec_line cli_core.o + 0x0100c838 0x0100c838 0x0000002c Code RO 4393 i.cli_printf cli_core.o + 0x0100c864 0x0100c864 0x00000068 Code RO 4505 i.cli_redraw_line app_cli.o + 0x0100c8cc 0x0100c8cc 0x0000002c Code RO 4613 i.cli_rsp_out app_ble_proto.o + 0x0100c8f8 0x0100c8f8 0x0000000c Code RO 4394 i.cli_set_output cli_core.o + 0x0100c904 0x0100c904 0x00000024 Code RO 4395 i.cli_write cli_core.o + 0x0100c928 0x0100c928 0x0000002a Code RO 2663 i.diss_check_val_len diss.o + 0x0100c952 0x0100c952 0x00000002 Code RO 2664 i.diss_cleanup diss.o + 0x0100c954 0x0100c954 0x00000002 Code RO 2666 i.diss_create diss.o + 0x0100c956 0x0100c956 0x0000003e Code RO 2667 i.diss_destroy diss.o + 0x0100c994 0x0100c994 0x00000034 Code RO 2668 i.diss_handle_to_value diss.o + 0x0100c9c8 0x0100c9c8 0x000000a0 Code RO 2669 i.diss_init diss.o + 0x0100ca68 0x0100ca68 0x00000008 Code RO 2670 i.diss_prf_itf_get diss.o + 0x0100ca70 0x0100ca70 0x0000009c Code RO 2762 i.diss_set_value_req_handler diss_task.o + 0x0100cb0c 0x0100cb0c 0x00000020 Code RO 2763 i.diss_task_init diss_task.o + 0x0100cb2c 0x0100cb2c 0x0000007c Code RO 2764 i.diss_value_cfm_handler diss_task.o + 0x0100cba8 0x0100cba8 0x000000c0 Code RO 4007 i.diss_value_req_ind_handler app_dis.o + 0x0100cc68 0x0100cc68 0x0000003a Code RO 2671 i.diss_value_to_handle diss.o + 0x0100cca2 0x0100cca2 0x00000002 PAD + 0x0100cca4 0x0100cca4 0x00000060 Code RO 4941 i.eTaskGetState tasks.o + 0x0100cd04 0x0100cd04 0x0000003c Code RO 4316 i.fputc bsp_usart.o + 0x0100cd40 0x0100cd40 0x000000f0 Code RO 3212 i.gapc_bond_ind_handler ns_sec.o + 0x0100ce30 0x0100ce30 0x00000208 Code RO 3213 i.gapc_bond_req_ind_handler ns_sec.o + 0x0100d038 0x0100d038 0x00000028 Code RO 3855 i.gapc_cmp_evt_handler ns_ble_task.o + 0x0100d060 0x0100d060 0x0000006c Code RO 3856 i.gapc_conn_rssi_ind_handler ns_ble_task.o + 0x0100d0cc 0x0100d0cc 0x00000158 Code RO 3857 i.gapc_connection_req_ind_handler ns_ble_task.o + 0x0100d224 0x0100d224 0x00000064 Code RO 3858 i.gapc_disconnect_ind_handler ns_ble_task.o + 0x0100d288 0x0100d288 0x00000028 Code RO 3214 i.gapc_encrypt_ind_handler ns_sec.o + 0x0100d2b0 0x0100d2b0 0x00000130 Code RO 3215 i.gapc_encrypt_req_ind_handler ns_sec.o + 0x0100d3e0 0x0100d3e0 0x00000080 Code RO 3859 i.gapc_get_dev_info_req_ind_handler ns_ble_task.o + 0x0100d460 0x0100d460 0x0000000c Code RO 3860 i.gapc_le_phy_ind_handler ns_ble_task.o + 0x0100d46c 0x0100d46c 0x0000001c Code RO 3861 i.gapc_le_pkt_size_ind_handler ns_ble_task.o + 0x0100d488 0x0100d488 0x00000064 Code RO 3862 i.gapc_param_update_req_ind_handler ns_ble_task.o + 0x0100d4ec 0x0100d4ec 0x00000028 Code RO 3863 i.gapc_param_updated_ind_handler ns_ble_task.o + 0x0100d514 0x0100d514 0x00000040 Code RO 3864 i.gapc_set_dev_info_req_ind_handler ns_ble_task.o + 0x0100d554 0x0100d554 0x00000034 Code RO 3865 i.gapm_activity_created_ind_handler ns_ble_task.o + 0x0100d588 0x0100d588 0x00000060 Code RO 3866 i.gapm_activity_stopped_ind_handler ns_ble_task.o + 0x0100d5e8 0x0100d5e8 0x0000002c Code RO 3867 i.gapm_addr_solved_ind_handler ns_ble_task.o + 0x0100d614 0x0100d614 0x000003e0 Code RO 3868 i.gapm_cmp_evt_handler ns_ble_task.o + 0x0100d9f4 0x0100d9f4 0x000000ac Code RO 3869 i.gapm_ext_adv_repoer_ind_handler ns_ble_task.o + 0x0100daa0 0x0100daa0 0x00000036 Code RO 3870 i.gapm_gen_rand_nb_ind_handler ns_ble_task.o + 0x0100dad6 0x0100dad6 0x0000000c Code RO 3871 i.gapm_profile_added_ind_handler ns_ble_task.o + 0x0100dae2 0x0100dae2 0x0000000c Code RO 3872 i.gapm_scan_request_ind_handler ns_ble_task.o + 0x0100daee 0x0100daee 0x00000002 PAD + 0x0100daf0 0x0100daf0 0x00000040 Code RO 2903 i.gattc_att_info_req_ind_handler rdtss_task.o + 0x0100db30 0x0100db30 0x00000070 Code RO 2904 i.gattc_cmp_evt_handler rdtss_task.o + 0x0100dba0 0x0100dba0 0x00000028 Code RO 3873 i.gattc_cmp_evt_handler ns_ble_task.o + 0x0100dbc8 0x0100dbc8 0x0000004c Code RO 3874 i.gattc_mtu_changed_ind_handler ns_ble_task.o + 0x0100dc14 0x0100dc14 0x000000c4 Code RO 2765 i.gattc_read_req_ind_handler diss_task.o + 0x0100dcd8 0x0100dcd8 0x000000e0 Code RO 2905 i.gattc_read_req_ind_handler rdtss_task.o + 0x0100ddb8 0x0100ddb8 0x00000110 Code RO 2906 i.gattc_write_req_ind_handler rdtss_task.o + 0x0100dec8 0x0100dec8 0x0000006c Code RO 3026 i.get_cfg_handle rdts_common.o + 0x0100df34 0x0100df34 0x00000054 Code RO 3027 i.get_value_handle rdts_common.o + 0x0100df88 0x0100df88 0x00000064 Code RO 4740 i.info_adc_init app_info.o + 0x0100dfec 0x0100dfec 0x0000006c Code RO 4741 i.info_adc_read app_info.o + 0x0100e058 0x0100e058 0x0000011c Code RO 4742 i.info_fill_item app_info.o + 0x0100e174 0x0100e174 0x0000002c Code RO 4743 i.info_put_tlv app_info.o + 0x0100e1a0 0x0100e1a0 0x00000034 Code RO 4227 i.led_task main.o + 0x0100e1d4 0x0100e1d4 0x00000030 Code RO 2356 i.llhwc_modem_setmode rwip_driver.o + 0x0100e204 0x0100e204 0x00000130 Code RO 2357 i.llhwc_phy_prerx_flash rwip_driver.o + 0x0100e334 0x0100e334 0x00000090 Code RO 2358 i.llhwc_setmode_reg_config rwip_driver.o + 0x0100e3c4 0x0100e3c4 0x000001a0 Code RO 4228 i.main main.o + 0x0100e564 0x0100e564 0x0000005c Code RO 3456 i.ns_EXTI4_12_IRQHandler ns_ble.o + 0x0100e5c0 0x0100e5c0 0x00000028 Code RO 3457 i.ns_HardFault_Handler ns_ble.o + 0x0100e5e8 0x0100e5e8 0x00000020 Code RO 3459 i.ns_ble_add_prf_func_register ns_ble.o + 0x0100e608 0x0100e608 0x0000002c Code RO 3460 i.ns_ble_add_svc ns_ble.o + 0x0100e634 0x0100e634 0x000000dc Code RO 3462 i.ns_ble_adv_fsm_next ns_ble.o + 0x0100e710 0x0100e710 0x00000048 Code RO 3463 i.ns_ble_adv_init ns_ble.o + 0x0100e758 0x0100e758 0x00000050 Code RO 3464 i.ns_ble_adv_start ns_ble.o + 0x0100e7a8 0x0100e7a8 0x0000004c Code RO 3465 i.ns_ble_adv_stop ns_ble.o + 0x0100e7f4 0x0100e7f4 0x0000003c Code RO 3468 i.ns_ble_delete_init ns_ble.o + 0x0100e830 0x0100e830 0x00000038 Code RO 3469 i.ns_ble_delete_scan ns_ble.o + 0x0100e868 0x0100e868 0x0000002c Code RO 3470 i.ns_ble_disconnect ns_ble.o + 0x0100e894 0x0100e894 0x0000006c Code RO 3473 i.ns_ble_gap_init ns_ble.o + 0x0100e900 0x0100e900 0x00000024 Code RO 3476 i.ns_ble_get_connection_num ns_ble.o + 0x0100e924 0x0100e924 0x00000050 Code RO 3479 i.ns_ble_list_set_ral ns_ble.o + 0x0100e974 0x0100e974 0x00000084 Code RO 3481 i.ns_ble_lsc_config ns_ble.o + 0x0100e9f8 0x0100e9f8 0x00000034 Code RO 3483 i.ns_ble_mtu_set ns_ble.o + 0x0100ea2c 0x0100ea2c 0x00000028 Code RO 3485 i.ns_ble_prf_task_register ns_ble.o + 0x0100ea54 0x0100ea54 0x00000048 Code RO 3490 i.ns_ble_scan_data_find ns_ble.o + 0x0100ea9c 0x0100ea9c 0x00000278 Code RO 3497 i.ns_ble_stack_init ns_ble.o + 0x0100ed14 0x0100ed14 0x00000124 Code RO 3498 i.ns_ble_start_init ns_ble.o + 0x0100ee38 0x0100ee38 0x000000cc Code RO 3499 i.ns_ble_start_scan ns_ble.o + 0x0100ef04 0x0100ef04 0x00000038 Code RO 3500 i.ns_ble_stop_init ns_ble.o + 0x0100ef3c 0x0100ef3c 0x0000003c Code RO 3501 i.ns_ble_stop_scan ns_ble.o + 0x0100ef78 0x0100ef78 0x00000078 Code RO 3502 i.ns_ble_update_param ns_ble.o + 0x0100eff0 0x0100eff0 0x0000002c Code RO 3216 i.ns_bond_db_get_size ns_sec.o + 0x0100f01c 0x0100f01c 0x0000001c Code RO 3217 i.ns_bond_db_load ns_sec.o + 0x0100f038 0x0100f038 0x00000030 Code RO 3218 i.ns_bond_last_bonded_addr ns_sec.o + 0x0100f068 0x0100f068 0x00000030 Code RO 3219 i.ns_bond_last_bonded_peer_id ns_sec.o + 0x0100f098 0x0100f098 0x00000064 Code RO 3220 i.ns_bond_last_bonded_ral_info ns_sec.o + 0x0100f0fc 0x0100f0fc 0x00000060 Code RO 3221 i.ns_bond_resolv_addr_start ns_sec.o + 0x0100f15c 0x0100f15c 0x0000007c Code RO 3222 i.ns_bond_search_addr_irk ns_sec.o + 0x0100f1d8 0x0100f1d8 0x000000d4 Code RO 3505 i.ns_peripheral_config ns_ble.o + 0x0100f2ac 0x0100f2ac 0x00000160 Code RO 3224 i.ns_sec_bond_store_evt_handler ns_sec.o + 0x0100f40c 0x0100f40c 0x00000010 Code RO 3225 i.ns_sec_get_bond_status ns_sec.o + 0x0100f41c 0x0100f41c 0x0000000c Code RO 3226 i.ns_sec_get_iocap ns_sec.o + 0x0100f428 0x0100f428 0x00000068 Code RO 3227 i.ns_sec_init ns_sec.o + 0x0100f490 0x0100f490 0x00000018 Code RO 3073 i.ns_sleep_lock_acquire ns_sleep.o + 0x0100f4a8 0x0100f4a8 0x00000014 Code RO 3074 i.ns_sleep_lock_release ns_sleep.o + 0x0100f4bc 0x0100f4bc 0x000000c8 Code RO 3149 i.ns_timer_api_process_handler ns_timer.o + 0x0100f584 0x0100f584 0x00000158 Code RO 4687 i.ota_on_data app_ota.o + 0x0100f6dc 0x0100f6dc 0x000001ac Code RO 4688 i.ota_on_end app_ota.o + 0x0100f888 0x0100f888 0x00000028 Code RO 4689 i.ota_respond app_ota.o + 0x0100f8b0 0x0100f8b0 0x0000005c Code RO 4864 i.params_save app_params.o + 0x0100f90c 0x0100f90c 0x00000044 Code RO 3506 i.patchx_enable ns_ble.o + 0x0100f950 0x0100f950 0x00000088 Code RO 2537 i.prf_add_profile prf.o + 0x0100f9d8 0x0100f9d8 0x00000010 Code RO 2540 i.prf_dst_task_get prf.o + 0x0100f9e8 0x0100f9e8 0x00000030 Code RO 2541 i.prf_env_get prf.o + 0x0100fa18 0x0100fa18 0x00000038 Code RO 2542 i.prf_get_id_from_task prf.o + 0x0100fa50 0x0100fa50 0x00000028 Code RO 2543 i.prf_get_itf_func_register prf.o + 0x0100fa78 0x0100fa78 0x00000038 Code RO 2544 i.prf_get_task_from_id prf.o + 0x0100fab0 0x0100fab0 0x000000b4 Code RO 2545 i.prf_init prf.o + 0x0100fb64 0x0100fb64 0x00000030 Code RO 2546 i.prf_itf_get prf.o + 0x0100fb94 0x0100fb94 0x00000038 Code RO 4614 i.proto_cli_out app_ble_proto.o + 0x0100fbcc 0x0100fbcc 0x00000080 Code RO 4615 i.proto_dump app_ble_proto.o + 0x0100fc4c 0x0100fc4c 0x00000058 Code RO 4943 i.prvAddCurrentTaskToDelayedList tasks.o + 0x0100fca4 0x0100fca4 0x00000070 Code RO 5275 i.prvCopyDataToQueue queue.o + 0x0100fd14 0x0100fd14 0x00000054 Code RO 4944 i.prvIdleTask tasks.o + 0x0100fd68 0x0100fd68 0x00000054 Code RO 5505 i.prvInsertBlockIntoFreeList heap_4.o + 0x0100fdbc 0x0100fdbc 0x000000cc Code RO 4945 i.prvListTasksWithinSingleList tasks.o + 0x0100fe88 0x0100fe88 0x00000014 Code RO 5552 i.prvTaskExitError port.o + 0x0100fe9c 0x0100fe9c 0x00000074 Code RO 5276 i.prvUnlockQueue queue.o + 0x0100ff10 0x0100ff10 0x000000f4 Code RO 5506 i.pvPortMalloc heap_4.o + 0x01010004 0x01010004 0x00000018 Code RO 4946 i.pvTaskIncrementMutexHeldCount tasks.o + 0x0101001c 0x0101001c 0x00000024 Code RO 5553 i.pxPortInitialiseStack port.o + 0x01010040 0x01010040 0x0000003a Code RO 2907 i.rdtss_att_get_value rdtss_task.o + 0x0101007a 0x0101007a 0x00000002 PAD + 0x0101007c 0x0101007c 0x00000040 Code RO 2908 i.rdtss_att_info_rsp_handler rdtss_task.o + 0x010100bc 0x010100bc 0x00000068 Code RO 2909 i.rdtss_att_set_value rdtss_task.o + 0x01010124 0x01010124 0x0000004c Code RO 2852 i.rdtss_cleanup rdtss.o + 0x01010170 0x01010170 0x0000004c Code RO 2853 i.rdtss_create rdtss.o + 0x010101bc 0x010101bc 0x00000042 Code RO 2854 i.rdtss_destroy rdtss.o + 0x010101fe 0x010101fe 0x0000001c Code RO 3028 i.rdtss_get_att_handle rdts_common.o + 0x0101021a 0x0101021a 0x00000028 Code RO 3029 i.rdtss_get_att_idx rdts_common.o + 0x01010242 0x01010242 0x00000098 Code RO 2855 i.rdtss_init rdtss.o + 0x010102da 0x010102da 0x00000002 PAD + 0x010102dc 0x010102dc 0x000000a4 Code RO 2910 i.rdtss_init_ccc_values rdtss_task.o + 0x01010380 0x01010380 0x00000008 Code RO 2856 i.rdtss_prf_itf_get rdtss.o + 0x01010388 0x01010388 0x00000054 Code RO 4062 i.rdtss_send_notify app_rdtss.o + 0x010103dc 0x010103dc 0x00000034 Code RO 2911 i.rdtss_set_ccc_value rdtss_task.o + 0x01010410 0x01010410 0x00000020 Code RO 2912 i.rdtss_task_init rdtss_task.o + 0x01010430 0x01010430 0x000000b0 Code RO 2913 i.rdtss_val_ind_req_handler rdtss_task.o + 0x010104e0 0x010104e0 0x0000000a Code RO 4063 i.rdtss_val_ntf_cfm_handler app_rdtss.o + 0x010104ea 0x010104ea 0x000000a6 Code RO 2914 i.rdtss_val_ntf_req_handler rdtss_task.o + 0x01010590 0x01010590 0x00000020 Code RO 2915 i.rdtss_val_set_req_handler rdtss_task.o + 0x010105b0 0x010105b0 0x00000118 Code RO 4064 i.rdtss_val_write_ind_handler app_rdtss.o + 0x010106c8 0x010106c8 0x0000007c Code RO 4065 i.rdtss_value_req_ind_handler app_rdtss.o + 0x01010744 0x01010744 0x00000080 Code RO 2916 i.rdtss_value_req_rsp_handler rdtss_task.o + 0x010107c4 0x010107c4 0x00000118 Code RO 2105 i.rwip_init rwip.o + 0x010108dc 0x010108dc 0x000000f8 Code RO 2365 i.rwip_slp_isr rwip_driver.o + 0x010109d4 0x010109d4 0x00000002 Code RO 3154 i.timer_canceled_handler ns_timer.o + 0x010109d6 0x010109d6 0x00000002 Code RO 3155 i.timer_modified_handler ns_timer.o + 0x010109d8 0x010109d8 0x00000026 Code RO 5463 i.uxListRemove list.o + 0x010109fe 0x010109fe 0x00000002 PAD + 0x01010a00 0x01010a00 0x0000000c Code RO 4948 i.uxTaskGetNumberOfTasks tasks.o + 0x01010a0c 0x01010a0c 0x00000098 Code RO 4949 i.uxTaskGetSystemState tasks.o + 0x01010aa4 0x01010aa4 0x00000016 Code RO 5464 i.vListInitialise list.o + 0x01010aba 0x01010aba 0x00000006 Code RO 5465 i.vListInitialiseItem list.o + 0x01010ac0 0x01010ac0 0x00000032 Code RO 5466 i.vListInsert list.o + 0x01010af2 0x01010af2 0x00000018 Code RO 5467 i.vListInsertEnd list.o + 0x01010b0a 0x01010b0a 0x00000002 PAD + 0x01010b0c 0x01010b0c 0x00000018 Code RO 5555 i.vPortEnterCritical port.o + 0x01010b24 0x01010b24 0x0000001c Code RO 5556 i.vPortExitCritical port.o + 0x01010b40 0x01010b40 0x00000044 Code RO 5507 i.vPortFree heap_4.o + 0x01010b84 0x01010b84 0x00000018 Code RO 5557 i.vPortYield port.o + 0x01010b9c 0x01010b9c 0x00000030 Code RO 4954 i.vTaskDelay tasks.o + 0x01010bcc 0x01010bcc 0x00000010 Code RO 4959 i.vTaskInternalSetTimeOutState tasks.o + 0x01010bdc 0x01010bdc 0x000000d0 Code RO 4960 i.vTaskList tasks.o + 0x01010cac 0x01010cac 0x0000000c Code RO 4961 i.vTaskMissedYield tasks.o + 0x01010cb8 0x01010cb8 0x00000024 Code RO 4963 i.vTaskPlaceOnEventList tasks.o + 0x01010cdc 0x01010cdc 0x00000074 Code RO 4965 i.vTaskPriorityDisinheritAfterTimeout tasks.o + 0x01010d50 0x01010d50 0x00000050 Code RO 4971 i.vTaskStartScheduler tasks.o + 0x01010da0 0x01010da0 0x00000010 Code RO 4973 i.vTaskSuspendAll tasks.o + 0x01010db0 0x01010db0 0x00000064 Code RO 4974 i.vTaskSwitchContext tasks.o + 0x01010e14 0x01010e14 0x0000000c Code RO 5509 i.xPortGetFreeHeapSize heap_4.o + 0x01010e20 0x01010e20 0x0000000c Code RO 5510 i.xPortGetMinimumEverFreeHeapSize heap_4.o + 0x01010e2c 0x01010e2c 0x00000050 Code RO 5558 i.xPortStartScheduler port.o + 0x01010e7c 0x01010e7c 0x00000024 Code RO 5287 i.xQueueCreateMutex queue.o + 0x01010ea0 0x01010ea0 0x00000044 Code RO 5288 i.xQueueGenericCreate queue.o + 0x01010ee4 0x01010ee4 0x0000006e Code RO 5289 i.xQueueGenericReset queue.o + 0x01010f52 0x01010f52 0x0000018e Code RO 5290 i.xQueueGenericSend queue.o + 0x010110e0 0x010110e0 0x0000008e Code RO 5291 i.xQueueGenericSendFromISR queue.o + 0x0101116e 0x0101116e 0x00000142 Code RO 5300 i.xQueueReceive queue.o + 0x010112b0 0x010112b0 0x00000172 Code RO 5302 i.xQueueSemaphoreTake queue.o + 0x01011422 0x01011422 0x00000002 PAD + 0x01011424 0x01011424 0x00000064 Code RO 4975 i.xTaskCheckForTimeOut tasks.o + 0x01011488 0x01011488 0x00000178 Code RO 4976 i.xTaskCreate tasks.o + 0x01011600 0x01011600 0x00000020 Code RO 4980 i.xTaskGetSchedulerState tasks.o + 0x01011620 0x01011620 0x0000000c Code RO 4981 i.xTaskGetTickCount tasks.o + 0x0101162c 0x0101162c 0x000000d4 Code RO 4983 i.xTaskIncrementTick tasks.o + 0x01011700 0x01011700 0x00000068 Code RO 4986 i.xTaskPriorityDisinherit tasks.o + 0x01011768 0x01011768 0x00000078 Code RO 4987 i.xTaskPriorityInherit tasks.o + 0x010117e0 0x010117e0 0x00000064 Code RO 4988 i.xTaskRemoveFromEventList tasks.o + 0x01011844 0x01011844 0x000000c8 Code RO 4989 i.xTaskResumeAll tasks.o + 0x0101190c 0x0101190c 0x000001d8 Data RO 20 .constdata system_n32wb03x.o + 0x01011ae4 0x01011ae4 0x0000000c Data RO 782 .constdata n32wb03x_rcc.o + 0x01011af0 0x01011af0 0x00000324 Data RO 1952 .constdata n32wb03x_qflash.o + 0x01011e14 0x01011e14 0x0000001e Data RO 2366 .constdata rwip_driver.o + 0x01011e32 0x01011e32 0x00000002 PAD + 0x01011e34 0x01011e34 0x000000a8 Data RO 2672 .constdata diss.o + 0x01011edc 0x01011edc 0x00000018 Data RO 2766 .constdata diss_task.o + 0x01011ef4 0x01011ef4 0x00000010 Data RO 2857 .constdata rdtss.o + 0x01011f04 0x01011f04 0x00000048 Data RO 2917 .constdata rdtss_task.o + 0x01011f4c 0x01011f4c 0x00000028 Data RO 3233 .constdata ns_sec.o + 0x01011f74 0x01011f74 0x00000008 Data RO 3234 .constdata ns_sec.o + 0x01011f7c 0x01011f7c 0x00000334 Data RO 3508 .constdata ns_ble.o + 0x010122b0 0x010122b0 0x00000098 Data RO 3875 .constdata ns_ble_task.o + 0x01012348 0x01012348 0x000000c8 Data RO 3876 .constdata ns_ble_task.o + 0x01012410 0x01012410 0x0000000c Data RO 3877 .constdata ns_ble_task.o + 0x0101241c 0x0101241c 0x00000008 Data RO 4008 .constdata app_dis.o + 0x01012424 0x01012424 0x00000008 Data RO 4009 .constdata app_dis.o + 0x0101242c 0x0101242c 0x0000010a Data RO 4066 .constdata app_rdtss.o + 0x01012536 0x01012536 0x00000002 PAD + 0x01012538 0x01012538 0x00000018 Data RO 4067 .constdata app_rdtss.o + 0x01012550 0x01012550 0x000000a8 Data RO 4397 .constdata cli_core.o + 0x010125f8 0x010125f8 0x00000006 Data RO 4745 .constdata app_info.o + 0x010125fe 0x010125fe 0x00000081 Data RO 5958 .constdata mc_p.l(ctype_o.o) + 0x0101267f 0x0101267f 0x00000001 PAD + 0x01012680 0x01012680 0x00000004 Data RO 5959 .constdata mc_p.l(ctype_o.o) + 0x01012684 0x01012684 0x00000308 Data RO 4398 .conststring cli_core.o + 0x0101298c 0x0101298c 0x00000049 Data RO 4915 .conststring app_bootset.o + 0x010129d5 0x010129d5 0x00000003 PAD + 0x010129d8 0x010129d8 0x00000020 Data RO 6007 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x01012630, Size: 0x000073a8, Max: 0x0000c000, ABSOLUTE, COMPRESSED[0x00000608]) + Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x010129f8, Size: 0x000075a8, Max: 0x0000c000, ABSOLUTE, COMPRESSED[0x00000608]) Exec Addr Load Addr Size Type Attr Idx E Section Name Object @@ -4567,38 +4618,37 @@ 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 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 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 + 0x20004738 COMPRESSED 0x00000008 Data RW 4317 .data bsp_usart.o + 0x20004740 COMPRESSED 0x00000004 Data RW 4399 .data cli_core.o + 0x20004744 COMPRESSED 0x00000002 Data RW 4507 .data app_cli.o + 0x20004746 COMPRESSED 0x00000006 Data RW 4548 .data ble_up.o + 0x2000474c COMPRESSED 0x0000000c Data RW 4617 .data app_ble_proto.o + 0x20004758 COMPRESSED 0x0000002c Data RW 4690 .data app_ota.o + 0x20004784 COMPRESSED 0x00000004 Data RW 4746 .data app_info.o + 0x20004788 COMPRESSED 0x00000002 Data RW 4866 .data app_params.o + 0x2000478a COMPRESSED 0x00000001 Data RW 4916 .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) + 0x2000478c COMPRESSED 0x0000003c Data RW 4992 .data tasks.o + 0x200047c8 COMPRESSED 0x00000018 Data RW 5512 .data heap_4.o + 0x200047e0 COMPRESSED 0x00000004 Data RW 5559 .data port.o + 0x200047e4 COMPRESSED 0x00000004 Data RW 5624 .data mc_p.l(rand.o) + 0x200047e8 COMPRESSED 0x00000004 Data RW 5988 .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 + 0x20004ec0 - 0x000001e0 Zero RW 4396 .bss cli_core.o + 0x200050a0 - 0x00000240 Zero RW 4506 .bss app_cli.o + 0x200052e0 - 0x00000200 Zero RW 4547 .bss ble_up.o + 0x200054e0 - 0x0000077b Zero RW 4616 .bss app_ble_proto.o + 0x20005c5b - 0x00000028 Zero RW 4744 .bss app_info.o + 0x20005c83 COMPRESSED 0x00000001 PAD + 0x20005c84 - 0x00000034 Zero RW 4865 .bss app_params.o + 0x20005cb8 - 0x000000f0 Zero RW 4991 .bss tasks.o + 0x20005da8 - 0x00005000 Zero RW 5511 .bss heap_4.o + 0x2000ada8 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o ============================================================================== @@ -4609,19 +4659,19 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name 696 188 0 0 0 12840 app_ble.o - 1152 246 0 10 1403 9232 app_ble_proto.o + 1204 254 0 12 1915 9568 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 + 824 432 0 2 52 4513 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 610 4 480 8855 cli_core.o + 752 90 0 8 0 9943 bsp_usart.o + 2036 1122 944 4 480 16811 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 @@ -4655,9 +4705,9 @@ Image component sizes 2548 254 0 60 240 27724 tasks.o ---------------------------------------------------------------------- - 33184 5942 4058 2020 27580 849617 Object Totals + 33820 6264 4390 2020 28092 859403 Object Totals 216 72 32 0 0 0 (incl. Generated) - 34 0 9 23 1 0 (incl. Padding) + 34 0 7 21 1 0 (incl. Padding) ---------------------------------------------------------------------- @@ -4732,15 +4782,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 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 + 38988 6444 4524 2028 28092 847095 Grand Totals + 38988 6444 4524 1544 28092 847095 ELF Image Totals (compressed) + 38988 6444 4524 1544 0 0 ROM Totals ============================================================================== - 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) + Total RO Size (Code + RO Data) 43512 ( 42.49kB) + Total RW Size (RW Data + ZI Data) 30120 ( 29.41kB) + Total ROM Size (Code + RO Data + RW Data) 45056 ( 44.00kB) ============================================================================== 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 fc8dc8b905765e7d10f0701286694ddb4fef4616..698c59c4a9525d17fdfc19c8364a1d0854d5e765 100644 GIT binary patch delta 11226 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 RF#ZZm`_`VJ|GAi`{NE%S51;@5 diff --git a/mcm-ddc-ble/inc/app_ble_proto.h b/mcm-ddc-ble/inc/app_ble_proto.h index 86ae56d..854d860 100644 --- a/mcm-ddc-ble/inc/app_ble_proto.h +++ b/mcm-ddc-ble/inc/app_ble_proto.h @@ -82,8 +82,9 @@ uint8_t app_ble_proto_log_get(void); void app_ble_proto_cli_exec(const uint8_t* cmd, uint16_t len); /** - * @brief Get the output of the last app_ble_proto_cli_exec() call. - * Served as the ATT read value of the CLI read/write characteristic. + * @brief Serve the next chunk of the last app_ble_proto_cli_exec() output + * (one call per ATT read of the CLI read/write characteristic). + * Chunks are <= att_mtu-2; a 0-length return marks end of response. */ const uint8_t* app_ble_proto_cli_rsp(uint16_t* out_len); diff --git a/mcm-ddc-ble/inc/app_params.h b/mcm-ddc-ble/inc/app_params.h index e9da0ff..63806ae 100644 --- a/mcm-ddc-ble/inc/app_params.h +++ b/mcm-ddc-ble/inc/app_params.h @@ -47,8 +47,14 @@ 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[]); +/** Restore factory defaults and program them to flash; 0 on success. */ +uint8_t app_params_restore_defaults(void); + +/** "appget": dump all parameters + record state (registered in cli_core.c). */ +void AppParams_CmdAppget(int argc, char* argv[]); + +/** "appset ": modify one parameter and save it to flash. */ +void AppParams_CmdAppset(int argc, char* argv[]); #ifdef __cplusplus } diff --git a/mcm-ddc-ble/inc/app_version.h b/mcm-ddc-ble/inc/app_version.h index 92776fb..23edfe5 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.09" +#define APP_FW_VERSION "V1.00.13" /* Numeric form used by the BLE info query / OTA records: 0x00MMmmpp */ -#define APP_FW_VERSION_NUM 0x00010009u +#define APP_FW_VERSION_NUM 0x0001000Du #endif /* __APP_VERSION_H__ */ diff --git a/mcm-ddc-ble/inc/bsp_usart.h b/mcm-ddc-ble/inc/bsp_usart.h index d4e9cd0..7f7d58e 100644 --- a/mcm-ddc-ble/inc/bsp_usart.h +++ b/mcm-ddc-ble/inc/bsp_usart.h @@ -33,6 +33,10 @@ extern "C" { void bsp_usart_init(void); +/* Re-apply the baud rate at runtime (keeps RX interrupt/DMA setup). + * Used by the "uartrst" CLI command after a baud parameter change. */ +void bsp_usart_set_baud(uint32_t baud); + /* TX: send a buffer through DMA (polled completion) */ void bsp_usart_write_dma(const uint8_t* data, uint16_t len); diff --git a/mcm-ddc-ble/src/app_ble_proto.c b/mcm-ddc-ble/src/app_ble_proto.c index 55607e2..82e7bb8 100644 --- a/mcm-ddc-ble/src/app_ble_proto.c +++ b/mcm-ddc-ble/src/app_ble_proto.c @@ -18,6 +18,7 @@ #include "ble_up.h" #include "app_ota.h" #include "app_info.h" +#include "ns_ble.h" /* app_env.max_mtu (negotiated ATT MTU) */ #include #include @@ -169,14 +170,20 @@ static void proto_cli_out(const char* str) /* ------------------------------------------------------------------ */ /* CLI over the read/write characteristic: the phone writes a raw */ -/* command line (write-with-response) and reads the output text back. */ +/* command line (write-with-response) and reads the output text back */ +/* in sequential chunks. Each ATT read of the characteristic returns */ +/* the next slice (<= att_mtu-2, so the client never issues a Read */ +/* Blob - the blob offset is not forwarded to the app and the ROM */ +/* GATT would slice the wrong window). A 0-length read marks the end */ +/* of the response; writing a new command rewinds the read offset. */ /* ------------------------------------------------------------------ */ #define CLI_RW_CMD_MAX 63 /* same line limit as the frame CLI */ -#define CLI_RW_RSP_MAX 512 /* ATT value length budget (0x200) */ +#define CLI_RW_RSP_MAX 1024 /* total captured output per command */ static uint8_t s_cliRsp[CLI_RW_RSP_MAX]; static uint16_t s_cliRspLen; +static uint16_t s_cliRspOff; /* sequential read offset */ /* cli_out_fn capturing the command output into s_cliRsp */ static void cli_rsp_out(const char* str) @@ -193,6 +200,7 @@ void app_ble_proto_cli_exec(const uint8_t* cmd, uint16_t len) int status = 1; /* default: rejected */ s_cliRspLen = 0; + s_cliRspOff = 0; if (len > 0 && len <= CLI_RW_CMD_MAX) { memcpy(s_line, cmd, len); @@ -222,10 +230,26 @@ void app_ble_proto_cli_exec(const uint8_t* cmd, uint16_t len) } } +/** + * @brief Serve the next chunk of the last command's output. Called once per + * ATT read of the CLI characteristic; a 0-length return marks EOF. + */ const uint8_t* app_ble_proto_cli_rsp(uint16_t* out_len) { - *out_len = s_cliRspLen; - return s_cliRsp; + /* Keep the slice below att_mtu-1 so the client sees a short read and + * never starts a Read Blob sequence (see the block comment above) */ + uint16_t mtu = app_env.max_mtu; + uint16_t chunk = (mtu >= 24u) ? (uint16_t)(mtu - 2u) : 20u; + uint16_t remain = (uint16_t)(s_cliRspLen - s_cliRspOff); + const uint8_t* p = s_cliRsp + s_cliRspOff; + + if (remain > chunk) + { + remain = chunk; + } + s_cliRspOff = (uint16_t)(s_cliRspOff + remain); + *out_len = remain; + return p; } /* ------------------------------------------------------------------ */ @@ -366,6 +390,7 @@ void app_ble_proto_on_disconnect(void) { s_rxState = RX_WAIT_SOF; /* drop a half-received frame */ s_rxHave = 0; + s_cliRspOff = 0; /* rewind the chunked CLI read */ ble_up_reset(); app_ota_abort(); /* abort any on-going OTA session */ } diff --git a/mcm-ddc-ble/src/app_params.c b/mcm-ddc-ble/src/app_params.c index 971afa2..abe3174 100644 --- a/mcm-ddc-ble/src/app_params.c +++ b/mcm-ddc-ble/src/app_params.c @@ -116,6 +116,17 @@ void app_params_init(void) } } +/** + * @brief Restore factory defaults: load defaults into RAM and program them + * to flash. + * @return 0 on success, 1 on flash failure. + */ +uint8_t app_params_restore_defaults(void) +{ + params_load_defaults(); + return params_save(); +} + const caiic_params_t* app_params_get(void) { return &s_params; @@ -127,84 +138,70 @@ uint8_t app_params_is_valid(void) } /* ------------------------------------------------------------------ */ -/* CLI: param */ +/* CLI: appget / appset */ /* ------------------------------------------------------------------ */ -static void param_print_all(void) +void AppParams_CmdAppget(int argc, char* argv[]) { + (void)argc; + (void)argv; + 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); + cli_printf(" led = %u (led1 blink half period, ms)\r\n", + (unsigned int)s_params.led1_blink_ms); + cli_printf(" pwm = %lu (pwm duty, %%)\r\n", + (unsigned long)s_params.pwm_duty_pct); } -void AppParams_CmdParam(int argc, char* argv[]) +void AppParams_CmdAppset(int argc, char* argv[]) { uint32_t v; - if (argc < 2) + if (argc < 3) { - param_print_all(); + cli_write("usage: appset \r\n"); + cli_write(" led = led1 blink half period 50..10000 ms\r\n"); + cli_write(" pwm = pwm duty 0..100 %\r\n"); + return; + } + if (parse_u32(argv[2], &v) != 0) + { + cli_write("appset: bad value\r\n"); 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 (strcmp(argv[1], "led") == 0) { if (v < PARAM_LED1_BLINK_MS_MIN || v > PARAM_LED1_BLINK_MS_MAX) { - cli_printf("led1_blink_ms range %u..%u\r\n", + cli_printf("led 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) + else if (strcmp(argv[1], "pwm") == 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); + cli_printf("pwm 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"); + cli_write("unknown param (led, pwm)\r\n"); return; } if (params_save() == 0) { - cli_printf("%s set ok\r\n", argv[2]); + cli_printf("%s = %lu, saved\r\n", argv[1], (unsigned long)v); } else { - cli_write("param set: flash fail\r\n"); + cli_write("appset: flash fail\r\n"); } } diff --git a/mcm-ddc-ble/src/app_profile/app_rdtss.c b/mcm-ddc-ble/src/app_profile/app_rdtss.c index ae1b242..3e31ed5 100644 --- a/mcm-ddc-ble/src/app_profile/app_rdtss.c +++ b/mcm-ddc-ble/src/app_profile/app_rdtss.c @@ -105,7 +105,7 @@ const struct attm_desc_128 app_rdts_att_db[RDTSS_IDX_NB] = /* Characteristic Declaration */ [7] = {{0x03,0x28}, PERM(RD, ENABLE) | PERM(WRITE_REQ, ENABLE), 0, 0 }, /* CLI Characteristic Value: raw command line in (write-with-response), - * last command output text out (read; long read handled by the stack) */ + * command output text out (sequential chunked reads, 0-length = EOF) */ [8] = {ATT_CHAR_AM_SPEED_CLI_128, PERM(RD, ENABLE) | PERM(WRITE_REQ, ENABLE), PERM(RI, ENABLE)| PERM_VAL(UUID_LEN, 0x02), 0x200 }, /* Characteristic Declaration */ diff --git a/mcm-ddc-ble/src/bsp_usart.c b/mcm-ddc-ble/src/bsp_usart.c index eb9c64b..781a698 100644 --- a/mcm-ddc-ble/src/bsp_usart.c +++ b/mcm-ddc-ble/src/bsp_usart.c @@ -71,6 +71,41 @@ void bsp_usart_init(void) USART_Enable(BSP_USARTx, ENABLE); } +/** + * @brief Re-apply the baud rate at runtime (keeps RX interrupt/DMA setup). + * Waits for TX to drain, re-initializes the USART and flushes the + * RX queue (stale bytes may have been sampled at the old baud rate). + * Used by the "uartrst" CLI command. + */ +void bsp_usart_set_baud(uint32_t baud) +{ + USART_InitType USART_InitStructure; + + /* Let any in-flight TX byte leave the shift register */ + while (USART_GetFlagStatus(BSP_USARTx, USART_FLAG_TXC) == RESET) + { + } + + USART_Enable(BSP_USARTx, DISABLE); + + USART_InitStructure.BaudRate = baud; + USART_InitStructure.WordLength = USART_WL_8B; + USART_InitStructure.StopBits = USART_STPB_1; + USART_InitStructure.Parity = USART_PE_NO; + USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE; + USART_InitStructure.Mode = USART_MODE_RX | USART_MODE_TX; + USART_Init(BSP_USARTx, &USART_InitStructure); + + /* Drop bytes received at the old baud rate */ + if (s_rxQueue != NULL && xTaskGetSchedulerState() == taskSCHEDULER_RUNNING) + { + xQueueReset(s_rxQueue); + } + + USART_ConfigInt(BSP_USARTx, USART_INT_RXDNE, ENABLE); + USART_Enable(BSP_USARTx, ENABLE); +} + /** * @brief Send a buffer over USART1 TX using DMA, polled completion. */ diff --git a/mcm-ddc-ble/src/cli_core.c b/mcm-ddc-ble/src/cli_core.c index ce07e09..bd0160a 100644 --- a/mcm-ddc-ble/src/cli_core.c +++ b/mcm-ddc-ble/src/cli_core.c @@ -25,6 +25,7 @@ #define CLI_TX_BUF_SIZE 96 #define CLI_MAX_ARGS 8 +#define CLI_RESET_DELAY_MS 200u /* let the reply drain before NVIC_SystemReset */ typedef void (*CliCmdHandler_t)(int argc, char* argv[]); @@ -239,29 +240,112 @@ static void CmdBleLog(int argc, char* argv[]) cli_printf("ble log: %s\r\n", app_ble_proto_log_get() ? "on" : "off"); } +/** + * @brief "reset": system reset (reboot into the active bank). + */ +static void CmdReset(int argc, char* argv[]) +{ + (void)argc; + (void)argv; + + cli_write("resetting...\r\n"); + vTaskDelay(pdMS_TO_TICKS(CLI_RESET_DELAY_MS)); + NVIC_SystemReset(); +} + +/** + * @brief "factory": restore the APP_DATA params to factory defaults, + * save them to flash, then reboot. The bootsetting record is not + * touched (it selects the boot bank, it is not user configuration). + */ +static void CmdFactory(int argc, char* argv[]) +{ + (void)argc; + (void)argv; + + if (app_params_restore_defaults() == 0) + { + cli_write("factory defaults restored, resetting...\r\n"); + } + else + { + cli_write("factory: flash write failed, resetting anyway...\r\n"); + } + vTaskDelay(pdMS_TO_TICKS(CLI_RESET_DELAY_MS)); + NVIC_SystemReset(); +} + +/** + * @brief "uartrst": re-initialize USART1 at the default baud rate and + * flush the RX queue (recovery from a wedged/misconfigured UART). + */ +static void CmdUartRst(int argc, char* argv[]) +{ + (void)argc; + (void)argv; + + bsp_usart_set_baud(BSP_USART_BAUDRATE); + cli_printf("usart reset: %lu 8N1, rx queue flushed\r\n", + (unsigned long)BSP_USART_BAUDRATE); +} + +/** + * @brief "uartinfo": show the USART1 configuration. + */ +static void CmdUartInfo(int argc, char* argv[]) +{ + (void)argc; + (void)argv; + + cli_write("usart1: TX=PB6 RX=PB7 (AF4)\r\n"); + cli_printf("baud: %lu, 8 data bits, no parity, 1 stop bit\r\n", + (unsigned long)BSP_USART_BAUDRATE); + cli_write("flow control: none; tx: DMA CH1 (polled); rx: RXDNE irq queue\r\n"); +} + /* Command table; add new commands here */ static const CliCmd_t s_cmds[] = { - {"help", "list all commands", CmdHelp}, + {"help", "help [cmd]: list commands / show one command's help", CmdHelp}, {"version", "show firmware version", CmdVersion}, {"sysinfo", "show FreeRTOS runtime info (uptime/tasks/heap/task list)", CmdSysInfo}, {"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}, + {"appget", "appget: show app params (led/pwm)", AppParams_CmdAppget}, + {"appset", "appset : set app param and save", AppParams_CmdAppset}, {"bsdump", "bsdump: show bootsetting record + crc check", AppBootset_CmdBsdump}, {"bsset", "bsset : write bootsetting field (careful!)", AppBootset_CmdBsset}, + {"reset", "reset: system reset (reboot)", CmdReset}, + {"factory", "factory: restore params to defaults and reboot", CmdFactory}, + {"uartrst", "uartrst: re-init USART1 (115200 8N1), flush rx queue", CmdUartRst}, + {"uartinfo", "uartinfo: show USART1 pins/baud/format", CmdUartInfo}, }; #define CLI_CMD_COUNT (sizeof(s_cmds) / sizeof(s_cmds[0])) /** - * @brief "help": list all registered commands. + * @brief "help [cmd]": without an argument, list all commands with their + * one-line help (the full table exceeds 512B and relies on the + * chunked BLE read of the CLI characteristic); with an argument, + * show that command's detailed help only. */ static void CmdHelp(int argc, char* argv[]) { uint32_t i; - (void)argc; - (void)argv; + + if (argc >= 2) + { + for (i = 0; i < CLI_CMD_COUNT; i++) + { + if (strcmp(argv[1], s_cmds[i].name) == 0) + { + cli_printf(" %-8s %s\r\n", s_cmds[i].name, s_cmds[i].help); + return; + } + } + cli_printf("unknown command: %s (try 'help')\r\n", argv[1]); + return; + } cli_write("commands:\r\n"); for (i = 0; i < CLI_CMD_COUNT; i++) diff --git a/mcm-ddc-ble/src/main.c b/mcm-ddc-ble/src/main.c index d00cf80..656009d 100644 --- a/mcm-ddc-ble/src/main.c +++ b/mcm-ddc-ble/src/main.c @@ -124,7 +124,7 @@ static void ble_schedule_task(void *pvParameters) /** * @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 + * "appset led <50..10000>"). LED2 (PA6) stays owned by * app_ble.c as the connection state LED. */ static void led_task(void *pvParameters) diff --git a/tools/ble_cli.bat b/tools/ble_cli.bat index b59ee45..b157c81 100644 --- a/tools/ble_cli.bat +++ b/tools/ble_cli.bat @@ -3,12 +3,12 @@ rem ============================================================ rem ble_cli.bat - BLE CLI test client for CAIIC-MCM devices rem rem ble_cli.bat interactive mode (rw characteristic ...0003) -rem ble_cli.bat help one-shot single-word command over rw char -rem ble_cli.bat version sysinfo +rem ble_cli.bat help one-shot command over rw char +rem ble_cli.bat appset pwm 100 rem ble_cli.bat -f interactive, legacy framed protocol (notify) rem ble_cli.bat -f help one-shot framed command rem -rem Multi-word commands (e.g. led 1 on): use interactive mode. +rem One-shot mode sends the whole argument line as ONE command (multi-word ok). rem Requires tools\.venv-ble (created automatically on first run). rem ============================================================ setlocal diff --git a/tools/ble_cli_test.py b/tools/ble_cli_test.py index 4bd1799..265b938 100644 --- a/tools/ble_cli_test.py +++ b/tools/ble_cli_test.py @@ -161,11 +161,17 @@ class McmTestClient: async def run_cli_rw(client, cmd): """CLI over the read/write characteristic ...0003: write the raw command - line (ATT write-with-response), then read the output text back.""" + line (ATT write-with-response), then read the output text back in + sequential chunks (a 0-length read marks the end of the response).""" print("[tx rw] %r" % cmd) await client.write_gatt_char(CLI_RW_UUID, cmd.encode("ascii"), response=True) await asyncio.sleep(0.1) # one conn. interval for the device to execute - rsp = await client.read_gatt_char(CLI_RW_UUID) + rsp = bytearray() + for _ in range(64): # safety bound; each chunk <= att_mtu-2 + chunk = await client.read_gatt_char(CLI_RW_UUID) + if not chunk: + break + rsp += chunk print("[rx rw] %dB:\n%s" % (len(rsp), rsp.decode("ascii", "replace"))) @@ -246,15 +252,16 @@ async def main(): else: await tester.run_cli(client, line) else: - for cmd in cmds: - if cmd == "param": - await run_param_read(client) - elif use_rw: - await run_cli_rw(client, cmd) - elif cmd == "info": - await tester.run_info_query(client) - else: - await tester.run_cli(client, cmd) + # one-shot: the whole argv is ONE command line (multi-word ok) + line = " ".join(cmds) + if line == "param": + await run_param_read(client) + elif use_rw: + await run_cli_rw(client, line) + elif line == "info": + await tester.run_info_query(client) + else: + await tester.run_cli(client, line) if not use_rw: await client.stop_notify(NOTIFY_UUID) print("disconnected") diff --git a/tools/out/caiic_ble_full.bin b/tools/out/caiic_ble_full.bin index f3509a514075b658697a68b9f029190024defe91..e7bf32d93f53d734390d982c5797c4b9674dd815 100644 GIT binary patch delta 11306 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 delta 10200 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 RF#ZZm`_`VJ|GAi`{NE%S51;@5 diff --git a/tools/out/caiic_ble_full_ota.json b/tools/out/caiic_ble_full_ota.json index 570ad37..7494198 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": 44088, - "crc32": "0xE246E2B2", - "version": 65545 + "size": 45056, + "crc32": "0xB2469318", + "version": 65549 } \ No newline at end of file