移除 P0-a 验收探针(台架验收完成),开机省去 60ms 状态轮询与证据行

This commit is contained in:
2026-09-22 12:03:11 +08:00
parent 4ffc097218
commit 894b51feb3
4 changed files with 8 additions and 71 deletions
+4 -52
View File
@@ -40,7 +40,6 @@
static net_sock_t s_net_socks[NET_MAX_SOCKETS]; /* Socket 控制块数组 */
static int s_net_errno = 0; /* 最后错误码 */
static uint8_t s_net_initialized = 0; /* 初始化标志 */
static uint8_t s_retrans_cmd_status = 0xFFU; /* P0-a:重传周期 GET_CMD_STATUS 验收结果(0xFF=未采集) */
static uint8_t s_local_ip[4]; /* 本机 IP 缓存(网络序,net_getsockname 用) */
static uint16_t s_dynamic_port = 49152; /* 动态端口分配起始值 */
static volatile uint32_t s_net_generation = 0; /* 网络代次号:网络重建完成时递增(服务据此重建监听) */
@@ -147,31 +146,12 @@ static bool s_mac_is_zero(const uint8_t *p_mac) {
* MSS 真值源为 ch395f.h 的 CH395F_TCP_MSS,DMA 缓冲大小亦由其推导。 */
ch395f_set_tcp_mss(CH395F_TCP_MSS);
/* 设置 TCP 重传参数(必须在 INIT_CH395 之前调用*/
/* 设置 TCP 重传参数(必须在 INIT_CH395 之前调用;P0-a:周期 500→200ms。
* 台架验收 2026-09-22 完成:GET_CMD_STATUS 对 SET 类命令无判别力(500/2000ms
* 行为一致,均为 RESET_ALL 的陈旧 BUSY 残留),值的接受性以手册范围(≤1000ms)
* + 全套件无回归为准——验收探针已移除,结论见《链路延迟测试说明》§10.1 D1 */
ch395f_set_retrans_count(NET_RETRANS_COUNT);
ch395f_set_retrans_period(NET_RETRANS_PERIOD_MS);
/* P0-a 一次性验收(手册无重传参数回读命令):设置命令之后查 GET_CMD_STATUS。
* 实测(2026-09-22 台架,500ms 合法值与 2000ms 超限值行为完全一致):
* SET 类命令不更新状态寄存器——读到的是 RESET_ALL 的 0x10(BUSY) 陈旧残留
* (ch395f_reset 只延时 20ms、不轮询状态);INIT 类长命令才重写寄存器。
* 故 3 次 × 20ms 轮询即可捕获真正的值/参数错误码(0x19/0x1A 等),
* 0x10 只证明"寄存器未更新",不构成值判据——值的接受性以
* 手册范围(≤1000ms)+ 全套件无回归 + 与 500ms 行为一致为准。
* 注意:此处只静默捕获状态,不打日志——本窗口与 testTask 启动日志并发,
* 并发 printf 会因非重入 UART 发送丢整行(2026-09-22 台架实测);
* 打印延迟到 net_stack_bring_up 的 PHY 行之后(net_retrans_status_log)。 */
{
uint8_t rto_st = CH395F_ERR_BUSY;
for (uint32_t i = 0U; i < 3U; i++) {
osDelay(20U);
rto_st = ch395f_get_cmd_status();
if (rto_st != CH395F_ERR_BUSY) {
break;
}
}
s_retrans_cmd_status = rto_st;
}
/* 设置 TCP KeepAlive 参数(必须在 INIT_CH395 之前,单位 ms,必须为 500 的倍数,且 IDLE > INTVL)
* 值来自 net_config.h 的 NET_KEEPALIVE_*(60s/5s/3)*/
@@ -239,34 +219,6 @@ static bool s_mac_is_zero(const uint8_t *p_mac) {
return 0;
}
/*
* 函数功能:打印 P0-a 重传周期芯片验收证据行(一次性)
* 入口参数:无
* 返 回 值:无
* 限定条件:net_init 之后调用;建议放在 net_stack_bring_up 的 PHY 行之后
* (启动日志低并发窗口)——net_init 尾部与其它任务启动日志并发时,
* 非重入 UART 发送会丢整行(2026-09-22 台架实测)
* 函数说明:三分支判读(实测 2026-09-22:SET 类命令不更新状态寄存器):
* 0x00 = 芯片明确报告接受;0x10 = 陈旧 BUSY 残留(无判别力,INFO 级,
* 避免健康启动误触 [ERR] 标记);其它状态码 = 真值/参数错误(ERROR 级)
*/
void net_retrans_status_log(void) {
if (s_retrans_cmd_status == 0xFFU) {
return; /* 本次启动未走 NET 层 bring_up(如硬件层测试模式) */
}
if (s_retrans_cmd_status == CH395F_ERR_SUCCESS) {
DBG_INFO("net_init: retrans %u x %u ms accepted by chip (status=0x00)",
(unsigned)NET_RETRANS_COUNT, (unsigned)NET_RETRANS_PERIOD_MS);
} else if (s_retrans_cmd_status == CH395F_ERR_BUSY) {
DBG_INFO("net_init: retrans %u x %u ms set (status 0x10 = stale residue, inconclusive)",
(unsigned)NET_RETRANS_COUNT, (unsigned)NET_RETRANS_PERIOD_MS);
} else {
DBG_ERROR("net_init: retrans period %u ms REJECTED by chip (cmd status=0x%02X)",
(unsigned)NET_RETRANS_PERIOD_MS, (unsigned)s_retrans_cmd_status);
}
s_retrans_cmd_status = 0xFFU; /* 只打印一次 */
}
/*
* 函数功能:取网络代次号
* 入口参数:无
-11
View File
@@ -74,17 +74,6 @@ typedef struct {
*/
int net_init(const char *ip, const char *mask, const char *gateway, const uint8_t *mac);
/*
* 函数功能:打印 P0-a 重传周期芯片验收证据行(一次性)
* 入口参数:无
* 返回值:无
* 限定条件:net_init() 之后;建议放在 net_stack_bring_up() 的 PHY 行之后
* 函数说明:net_init 在设置重传参数后立即静默查询 GET_CMD_STATUS(手册无回读
* 命令,此状态是"芯片是否接受该周期"的唯一证据);打印延迟到 PHY 行
* 之后,避开启动期多任务并发 printf 丢行
*/
void net_retrans_status_log(void);
/*
* 函数功能:取网络代次号
* 入口参数:无