微控制器抽象层位于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)

AutoSar之微控制器抽象层MCAL相关推荐

  1. AUTOSAR从入门到精通100讲(二十六)-AutoSar之微控制器抽象层MCAL

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

  2. 图解AUTOSAR(五)——微控制器抽象层(MCAL)

    微控制器抽象层位于AUTOSAR分层模型中BSW最底层,包含内部驱动,可以直接访问微控制器和片内外设.更进一步地,MCAL又可以分为微控制器驱动.存储器驱动.通信驱动和I/O驱动四个部分,各部分又由具 ...

  3. 第四代V850微控制器系列(瑞萨电子)

    瑞萨电子株式会社(以下简称瑞萨电子)于2010年11月4日正式宣布开发第四代(X4代)面向汽车应用的V850系列微控制器(MCU).它由4个产品系列组成:面向底盘和安全应用的P系列.面向仪表盘应用的D ...

  4. 芯片设计抽象层及其设计风格

    文章目录 设计抽象层 设计风格 自顶向下 自下而上 参考资料 设计抽象层 在了解Verilog语言的更多细节之前,我们最好先了解一下芯片设计中的不同抽象层. 最上层是系统级的架构,它定义了各种子块,并 ...

  5. ARM微控制器与嵌入式系统 基础知识

    学习地址 2.1 基础概念 机械计算 图灵 :一个计算的问题一定可以拆解为有限个计算的集合(可计算性) 01 冯诺依曼结构:运算器.控制器.存储器.输入设备.输出设备 模拟信号 连续 数字信号 离散 ...

  6. Keil MDK5软件包的组成、Cortex微控制器软件接口标准CMSIS,重点介绍CMSIS-CORE的组成和使用

    嵌入式系统的应用开发需要基于目标机-宿主机的交叉编译系统,在集成开发环境的支持下进行,应用程序通常采用高级编程语言C/C++进行编写.使用MDK开发工具进行STM32微控制器的应用开发需要安装软件包, ...

  7. DPDK Programmer’s Guide(3)环境抽象层(EAL)

    官方文档查看地址: http://doc.dpdk.org/guides/prog_guide/env_abstraction_layer.html PDF下载地址: https://www.inte ...

  8. 德州仪器TM4C1294KCPDT微控制器以太网LwIP使用教程

    摘要:TM4C1294KCPDT是德州仪器(Texas Instruments)推出的一款基于ARM Cortex-M4内核的微控制器,属于TM4C129x系列产品.它具有丰富的外设资源和高性能.低功 ...

  9. 人工智能微控制器体系结构

    人工智能微控制器体系结构 Microcontroller architectures evolve for AI 如果把人工智能和物联网交叉,会得到什么?AIoT是一个简单的答案,但是也可以为微控制器 ...

最新文章

  1. python不简单_Python学习并不简单!月薪过万也不易
  2. 通向架构师的道路(第五天)之tomcat集群-群猫乱舞
  3. linux中vi过滤,vim高级编辑(一)
  4. python去除中间空格只留一个_python 删除字符串中的连续空格只保留一个
  5. jeecg集成积木报表错误_6688种玩法的电子积木,是什么体验?「中外玩具网测评」...
  6. java一元稀多项式_数据结构之线性表- 一元稀疏多项式计算器
  7. 分享一篇关于代理IP对于python爬虫有多重要
  8. spring定时器的简单实用
  9. 高频交易巨头GETCO的发达史
  10. 高校学生档案管理系统(Angularjs+HTML+CSS+bootstrap)
  11. 对Excel选择性粘贴中的跳过空单元选项容易造成的两种误解
  12. python可以这样学豆瓣_用python爬取豆瓣短评,这是我见过最牛逼的教程!
  13. 弘辽科技:拼多多客单价怎么算?如何提高?
  14. S曲线加减速算法 VS 梯形加减速算法
  15. 企业发放的奖金根据利润提成。
  16. ntoskrnl.exe损坏或丢失的解决方案
  17. Qt error: /usr/bin/ld: cannot find -lGL: No such file or directory
  18. DevOps团队如何为网络星期一做准备
  19. 牛逼的人都是相似的,而苦逼的人则各有各的苦逼
  20. 【Apache POI】Excel操作(一):Excel本地写入基本操作的实现

热门文章

  1. [现代诗]情诗——给网恋中人
  2. 长城汽车计划将P系列皮卡推向全球市场
  3. java使用axis调用.net发布的webservice接口返回对象类型
  4. mysql学习ppt摘抄笔记
  5. MATLAB铁轨检测+异物识别
  6. 国二c语言是人工改卷还是机器改卷,雅思机考作文是机器批卷吗,雅思机考,阅读和听力是机器判卷,还是人工判卷?...
  7. Excel-如何隐藏/显示某些行项目或者列项目?
  8. IDEA部署项目到tomcat运行成功但是页面404的两种原因
  9. 2022李永乐线性代数
  10. 三极管为什么可以放大电流?