修复IWDG超时未配置与dhara resume回滚:看门狗误复位与复位后写入全部丢失,台架全量自检PASS
This commit is contained in:
+20
-3
@@ -165,6 +165,8 @@ int net_task_init(void) {
|
||||
void net_task_func(void const *arg) {
|
||||
(void)arg;
|
||||
|
||||
task_wd_bind(TASK_WD_NET); /* FTL 心跳路由:登记本任务句柄(入口一次) */
|
||||
|
||||
/* 硬件层测试模式:testTask 独占 CH395F,本任务自挂起(基础线程恒创建,
|
||||
* 该模式下"不运行"):不 bring_up、不 net_poll、不广播 NET_READY;
|
||||
* ftpTask/timeSyncTask 将永久阻塞于屏障 = 预期行为(见《项目启动顺序管理》) */
|
||||
@@ -181,9 +183,24 @@ void net_task_func(void const *arg) {
|
||||
/* 配置在 NAND 的 FatFS 卷上:等存储就绪再读(取代原 2s 魔法延时);
|
||||
* 超时(存储异常)继续以工厂默认组网,不卡网络启动 */
|
||||
if (sys_evtHandle != NULL) {
|
||||
/* osFlagsNoClear:就绪位是状态,不能被本任务消费(ftpTask 等仍要 WaitAll 两位) */
|
||||
(void)osEventFlagsWait(sys_evtHandle, SYS_EVT_STORAGE_READY,
|
||||
osFlagsWaitAny | osFlagsNoClear, 10000u);
|
||||
/* osFlagsNoClear:就绪位是状态,不能被本任务消费(ftpTask 等仍要 WaitAll 两位)。
|
||||
* 2026-10-02 台架修复:10s 超时等待改 100ms 分片 + 每片喂心跳——原实现
|
||||
* 在等待期无心跳:若存储 bring-up 失败,本等待跑满 10s 超时,而 IWDG
|
||||
* 此时已启动(defaultTask 在 bring-up 后即启动),NET 位长期缺失 →
|
||||
* 必需掩码不可达 → 复位循环,E-31 的 2s 自愈重试根本没有机会。
|
||||
* 分片喂位保证"存储未就绪"降级态下 NET 位持续新鲜。 */
|
||||
uint32_t rounds_left = 100u; /* 100 × 100ms = 原 10s 超时语义 */
|
||||
for (;;) {
|
||||
uint32_t r = osEventFlagsWait(sys_evtHandle, SYS_EVT_STORAGE_READY,
|
||||
osFlagsWaitAny | osFlagsNoClear, 100u);
|
||||
if ((r & osFlagsError) == 0u) {
|
||||
break; /* 存储就绪 */
|
||||
}
|
||||
task_wd_beat(TASK_WD_NET); /* 看门狗:分片喂心跳(屏障等待态) */
|
||||
if ((--rounds_left) == 0u) {
|
||||
break; /* 10s 超时:工厂默认组网,不阻塞网络启动 */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (net_stack_bring_up() != 0) {
|
||||
|
||||
Reference in New Issue
Block a user