修复IWDG超时未配置与dhara resume回滚:看门狗误复位与复位后写入全部丢失,台架全量自检PASS
This commit is contained in:
+15
-3
@@ -47,9 +47,19 @@ static void ui_task_time_cb(char *buf, size_t len) {
|
||||
*/
|
||||
static void ui_task_wait_net_ready(void) {
|
||||
if (sys_evtHandle != NULL) {
|
||||
/* osFlagsNoClear:就绪位是状态,不能被本任务消费掉(否则其它等待者永不唤醒) */
|
||||
osEventFlagsWait(sys_evtHandle, SYS_EVT_NET_READY,
|
||||
osFlagsWaitAny | osFlagsNoClear, osWaitForever);
|
||||
/* osFlagsNoClear:就绪位是状态,不能被本任务消费掉(否则其它等待者永不唤醒)。
|
||||
* 2026-10-02 台架修复:等待改 100ms 分片 + 每片喂心跳(与 timeSync/netTask/
|
||||
* ftpTask 入口同模式)——IWDG 必需掩码含 UI 位,原 osWaitForever 无心跳:
|
||||
* IWDG 启动(存储就绪)时网络未必就绪 → 掩码 800ms 不可达 → 停喂 → 复位循环。
|
||||
* 100ms 分片 = 抽样窗,纯任务睡眠零队列开销。 */
|
||||
for (;;) {
|
||||
uint32_t r = osEventFlagsWait(sys_evtHandle, SYS_EVT_NET_READY,
|
||||
osFlagsWaitAny | osFlagsNoClear, 100u);
|
||||
if ((r & osFlagsError) == 0u) {
|
||||
break; /* NET_READY 已置位(状态位,未被消费) */
|
||||
}
|
||||
task_wd_beat(TASK_WD_UI); /* 看门狗:分片喂心跳(屏障等待态) */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +74,8 @@ static void ui_task_wait_net_ready(void) {
|
||||
void ui_task_func(void *argument) {
|
||||
(void)argument;
|
||||
|
||||
task_wd_bind(TASK_WD_UI); /* FTL 心跳路由:登记本任务句柄(入口一次) */
|
||||
|
||||
/* 等待网络就绪期间不可能喂狗:本任务此时尚未进入主循环,而就绪位由 netTask 置位。
|
||||
* 该段若长期不成立,看门狗会复位——这是期望行为(网络 bring-up 卡死须暴露)。
|
||||
* 注意本任务在 required_mask 内,主循环跑起来后须保证每 100ms 窗口内至少喂一次。 */
|
||||
|
||||
Reference in New Issue
Block a user