diff --git a/AGENTS.md b/AGENTS.md index 49e1ada..518324c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,20 +2,20 @@ ## 项目概述 -本仓库是基于国民技术(Nations)**N32WB031 BLE SoC** 的嵌入式固件工程集合。实际芯片型号 **N32WB031KEQ6-2**(Cortex-M0,64MHz HSI,**Flash 512KB**,RAM 48KB)。 +本仓库是基于国民技术(Nations)**N32WB031 BLE SoC** 的嵌入式固件工程集合。实际芯片型号 **N32WB031KEQ6-2**(Cortex-M0,64MHz HSI,**Flash 512KB**,RAM 48KB+16KB)。 当前活跃工程: - **`mcm-ddc-04/`** — 主工程(APP,链接在 APP1 bank `0x01008000`/224KB):UART(printf 重定向 + DMA 发送 + RX 中断)、CLI 命令框架(UART + BLE 双通道)、FreeRTOS 多任务、GPIO 点灯、BLE 协议栈(自定义 GATT 透传服务 CLS)、BLE OTA 双 bank 直写升级(见开发日志第 15/16 节、`docs/ble_protocol.md`)。 -- **`Boot/`** — 自写精简 bootloader(链接在 `0x01000000`/16KB):只做 bootsetting 裁决(magic + 自身 CRC32)选 bank + 向量表 sanity 检查后直跳;**镜像 CRC 在 OTA 升级过程中校验(app_ota.c OTA_END),Boot 跳转时不校验**(开发日志第 19 节)。 -- **`mcm-ddc-ble/`** — 独立 BLE 工程(基于 SDK rdtss 例程,链接在 `0x01000000`,无 bootloader/OTA):BLE↔USART1 透传 + FreeRTOS(BLE 调度任务 + LED1 点灯任务),睡眠已锁保 SWD。日志在 `mcm-ddc-ble/docs/开发日志.md`。 +- **`Boot/`** — 自写精简 bootloader(链接在 `0x01000000`/16KB):校验 bootsetting 自身完整性(magic + 结构体 CRC32)后按 active bank 的 `start_address` 直接跳转;**不校验镜像 CRC(在 OTA 升级过程中校验)**;记录无效或地址越界回退 APP1(开发日志第 19/21 节)。 +- **`mcm-ddc-ble/`** — 独立 BLE 工程(基于 SDK rdtss 例程 + FreeRTOS,睡眠已锁保 SWD):当前链接在 `0x01008000`/0x38000 作为 APP1,与 Boot 组成整包 `caiic_ble_full.*`;单跑时把 IROM1 改回 `0x01000000, 0x40000`。日志在 `mcm-ddc-ble/docs/开发日志.md`。 仓库顶层目录: - `mcm-ddc-04/` — 主工程(应用代码、MDK 工程文件、开发日志) -- `mcm-ddc-ble/` — 独立 BLE 工程(rdtss 蓝本 + FreeRTOS,0x01000000 直跑) +- `mcm-ddc-ble/` — 独立 BLE 工程(rdtss 蓝本 + FreeRTOS,APP1 链接形态) - `Boot/` — bootloader 工程(`src/main.c`、`dfu_layout.h`、`boot_crc32.c`;后两个被 APP 工程以相对路径 `..\..\Boot\src` 共用) -- `tools/` — 烧录包工具:`merge_image.py`(合并 boot+APP 为整片 hex/bin)、`make_package.bat`(一键构建+合并)、`flash_package.bat`(NSpyocd 整片烧录),产物在 `tools/out/` +- `tools/` — 烧录包工具:`merge_image.py`(合并 boot + bootsetting 缺省记录 + APP 为整片 hex/bin,支持 `merge_image.py [app_bin] [输出名]`)、`make_package.bat`(一键全量重建 `-r` + 合并)、`flash_package.bat`(NSpyocd 整片烧录),产物在 `tools/out/` - `nations-tec/` — 厂商资源:SDK V2.0.0、DFP 器件包、STB 开发板资料、官方 PDF 文档。**这些内容为只读参考资料,不要修改。** - `app/`、`docs/` — 顶层空目录,预留占位 @@ -31,7 +31,7 @@ mcm-ddc-04/ ├── app/ │ ├── main.c # 入口:VTOR 重映射 → USART 初始化+banner → LED 初始化 → app_ble_init → 建队列/任务/CLI → vTaskStartScheduler -│ ├── bsp_usart.c/.h # USART1 初始化(PB6/PB7,1000000 8N1)+ fputc 重定向('\n' 前自动补 '\r')+ DMA TX(CH1,轮询完成)+ RXDNE 中断字节队列 + TX 互斥锁 +│ ├── bsp_usart.c/.h # USART1 初始化(PB6/PB7,115200 8N1)+ fputc 重定向('\n' 前自动补 '\r')+ DMA TX(CH1,轮询完成)+ RXDNE 中断字节队列 + TX 互斥锁 │ ├── bsp_led.c/.h # LED1(PB0)/LED2(PA6) 初始化、on/off/toggle │ ├── app_tasks.c/.h # 3 个 FreeRTOS 任务 + 日志队列(生产者-消费者模型)+ 主动打印开关(默认关) │ ├── app_cli.c/.h # CLI UART 前端:CliTask 行接收/编辑/历史/Tab/Ctrl+Z,分行后交 cli_core 执行 @@ -57,7 +57,7 @@ mcm-ddc-04/ SDK 源码(固件库、CMSIS、FreeRTOS V9.0.0、BLE 协议栈/profile/ns_library、启动文件)通过相对路径 `..\..\nations-tec\N32WB03x_SDK_V2.0.0` 被 uvprojx 引用,**不复制进工程**。Bootloader 共享代码(`Boot/src/dfu_layout.h`、`boot_crc32.c`)经 `..\..\Boot\src` 引用。因此 `mcm-ddc-04` 目录不能脱离仓库根单独移动。 -工程配置:器件 `N32WB031KEQ6-2`(512KB Flash),IROM 0x01008000 / 0x38000(APP1 区,前 32KB 留给 Bootloader),IRAM 0x20000000 / 0xC000,MicroLIB,全局宏 `N32WB03X, USE_STDPERIPH_DRIVER`;链接器 Misc 附加 BLE ROM 符号表 `symbol_g15.obj`。 +工程配置:器件 `N32WB031KEQ6-2`(512KB Flash),IROM 0x01008000 / 0x38000(APP1 区,前 32KB 留给 Bootloader),**IRAM 0x20004000 / 0xC000**(低 16KB 保留给芯片 ROM/BLE,见下),MicroLIB,全局宏 `N32WB03X, USE_STDPERIPH_DRIVER`;链接器 Misc 附加 BLE ROM 符号表 `symbol_g15.obj`。 ## 构建与烧录 @@ -70,14 +70,14 @@ SDK 源码(固件库、CMSIS、FreeRTOS V9.0.0、BLE 协议栈/profile/ns_libr ``` 构建成功后自动执行 `fromelf --bin --output=.\bin\embeddedSrc.bin .\Objects\embeddedSrc.axf`。 -当前基线结果:**0 Error(s), 0 Warning(s)**,体积 `Code=37996 RO-data=6856 RW-data=10600 ZI-data=33056`(RW+ZI≈42.6KB < 48KB,heap 22KB)。 +当前基线结果:**0 Error(s), 0 Warning(s)**,体积 `Code=38348 RO-data=6932 RW-data=10600 ZI-data=36128`(RW+ZI≈45.7KB < 48KB 可用窗口,heap 22KB)。 烧录与运行: 1. Keil 打开 `MDK-ARM/embeddedSrc.uvprojx`,F7 编译 -2. NS-LINK 接 SWD(PA4/PA5),F8 下载——Boot 跳转不校验镜像 CRC 后,Keil 直接下载 APP 即可正常启动调试;工程调试配置挂了 `MDK-ARM/debug_app.ini`(强制 SP/PC 从 APP1 向量表取,跳过 Boot 旁路,可选) -3. 独立运行(脱调试器)需烧整片包:`tools\flash_package.bat tools\out\caiic_full.bin`(改代码后先 `make_package.bat` 重新出包)。**板子上烧过其他 0x01000000 起步的程序会覆盖 Boot/bootsetting,恢复靠重烧整片包** -4. 串口助手接 PB6(TX)/PB7(RX),**1000000** 8N1(1Mbps,APB2=64MHz 分频 4.0 零误差),复位后应看到启动 banner 与 `caiic->` CLI 提示符(输入 `help` 查看命令;LED 滚动日志默认关闭,用 `log on` 打开) +2. NS-LINK 接 SWD(PA4/PA5),F8 下载——Boot 跳转不校验镜像 CRC,Keil 直接下载 APP 即可正常启动调试;**但 Keil 下载选项必须是"Erase Sectors",整片擦除会杀掉 Boot**(杀掉后独立运行不启动,需重烧整片包恢复) +3. 独立运行(脱调试器)需烧整片包:`tools\flash_package.bat tools\out\caiic_full.hex`(改代码后先 `make_package.bat` 重新出包)。**板子上烧过其他 0x01000000 起步的程序会覆盖 Boot/bootsetting,恢复靠重烧整片包** +4. 串口助手接 PB6(TX)/PB7(RX),115200 8N1,复位后应看到启动 banner 与 `caiic->` CLI 提示符(输入 `help` 查看命令;LED 滚动日志默认关闭,用 `log on` 打开) 5. BLE:手机 nRF Connect 应能搜到并连接 `CAIIC-MCM`,可见自定义服务(写特征 + notify 特征) ## 硬件引脚约束(重要) @@ -99,6 +99,7 @@ SDK 源码(固件库、CMSIS、FreeRTOS V9.0.0、BLE 协议栈/profile/ns_libr ## BLE 架构约定(重要) +- **RAM 布局(铁律)**:本芯片 SRAM 为 48KB+16KB。**低 16KB(0x20000000~0x20003FFF)由芯片 ROM/BLE 子系统占用**(rwip 堆描述符 0x20000118 起、patch 数组、中断中继表,由 ROM 启动代码预备,全 SDK 无源码重写)。任何工程的 IRAM 执行区必须从 **0x20004000** 起(含 Boot 和任何小工具),否则启动时代的 .data/.bss 初始化会冲掉 ROM 数据,BLE init 必然 HardFault(实测根因,开发日志第 21 节)。 - **VTOR**:Cortex-M0 无 SCB->VTOR,向量重映射用 `PWR->VTOR_REG`(bit31=EN|[30:0]=基址)。规则:**BLE 初始化之前** VTOR 指向 APP 自身向量表(`0x80000000|0x01008000`,main 开头设置,USART1 RX 中断需要);**`ns_ble_stack_init()` 之后 VTOR 必须为 0**——此后所有中断经芯片 ROM 跳板 + RAM 中继(`ns_ble_stack_vtor_init` 把 APP 的 `__Vectors` 拷到 0x200000e8/0x200009c0 并把 BLE_FIFO/BLE_SLP/EXTI4_12 指向 ROM/RAM handler)。绝对不要在 app_ble_init() 后重设 VTOR,否则 BLE FIFO 中断落入 weak Default_Handler 死循环(实测崩溃根因,见开发日志第 18 节)。 - **BLE 调度任务**(`app/ble/app_ble.c`,栈 512 字,优先级 2):循环 `rwip_schedule(); vTaskDelay(1ms);`。**ke_msg/ke_timer 只允许在该任务上下文运行**(SDK 约束),不要在其他任务或中断里直接调用。 - BLE 中断向量不在 `n32wb03x_it.c` 定义:启动文件中 BLE_*IRQHandler 为 weak,真正 handler 由 `symbol_g15.obj`(ROM)+ SDK RAM 重映射(0x200000e8/0x200009c0)提供。BLE_SW/FIFO IRQ 优先级 0,其 ISR 内禁止调用 FreeRTOS FromISR API。 diff --git a/Boot/MDK-ARM/Listings/caiic_boot.map b/Boot/MDK-ARM/Listings/caiic_boot.map index f89562e..81ed7bc 100644 --- a/Boot/MDK-ARM/Listings/caiic_boot.map +++ b/Boot/MDK-ARM/Listings/caiic_boot.map @@ -32,7 +32,6 @@ Section Cross References system_n32wb03x.o(i.read_flash_ID) refers to system_n32wb03x.o(.constdata) for CMD_RDID system_n32wb03x.o(i.system_delay_n_10us) refers to system_n32wb03x.o(.emb_text) for system_delay_cycles main.o(i.main) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32 - main.o(i.main) refers to main.o(i.bank_vector_ok) for bank_vector_ok main.o(i.main) refers to main.o(i.jump_to_app) for jump_to_app entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry10a.o(.ARM.Collect$$$$0000000D) for __rt_final_cpp entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry11a.o(.ARM.Collect$$$$0000000F) for __rt_final_exit @@ -75,19 +74,19 @@ Image Symbol Table Symbol Name Value Ov Type Size Object(Section) ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE @@ -127,17 +126,15 @@ Image Symbol Table i.__scatterload_zeroinit 0x010004d4 Section 14 handlers.o(i.__scatterload_zeroinit) i.__set_PRIMASK 0x010004e2 Section 0 system_n32wb03x.o(i.__set_PRIMASK) __set_PRIMASK 0x010004e3 Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK) - i.bank_vector_ok 0x010004e8 Section 0 main.o(i.bank_vector_ok) - bank_vector_ok 0x010004e9 Thumb Code 46 main.o(i.bank_vector_ok) - i.caiic_crc32 0x01000518 Section 0 boot_crc32.o(i.caiic_crc32) - i.jump_to_app 0x0100055c Section 0 main.o(i.jump_to_app) - jump_to_app 0x0100055d Thumb Code 30 main.o(i.jump_to_app) - i.main 0x01000580 Section 0 main.o(i.main) - i.read_flash_ID 0x010005c4 Section 0 system_n32wb03x.o(i.read_flash_ID) - read_flash_ID 0x010005c5 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID) - .constdata 0x01000608 Section 472 system_n32wb03x.o(.constdata) - .bss 0x20000000 Section 52 system_n32wb03x.o(.bss) - STACK 0x20000038 Section 2048 startup_n32wb03x.o(STACK) + i.caiic_crc32 0x010004e8 Section 0 boot_crc32.o(i.caiic_crc32) + i.jump_to_app 0x0100052c Section 0 main.o(i.jump_to_app) + jump_to_app 0x0100052d Thumb Code 30 main.o(i.jump_to_app) + i.main 0x01000550 Section 0 main.o(i.main) + i.read_flash_ID 0x010005a4 Section 0 system_n32wb03x.o(i.read_flash_ID) + read_flash_ID 0x010005a5 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID) + .constdata 0x010005e8 Section 472 system_n32wb03x.o(.constdata) + .bss 0x20004000 Section 52 system_n32wb03x.o(.bss) + STACK 0x20004038 Section 2048 startup_n32wb03x.o(STACK) Global Symbols @@ -223,14 +220,14 @@ Image Symbol Table __scatterload_copy 0x010004c5 Thumb Code 14 handlers.o(i.__scatterload_copy) __scatterload_null 0x010004d3 Thumb Code 2 handlers.o(i.__scatterload_null) __scatterload_zeroinit 0x010004d5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - caiic_crc32 0x01000519 Thumb Code 62 boot_crc32.o(i.caiic_crc32) - main 0x01000581 Thumb Code 56 main.o(i.main) - TRIM_READ_CMD_CODE 0x01000608 Data 320 system_n32wb03x.o(.constdata) - CMD_RDID 0x01000748 Data 152 system_n32wb03x.o(.constdata) - Region$$Table$$Base 0x010007e0 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x010007f0 Number 0 anon$$obj.o(Region$$Table) - trim_stored 0x20000000 Data 52 system_n32wb03x.o(.bss) - __initial_sp 0x20000838 Data 0 startup_n32wb03x.o(STACK) + caiic_crc32 0x010004e9 Thumb Code 62 boot_crc32.o(i.caiic_crc32) + main 0x01000551 Thumb Code 72 main.o(i.main) + TRIM_READ_CMD_CODE 0x010005e8 Data 320 system_n32wb03x.o(.constdata) + CMD_RDID 0x01000728 Data 152 system_n32wb03x.o(.constdata) + Region$$Table$$Base 0x010007c0 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x010007d0 Number 0 anon$$obj.o(Region$$Table) + trim_stored 0x20004000 Data 52 system_n32wb03x.o(.bss) + __initial_sp 0x20004838 Data 0 startup_n32wb03x.o(STACK) @@ -240,54 +237,52 @@ Memory Map of the image Image Entry point : 0x010000c1 - Load Region LR_IROM1 (Base: 0x01000000, Size: 0x000007f0, Max: 0x00004000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x01000000, Size: 0x000007d0, Max: 0x00004000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x000007f0, Max: 0x00004000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x000007d0, Max: 0x00004000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x01000000 0x01000000 0x000000c0 Data RO 3 RESET startup_n32wb03x.o - 0x010000c0 0x010000c0 0x00000000 Code RO 227 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) - 0x010000c0 0x010000c0 0x00000004 Code RO 238 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) - 0x010000c4 0x010000c4 0x00000004 Code RO 241 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) - 0x010000c8 0x010000c8 0x00000000 Code RO 243 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) - 0x010000c8 0x010000c8 0x00000000 Code RO 245 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) - 0x010000c8 0x010000c8 0x00000008 Code RO 246 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) - 0x010000d0 0x010000d0 0x00000000 Code RO 248 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) - 0x010000d0 0x010000d0 0x00000000 Code RO 250 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) - 0x010000d0 0x010000d0 0x00000004 Code RO 239 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) + 0x010000c0 0x010000c0 0x00000000 Code RO 222 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) + 0x010000c0 0x010000c0 0x00000004 Code RO 233 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) + 0x010000c4 0x010000c4 0x00000004 Code RO 236 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) + 0x010000c8 0x010000c8 0x00000000 Code RO 238 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) + 0x010000c8 0x010000c8 0x00000000 Code RO 240 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) + 0x010000c8 0x010000c8 0x00000008 Code RO 241 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) + 0x010000d0 0x010000d0 0x00000000 Code RO 243 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) + 0x010000d0 0x010000d0 0x00000000 Code RO 245 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) + 0x010000d0 0x010000d0 0x00000004 Code RO 234 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) 0x010000d4 0x010000d4 0x0000000e Code RO 10 .emb_text system_n32wb03x.o 0x010000e2 0x010000e2 0x00000002 PAD 0x010000e4 0x010000e4 0x0000001c Code RO 4 .text startup_n32wb03x.o - 0x01000100 0x01000100 0x0000002c Code RO 230 .text mc_p.l(uidiv.o) - 0x0100012c 0x0100012c 0x00000024 Code RO 232 .text mc_p.l(memcpya.o) - 0x01000150 0x01000150 0x00000024 Code RO 234 .text mc_p.l(memseta.o) - 0x01000174 0x01000174 0x00000024 Code RO 252 .text mc_p.l(init.o) + 0x01000100 0x01000100 0x0000002c Code RO 225 .text mc_p.l(uidiv.o) + 0x0100012c 0x0100012c 0x00000024 Code RO 227 .text mc_p.l(memcpya.o) + 0x01000150 0x01000150 0x00000024 Code RO 229 .text mc_p.l(memseta.o) + 0x01000174 0x01000174 0x00000024 Code RO 247 .text mc_p.l(init.o) 0x01000198 0x01000198 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o 0x01000264 0x01000264 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o 0x01000394 0x01000394 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o 0x010004b0 0x010004b0 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o - 0x010004c4 0x010004c4 0x0000000e Code RO 256 i.__scatterload_copy mc_p.l(handlers.o) - 0x010004d2 0x010004d2 0x00000002 Code RO 257 i.__scatterload_null mc_p.l(handlers.o) - 0x010004d4 0x010004d4 0x0000000e Code RO 258 i.__scatterload_zeroinit mc_p.l(handlers.o) + 0x010004c4 0x010004c4 0x0000000e Code RO 251 i.__scatterload_copy mc_p.l(handlers.o) + 0x010004d2 0x010004d2 0x00000002 Code RO 252 i.__scatterload_null mc_p.l(handlers.o) + 0x010004d4 0x010004d4 0x0000000e Code RO 253 i.__scatterload_zeroinit mc_p.l(handlers.o) 0x010004e2 0x010004e2 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o - 0x010004e8 0x010004e8 0x0000002e Code RO 174 i.bank_vector_ok main.o - 0x01000516 0x01000516 0x00000002 PAD - 0x01000518 0x01000518 0x00000044 Code RO 215 i.caiic_crc32 boot_crc32.o - 0x0100055c 0x0100055c 0x00000024 Code RO 175 i.jump_to_app main.o - 0x01000580 0x01000580 0x00000044 Code RO 176 i.main main.o - 0x010005c4 0x010005c4 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o - 0x01000608 0x01000608 0x000001d8 Data RO 23 .constdata system_n32wb03x.o - 0x010007e0 0x010007e0 0x00000010 Data RO 254 Region$$Table anon$$obj.o + 0x010004e8 0x010004e8 0x00000044 Code RO 210 i.caiic_crc32 boot_crc32.o + 0x0100052c 0x0100052c 0x00000024 Code RO 174 i.jump_to_app main.o + 0x01000550 0x01000550 0x00000054 Code RO 175 i.main main.o + 0x010005a4 0x010005a4 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o + 0x010005e8 0x010005e8 0x000001d8 Data RO 23 .constdata system_n32wb03x.o + 0x010007c0 0x010007c0 0x00000010 Data RO 249 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x010007f0, Size: 0x00000838, Max: 0x0000c000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x010007d0, Size: 0x00000838, Max: 0x0000c000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 - 0x00000034 Zero RW 22 .bss system_n32wb03x.o - 0x20000034 0x010007f0 0x00000004 PAD - 0x20000038 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o + 0x20004000 - 0x00000034 Zero RW 22 .bss system_n32wb03x.o + 0x20004034 0x010007d0 0x00000004 PAD + 0x20004038 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o ============================================================================== @@ -298,14 +293,14 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name 68 6 0 0 0 874 boot_crc32.o - 150 18 0 0 0 4115 main.o + 120 18 0 0 0 3627 main.o 28 8 192 0 2048 744 startup_n32wb03x.o 900 60 472 0 52 95112 system_n32wb03x.o ---------------------------------------------------------------------- - 1150 92 680 0 2104 100845 Object Totals + 1118 92 680 0 2104 100357 Object Totals 0 0 16 0 0 0 (incl. Generated) - 4 0 0 0 4 0 (incl. Padding) + 2 0 0 0 4 0 (incl. Padding) ---------------------------------------------------------------------- @@ -345,15 +340,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 1352 108 680 0 2104 100761 Grand Totals - 1352 108 680 0 2104 100761 ELF Image Totals - 1352 108 680 0 0 0 ROM Totals + 1320 108 680 0 2104 100317 Grand Totals + 1320 108 680 0 2104 100317 ELF Image Totals + 1320 108 680 0 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 2032 ( 1.98kB) + Total RO Size (Code + RO Data) 2000 ( 1.95kB) Total RW Size (RW Data + ZI Data) 2104 ( 2.05kB) - Total ROM Size (Code + RO Data + RW Data) 2032 ( 1.98kB) + Total ROM Size (Code + RO Data + RW Data) 2000 ( 1.95kB) ============================================================================== diff --git a/Boot/MDK-ARM/Objects/boot_crc32.o b/Boot/MDK-ARM/Objects/boot_crc32.o index cceff18..77d064d 100644 Binary files a/Boot/MDK-ARM/Objects/boot_crc32.o and b/Boot/MDK-ARM/Objects/boot_crc32.o differ diff --git a/Boot/MDK-ARM/Objects/caiic_boot.axf b/Boot/MDK-ARM/Objects/caiic_boot.axf index cb63cde..fee5938 100644 Binary files a/Boot/MDK-ARM/Objects/caiic_boot.axf and b/Boot/MDK-ARM/Objects/caiic_boot.axf differ diff --git a/Boot/MDK-ARM/Objects/caiic_boot.build_log.htm b/Boot/MDK-ARM/Objects/caiic_boot.build_log.htm index 0bc79f4..eae9338 100644 --- a/Boot/MDK-ARM/Objects/caiic_boot.build_log.htm +++ b/Boot/MDK-ARM/Objects/caiic_boot.build_log.htm @@ -26,10 +26,13 @@ Project File Date: 09/02/2026