一、AutoSAR规范
- 功能层软件接口规范
- 基础层软件接口和行为规范
- 方法论和数据交换文件格式规范
目的是建立一套优秀的软件底层代码,使得各大主机厂都能通用,同时使汽车软件开发更加标准化、规范化、安全化、快速化和经济化。
![f70c394b1f3605117535e9dd2799709a.png](https://i-blog.csdnimg.cn/blog_migrate/5c93a1a0f8599b2ee601303ef4b1e6d0.jpeg)
二、AutoSAR架构
首先就能看出AutoSAR主要分为3个层级:功能层,也就是应用软件层(AppL);实时运行环境(RTE)和基础软件层(BSW),将自己写的代码放在功能层,功能层通过实时运行环境(RTE)调动资源,同时将应用层和基础软件层隔离,基础软件层是将硬件做封装,一直封装到一个标准的操作系统的状态,以便上层可以标准化调用系统服务。
![81bb38317e3c84e3ced3e210a01ab171.png](https://i-blog.csdnimg.cn/blog_migrate/f0f5d97d085627988ce0530bfd9b3f1c.jpeg)
应用软件层:
该层是由一个一个SWC组成的,每个SWC咱们可以理解为一个.c文件,而整个应用软件层就是一个文件夹。用下面这张图应该很好的说明了对应关系:
图中右边的工程只是为了大家理解建立的一个样板,与Vector的实际工程还有很大区别,将会在后续章节中讲到composition SWC和其他更加详细的说明会在SWC章节中讲到
可以看出:这里的整个工程就是我们的AutoSAR架构,而其中的AppL、RTE和BSW都分别对应一个文件夹,而我们的SWC组件就是一个一个的.c文件(和.h)。
![2067176314cb568e91c184c3aa6d294b.png](https://i-blog.csdnimg.cn/blog_migrate/55c515e87a922bfa1a85f24c49c40157.jpeg)
RTE的任务:
让功能层独立于具体ECU映射关系
- 功能
- 提供ECU之间或者ECU内部通信
RTE类似接线员的工作,如图:
![ba0d187cfcc5901db74d4dd57a528b15.png](https://i-blog.csdnimg.cn/blog_migrate/9b5f6ac155c0cceeb2106b04bf592682.jpeg)
AUTOSAR基础软件
![11d7ba0ab5493b0b4b9065681a279beb.png](https://i-blog.csdnimg.cn/blog_migrate/ac5f4fc8c9924ba0d35b21f072e16697.jpeg)
- 服务层:这里有是更加高级的一层了,服务层里是包含操作系统(OS)的。OS将使用ECU抽象层的Api,再对上层暴露出服务接口,其实就是嵌入式实时操作系统(RTOS)所作的工作。
- 任务
- 给功能层提供服务
- 功能
- 通信管理,诊断管理,网络管理…
- ECU管理,操作系统,非易失存储管理…
![46ae6ab8af54c7cb1f1216d34126cc94.png](https://i-blog.csdnimg.cn/blog_migrate/45eec432be00b1f5b6955592221c59fe.png)
ECU抽象层:如果说MCAL只封装了芯片,那么ECU抽象层就是将硬件上所有的硬件都进行了封装。比如我们的控制器上有一个主芯片英飞凌的TC275,还有采样电路,电源电路,CAN电路等等。而MCAL就是封装了芯片上有的功能。而ECU抽象层就是将所有的这些都做一个统一的封装。所以不管硬件是如何实现的,这里封装后,也形成了统一的Api
- 任务
- 让上层模块独立于具体ECU硬件
- 功能
- 片外设备驱动:收发器驱动,外部看门狗驱动…
- 片内或者片外设备的接口层
![9a5487e59ed34660fa085840734892fc.png](https://i-blog.csdnimg.cn/blog_migrate/e72b9ec0add18a106fd680c9da86f51e.png)
微控制器驱动层:可能用过STM32的童鞋应该都知道库的概念,硬件抽象层又叫MCAL,就是将芯片的寄存器操作都封装成一个AutoSAR规定的统一的库Api。就是说这套Api是不同厂商都支持的,但是底层怎么实现,就是芯片厂商的事了。同时也有软件工具EB,可以通过界面配置MCAL功能
- 任务
- 让上层模块独立于微控制器
- 功能
- 片内设备驱动
![e4733c2adf7fcee3f0078ecd8685aa1d.png](https://i-blog.csdnimg.cn/blog_migrate/17cdf0854ae131bdae0a3bc998f08cbf.png)
复杂设备驱动:又叫做CDD,主要工作是将AutoSAR未定义的一些功能封装起来,给应用层提供接口来调用这些功能。
- 任务
- 将AUTOSAR未定义内容实现到AUTOSAR软件架构中
- 功能
- 将传感器或者执行器驱动实现到AUTOSAR软件架构中
- 对于实时性要求很高的应用,不通过OS,直接访问硬件资源
- 比如:燃油喷射控制,胎压监测…
![4a30e73aedbf9bd7e3f3275f282fdcec.png](https://i-blog.csdnimg.cn/blog_migrate/ba48d5b1549f384c797840998e75b4ed.png)