AutoSar之微控制器抽象层MCAL

2023-05-16

微控制器抽象层位于AUTOSAR BSW的最底层,包含内部驱动,可直接访问微控制器和外设芯片。从具体应用来看,MCAL主要包括微控制器驱动、存储器驱动、通信驱动和输入输出驱动四个部分,各部分又由具体的与微控制器硬件相对应的驱动模块组成。

其实,从AUTOSAR官文中,MCAL还包含另外两个部分:加密驱动和无线通讯驱动。由于基本无项目应用,所以暂且不提。下面就每个部分宏观解释下。

微控制器驱动

微控制器驱动由通用定时器驱动(GPT Driver)、看门狗驱动(WDG Driver)、微控制器单元驱动(MCU Driver)和内核测试(Core Test)四个部分组成。

1)GPT Driver

在AUTOSAR中有两类定时器,操作系统定时器和硬件定时器。该模块使用通用定时器单元的硬件定时器通道,为操作系统或者其他基础软件模块提供计时功能。GPT驱动的作用是:

  • 启动和停止硬件定时器;

  • 得到定时器数值;

  • 控制时间触发的中断;

  • 控制时间触发的中断唤醒。

2)WDG Driver

WDG Driver的功能主要是初始化和触发看门狗。WDG Driver有内部WDG Driver和外部WDG Driver。内部WDG Driver控制MCU的内部看门狗定时器,提供触发功能和模式选择服务;外部WDG Driver控制外部硬件看门狗,与内部WDG Driver一样,提供触发功能和模式选择服务。

3)MCU Driver

MCU Driver位于MCAL层,可以直接访问微控制器硬件,它的主要功能是初始化、休眠、复位微控制器以及提供其他MCAL软件模块所需的与微控制器相关的特殊功能。MCU Driver还能够使能并设置MCU时钟,例如CPU时钟、外围器件时钟、预分频器等参数。

4)Core Test

Core Test(内核测试)模块包含周期性测试和启动测试。内核测试模块可以对CPU所有寄存器进行测试,提供中断控制和异常检测。该模块还对算术逻辑单元、存储保护单元和缓存控制器等进行检测。

存储器驱动 

存储器驱动由内部EEPROM驱动、内部Flash驱动、RAM测试和Flash测试四部分组成。

1)内部EEPROM驱动

内部EEPROM驱动提供初始化服务,以及对内部EEPROM的读写、写、擦除等操作。该驱动模块一次只能接受一个任务。

2)内部Flash驱动

内部Flash驱动提供内部Flash初始化服务,以及对内部Flash的读、写、擦除等操作。该驱动还可以将Flash访问代码下载到RAM中,如果需要的话,也可以执行写、擦除操作。

3)RAM测试

RAM测试模块通过软件对RAM存储进行测试。该模块包含后台测试和前台测试。其中,后台测试是异步服务,前台测试是同步服务。

4)Flash测试

flash测试模块提供算法来测试诸如数据/程序闪存、程序SRAM等非易失性存储器,这些存储器可以是集成在微控制器内部的,也可以是外部映射到微控制器的存储器。

通信驱动

通信驱动由以太网(Ethernet)驱动、FlexRay驱动、CAN驱动、LIN驱动和SPI驱动五部分组成。

1)Ethernet驱动

Ethernet驱动模块为以太网提供统一的接口。

该驱动模块对所使用的以太网控制器的硬件特性进行了抽象。

以太网接口模块使用以太网驱动层访问某些控制器。

以太网驱动层由若干个以太网驱动模块组成。

TCP/IP通信业务是车载网络与通信系统TCP/IP通信的一组模块

2)FlexRay驱动

FlexRay驱动用来抽象不同的FlexRay通信控制器及其硬件相关的特性。通信控制器的FlexRay协议强制特性经过封装后只能通过统一的API进行访问。API提供了映射到基于实际通信控制器的硬件访问序列的抽象功能操作。因此,使用FlexRay驱动可以保证FlexRay接口独立于硬件。对内部或外部FlexRay通信控制器的驱动来说,需要进行下列处理:

  • FlexRay控制器的初始化;

  • 配置数据处理单元;

  • 控制指令向通信控制器的传递;

  • 从协议引擎到控制器主接口状态数据的规定;

  • 通信控制器和主处理机之间信息数据的传输。

3)CAN驱动

CAN驱动针对的是微控制器内部的CAN控制器,它可以实现以下功能:

  • 对CAN控制器进行初始化;

  • 发送和接收报文;

  • 对报文的数据和功能进行通知(对接收报文的指示、对发送报文的确认);

  • 溢出和错误处理;

  • 唤醒检测。

