2021-06-07

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Xiaowestwind/article/details/106869819
AUTOSAR

  1. 什么是autosar

AUTOSAR是AUTomotive Open System Architecture,翻译成中文就是汽车开放系统架构。

AUTOSAR是由全球汽车制造商、部件供应商及其他电子、半导体和软件系统公司联合建立,各成员保持开发合作伙伴关系。

AUTOSAR主要标准了3大方面:

  1. 软件接口
  2. 交换格式
  3. 方法论
  1. 为什么用autosar
  1. 汽车ECU数量越来越多:由之前的单控制器,到多控制器,再到域控制器,数量倍增。
  2. CPU越来越复杂:由8位,到16位,再到32/64位,多核
  3. 总线数量和复杂度提升:除了有基本的CAN、MOST、LIN外,还有速度更快的FlexRay和Ethernet。

引入的问题:

这会带来什么问题?

  1. 传统嵌入式不支持完整的硬件抽象
  2. 软件模块化程度有限
  3. 代码可重用性差,更换芯片,代码几乎要重新开始写
  4. 供应商需要提供各种软件来适配OEM和车辆平台版本
  1. Autosar的目标
  1. 整个产品生命周期可维护,车的整个生命周期内软件可以不断更新和升级
  2. 软硬件分离,开发更灵活
  3. 将开发活动从实施转移到配置
  4. 通过制定标准,来提高BSW软件的质量(之前你得花钱请高手实现UDS协议栈,买了AUTOSAR之后,就不需要了)
  5. 竞争不在底层的实现,而是集中在功能上
  6. 降低成本,通过重用提高软件质量,从而降低成本(目前还未体现)
  7. 重用开发方法和工具
  8. 重用基础软件(尤其是中间层,比如CAN协议栈,以太网协议栈等、网络管理、状态管理)
  9. 重用性可以覆盖整个网络节点,甚至可以跨不同的OEM
  1. Auto的缺点
  1. AUTOSAR规范更新升级慢
  2. AUTOSAR规范理解不太一致
  3. AUTOSAR的软件价格高昂
  4. AUTOSAR软件的重用性面临挑战
  5. 初始投资

