7 Commits

Author SHA1 Message Date
evan.liu
f729d16ff2 V1.00.25: UART OTA stream mode + RX DMA ring + SRAM cliff fix
Firmware:
- bsp_usart: RX moved from RXDNE byte-queue IRQ to DMA CH2 circular ring
  (2KB) + IDLE-irq wakeup; bytes keep landing during flash-erase
  interrupt-off windows (the reason lockstep was needed before)
- app_ota: stream mode (ble_protocol.md section 6.7) - 16B BEGIN with
  flags bit0=STREAM (UART channel only), DATA acked on 4KB sector
  crossings (original chunk length; two ack-gating bugs fixed during
  field test), throttled BAD_STATE for go-back-N
- FreeRTOS heap 20KB->18KB: the 2KB ring pushed the stack top past the
  0x2000C000 SRAM cliff (probed via SWD: accesses above fault on this
  silicon, usable app SRAM is 32KB) which locked the board at boot;
  merge_image.py now hard-fails the package when the image initial SP
  leaves (0x20004000, 0x2000C000]

Tools:
- ble_ota_update.py: UART stream sender (8KB window, stall watchdog
  rewind, auto-fallback to lockstep on pre-V1.00.24 firmware,
  --lockstep to force); case-insensitive option parsing
- flash_package.py/bat: stream NSpyocd output live (chunked reads keep
  the \r progress bar), vendor banner rebranded to CAIIC NSLINK UMP
- merge_image.py: initial-SP cliff guard

Verified: UART stream OTA both directions, 55.8KB in ~5.9s @9.5kB/s
0 rewinds (lockstep was 39s), PASS after reboot; board boot fixed and
verified via SWD.

Docs: ble_protocol.md section 6.7, dev log section 47 (+ SRAM cliff
post-mortem), AGENTS.md RAM rule rewritten (both cliffs) + V1.00.25
2026-09-05 09:48:28 +08:00
evan.liu
266fcec731 mcm-ddc-ble V1.00.18:发布命名整理(生产整包mothercup_ble_prod,OTA单文件发布件mothercup_ble_ota);合并OTA包头扩为52B(新增hdr_len/total_size/payload_crc,原json清单信息全部收进头部,单文件发布);merge_image.py新增--combo-name;ble_ota_update.py/ble_ota.bat PC端BLE OTA升级器(实验性:CUR_BANK选包/扇区擦除避让节流/复位检测,实机调通中);SWD单bank升级流程实测通过(bin\@基址部分烧录+bsset修记录+appsw切入);格式与升级流程写入ble_protocol.md §7供App/UART升级开发;开发日志40~41 2026-09-04 16:01:41 +08:00
evan.liu
a546dc5f46 mcm-ddc-ble V1.00.16~17:实测板载硅片为256KB(0x01040000起CPU读回绕/SWD fault),Flash布局回退256KB(Boot16K/bs8K/APP_DATA8K不变,APP1 0x01008000/112K,APP2 0x01024000/112K);新增appsw命令切换运行bank(记录校验+目标镜像CRC32复算防呆);uvprojx新增APP2 target(链接0x01024000,VTOR基址宏化,版本号可被target覆盖);新增make_dual_package.bat双APP整包脚本(merge_image.py支持--app2/--with-appdata);新增信息项0x07 CUR_BANK识别当前运行bank;OTA双bank配套:出包同时产bank1/bank2两份载荷(清单带target_bank),OTA_END校验镜像向量表Reset地址落在目标bank(新状态6 bank_mismatch);flash_package.bat改用DFP pack的n32wb031keq6_2 target+smart_flash=false;appsw双bank切换与CUR_BANK已实测通过;文档同步(开发日志37~39/ble_protocol.md/AGENTS.md) 2026-09-04 15:22:53 +08:00
evan.liu
2117c140fc mcm-ddc-ble V1.00.02~08:新增CLI读写特征(...c72e0003,写命令读应答)与只读参数特征(...c72e0004,全项TLV);修复温度开机首读垃圾值(ADC初始化预热+丢弃首转);blelog补写回调/CCCD订阅可见日志并修正CCCD值解析;tools新增bleak测试客户端(ble_cli_test.py/ble_cli.bat/ble_temp_watch.py);make_package.bat改指mcm-ddc-ble;merge_image.py自动取APP_FW_VERSION_NUM写入OTA清单;AGENTS.md记录固件版本递增约定;开发日志第28节 2026-09-04 08:52:44 +08:00
evan.liu
77ec340db2 ble_protocol.md新增手机端开发指南(连接初始化/CRC与组帧解帧参考实现/字节级示例表/时序与异常处理);merge_image.py出整包时同步产出OTA镜像(_ota.bin+_ota.json清单);文档目录移至仓库根docs/ 2026-09-03 06:31:48 +08:00
evan.liu
b5186aa30f 修复Boot跳转后BLE失败:Boot跳转前__enable_irq( PRIMASK继承问题),APP/Boot的IRAM改从0x20004000起(低16KB为ROM/BLE保留区,踩了必HardFault);bootsetting增加start_address,Boot按地址跳转;merge_image.py生成缺省bootsetting并支持参数化;make_package改-r全量重建;mcm-ddc-ble重链接到0x01008000并出caiic_ble_full整包;HardFault加栈帧打印 2026-09-02 21:04:08 +08:00
evan.liu
5e9de32eee 推送相关文件到服务器 2026-09-02 07:53:48 +08:00