一 限制
PORT:PORT模块用于在Eth模块使用端口引脚之前配置具有所需模式的端口引脚。
DET:DET模块用于启用开发错误检测。使用的API函数是 Det_ReportError()。开发错误检测的激活或停用可使用 Eth_DevErrorDetect 配置参数进行配置。
Common:Common模块包含所有MCAL模块所需的通用文件和定义。
RESOURCE:RESOURCE模块用于选择微控制器衍生产品。
OS:操作系统模块用于操作系统配置。MCAL模块需要操作系统来检索应用信息。
MCU:MCU 驱动程序为其他 MCAL 软件模块所需的基本微控制器初始化、关断功能、复位和微控制器特定功能提供服务。

ETH送和接收方向的FIFO数量相同,不同芯片分别为:J6B为4,J6E/M 为6,J6P/H 为8。
不支持传输超过所使用控制器可用缓冲区大小的数据,较长的数据必须使用Internet协议(IP)和传输控制协议(TCP)传输。单个接收帧的长度(需加上 14字节的以太网帧头和4字节的FCS)必须小于或等于RX buffer的配置长度,且长度必须为8字节的整数倍。
模块时钟频率为250M,PTP时钟周期为20ns。
在MCU休眠场景场景下,SW和PHY外设会断电,因此,需要在断电前停止ETH传输。
二 描述
按照AUTOSAR规范为上层(Ethernet Interface)提供一个可包含多个控制器组成的硬件独立接口。该接口对于所有控制器都是统一的。上层(Ethernet Interface)可以以统一的方式访问底层总线系统。接口提供初始化、配置和数据传输功能。

2.1 接口
void Eth_RxIrqCallback(const uint8 CtrlIdx, const uint8 DMAChannel)
void Eth_TxIrqCallback(const uint8 CtrlIdx, const uint8 DMAChannel)
void Eth_MainFunction( void )周期接口
当ETH TX轮询模式时,需使用EthIf调度函数:
EthIf_MainFunctionTx()和EthIf_MainFunctionRx_xxx()
注意:发送过程中 Eth ProvideTxBuffer()和 Eth Transmit()成对出现,且不能打断
三 配置


• 若需使用多核,EthMulticoreSupport要被使能。
• IPv4/ICMP/UDP/TCP校验和卸载特性需要同时被开启/关闭。
• MAC地址过滤器API可以通过EthUpdatePhysAddrFilterApi勾选框使能或禁用。

根据硬件上信号接口RGMII的设计,应将MAC类型EthCtrlMacLayerType选为ETH_MAC_LAYER_TYPE_XGMII,子类型EthCtrlMacLayerSubType选为REDUCED。速率支持100M/1000M,这里将EthCtrlMacLayerSpeed选为ETH_MAC_LAYER_SPEED_1G。
可以通过使能或禁用接收/发送中断来选择中断或轮询的工作模式。
MDIO的接口类型clause22/clause45可通过EthCtrlEnableMii/EthCtrlEnableMmd来使能或禁用。
Ecuc分区只在多核配置场景下需要被引用,此处为禁用状态。

出口端FIFO共有6个,每个FIFO的buffer可单独配置。每个buffer的长度范围为64-1536(Bytes),推荐配置为1536(Bytes),长度必须为8字节的整数倍。Buffer个数的可配范围为4-2048。Buffer的总大小应小于SRAM为ETH模块分配的空间大小。出口端FIFO的索引号范围为0-5。每个FIFO的发送回调函数为Eth_TxIrqCallback。

FIFO的优先级可配范围为0-7。优先级为非必要配置项,若FIFO不设置优先级,则所有FIFO的默认优先级为0。
这里若配置了两个FIFO,可将FIFO_0的优先级配置为0,为优先级较高的模块使用,将FIFO_1的优先级配置为1,为优先级较低的模块使用。

可通过配置参数EthDuplexMode选择全双工/半双工的工作模式,推荐使用全双工。
在EthGlobalTimeSupport被使能的条件下,时间戳精度需要被定义,单位为纳秒。

调度器为必要配置项,MAC支持Qos多种调度算法,推荐使用SP严格优先级调度。
参数EthTotalPacketsPerCycle只在调度算法为WEIGHTED_ROUND_ROBIN时可配



四 时序

4.1 polling
TX

RX

4.2 Interupt
TX

RX

五 多核
以太网驱动支持多核,驱动及其配置元素可通过“EthEcucPartionRef”被映射到EcuC分区。当启用多核时, 以下假设将被执行:
模块初始化函数Eth_Init使用用于特定核的配置结构作为输入;
在模块内部,将使用API ETH_GET_PARTITION_IDX返回的PartitionIdx来索引EcuC分区,以引用合适的配置元素;
每个中断应被路由到相应的核。
启用多核时,需要注意:
确保宏ETH_MULTICORE_ENABLED已打开;
在列表EthEcucPartitionRef中至少引用一个EcuC分区。
5.1 配置



