AUTOSAR BSW标准解读 – IO抽象层

发布: Edward  •  分类: AUTOSAR  •  June 16, 2017, 9:40 p.m.  •  编辑

上一篇AUTOSAR的文章中,我们讨论了宏观结构上的AUTOSAR分层,这篇文章我们来一起讨论一下,BSW中的IO抽象层,这也是BSW中最为简单的一部分内容。我们先来看下边这张图,从图中我们清晰的看明白IO抽象层所处的位置。

IoHwLayer

什么是IO抽象层

IO抽象层是ECU抽象层的一部分,它并不像其他ECU抽象层一样(比如COM 硬件抽象,Memory硬件抽象等)会提供接口给服务层使用(当然IO抽象层的接口也有可能跟其他BSW模块进行交互),而是直接连接到RTE,并提供接口给SWC。IO抽象层是和特定的ECU实现紧密相关的,狭义来讲它提供了对ECU Pin脚的抽象(同时提供了诊断功能)。它也并不是针对某一个底层模块,而是多个底层模块的集合,只要是直接给SWC提供ECU硬件接口的都属于这一层,它可以是ECU AD信号读取接口,可以是ECU 离散输入输出操作接口,还能够是操作ECU ASCI芯片资源的SPI接口,这一部分BSW软件在不同的ECU上会有很大的不同,因此AUTOSAR标准并没有(也不可能)将它标准,而仅仅是提出一个实现指导,对应的AUTOSAR标准文档为:AUTOSAR_SWS_IOHardwareAbstraction.pdf

IO抽象层的功能

  1. IO抽象层的初始化和反初始化函数由EcuM来管理调用。
  2. IO抽象层可以包含一个或多个处理主程序(根据不同的驱动可以分类),这些处理主程序可以被BSW调度器调度;
  3. IO抽象层支持使用Nofification或者Callback;
  4. IO抽象层可以有两种调度方式,Runnable方式和BSW调度方式;
  5. IO抽象层也是通过各种Provides和Requires端口与SWC交互的
  6. 为了根据不同信号的不同的实时性要求,IO抽象层引入了Age Attribute的概念,对于输入信号,这个属性代表IO抽象层所读取回来的数据的有效时间,对于输出信号,这个属性代表使用IO抽象层操作输出的时候的延时时间,熟悉嵌入式软件设计的人可能更为熟悉的概念是立即操作(IMMEDIATE)和缓存操作(BUFFERED),当Age Attribute为0是代表操作为立即错误,当它为大于0是,代表采用缓存操作时可以允许的最大的延时;
  7. IO抽象层需要对硬件提供保护,例如检测输出的状态,出现短路过温的时候关闭输出,但是故障以后的恢复逻辑只能在SWC中而不在IO抽象层中;
  8. IO抽象层是随着不同的ECU不同的,非AUTOSAR标准的模块,因此在AUTOSAR系统中又被称为Integration Code;

与其它BSW的交互

[MCAL]根据IO抽象层的需求来看,它需要向SWC提供对所有MCAL驱动访问的功能,我们来看一下怎么阅读下边这张AUTOSAR提供的IO抽象与MCAL交互汇总表。

MCAL_IoAbstract

这张表表示了从IO抽象层到MCAL的调用关系,例如:

  • IO抽象层会调用ADC驱动的API,IO抽象层会调用DIO驱动的API
  • IO抽象层会收到GPT驱动的通知,IO抽象层会收到ICU驱动的通知
  • IO抽象层不会收到DIO驱动的通知

[ASIC]如果MCU有外围芯片,需要通过通讯来访问(例如:SPI,I2C),IO抽象层需要提供这种访问能力,所有的这些ASIC芯片操作都需要通过IO抽象层,比如外部ADC芯片,预驱芯片等,这种交互方式可以从下边这个图一目了然的看出来。

ASIC_IoAbstract

[System Service]IO抽象层可以和这几个系统服务进行交互:EcuM(初始化函数),DEM,DET,BSW Scheduler;

[DCM]IO抽象层可以向DCM提供接口,用于SWC的功能性诊断。

总结

IO抽象层由于高度依赖于ECU的功能和设计,因此AUTOSAR没有标准化这部分软件的具体功能,AUTOSAR BSW软件供应商也就无法提供者一部分内容的软件,这部分功能的实现跟一般的SWC类似,在系统设计的时候需要设计所有的Port口,并由ECU开发者将这些Port口一一实现。

标签: Architecture Automotive AUTOSAR Software 软件构架 汽车 软件

评论(0)

暂无评论

欢迎留言

This template was modified by Edward