此外,CAN驱动还具有以下特性:单路或多路CAN通道、CAN驱动的多重实例化、对接收报文的中断/轮询模式。

CAN驱动是MCAL的一部分,可以执行硬件访问、向上层提供独立于硬件的API,而仅有的能够访问CAN驱动的上层是CAN接口(CAN Interface)。

CAN驱动也可以为数据传输的初始化和通知接收事件的回调函数提供服务,该服务也是独立于硬件的。除此之外,CAN驱动也可以控制从属于同一个CAN硬件单元的CAN控制器的行为和状态。

4)LIN驱动

LIN驱动使用标准的通用异步收发器(UART)或串行通信接口(SCI)进行通信。

该模块可以完成下列任务:

  • LIN硬件的初始化;

  • 调度表的处理;

  • LIN报文的发送(通过标志位和函数接口确认);

  • LIN报文的接收(通过标志位和函数接口指示);

  • 睡眠和唤醒;

  • 协议差错的处理;

  • 报文的超时监测。

LIN驱动也是MCAL的一部分,可以执行硬件访问、向上层提供独立于硬件的API。仅有的能够访问LIN驱动的上层是LIN接口(LIN Interface)。

LIN驱动可以支持多个通道,但是这些通道要属于同一个LIN硬件单元。

5)SPI驱动

SPI驱动模块是微控制器内部同步通信串行接口的驱动。SPI驱动为SPI总线上不同的设备(如EEPROM/Watchdog等)提供读写访问服务。

一个SPI设备可以被所使用的SPI硬件和相关的片选信号识别。该模块可以在主、从或者主-从模式下运行。

配置SPI驱动应遵循以下步骤:

  • 选择SPI驱动的功能级别,配置可选择的功能特性;

  • 根据数据用途来定义SPI通道,它们可以是SPI驱动的内部缓冲器,或者是由用户提供的外部缓冲器;

  • 根据硬件属性来定义SPI任务,它们会包含一系列使用这些属性的通道;

  • 定义任务序列,以优先级排序的方式来传递数据。

输入输出驱动

I/O驱动由PORT驱动、DIO驱动、ADC驱动、PWM驱动、ICU驱动、OCU驱动六部分组成。

1)PORT驱动

PORT驱动初始化就是对微控制器的整个PORT模块进行初始化配置。

很多端口和管脚被分配有多种不同的功能,即可以进行引脚功能复用,比如通用I/O、模数转换、脉宽调制等功能。因此,对PORT必须有一个整体的配置和初始化,对各管脚的具体配置和使用取决于微控制器和ECU的引脚功能分配。

PORT初始化数据应当尽可能高效地写到每个端口。DIO驱动中所用到的端口的配置和初始化都是在PORT驱动模块中完成的。因此,在使用DIO功能之前,应先进行PORT的初始化。

2)DIO驱动

DIO驱动对微控制器硬件管脚的访问进行了抽象,除此之外,还可以对管脚进行分组。该模块通过DIO通道、DIO端口以及DIO通道组来读写数据,而且这类操作是同步的。

3)ADC驱动

ADC驱动对微控制器内部模数转换单元进行初始化和控制。它可以提供启动和停止模数转换的服务,分别用来开启和禁用模数转换的触发源。

4)PWM驱动

PWM驱动为微控制器PWM模块提供初始化和控制服务,可生成周期和占空比都可变的脉冲。

5)ICU驱动

ICU驱动控制的是微控制器的输入捕获单元(Input Capture Unit),有两种模式:正常模式和休眠模式。

ICU驱动可以提供一下服务:

信号边沿检测及通知;

中断唤醒;

周期性信号时间的测量;

边沿时间戳捕获;

边沿/脉冲计数

6)OCU驱动

OCU驱动的作用是对微控制器内部的输出比较单元(Output Compare Unit)进行初始化和控制。当计数器的值到达某个阈值时,OCU模块会自动开始比较并执行相应的操作。

OCU驱动还可以为下列功能提供服务:

  • 启动或停止输出通道;

  • 设定某个阈值;

  • 启用或禁用某个通道的通知函数;

  • 获取计数器数值;

当然,在多核系统逐渐盛行的今天,AUTOSAR在多核中的资源分配和任务分配显得也尤为重要,Mcal在多核系统中的实现和上面提及类似,各家有各家喜好和特色,可以根据实际需求具体分配。

文中名词解释:

微控制器驱动:Microcontroller Drivers 

