汽车电子学习笔记—AutoSAR概述

  • 1、概述

Automotive Open System ARchitecture,汽车开放系统架构

  • 2、架构
    1)架构图

    2)详细描述

  • 应用软件层(AppL)
    由一个个SWC组成的,如车窗,锁,车灯等,每个SWC咱们可以理解为一个.c文件

  • 实时运行环境(RTE)
    1)可以理解成一个中间层,负责各模块中转调用和管理,将BSW和SWC做隔绝,使SWC与ECU的映射无关
    2)将一个SWC的信息通过RTE连接到其他SWC或者BSW上
    4)在Vector的工具链中,RTE是自动生成的
    5)作用:

    • 提供 跨ECU / ECU内部 的通信管理,实现SWC之间的通信
    • 提供 对runnable的管理功能(触发、唤醒等,简单说就是runnable需要映射到Task上运行嘛,而这个映射就是通过RTE具体实现的)
    • RTE就是VFB(虚拟功能总线)的具体实现
    • 配置OS的一部分(tasks, events, alarms)
    • 抽象了OS,防止SWC直接访问OS和BSW
  • 基础软件层(BSW)

    a)硬件抽象层(MCAL)
    硬件抽象层又叫MCAL,就是将芯片的寄存器操作都封装成一个AutoSAR规定的统一的库Api,或者说将芯片上的功能都封装称一个一个的AutoSAR规定定义的API函数,供上层调用。

    • 目的:使上层软件与微处理器型号无关
    • 功能:包含MCU中内部外设的驱动和使用MCU内存映射的外部设备的驱动

    b)ECU抽象层
    对ECU上包括主芯片在内的所有设备的封装,这些设备其实也是要通过主芯片控制的,如外置存储,外置看门狗等,需要和主芯片相连接,由主芯片的接口去配置它。因此,其底层还是需要MCAL的支持

    • 目的:使上层软件与ECU硬件设计无关
    • 功能:包含ECU板上外部设备的驱动和内部设备与外部设备的接口(I/O)

    c)服务层
    将所有与硬件相关的功能都抽象成一个具体应用服务,如通信,这里就将CAN、I2C和串口等一系列的通信统一抽象称COM通信,应用层可以无需知道该通信具体是走哪种通信方式

    • 目的:提供给应用程序可用的服务
    • 功能:服务层里是包含操作系统的功能、车辆网络通信管理服务、存储器服务(NVRAM管理)、诊断服务(包括UDS通信、错误存储和故障处理)、ECU状态管理,模式管理、逻辑和时间程序流监控(Wdg管理器)、密码服务(密码服务管理)、调度管理(Schedule
      Manager) 功能划分:系统服务、存储器服务、通信服务

    d)复杂驱动
    又称为CDD,主要工作是将AutoSAR未定义的一些功能封装起来,给应用层提供接口来调用这些功能

    • 目的:提供复杂传感器和执行器的驱动
    • 功能:重要的应用模块可以直接访问硬件资源,例如: 喷油量控制, 胎压监测

3)详细架构图
4)工具
DaVinci Developer: 主要用来设计AppL的程序架构
DaVinci Configurator pro: 主要用来配置BSW和自动生成RTE的

5)接口类型

  • Send/Receiver(S/R)接口:传输数据。通过RTE传输数据,并且通过RTE管理数据的传输,避免数据出问题
Std_ReturnType Rte_Read_<port>_<data> (<DataType> *data)
Std_ReturnType Rte_Write_<port>_<data> (<DataType> data)
Com_SendSignal()
Com_ReceiveSignal()
  • Client/Server(C/S)接口: 提供操作。就是Server提供函数供Client调用,可以同步或异步调用
FUNC(void, AppWindow_CODE) XXXX_XXXTrigSet(uint8 value) /* PRQA S 0624, 3206 */ /* MD_Rte_0624, MD_Rte_3206 */
{/*********************************************************************************************************************** DO NOT CHANGE THIS COMMENT!           << Start of runnable implementation >>             DO NOT CHANGE THIS COMMENT!* Symbol: PtWindowTrigSet_WindowTrigSet*********************************************************************************************************************/XXXAAATrigSetToBBB(value);/*********************************************************************************************************************** DO NOT CHANGE THIS COMMENT!           << End of runnable implementation >>               DO NOT CHANGE THIS COMMENT!*********************************************************************************************************************/
}

6)SWC
应用层的SWC:灯,门锁,车窗…
BSW中的SWC:IO硬件抽象层(IoHwAb)、复杂驱动(Cdd)

7)Runnable

  • Runnable就是SWC中的入口函数,DaVinci软件生成的时候,Runnable是空函数,需要手动添加代码来实现其实际的功能
FUNC(void, AppWindow_CODE) AppWindowRunnable(void)
{... ...
}
  • Runnable实际是被task调用,具体可以在rte.c中查看到各个swc的runnable,被不同时间的task调用
TASK(Task10ms)
{... ...AppEmsRunnable()AppLearnRunnable()... ...
}TASK(Task1ms)
{... ...CddAmdRunnable(); IohInputRunnable1ms();... ...
}TASK(Task20ms)
{... ...AppDefrosterRunnable();AppPwrModRunnable();... ...
}
  • 一个SWC可以配置多个不同时间的runnable
    不同SWC之间的通信,无论是ECU内部还是ECU之间,都不会遇到数据一致性问题,因为RTE会负责保证数据一致性。
    而同一个SWC,运行在不同task的runnable可能存在数据不一致性问题,解决办法:
    a)专用区域(Exclusive Areas )

    b)内部变量(Inter-runnable variables)

  • Runnables的触发条件
    a)RTE给runnables提供触发条件,也就是runnable在设计的时候,需要有触发条件,不然无法运行
    b)AutoSAR中主要规定了以下一些触发条件(DaVinci软件中的配置):

    初始化事件:初始化自动触发
    定时器事件:给一个周期定时器,时间到了就触发
    接收数据事件(S/R):Receiver Port 一旦收到数据,就触发
    接收数据错误事件(S/R)
    数据发送完成事件(S/R):Send Port 发送完成,就触发
    操作调用事件(C/S):当调用到了该函数的时候
    异步服务返回事件(C/S)
    模式切换事件
    模式切换应答事件

    c)DaVinci软件中的配置项

