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

汽车电子学习笔记—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软件中的配置项
    在这里插入图片描述

  • 19
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Autosar是汽车行业广泛使用的一种软件架构标准,旨在提高汽车电子系统的可靠性和可维护性。它通过提供标准化的接口和通信协议,使得不同厂家和供应商开发的软件和硬件组件可以相容且互操作。Autosar标准包含了许多不同的模块和组件,它们分别负责不同的功能,如通信、诊断、操作系统等。要读懂Autosar代码,首先需要了解Autosar标准的整体架构和各个模块之间的关系。 在阅读Autosar代码时,需要熟悉标准中定义的各种接口和数据结构,了解它们的作用和用法。此外,还需要理解Autosar中使用的不同软件架构模式和设计模式,例如发布订阅模式、状态机模式等。很多Autosar代码都会按照这些模式进行设计和实现,因此读懂这些模式对于理解代码至关重要。 此外,由于Autosar标准是由多个汽车厂商和供应商共同制定和维护的,因此在阅读Autosar代码时还需要关注不同厂商或供应商对标准的实现方式和扩展。虽然Autosar标准化了接口和通信协议,但在实际应用中仍然存在一些厂商特定的实现和扩展,这些内容也需要在阅读代码时予以理解。 总之,要读懂Autosar代码,需要对Autosar标准有深入的了解,包括整体架构、各种接口和数据结构、软件架构模式和设计模式,以及不同厂商或供应商的实现方式和扩展。同时,也需要对汽车行业的背景和需求有一定的了解,这样才能更好地理解Autosar代码的含义和用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值