移除 P0-a 验收探针(台架验收完成),开机省去 60ms 状态轮询与证据行
This commit is contained in:
@@ -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; /* 只打印一次 */
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数功能:取网络代次号
|
||||
* 入口参数:无
|
||||
|
||||
@@ -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);
|
||||
|
||||
/*
|
||||
* 函数功能:取网络代次号
|
||||
* 入口参数:无
|
||||
|
||||
Reference in New Issue
Block a user