存储器驱动:Memory Drivers  

通信驱动:Communication Drivers

输入输出驱动:I/O Drivers

加密驱动:Crypto Drivers

无线通讯驱动: Wireless Communication Drivers

通用定时器驱动:General Purpose Driver,GPT Driver

看门狗驱动:Watchdog Driver,WDG Driver

微控制器单元驱动:Microcontroller Unit Driver,MCU Driver

内核测试:Core Test

通用异步收发器(Universal Asynchronous Receiver Transmitter,UART)

串行通信接口(Serial Communication Interface,SCI)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AutoSar之微控制器抽象层MCAL 的相关文章

  • AUTOSAR —— S32K144 的 Fls 和 Fee 模块配置

    本文来简要介绍一下如何在EB中配置AUTOSAR Fls和Fee模块 Fls模块是Flash的驱动 xff0c 执行具体的Flash擦写读取等操作 Fee模块的全称是FlashEEPROMEmulation xff0c 即Flash模拟EE
  • Autosar CAN通讯——CANSM

    关于CANSM参考 xff1a https zhuanlan zhihu com p 126073070
  • AUTOSAR简介

    1 简介 AUTOSAR全称为 AUTomotive Open System ARchitecture xff0c 译为 汽车开放系统体系结构 xff1b AUTOSAR是一家由汽车电子 半导体和软件行业的汽车制造商 供应商 服务提供商等公
  • 老板说项目要上AUTOSAR,我慌得一批

    莫慌 xff0c 淡定 xff0c 先来看看AUTOSAR是个什么鬼 AUTOSAR是什么 AUTOSAR AUTomotive Open System ARchitecture xff0c 中文是 汽车开放系统架构 xff0c 是一家致力
  • 基于PREEvision的AUTOSAR Adaptive设计

    导读 xff1a 为适应汽车智能化 网联化等的发展趋势 xff0c 应对汽车E E系统开发面临的高性能处理器的应用 自动驾驶的软件实现 高带宽通信需求 车与外界的互联互通等的挑战 xff0c AUTOSAR组织推出了AUTOSAR Adap
  • CP AUTOSAR 通信

    现在汽车中 xff0c 车内网络普遍采用CAN LIN FlexRay总线 xff0c CAN FD和车载以太网也将在未来得到更多应用 作为汽车电子软件的主要标准 xff0c AUTOSAR在总线网络通信方面提供了完整的架构 AUTOSAR
  • 一万字解读CP AUTOSAR

    导读 xff1a AUTOSAR旨在改善汽车电子系统软件的更新与交换 xff0c 同时更方便有效地管理日趋复杂的汽车电子软件系统 AUTOSAR规范的运用使得不同结构的电子控制单元的接口特征标准化 xff0c 应用软件具备更好的可扩展性以及
  • Adaptive AUTOSAR 简介 (2021版)

    目录 1 Adaptive AUTOSAR 简介 Adaptive平台 一种新的 AUTOSAR 1 1 Adaptive的案例 1 2 经典平台与适应性平台的比较 1 3 单一系统 1 4 架构 逻辑架构 1 5 软件架构 本文图片来源
  • 浅谈AP autosar 之 runtime 基础

    AP Autosar Architecture overview AP autosar在SOC 中的位置 xff0c 起到的作用 下面图可以看出 xff0c AP autosar封装了操作系统的接口 xff0c 封装了功能安全 xff0c
  • Adaptive AUTOSAR——Time Synchronization(VRTE 3.0 R21-11)

    15 Time Synchronization 15 1 What is Time Synchronization 时间同步是自适应平台基础中的一个功能集群 时间同步通过库向应用程序提供C 43 43 API xff0c 该库作为RTA V
  • Adaptive AUTOSAR 文档官方如何阅读

    目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译 xff0c 不如直接看官方文档更全面深入 Adaptive AUTOSAR 文档官方下载地址 Adaptive Platform AUTOSAR https ww
  • Adaptive AUTOSAR-诊断管理-Diagnostic Server概述和诊断通信

    Diagnostic Server 对于AUTOSAR adaptive平台 xff0c 不用重新刷写整个ECU即可添加新的软件包 xff0c 各个软件包描述为SoftwareClusters xff0c 每个SoftwareCluster
  • 什么是AUTOSAR?为什么汽车公司开始采用AUTOSAR来开发新产品?

    越来越多的车企开始应用ATUOSAR xff0c 也有很多公司在招聘时会在JD里注明 xff0c 应聘者需要熟练掌握AUTOSAR xff0c 那么什么是AUTOSAR xff1f 为什么从奔驰 宝马等传统豪华汽车巨头 xff0c 到新势力
  • Adaptive Autosar 整体架构理解

    1 总体说明 xff08 图片来源主要来源于Simulink 以及 Vector xff09 在Autosar官网 xff08 autosar org xff09 上 xff0c 目前CLASSIC PLATFORM 更新到4 4版本 xf
  • AutoSar之微控制器抽象层MCAL

    微控制器抽象层位于AUTOSAR BSW的最底层 xff0c 包含内部驱动 xff0c 可直接访问微控制器和外设芯片 从具体应用来看 xff0c MCAL主要包括微控制器驱动 存储器驱动 通信驱动和输入输出驱动四个部分 xff0c 各部分又
  • 【AUTOSAR】【通信安全】CRC

    目录 一 概述 二 功能说明 2 1 通用行为 2 2 8位CRC计算 2 2 1 8位SAE J1850 CRC计算 2 2 2 8位0x2F多项式CRC计算 2 3 16位CRC计算 2 3 1 16位CCITT FALSE CRC16
  • 7、AUTOSAR MCAL入门-实战:I/O驱动组

    7 AUTOSAR MCAL入门 实战 xff1a I O驱动组 在第三节中有介绍AUTOSAR 把MCAL 抽象分为4个驱动组 xff0c 分别为 xff1a 微控制器驱动组 xff0c 存储器驱动组 xff0c 通信驱动组 输入 输出驱
  • 移动端安全通信的利器——端到端加密(E2EE)技术详解

    前言 端到端加密允许数据在从源点到终点的传输过程中始终以密文形式存在 采用端到端加密 又称脱线加密或包加密 时消息在被传输时到达终点之前不进行解密 因为消息在整个传输过程中均受到保护 所以即使有节点被损坏也不会使消息泄露 端到端加密系统与链
  • 一文入门车载以太网,吐血整理!不看后悔!

    前言 近些年来 随着为了让汽车更加安全 智能 环保等 一系列的高级辅助驾驶功能喷涌而出 未来满足这些需求 就对传统的电子电器架构带来了严峻的考验 需要越来越多的电子部件参与信息交互 导致对网络传输速率 稳定性 负载率等方面都提出了更为严格的
  • 数据类型:C++中的基本数据类型

    数据类型 C 中的基本数据类型 在C 中 数据类型是用于存储不同种类数据的变量类型 C 提供了多种基本数据类型 包括字符型和数值类型 本篇博客将详细介绍C 中的基本数据类型 并提供相应的示例代码 目录 引言 字符型数据类型 2 1 char