你以为买了AUTOSAR软件包就完事了?不,你可能还要买AUTOSAR工具链供应商的支持服务,培训服务,这些都是几十万级别的。前期需要做大量技术积累之后,才能比较正常的开展工作。

  1. 复杂的文档标准
  1. 软件架构

 

      1. 微控制器驱动
  1. GPT:General Purpose Timer Driver,通用定时器,为操作系统或者其他基础软件模块提供计时功能。GPT驱动可以提供启动和停止硬件定时器、得到定时器数值、控制时间触发的中断、控制时间触发的中断唤醒等功能。GPT通道可以设置为连续模式(CONTINUOUS)或单次模式(ONESHOT)。
  2. Watchdog:看门狗驱动,除防止程序跑飞基本功能外,功能安全还使用看门狗进行程序流监控(Deadline and Program Flow Monitoring),比如监控程序执行时间、执行顺序等。
  3. MCU:Microcontroller Unit Driver,芯片时钟、休眠、复位设置。
  4. Core Test:芯片内核测试,提供上电或者周期检测两种方式,检测结果能触发中断。
      1. 存储器驱动
  5. Flash Test & Ram Test:存储器测试驱动。
  6. Flash/Eep Driver:提供基本的存储器操作,如初始化,擦除,写入,读取等。
      1. 通信驱动
      2. I/O驱动
  7. Port:pinmux配置。
  8. ADC:采样模拟信号,转成数字信号。
  9. DIO:Digital Input/Output Driver,数字输入输出驱动,在AUTOSAR中,将一个单片机数字I/O引脚(Pin)定义为DIO通道(DIO Channe可把若干个DIO通道通过硬件分组成为一个DIO端口(DIO Port),DIO端口中相邻几个DIO通道的逻辑组合则称为DIO通道组(DIO Channel Group),在配置过程中可以设置寄存器位蔽值、位偏移量等,从而对多个数字I/O引脚同时进行读/写操作。
  10. PWM:生成周期和频率可变的方波
  11. ICU:Input Caputre Unit,输入捕获单元,捕获方波周期或者捕获方波电平持续时间。
  12. OCU:Output Compare Unit,输出比较单元,基于定时器单元的比较模块。
  1. SWC介绍
    1. SWC简介

SWC,全程software Components,软件组件,可以理解为软件模块,是功能模块的一个封装,比如汽车,比如汽车的电动窗的操作就可以是一个SWC。

SWC,是AUTOSAR APP层的重要组成部分,分布如下:

 

    1. SWC类型

SWC的分类的两种方法,一种是按结构大小来分,一种是按照SWC的用途来分。

  1. 按照结构大小分:原子(Automic)SWC、组合(Composition)SWC,在Vector的达芬奇软件中新建SWC时可以选择:

 

原子SWC意思是最小的不可分割的软件模块。

组合SWC中包含原子SWC,起始就是包含和被包含的关系,组合SWC只是逻辑上的一个实现,实际不会占用任何内存。

 

  1. 按照用途分

APP应用SWC(Application Swc),即普通SWC。

传感器SWC(SensorActuator SWC),传感器执行器SWC一类,特殊的SWC,用于处理传感器和执行器

Cailtration SWC 用于和外部设备共享调教参数

Nvblock SWC 与NVRAM或者内存进行交互时使用

I/0 Hardware Abstration 可以直接访问硬件抽象层。

Complex Device Driver SWC复杂设备驱动SWC,此SWC用于为AUTOSAR不支持或者对一些操作时序要求很高的操作,需要为外部设备开发一个复杂设备驱动程序(CDD)。

Service Proxy SWC 服务代理SWC,它充当向一个或者多个远程ECU提供内部服务的代理,他的主要用途是整个系统中分发车辆的模式信息。

用的最多的是APP swc和Complex Device Driver SWC。

  1. Ports简介
    1. Ports概念

 

在APP层面可以分成下面这些SWC

 

这是一个典型的SWC级联的工作场景,那SWC和SWC之间需要通信,通信需要用到端口Ports。

 

AUTOSAR中定义了两种类型的端口,后面详细讲述这两种端口:

  1. Sender/Receiver
  2. Client/Server

还有一种分法:

  1. 需求端口,Require Ports,R-Ports,有需求的端口,当要接收或要求数据或期望来自其他实体的数据时,使用此类型的端口。
  2. 提供端口,Provide Ports,P-Ports,提供服务的端口,当要传输数据或SWC是向其他实体提供某些服务的提供者时,使用此类型的端口。
  3. 需求/提供端口,Provide Require Ports,PR-Ports,这只在AUTOSAR4.0以后才有。
    1. 2. Sender/Receiver
  1. Sender/Receiver通过RTE来传输数据(对数据一致性做了处理,比如同时访问这种问题),可以包含多种数据类型,
  2. 简单数据类型(int、float)
  3. 复杂数据类型(arry、record)
  4. 通信方式可以是:1:n(1对多,1个模块发送,多个模块接收)或者n:1(多对1多个模块发送,1个模块接收)

代码:

//Receiver

Rte_Read_Door_DoorOpen()

 

//Sender

Rte_Write_Door_DoorOpen()

    1.  Client/Server

模块之前相互调用,Client调用Server,比如A SWC调用B AWC,A就具有一个客户端Client,B具有个服务端Server,如下图:

 

  1. 一个SWC调用另外一个SWC,代码接口如下

Rte_Call_State_OpenDoor()

  1. Runable介绍
    1. Runable概述

Runable,顾名思义,可运行实体,可以运行的代码,起始可以理解为C语言中的一个函数,可被运行的函数,里面放了实际功能的实现。

举个例子,车速显示在仪表:

 

计算实际车速的SWC为例,这个SWC通过旋转值极端出来的实际的车速发送的到CAN总线上,在AUTOSAR的SWC生成的代码框架如下图,Update_SpeedValue函数就是一个Runable(可以运行的实体),运行条件在达芬奇工具中可以配置,这里是20ms为周期运行一次,除了周期触发Runable的条件外,还有其他触发Runable运行的条件。

 

    1. Runable运行的条件
  1. 数据接收事件Data Received event:一个Ports的数据被接收到了
  2. 定时事件 Timing Event:定时器溢出
  3. 操作调用事件Operation Invoked Event被其他模块调用,作为Server runnable
  4. 模式切换事件Mode Switch Event:,每当更改ECU模式时,都可以触发可运行状态以执行某些工作。例如ECU关机模式,如果ECU需要在关机前执行某些工作,则该事件应与将在关机前执行工作的可运行程序挂钩。
  5. 数据接收错误事件Data Received Error Event:同样,不言自明,当数据接收错误时,都可以调用可运行对象以对此类事件采取措施。
  6. 数据发送完成事件Data Send Completed Event:如果成功发送数据以对数据传输完成采取进一步措施,则此事件将触发可运行事件。

这些触发方式在Vector Davinci Develop工具软件中可以配置,界面如下:

    1. Runable类型

大致分为3种:

  1. Init Runnable:ECU初始化的时候,只被调用了一次,其实说白了就是初始化函数。
  2. Periodic Runnable:定时器周期触发Runable的运行,必须设置周期时间。
  3. Server Runnable:用于实现Ports中的Client/Server,就是那个被调用的函数。
    1. Automic SWC、CompositionSWC、Runable、Ports关系

截止到目前,已经介绍了APP层的AutoMic SWC、和CompositionSWC 、Runable、Ports,他们都有什么关系,下图说明:

 

 

 

 

 

 

 

 

 

 

 

上一篇:*安全资讯精选 2018年第六期 国家互联网信息办公室公布《微博客信息服务管理规定》;中国信息安全测评中心正式发布《中国信息安全从业人员现状调研报告(2017年度)》


下一篇:*安全资讯精选 2017年第八期 等保检查工作、网络安全威胁监测与处置办法细化,监管有据可依