汽车电子学习笔记---AutoSAR概述相关推荐

  1. 汽车电子学习笔记—AutoSAR之基础软件层(BSW)

    汽车电子学习笔记-AutoSAR之基础软件层(BSW) - 1.概述 如之前autosar概述笔记中说明,BSW按照层级结构可以分为服务层.ECU抽象层.硬件抽象层(MCAL)和复杂驱动层(CDD). ...

  2. Oracle学习笔记 字符集概述

    Oracle 学习笔记 字符集概述 这节课开始讲oracle里面的字符集 偏重于原理和简单的一些判断以及实现 字符集它涉及到很多的东西 比如建库和操作系统环境 这节课把字符集的原理性的东西以及常见的操 ...

  3. 汽车电子学习笔记---LIN

    汽车电子学习笔记-LIN 1.简介 1)LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议.主要用于网络宽带.性能 ...

  4. 汽车电子学习笔记---RZ、NRZ、NRZ1、曼彻斯特编码

    汽车电子学习笔记-RZ.NRZ.NRZ1.曼彻斯特编码 1.RZ(Return Zero Code)编码 也称为归零码,特性就是在一个周期内,用二进制传输数据位,在数据位脉冲结束后,需要维持一段时间的 ...

  5. CV学习笔记-数字图像概述

    数字图像 1. 图像 像素: 像素是分辨率的单位.像素是构成位图图像的基本单元,每个像素都有自己的颜色. 分辨率: 又称"解析度",图像的分辨率就是单位英寸内的像素点数.单位是PP ...

  6. JVM学习笔记上(概述-本地方法栈)

    背景 前一阵跟着宋红康的视频学了学JVM,视频没有更新完,所以也没学完,这里记录一下笔记 JVM概述 JVM位置:  运行在操作系统之上 相对于java语言,JVM的位置如下所示 对于安卓的Davli ...

  7. [学习笔记]OpenFlow概述(1)

    个人学习笔记,出问题请指出下.摘取<图解OpenFLow> Openflow协议是由斯坦福大学提出,最初的出发点是为了更加轻松地构建用于研究的网络. Openflow的初期设计思想:无需设 ...

  8. μCos-ii学习笔记1_概述

    一.μCos-ii _概述 网上关于μCosii的文章多不胜数,本人学习的过程中也参考了很多人的理解和想法,看的是卢有亮老师的<嵌入式实时操作系统-μC/OS原理与实践>(第2版),同时也 ...

  9. Javaweb学习笔记——Javaweb概述

    目录 前言 一.XML语法 XML和HTML的比较 XML语法 1.文档声明 2.元素定义 3.属性定义 4.注释 二.DTD约束 什么是DTD约束 DTD的引用 外部引入 直接嵌入 DTD语法 元素 ...

  10. PHP学习笔记-PHP概述与环境搭建

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/50935256 本文出自:[顾林海的博客] 前言 PHP起源于1995年 ...

最新文章

  1. 这块DIY墨水屏手表火了!外观可盐可甜,无线蓝牙计步闹钟一应俱全 | 开源
  2. GridView中DropDownList联动
  3. OpenCASCADE绘制测试线束:几何命令之约束
  4. Jmeter5.3(windows下)安装过程问题总结
  5. HP Z840 工作站配sSAS Raid 安装 Ubuntu 16.04 系统
  6. Python3基础 try-指定except-as reason 捕获打开一个不存在的文件的时候,会产生OSError异常的示例
  7. 无法启动此程序 因为计算机中丢失hypertrm.dll,开机弹出找不到HYPERTRM.dll
  8. sqlserver2005 sa密码忘记了怎么办
  9. 图书管理系统接口文档
  10. vue 项目在ie浏览器的兼容问题
  11. 为Mac设置“屏幕使用时间”,来了解您的设备使用情况
  12. 微信公众号开发——关键词自动回复
  13. 微信小程序流量主之ECPM
  14. 集成支付平台是什么?
  15. cordova技术集(一)Hello,cordova! 如何创建cordova项目。
  16. 智慧气象案例分享:中国气象局·全国气象防灾减灾可视化监控管理平台
  17. 蛇形/回形矩阵(超详细!看了不会你来打我)
  18. 金蝶K3Cloud插件 -- 单据保存自动提交并审核(c#)
  19. python将txt文件批量导入excel
  20. MPC3150 1A最大峰值输出电流 门驱动器 光电耦合器芯片代替LTV-3150

热门文章

  1. 根据经纬度使用百度和高德地图 进行导航
  2. java orb 是什么_什么是ORB
  3. Linux下php如何把word转为图片
  4. 接口与多态:模拟物流快递系统程序设计实验
  5. Unity WebGL 发布内存优化
  6. 科学网—世界上最神奇的30个经典定律——读书笔记 - 贾琳的博文 http://blog.sciencenet.cn/blog-455749-859616.html
  7. 计算机设计媒体专业排名,2020USNEWS媒体与数字媒体专业综合排名
  8. easyWeChat 6.X微信支付V3下载更新微信支付平台证书
  9. 上twitter_如何在Twitter上阻止某人
  10. 人工智能与算法学习总结报告!(珍藏版)