前言
IoHwAb原理应用和配置步骤讲解,附PDF版下载(限时)。
1.概念和应用
平时我们常见的IoHwAb这个名称,就是I/O Hardware Abstraction的缩写。从字面理解,它就是叫I/O硬件抽象层,就是用来访问底层I/O驱动的。
从架构图上看,IoHwAb在这个位置:
但是,这里要注意了,IoHwAb是ECU Abstraction Layer的一部分,但它也不是一个单独的模块,而是一组模块。
AUTOSAR定义这个IoHwAb并非旨在标准化此模块或模块组。相反,它旨在成为实现其与其他模块的功能接口的指南。
IoHwAb的目的是通过将IoHwAb端口映射到 ECU 信号来提供对 MCAL 驱动程序的访问。提供给软件组件的数据完全从物理层的值中抽象出来。因此,软件组件设计人员不再需要有关 MCAL 驱动程序的 API 和物理层值的单位的详细信息。
AUTOSAR_SWS_IOHardwareAbstraction
换句话说,IoHwAb是对底层驱动的抽象,让上层的设计者不要太关注底层的细节。
因此,每个ECU的需求和功能都不一样,所以这个IoHwAb的实现是跟着ECU走的,而无法做成像其他模块那样的标准化,因为软件组件对基本软件的要求必须适合于某个MCAL实现的功能。
IoHwAb位于MCAL驱动程序上方。这意味着 IoHwAb将调用驱动程序的API 来管理片上设备。MCAL 驱动器的配置取决于 SWC 所需的 ECU 信号质量。例如,当硬件Pin脚发变化时,可能需要发出通知(例如上升沿、下降沿)。系统设计人员必须配置 MCAL 驱动程序以允许给定信号的通知。通知由 MCAL 驱动程序生成,并在 IoHwAb中处理。
讲了这么多,还是用一个图解释更合适。
从这个图也可以看到,实际上IoHwAb是可以访问所有的MCAL驱动的。但实际上,像GPT这种的话,不会用IoHwAb的方式访问,CAN/LIN/Ethernet这些也不会用IoHwAb来访问。
也许,你会问,IoHwAb可以用来访问Communication Driver吗,例如SPI,答案是肯定的。
那么UART和IIC呢?因为这两个驱动没有在MCAL标准化,直接在CDD(Complex Device Driver)层实现就可以了,不需要用到IoHwAb。
除了MCAL驱动,IoHwAb可以访问System的接口吗?也是可以的。
另外,以下是IoHwAb的头文件关系和接口关系图。
2. 实战配置
IoHwAb的配置,跟CDD以及普通的SWC配置是类似的。
方法1:
(部分内容已省略……)
请关注同名公众号查看。