就绪屏障与配置引擎重构,新增串口助手、V0.0网表分析报告及芯片手册,同步更新文档

This commit is contained in:
2026-09-15 21:13:20 +08:00
parent 4b5ce72e11
commit 1817fe792f
605 changed files with 54786 additions and 322 deletions
+40 -7
View File
@@ -39,6 +39,8 @@
#include "time_sync.h"
#include "sys_events.h"
#include "sys_log.h"
#include "net_cfg.h"
#include "cfg_file.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@@ -114,6 +116,7 @@ const osEventFlagsAttr_t sys_evt_attributes = {
/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN FunctionPrototypes */
void ui_task_func(void *argument);
static void default_task_net_cfg_save_notify(void);
/* USER CODE END FunctionPrototypes */
void StartDefaultTask(void *argument);
@@ -171,10 +174,10 @@ void MX_FREERTOS_Init(void) {
uiTaskHandle = osThreadNew(StartUiTask, NULL, &uiTask_attributes);
/* USER CODE BEGIN RTOS_THREADS */
#ifdef ENABLE_NET_LAYER_TESTS
/* NET 层测试模式(阶段 6~10):完整网络栈,netTask 负责轮询与消息处理 */
netTaskHandle = osThreadNew(StartNetTask, NULL, &netTask_attributes);
#endif
/* netTask = 基础线程:上方生成区的实例是全构建唯一实例(P1-6:旧
* #ifdef ENABLE_NET_LAYER_TESTS 的重复创建已删除)。
* - 产品 / NET 层测试模式:正常运行 bring_up + net_poll
* - CH395F 硬件层测试模式:net_task_func 入口自挂起(testTask 独占 CH395F) */
/* 本地时间同步任务(PC 推送 TCP):依赖 netTask 处理消息队列 */
timeSyncTaskHandle = osThreadNew(time_sync_task, NULL, &timeSyncTask_attributes);
@@ -225,7 +228,11 @@ void StartDefaultTask(void *argument)
DBG_INFO("[FS] FATFS mounted");
/* 日志引擎挂载后处理:建 /log 目录 + 写"上电/重启"分类记录(唯一写者) */
syslog_mcu_mounted();
/* 广播"存储就绪",唤醒依赖文件系统的任务 */
/* 加载网络配置进 RAM 副本(配置引擎属主 = 本任务;首启含旧档迁移;
* 文件缺失/损坏 = 工厂默认,不阻塞组网)。须在置位 STORAGE_READY 前,
* 使"存储就绪"屏障蕴含"配置已就绪",netTask 组网时配置恒有效 */
(void)net_cfg_load();
/* 广播"存储就绪"(= 卷挂载 + 配置加载完成),唤醒依赖文件系统的任务 */
if (sys_evtHandle != NULL) {
osEventFlagsSet(sys_evtHandle, SYS_EVT_STORAGE_READY);
}
@@ -235,13 +242,30 @@ void StartDefaultTask(void *argument)
syslog_post(SYSLOG_SELFTEST, "文件系统异常");
}
/* 注册"保存网络配置"请求通知:UI(uiTask)投递 → 置事件 → 本任务立即执行写盘
* (配置引擎属主 = 本任务;UI 保存不再直接触碰配置文件引擎,P1-3) */
net_cfg_set_save_req_cb(default_task_net_cfg_save_notify);
/* 配置 poll 周期计数(每 4 次循环 = 2s 轮询一次,与引擎文档/模拟器一致) */
uint32_t cfg_poll_cnt = 0u;
for (;;) {
/* 等待"保存网络配置"请求:有请求立即唤醒;无请求 500ms 后返回
* (取代原 osDelay(500):循环节奏不变,保存响应零空转) */
if (sys_evtHandle != NULL) {
(void)osEventFlagsWait(sys_evtHandle, SYS_EVT_CFG_SAVE, osFlagsWaitAny, 500u);
}
/* 执行待处理保存(配置引擎属主:写盘 + 成功后立即应用);无请求 = 空操作 */
net_cfg_save_run();
/* 配置文件变更轮询(2s 周期;沉降去抖在引擎内) */
if ((cfg_poll_cnt++ & 3u) == 0u) {
cfg_file_poll();
}
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
/* 排空运行期日志(上电/重启分类与自检故障落盘) */
syslog_drain();
osDelay(500);
}
/* USER CODE END StartDefaultTask */
}
@@ -325,5 +349,14 @@ void StartUiTask(void *argument)
/* Private application code --------------------------------------------------*/
/* USER CODE BEGIN Application */
/*
* "保存网络配置"请求通知(注册给 net_cfg 的保存交接):
* uiTask 投递保存请求 → 置 SYS_EVT_CFG_SAVE → defaultTask 循环立即唤醒执行写盘
*/
static void default_task_net_cfg_save_notify(void)
{
if (sys_evtHandle != NULL) {
(void)osEventFlagsSet(sys_evtHandle, SYS_EVT_CFG_SAVE);
}
}
/* USER CODE END Application */