wandering1
|
67d26ac37a
|
修正 CubeMX 重生成防丢失机制:审计脚本实测有效,恢复 5 处被覆盖定制
第二次重生成验证了审计机制,并证伪了上一轮的一处假设:
- 审计脚本 check_cubemx_survival.py 准确检出全部 5 处覆盖(16 项中 5 FAIL),
机制有效;Src/main.c 复位原因锁存(USER CODE BEGIN Init 区)完好,
是"USER CODE 区有效"的正向证据。
- 关键发现:CubeMX 本次换了一代中断函数模板(旧 HardFault_Handler /
HardFault_Report 自造区 → 新函数体内 HardFault_IRQn 0 / W1_HardFault_IRQn 0),
"生成区之外的自造标记区"同样不被保留,旧假设被证伪。
恢复方案(第二次升级):
- stm32f4xx_it.c:报告实现迁入 USER CODE BEGIN 0(区名从未变过的标准保护位);
Handler 本体改为生成区整函数替换,用 #define HardFault_Handler
HardFault_Handler_Gen 把生成实体改名保留,链接器自动移除(.map 实证
Removing ... (2 bytes)),向量表指向手工 __asm 版(0x080001a1,18 字节)。
- iwdg.c:去掉 HAL_IWDG_Init() 调用,补 IWDG-DEFER-START-ANCHOR 锚点注释。
- FreeRTOSConfig.h:恢复 FREE_RTOS_CONFIG_HARDENING 块(两个加固宏)。
- freertos.c:补回两处任务栈中文注释(栈值未丢,.ioc 已同步)。
配套:
- check_cubemx_survival.py:hardfault-handler 改 wholefile + 锚点检查;
UNPROTECTED_LEGACY 清单更新。
- AGENTS.md:新增"CubeMX 换模板"与"ARMCC 内联汇编语法"两条铁律,
以及"uvprojx 被 Keil 自动改写不入库"条目。
- 看门狗设计说明.md:§10.1 补第二次重生成验证结论与模板换代发现,
§10.2 L2/L3 全面改写(自造区名不可依赖)。
验证:@build 0 错误 0 警告;pre-commit 13 钩子全通过;审计 16 通过 / 2 警告 / 0 失败。
|
2026-09-29 07:52:39 +08:00 |
|
wandering1
|
7feeea6c56
|
实现独立看门狗:CubeMX 配置 IWDG + 任务心跳位图,恢复三处被覆盖定制
经 CubeMX 图形界面启用 IWDG(Prescaler=64 / Reload=1249,标称 2498ms /
最坏 1701ms),并落地心跳位图判定、各任务埋点、RCC_CSR 复位原因上报与
configASSERT 改造。重生成覆盖的既有定制已全部恢复。
P0(开机死循环):HAL_IWDG_Init() 内部立即启动看门狗,而 CubeMX 把
MX_IWDG_Init() 插在 app_main_init() 之前——该段 NAND/RTC/ADC 初始化耗时
数秒无喂狗点,按 2.5s 超时必然复位。改 Src/iwdg.c 为只填参数不启动,
启动移交 task_wd_start(),由 defaultTask 在存储 bring-up 完成后调用。
恢复的三处定制(重生成覆盖):
- Src/stm32f4xx_it.c:HardFault_Handler 崩溃现场采集被打回空 while(1)
- Inc/FreeRTOSConfig.h:栈溢出检测与堆失败钩子两个宏被整块删除
- Src/freertos.c:三处任务栈实测记录中文注释丢失(数值未丢)
新增:
- App/util/task_watchdog.{c,h}:心跳位图 + 抽样判定 + IWDG 延后启动
- time_sync.c 长等待切片:net_recv_to 单次可睡满 30s 预算,切成 200ms 片
- Src/main.c 复位原因锁存(读后即清 RMVF,防残留误判)
埋点:defaultTask(唯一喂狗者)/ netTask(含 PHY 等待循环)/ uiTask /
timeSyncTask。ftpTask 首期剔除掩码,待二期改 lftpd。
门禁:build 0 错误 0 警告;pre-commit 10 钩子全通过;Flash +2956B / RAM +40B。
|
2026-09-29 07:22:04 +08:00 |
|
wandering1
|
22559365b9
|
整理 App 与 test 目录:按职责分子目录并同步全库引用
|
2026-09-26 12:52:39 +08:00 |
|
wandering1
|
d0cbeb6b5b
|
控制台日志实现迁出HAL生成文件至App/log并新增设计说明;defaultTask任务体迁至App/task,freertos.c恢复纯CubeMX接线形态
|
2026-09-25 01:32:09 +08:00 |
|
wandering1
|
e7d6318250
|
控制台写者循环节奏500ms改50ms:日志时延收紧到50ms内,LED心跳与配置2s轮询改tick基准保持等效
|
2026-09-24 23:54:48 +08:00 |
|
wandering1
|
3763e699dc
|
控制台改单写者发送:defaultTask唯一发串口其余任务写环形缓冲,杜绝日志交错与脏指针入UART;溢出钩子加指针窗口校验、崩溃上报改显式长度
|
2026-09-24 23:47:23 +08:00 |
|
wandering1
|
1d2a53bbc9
|
E-31修复:dhara resume失败按错误分类(仅真空白判新卷),mount失败自检上报+主循环有界重试
|
2026-09-21 18:38:23 +08:00 |
|
wandering1
|
bbdd059e25
|
修复就绪屏障位被消费致FTP永不监听;新增栈可观测(水位探针+静态调用图报告)并补FTP实测
|
2026-09-21 04:26:52 +08:00 |
|
wandering1
|
a7d4339e6f
|
CCM扩容FreeRTOS堆+DMA阈值1024防栈缓冲进CCM+HardFault现场报告与栈/内存钩子+修defaultTask栈溢出+LVGL绘制缓冲护栏+存储套件05/06与恢复模式
|
2026-09-21 00:47:58 +08:00 |
|
wandering1
|
d77747ec43
|
移除FTL全部临时诊断代码(raw持久性测试/bind dump/proglog/探针窗口/指纹/扫描)保留硬化项
|
2026-09-20 13:31:15 +08:00 |
|
wandering1
|
6084af8fe6
|
修复无限重格式化真根因:探针名.fschk在FF_USE_LFN=0下恒返FR_INVALID_NAME且误入重格式化集合
|
2026-09-20 13:03:47 +08:00 |
|
wandering1
|
32283de45b
|
mkfs全程erase/prog逐条追踪窗口(proglog/eraselog):定位绑定页内容被改写的元凶
|
2026-09-20 11:20:46 +08:00 |
|
wandering1
|
66fc48cd98
|
新增map绑定转储诊断(dhara_map_find+裸读绑定页):跨boot对比定界树分歧与数据丢失
|
2026-09-20 10:48:47 +08:00 |
|
wandering1
|
93a789f87b
|
重格式化前清空FTL map树(nand_ftl_format):根治新旧树混合致复位后FAT探针失败的重格式化死循环
|
2026-09-20 05:36:10 +08:00 |
|
wandering1
|
f05b056318
|
FTL诊断:探针窗口前移至f_mount前+页内容指纹(定位挂载期坏读来源)
|
2026-09-20 05:16:27 +08:00 |
|
wandering1
|
0669471178
|
FTL诊断:L0探针窗口绑定路径日志(FAT读LPN→物理页+写目标)+重格式化行带fr码
|
2026-09-20 05:12:08 +08:00 |
|
wandering1
|
7a72aea4e5
|
FTL复位丢失修复:journal epoch 锚定最新 checkpoint(根治重格式化循环)+ checkpoint 诊断
|
2026-09-20 04:07:59 +08:00 |
|
wandering1
|
abaa801d86
|
/log 写失败修复:打开模式补 FA_WRITE 位 + 卷探针两击确认 + 自动重格式化自愈 + 错误去重
|
2026-09-20 03:46:14 +08:00 |
|
wandering1
|
6f51c62a9e
|
串口输出禁中文:syslog 中文描述改 ASCII(MCU 6 处 + 模拟器 6 处)
|
2026-09-20 02:45:27 +08:00 |
|
wandering1
|
1817fe792f
|
就绪屏障与配置引擎重构,新增串口助手、V0.0网表分析报告及芯片手册,同步更新文档
|
2026-09-15 21:13:20 +08:00 |
|
wandering1
|
9eb1bd63b4
|
运行/自检记录与待机屏:sys_log定长64B日志引擎(/log/*.log,FTP可直下)+记录页x2+待机屏+密码错误提示;字体122字/217字形
|
2026-09-14 19:05:00 +08:00 |
|
wandering1
|
7f0087d430
|
新增S10~S19代码规范检查并统一time_sync_task命名
check_coding_standard.py 新增 9 条机械检查(S14 并入 S6):
- S10 (3.3.1) 函数名全小写(HAL_ 厂商回调豁免)
- S11 (2.3.5) 禁止相对/绝对路径 include
- S12 (7.6) 禁止可变参数函数
- S13 (7.7) 禁止递归函数
- S15 (6.1.4) 文件作用域指针须初始化为 NULL
- S16 (3.2.2) 非 static 全局变量须 g_ 前缀
- S17 (2.2) 非 static 函数须在配对头文件声明
- S18 (6.3.1) 禁止 Yoda 条件(常量在右)
- S19 (4.4.2) 函数定义左大括号与右括号同行
S6 词表扩充 scanf/strtok
timeSyncTask 重命名为 time_sync_task(3 处代码引用)
更新 pre-commit 使用说明规则表
|
2026-09-01 17:38:43 +08:00 |
|
wandering1
|
ae8b1aead5
|
清理全库行尾空格与文件尾换行(pre-commit 自动修复基线)
|
2026-09-01 10:24:50 +08:00 |
|
wandering1
|
2d2774124e
|
正常运行了
|
2026-08-31 15:11:18 +08:00 |
|
wandering1
|
71c41fabb9
|
开启了192k 所有RAM
|
2026-08-30 15:38:40 +08:00 |
|
wandering1
|
e2f199c6bf
|
LVGL 库提交
|
2026-08-30 08:57:07 +08:00 |
|
wandering1
|
26c9098630
|
启动顺序管理
|
2026-08-29 11:10:08 +08:00 |
|
wandering1
|
7bc616cf9b
|
整理了main 函数
|
2026-08-29 09:45:54 +08:00 |
|
wandering1
|
ad154b2f7e
|
时间同步已经完成
|
2026-08-28 16:42:44 +08:00 |
|
wandering1
|
b43dede98d
|
FTP 测试通过
|
2026-08-28 12:22:10 +08:00 |
|
wandering1
|
65f1d72ca3
|
存储测试通过
|
2026-08-27 18:22:44 +08:00 |
|
wandering1
|
572313d430
|
CH395F 硬件测试完毕
|
2026-08-24 16:16:18 +08:00 |
|
wandering1
|
c2fb2d9359
|
构建测试
|
2026-08-22 19:53:24 +08:00 |
|
wandering1
|
6113b3252b
|
成功启动
|
2026-07-21 22:24:47 +08:00 |
|
wandering1
|
02963441b5
|
初始创建FTP服务器
|
2026-07-21 22:08:11 +08:00 |
|
wandering1
|
e1aeb9b3d5
|
删除FlashDB
|
2026-07-21 21:48:23 +08:00 |
|
wandering1
|
8ab9d18c3b
|
解决一个擦除的bug
|
2026-07-21 20:18:28 +08:00 |
|
wandering1
|
01ad5e476f
|
增加文件系统
|
2026-07-21 00:30:59 +08:00 |
|
wandering1
|
e862009bcd
|
修复多连接的问题
|
2026-07-19 15:27:49 +08:00 |
|
wandering1
|
a08d26bcb0
|
freeRTOS支持
|
2026-07-19 13:09:06 +08:00 |
|