介绍建立I/O Driver与上层交互的中间模块I/O Hardware Abstraction

电子说

1.2w人已加入

描述

**AutoSAR I/O Hardware Abstraction **概述

I/O Hardware Abstraction在整个AutoSAR中属于ECU抽象层的一部分。在AutoSAR架构中的位置如下面绿色显示的部分所示。I/O Hardware Abstraction并不是仅仅作为一个模块使用,在实际的开发中,通常所有的I/O Driver模块(ADC、DIO、ICU、PWM、OCU等)都可以采用I/O Hardware Abstraction实现与上层应用间的交互和处理。

PWM

I/O Hardware Abstraction是从外围I/O设备(片上或板上)的位置和ECU硬件布局(例如μC引脚连接和信号电平反转)抽象出来的一组模块,不同的I/O设备可以通过I/O信号接口进行访问。I/O Hardware Abstraction的目的是通过将I/OHardware Abstraction端口映射到ECU信号来提供对MCAL驱动程序的访问,实现软件组件的数据完全从物理层中抽象出来,使软件组件设计者不再需要详细了解MCAL驱动程序的API和物理层值的单位。

I/O Hardware Abstraction提供初始化整个I/O硬件抽象的服务。I/O HardwareAbstraction将调用驱动程序的API管理片上设备。MCAL驱动程序的配置取决于SWC所需的ECU信号的数量。

I/O Hardware Abstraction****交互模块

I/O Hardware Abstraction在使用的时候主要处理的是MCAL层的各个模块,I/O HardwareAbstraction可以访问的MCAL层的接口如下所示。

PWM

I/O Hardware Abstraction在与MCAL的交互过程中可以调用所有MCAL的API接口,同时可以接收除了DIO和PORT以外的所有模块的回调函数。

I/O Hardware Abstraction除了调用MCAL中I/O Driver的模块,同时可以调用Communication的Driver接口,比较常用的就是SPI接口,在使用外部的ADC芯片的时候同时会用到相关的SPI通信协议,这个时候I/O Hardware Abstraction可以直接调用在SPI配置的参数和相关的接口实现对外部ADC芯片的电压采集。如下图所示

PWM

I/O Hardware Abstraction还会有系统服务模块相互关联,主要表现为在ECUM中调用相关的初始化函数,调用DET接口实现错误的追溯,调用Bsw Scheduler等。

I/O Hardware Abstraction还可以直接与DCM模块建立交互,用于对ECU相关的数据和信号做诊断处理。

I/O Hardware Abstraction****主要定义参数

I/O Hardware Abstraction采用的是AutoSAR Interface与SWC进行数据交互,处理的信号为ECU的Input/Output Signal,在AutoSAR中Port属于典型的AutoSAR Interface,用于处理ECU的Input/OutputSignal。

一般来说ECU信号与一个典型的Pin相互对应。同时ECU信号在I/O HardwareAbstraction有两个特性,Filter和Age。对于Filter属性一般适用于Input Signal,通过对原始输入信号的Fliter/Debuance处理将Input Signal的Raw值进行转换处理给上层应用模块处理。

对于Age属性,对于Input Signal来说,Lifetime决定了该信号的处理方式,如果为0,则表示该信号要立刻处理,如果大于0,则表示该信号的有效时间。对于Output Signal来说决定信号外发的Delay,如果为0,表示立马将数据写入到相应的寄存器,如果大于0,表示Delay时间到达后操作。

I/O Hardware Abstraction的实现一般需要EcuAbstractionComponentType的实体,同时建立起相关的Port通过RTE与SWC进行交互,除了定义Port还要定义Runnable以及Internal behavior等。I/O Hardware Abstraction可以提供SC Port和SR Port进行数据的交互。在SC Port中一般采用Set Operation和Get Operation进行数据操作,也可以采用Notification或者Callback进行操作。

I/O Hardware Abstraction一般包括多个BSW I/O模块,对于每一个BSW模块一般建立一个I/OHardware Abstraction的实体实现特定的功能。对于特定的功能可以创建调度的函数实现与下层模块的同步,例如可以根据ADC触发转换的时间定义对应的调度函数进行转换数据的读取。

I/O Hardware Abstraction没有具体配置条目,它的实现主要和SWC的实现相似,在使用的时候根据需要定义相关的函数以及交互的接口,实现对MCAL层I/O相关模块的数据处理。

最常用的功能就是将采集到的原始数据转化为直接可以供SWC使用的数据,如将ADC寄存器的值根据硬件转换电路实现真实的物理数值以及做相关的滤波处理;将从SWC接收的PWM的周期和占空比转换为寄存器中对应的时钟参数输出PWM等。

审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分