原副标题:导航调制解调器此基础篇之EthIf
Adas与ECU之吾见
知圈 | 进“溜冰车身群”请加微yanzhi-6,附注车身
序言
具体来说,答我们两个小小的难题,你确切:
你晓得EthIf组件的主要就促进作用是甚么吗?
EthIf与调制解调器驱动器,调制解调器接收器,调制解调器交换机都有甚么样亲密关系呢?
Ethif的常用表达式USB有甚么样呢?
那时,他们就来一同积极探索并提问那些难题。为的是易于我们认知,下列是责任编辑的主轴概要:
节录
正像他们介绍的CanIf组件那样,做为CAN接收器,CAN驱动器的标准化下层ECU抽象化,能让他们同时实现CanIf下层的应用领域组件与下层硬体解耦,大大降低了应用领域软件的可扩展性。
特别针对导航调制解调器来说也是反之亦然的规矩,AUTOSAR组织机构依照反之亦然的认识论同时实现了导航调制解调器协定栈的应用领域软件开发原产,当中EthIf与CanIf促进作用与话语权十分,都是为的是同时实现下层硬体如调制解调器驱动器与调制解调器接收器的下层抽象化,易于软硬体解耦,大大降低了应用领域软件的可F83E43Se度。
接下来将从AUTOSAR EthIf组件的层次亲密关系,主体功能以及常用表达式USB三个方面展开给我们进行讲解。
组件层次亲密关系
依照AUTOSAR标准文档规范,有关EthIf组件在整个应用领域软件开发的具体位置描述如下图1所示:
图1 EthIf与调制解调器协定栈亲密关系
如上图所示,可以得出如下两个基本结论:
一个调制解调器协定栈中可以存在多家供应商的调制解调器驱动器,同时特别针对每家供应商的驱动器进行单独控制,互不影响;
同一供应商的调制解调器控制器可以存在多个,但使用的调制解调器驱动器驱动可以仅使用同一套;
上述三家不同供应商的调制解调器驱动做为标准AUTOSAR MCAL的一部分,能完全同时实现与下层硬体的解耦;
调制解调器驱动器亲密关系
特别针对多家供应商调制解调器控制器并存的情况,AUTOSAR EthIf组件基于该种情况来同时实现了标准化管理与同时实现,能大大降低同一驱动的F83E43Se效率。
如下图2所示,明确表示出了特别针对调制解调器驱动器不同的前提下EthIf应用领域软件组件与调制解调器驱动器驱动两者如何进行Mapping的亲密关系。
通过分析发现,它们两者之间具备如下的索引Mapping 亲密关系,该Mapping亲密关系将能保证EthIf组件能唯一,准确的控制各个驱动器组件,具体的Mapping规则如下:
EthIf 应用领域软件组件特别针对每一个调制解调器驱动器在其内部进行全局唯一的编号索引,索引从0开始,如EthIf_CtrlIdx所表示的编号所示,全局唯一;
特别针对同一类型的调制解调器驱动器,对应的调制解调器驱动在其应用领域软件内部组件进行从0开始的索引编号,如下图具备两个相同类型的调制解调器驱动器,因此索引编号分别为0与1,与EthIf组件的全局唯一索引并不冲突;
特别针对不同类型的调制解调器驱动器,其对应的驱动组件在其内部对应的索引也应该从0开始,无论是否并存其他类型的调制解调器驱动;
图2 EthIf组件与调制解调器驱动器亲密关系
调制解调器接收器亲密关系
如下图3所示,调制解调器接收器与EthIf组件存在如下相应的Mapping亲密关系,具体可以总结为如下几点:
同一类型的调制解调器接收器可以使用同一个调制解调器接收器驱动(简称Phy驱动);
不同类型的调制解调器接收器应采用不同的调制解调器接收器驱动;
图3 EthIf组件与调制解调器接收器驱动亲密关系
如下图4所示,对照调制解调器控制器与EthIf的亲密关系,同理可以看出调制解调器接收器与EthIf之间的index Mapping亲密关系:
在调制解调器接收器驱动如果存在多个相同类型的接收器,应当在其内部依照从0开始进行编号表示其唯一性;
图3 以太网接收器编号亲密关系
调制解调器Switch亲密关系
如下图4所示为调制解调器Switch与EthIf之间的Index亲密关系:
特别针对相同类型调制解调器交换机都使用同一驱动;
同一调制解调器交换机内部的Port也会依照index从0开始计数,不同调制解调器交换机内部的Port编号彼此独立,互不干扰;
图4 调制解调器Switch编号亲密关系
组件主体功能对于AUTOSAR标准中的EthIf组件做为下层硬体驱动的抽象化层,具备如下两个基本功能:
完成通信初始化功能,为数据收发创造此基础条件;
具备数据发送功能,提供USB给到下层应用领域来同时实现数据的正常发送;
具备数据接收功能,提供USB给到下层应用领域来同时实现数据的正常接收;
具备下层Phy Link状态变化管理功能,能及时监控下层Phy的状态;
接下来将从EthIf组件的上述四个基本功能展开进行讲述,让我们进一步介绍EthIf组件的基本工作原理。
通信初始化功能
如下图5所示,描述了EthIf与下层驱动建立通信的必要前提,即需要通过调用EthIf_Init表达式来同时实现Eth驱动器与Eth接收器的初始化;
图5 Eth硬体初始化过程
如下图6所示描述了EthSM,EthIf,Eth,EthTrcv四者之间的亲密关系,EthSM通过调用EthIf组件的表达式EthIf_SetControllerMode来同时实现调制解调器驱动器的初始化,同时Eth组件将通过回调表达式将是否初始化成功的标志告知EthSM组件。
紧接着EthSM将调用EthIf组件的表达式EthIf_SetTransceiverMode表达式来同时实现Eth接收器的初始化,Eth接收器通过回调表达式将初始化是否成功的标志告知EthSM组件;
图6 EthIf组件通信初始化过程
数据发送功能
EthIf组件的数据发送功能分为两者模式,一种是Polling模式,另外一种就是Interrupt模式,一般来说都优先采用中断模式来满足系统实时性要求。
如下图7为Polling模式,在Polling模式中可以看到在EthIf_MainfunctionTx表达式中会去轮询是否发送成功的标志,这个也是Polling模式的典型特征。
Polling模式
图7 EthIf数据发送Polling模式
Interrupt模式
如下图8所示为调制解调器数据发送的中断模式,中断模式相比Polling模式可以看出并没有使用到EthIf_MainfunctionTx表达式,而是使用Eth组件的中断表达式来确认发送是否成功。
图8 EthIf组件数据发送中断模式
数据接收功能
同理相比数据发送功能,EthIf组件的数据接收功能也可以分为Polling模式与中断模式两种,如下图9所示为EthIf组件的数据接收Polling模式。
如下图9所示,如果EthIf组件数据接收采用Polling模式,那么就需要使用到EthIf_MainfunctionRx表达式,在该表达式中去调用 EthIf_RxIndication来告知下层数据已成功被接收,使用该模式会大大降低数据接收效率,一般接收优先采用中断模式。
Polling模式
图9 EthIf组件数据接收Polling模式
Interrupt模式
如下图10所示为EthIf组件的数据接收中断功能,在该模式中可以看到通过Eth组件通过中断表达式来进而告知下层数据已被接收。
图10 EthIf组件数据接收中断模式
Link状态变化管理功能
如下图11所示,描述了在EthIf_MainfunctionRx表达式中通过调用EthTrcv组件的EthTrcv_GetLinkState来告知下层应用领域接收器罪行的Link状态。
图11 EthIf组件Link状态变化监控
VLAN支持
EthIf组件必须支持VLAN功能,该模式将会将VLAN归为虚拟驱动器这一类,调制解调器驱动以及调制解调器接收器将仅特别针对真实的驱动器与接收器,不考虑VLAN这一特性。
如果没有有效的VLAN ID设置,那么虚拟驱动器将表示没有打上标签的VLAN,同时EthIf组件将使用Eth 驱动提供的Buffer来支持VLAN功能。
Wake up支持
EthIf组件须通过配置 EthIfWakeUpSupport来同时实现,同时Wakeup有效的前提是 下层的调制解调器收发器(Phy)需要支持休眠唤醒功能才行。
常用表达式USB
为的是易于我们调试方便,小T将EthIf组件常用的表达式总结归纳如下:
图12 常用表达式USB说明