整理了main 函数

This commit is contained in:
2026-08-29 09:45:54 +08:00
parent 9c990ead43
commit 7bc616cf9b
22 changed files with 311 additions and 235 deletions
+2 -2
View File
@@ -38,8 +38,8 @@ extern "C" {
* 阶段使能开关(取消注释即启用对应阶段)
*
* 构建模式互斥(详见 docs/CH395F_Test_Guide.md「构建模式与执行顺序」):
* 硬件层模式(阶段 1~5):netTask 不创建,ch395fTestTask 独占 CH395F
* NET 层模式 (阶段 6~11):完整网络栈,netTask 轮询 + ch395fTestTask 监听循环
* 硬件层模式(阶段 1~5):netTask 不创建,testTask 独占 CH395F
* NET 层模式 (阶段 6~11):完整网络栈,netTask 轮询 + testTask 监听循环
*
* 注意:同层内可多选(Phase 6~10 共享 testTask 循环);
* Phase 4 (DHCP) 会改变 IP,必须独立运行;
+5 -17
View File
@@ -1345,13 +1345,12 @@ static void phase5_run(void) {
TEST_REPORT("Phase 5");
}
#endif
void StartCh395fTestTask(void *argument)
/*
* CH395F 测试套件入口(由 test_config.c 的 start_test_task 统一调度)。
* 此处只负责 CH395F 自身的硬件层 / NET 层逻辑,套件选择已上移到 test_config.c。
*/
void ch395f_test_run(void)
{
(void)argument;
DBG_INFO("Test task started, suite=%s", TEST_SUITE_NAME);
#if defined(TEST_SUITE_CH395F)
#if defined(ENABLE_HW_LAYER_TESTS)
/* 硬件层模式(阶段 1~5):netTask 未创建,由本任务完成一次性协议栈
* 初始化并独占 CH395F —— 无 net_poll() 并发读取中断,无 SPI 并发事务 */
@@ -1391,16 +1390,5 @@ void StartCh395fTestTask(void *argument)
#else
net_layer_test_main();
#endif
#endif /* TEST_SUITE_CH395F */
#elif defined(TEST_SUITE_STORAGE)
storage_test_run();
#elif defined(TEST_SUITE_GD5F)
gd5f_test_run();
#elif defined(TEST_SUITE_RTC)
sd2506_test_run();
#endif
for (;;) {
osDelay(1000);
}
}
+2 -1
View File
@@ -5,7 +5,8 @@
extern "C" {
#endif
void StartCh395fTestTask(void *argument);
void start_test_task(void *argument);
void ch395f_test_run(void);
#ifdef __cplusplus
}
+1 -1
View File
@@ -1,6 +1,6 @@
/*****************************************************************************
* 模块名称:CH395F NET 层测试(Phase 6~11)
* 模块功能:基于 BSD Socket API(单连接模式)的 NET 层测试,由 ch395fTestTask
* 模块功能:基于 BSD Socket API(单连接模式)的 NET 层测试,由 testTask
* 任务内的 net_layer_test_main() / net_layer_client_test_main() 事件
* 循环驱动,需 PC 配合。
* 包含 Phase 6(TCP Echo) / 7(TCP Client) / 8(大文件) / 9(Select) /
+1 -1
View File
@@ -6,7 +6,7 @@ extern "C" {
#endif
/* NET 层测试事件循环入口(定义于 net_test_task.c)。
* 由 ch395fTestTask 在 NET 层构建模式下调用,内部创建单连接 TCP 监听
* 由 testTask 在 NET 层构建模式下调用,内部创建单连接 TCP 监听
* 并驱动 Phase 6/8~11 依次执行,连接断开后自动重新 listen。 */
void net_layer_test_main(void);
+1 -1
View File
@@ -37,7 +37,7 @@ extern sd2506_test_stats_t g_sd2506_test_stats;
g_sd2506_test_stats.failed); \
} while (0)
/* 测试入口:由 StartCh395fTestTask 经 TEST_SUITE_RTC 调度,顺序执行 Phase 1~3 */
/* 测试入口:由 start_test_task 经 TEST_SUITE_RTC 调度,顺序执行 Phase 1~3 */
void sd2506_test_run(void);
#ifdef __cplusplus
+1 -1
View File
@@ -10,7 +10,7 @@
*
* 当前测试:Phase 1 基本读写(init / 读 / 写 / 回读一致 / 走时),
* 结束后自动恢复板子原始时间。
* 入口:sd2506_test_run()(由 StartCh395fTestTask 经 TEST_SUITE_RTC 调度)
* 入口:sd2506_test_run()(由 start_test_task 经 TEST_SUITE_RTC 调度)
* 创建日期:2026-08-28
******************************************************************************/
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* 模块名称:Storage Test Suite
* 模块功能:FTL + FatFS 存储测试的声明与断言宏。实现见 storage_test_task.c,
* 统一由 ch395fTestTask 调度;正常产品构建下由 defaultTask 调用,
* 统一由 testTask 调度;正常产品构建下由 defaultTask 调用,
* 行为与原 defaultTask 内联逻辑一致。
* 适用平台:STM32F4 系列
* 作者:王建锋
+1 -1
View File
@@ -1,6 +1,6 @@
/******************************************************************************
* 模块名称:Storage Test Task
* 模块功能:FTL + FatFS 存储测试,从 defaultTask 迁入,统一由 ch395fTestTask
* 模块功能:FTL + FatFS 存储测试,从 defaultTask 迁入,统一由 testTask
* 调度运行。正常产品构建下由 defaultTask 调用,行为与原内联逻辑一致。
* 作者:王建锋
* 创建日期:2026-08-26
+50
View File
@@ -0,0 +1,50 @@
/******************************************************************************
* 模块名称:统一测试任务调度器(Test Config)
* 模块功能:所有测试任务的唯一入口。FreeRTOS 的 testTask 仅调用本文件
* 的 start_test_task(),由本文件根据 test_config.h 中启用的
* TEST_SUITE_* 宏,将测试分发到对应套件的运行函数。
*
* 各套件运行函数(ch395f_test_run / storage_test_run / gd5f_test_run
* / sd2506_test_run)各自实现具体测试逻辑,本文件只负责"选哪个跑",
* 不掺杂任何具体测试细节,使测试入口界限清晰、易于维护。
* 作者:王建锋
* 创建日期:2026-08-29
******************************************************************************/
#define DBG_TAG "[TEST_CFG]"
#include "cmsis_os.h"
#include "dbg_log.h"
#include "test_config.h"
#include "ch395f_test_task.h"
#include "storage_test.h"
#include "gd5f_test.h"
#include "sd2506_test.h"
/*
* 测试任务统一入口(FreeRTOS start_test_task 线程函数)。
* 根据编译期选中的 TEST_SUITE_* 调度对应套件,其余时间挂起。
*/
void start_test_task(void *argument)
{
(void)argument;
DBG_INFO("Test task started, suite=%s", TEST_SUITE_NAME);
#if defined(TEST_SUITE_CH395F)
ch395f_test_run();
#elif defined(TEST_SUITE_STORAGE)
storage_test_run();
#elif defined(TEST_SUITE_GD5F)
gd5f_test_run();
#elif defined(TEST_SUITE_RTC)
sd2506_test_run();
#else
DBG_INFO("No test suite selected (normal product build)");
#endif
for (;;) {
osDelay(1000);
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
/*
* 模块名称:统一测试套件选择
* 模块功能:集中选择当前构建要运行的测试套件。所有测试统一由
* ch395fTestTask(StartCh395fTestTask)调度,defaultTask 在测试
* testTask(start_test_task)调度,defaultTask 在测试
* 构建下空闲,正常产品构建下仅运行存储挂载/测试。
* 适用平台:STM32F4 系列
* 作者:王建锋