S100 MCU1 core1能使用以太网吗?

MCU1源码中默认是在core0中执行以太网初始化eth_init,可以由core1接管吗

可以改,但要把以太网整条路径一起迁走,不能只把 Eth_Init 挪到 core1。

依据:官方模块划分里 Eth_Init 归 MCU1(这是相对 MCU0 的划分,不等于必须跑在 core1);MCU1 的 main() 按 GetCurrentCoreID() 分流,core0 做主要外设、log、GIC WAKER、中断亲和性和 FreeRTOS 任务初始化,core1 做 Can5~Can9 数据中断、Cross_Core_Ins3/4/5 使能以及 stop/deepsleep。因此改动都落在开源的 MCU1 工程里,不涉及闭源的 MCU0;但 core1 默认只是 wfe/STANDBY 循环,没有 FreeRTOS 调度,也没有现成的 Eth 收发流程。

落实要点:

  1. PHY 解复位跟着走:官方要求 Eth_Init 之前把 phy reset pin 拉高,原来在 core0 分支的话一并搬到 core1 的调用点,并按原理图确认该控制脚由 core1 操作是否合适。
  2. 收发自己带:默认轮询模式下在 core1 循环里自行调 Eth_Receive / Eth_Transmit / Eth_TxConfirmation,不能依赖 core0 上 shell 驱动的 Eth_Test。走中断的话,S100 的 GMAC 是 153~164(TxCh0~5、RxCh0~5),165~167 为 Sbd/Pmt/Lpi;这组中断不在 MCU0 已使用中断清单里,但公开的亲和性设置只有 Can/IPC/CrossCore,GMAC 中断实际绑在哪个核需要在你工程的 Eth/中断配置里核对。
  3. 别动 core1 原有的 Can5~Can9 中断使能和 power_on_core1/deep_sleep_core1 分支,eth 循环不能把 stop/deepsleep 卡住;公开资料没有说明 Eth 驱动内部是否依赖 FreeRTOS 临界区或信号量,搬之前先确认。
  4. 硬件侧 MCU 域网口是 MCU 接口扩展板上的 U4(RJ45 千兆)。

官方依据:MCU1 main 函数简介、Eth 使用指南、MCU1 开发指南(中断号与中断使用情况)。论坛同类信息:S100 MCU1 双核职责划分、S100 MCU 侧以太网接入。

还有两点定改法:core1 打算轮询还是接 GMAC 中断?以及你用的 MCU SDK 版本是哪个(不同版本 main.c 分支和中断配置会有差异)。