修复 P1-7:MAC 写入顺序改为 INIT_CH395 之前
- 手册 §9.2.1:SET_MAC(步骤①) 必须先于 INIT_CH395(步骤⑤);SET_MAC 写 芯片 EEPROM,INIT 从中加载 MAC——原顺序反了则本次上电 MAC 不生效 (回落芯片内置/上次值),UI 显示与设备在线身份不符 - net_socket.c net_init():SET_MAC 移到 ch395f_init() 之前(对齐步骤①) - ch395f.c:四个 SET(MAC/IP/GWIP/MASK)限定条件注释由"芯片已初始化" 订正为"必须在 ch395f_init() 之前调用" - net_socket.h / BSD_Socket_API_函数调用关系.md:同步顺序描述 - CH395F_Trap_Records.md:新增 Trap 24 沉淀根因与修复 - 待处理内容.md:P1-7 销项(§1/§2 阶段 A/§3.1/§4);阶段 A 清空后重编号 - 验证:Keil 构建 0 错 0 警;pre-commit 17/17 全通过
This commit is contained in:
@@ -281,6 +281,15 @@ static bool s_mac_is_zero(const uint8_t *p_mac) {
|
||||
ch395f_set_keepalive_intvl(NET_KEEPALIVE_INTVL_MS); /* 5 秒探测一次*/
|
||||
ch395f_set_keepalive_cnt(NET_KEEPALIVE_CNT); /* 最多探 3 次*/
|
||||
|
||||
/* 设置 MAC(手册 §9.2.1 步骤①:SET_MAC 必须在 INIT_CH395 之前——SET_MAC 写芯片
|
||||
* EEPROM,而 INIT_CH395 会初始化/加载 MAC;顺序反了则本次上电芯片仍用旧 MAC,
|
||||
* UI 配置的 MAC 不生效(回落芯片内置/上次值),设备在线身份与 UI 显示不符。
|
||||
* P1-7,2026-10-04);NULL 或全零 = 保持芯片内置 MAC,不下发;
|
||||
* 写 EEPROM,每上电重放同值幂等 */
|
||||
if (mac != NULL && s_mac_is_zero(mac) == false) {
|
||||
ch395f_set_mac_addr((uint8_t *)mac);
|
||||
}
|
||||
|
||||
/* 设置网络参数(必须在 INIT_CH395 之前调用 */
|
||||
if (ip != NULL) {
|
||||
uint8_t ip_arr[4];
|
||||
@@ -307,12 +316,6 @@ static bool s_mac_is_zero(const uint8_t *p_mac) {
|
||||
return NET_ERR_RETURN_1(NET_ERR);
|
||||
}
|
||||
|
||||
/* 设置 MAC(须在协议栈初始化之后,限定条件"芯片已初始化";写芯片 EEPROM,
|
||||
* 每上电重放同值幂等);NULL 或全零 = 保持芯片内置 MAC */
|
||||
if (mac != NULL && s_mac_is_zero(mac) == false) {
|
||||
ch395f_set_mac_addr((uint8_t *)mac);
|
||||
}
|
||||
|
||||
/* 多 Socket 模式:为 Socket 0~7 各分配独立收发缓冲(必须在 OPEN_SOCKET 之前) */
|
||||
/* 手册(§5.45):48 块 × 512B = 24KB;上电芯片默认仅给 Socket 0~3 分配(接收 8 / 发送 4 块) */
|
||||
/* Socket 4~7 为 NULL,用到 8 个 Socket 必须重分配;单 Socket 块数为固定布局(ch395f.h,2026-09-22 起与 MSS 解耦) */
|
||||
|
||||
Reference in New Issue
Block a user