随机推荐

  • 2011

    2011 Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits G
  • 数据结构与算法1:用JavaScript 实现 栈 结构

    栈 xff08 stack xff09 又名堆栈 xff0c 数据特点 xff1a 后进先出 由于其数据形式特点 xff0c 故用 数组搭建 常用方法有 xff1a push 入栈pop 出栈peek 查看栈顶元素isEmpty 判断是否为
  • 【ROS实践入门(八)ROS使用USB视觉传感器相机】

    ROS实践入门 xff08 八 xff09 ROS使用USB视觉传感器相机 本内容经官网实例以及一些参考书总结而成 xff0c 欢迎留言评论交流 xff5e 联系方式 xff1a ziyuanw foxmail com 换成 64 ROS对
  • 【ROS实践入门(五)自定义节点功能包使用与消息传递】

    ROS实践学习入门系列 xff08 五 xff09 自定义节点功能包使用与消息传递 本内容经官网实例以及一些参考书总结而成 xff0c 欢迎留言评论交流 xff5e 联系方式 xff1a ziyuanw foxmail com 换成 64
  • FreeRTOS学习笔记(二)——FreeRTOS中的任务管理

    目录 FreeRTOS的任务创建和删除创建动态任务创建静态任务和空闲任务FreeRTOS的任务删除 FreeRTOS中的任务状态常用函数 FreeRTOS的延时函数 FreeRTOS的任务创建和删除 创建动态任务 BaseType t sp
  • Docker 产品手册之 Docker Hub - 通过 GitHub 实现自动构建

    原文地址 如果你已经将 Docker Hub 链接到了你的 GitHub 账户 xff0c 直接跳到第五小节 创建自动构建 1 将 Docker Hub 链接到 GitHub 账户 注意 xff1a 因为 Docker Hub 需要设置 G
  • 微信自动回复(python)

    前言 xff1a 自从微信禁止网页版登陆之后 xff0c itchat 库也就都不能用了 xff0c 新号不能再登录网页版 xff0c 而且itchat 库在headers里面只放了UserAgent xff0c 其他字段都没有放 所以在你
  • 国际贸易词汇术语大搜罗

    价格术语 world international market price 国际市场价格 FOB free on board 离岸价 C amp F cost and freight 成本加运费价 CIF cost insurance an
  • 【保姆级教程】Docker服务在双架构(X86和ARM)编译统一实践

    在现代计算机系统中 xff0c X86和ARM64是两种常见的处理器架构 为了满足不同架构的需求 xff0c Docker镜像也需要支持双架构编包形式 本文将介绍Docker镜像双架构编包统一的实践 一 Docker镜像编包 在Docker
  • 玩Raspberrypi走过的坑

    树莓派挺有用 xff0c 基本上linux所有的功能都能用上 xff0c 比如开发个人脸识别 xff0c 搭建一个AVR开发环境 xff0c 都相当的不错 从18年到现在一年多 xff0c 也走过不少的坑 xff0c 希望分享一下自己的经验
  • 小米吉姆尼自动驾驶改造

    最近买了个小米吉姆尼 xff0c 恰好有个wifi图传 xff0c 准备做个无人驾驶 xff0c 通过图像处理实现自动驾驶 图传回到PC处理图像目前已经实现 xff0c 这个比较简单 现在存在的问题如何给吉姆尼发送信号 考虑方式有两种 xf
  • 化骨龙 GPS M80Pro 拆解

    最近玩穿越机 xff0c 用GPS的时候一不小心锡渣把9V和5V短路 xff0c 直接把化骨龙GPS M80Pro烧了血泪教训 这个GPS还是挺精致的 xff0c 于是乎拆解一下分享给大家 拆开来看其实并不复杂 xff0c 核心是一颗Ubl
  • freeRTOS 低功耗模式 和 空闲任务

    低功耗模式 1 芯片原本就支持的硬件低功耗 2 freeRTOS提供的软件低功耗 xff0c Tickless模式 xff01 当用户将宏定义 configUSE TICKLESS IDLE 配置为 1 且系统运行满足以下两个条件时 xff
  • 化骨龙zeus 800mw 图传拆解

    最近比较倒霉 xff0c 飞飞机又炸鸡了 xff0c 这次炸的有点狠 xff0c 炸到水泥路上了 xff0c 化骨龙小锤子天线炸断 xff0c 电池炸坏一个 xff0c 图传炸断天线座 xff0c 电子炸坏一个 xff0c 关键是电机这几天
  • pixhawk 电源电压电流计拆解

    闲来无事拆解了一个pixhawk带电流计的电源 xff0c 挺有意思的 xff0c 如下图 xff1a 模块挺简单的 xff0c 正面是就是一块MPS公司的电源芯片MP1593 xff0c 最高4 75 28V xff0c 3A 5V输出
  • VM中linux和windows主机进行串口通信

    最近在做关于AIS的内容 为了对AIS电文进行解码 xff0c 串口收发 数据有PC机模拟发送 xff0c 为了调试方便 xff0c 不用次次将程序放到开发板上运行 xff0c 所以利用pc主机和虚拟机进行串口通信模拟该过程 首先需要用到一
  • 基于CANoe的SecOC实现

    在今天的车载网络中 xff0c 大部分数据传输是在没有任何特殊安全措施的情况下进行的 因此 xff0c 一旦能够直接访问车辆的总线 xff0c 任何人都可以读取总线上传输的原始数据 xff0c 甚至 在今天的车载网络中 xff0c 大部分数
  • Autosar Configuration(五) Security之Csm配置

    本系列教程是根据实际项目开发中总结的经验所得 如发现有不对的地方 还请指正 目录 Autosar Configuration 一 Davinci Developer 工具介绍 Autosar Configuration 二 Davinci
  • 一文读懂Autosar SecOC通讯

    一 为什么用SecOC xff1f 在车载网络中 xff0c CAN总线作为常用的通讯总线之一 xff0c 其大部分数据是以明文方式广播发送且无认证接收 这种方案具有低成本 高性能的优势 xff0c 但是随着汽车网联化 xff0c 智能化的
  • AutoSar之微控制器抽象层MCAL

    微控制器抽象层位于AUTOSAR BSW的最底层 xff0c 包含内部驱动 xff0c 可直接访问微控制器和外设芯片 从具体应用来看 xff0c MCAL主要包括微控制器驱动 存储器驱动 通信驱动和输入输出驱动四个部分 xff0c 各部分又