MCAL(Microcontroller Abstraction Layer)介绍
目录
MCAL的核心作用
MCAL的模块组成
1. 微控制器驱动(Microcontroller Drivers)
2. I/O驱动(DIO, PWM, ADC等)
3. 通信驱动(Communication Drivers)
4. 存储驱动(Memory Drivers)
5. 复杂设备驱动(Complex Drivers)
MCAL的开发与配置流程
MCAL的典型应用场景
MCAL的优势与挑战
国产MCAL的发展现状
MCAL的核心作用
-
硬件抽象
将MCU的硬件特性(如寄存器配置、外设操作)封装成标准化的API,使上层软件无需关心具体硬件型号。 -
统一接口
提供跨平台的驱动程序接口(如GPIO控制、CAN通信),确保应用代码可移植到不同MCU。 -
降低开发成本
避免针对不同芯片重复开发驱动代码,加速ECU软件开发流程。
MCAL的模块组成
MCAL根据功能划分为多个子模块,每个模块对应一种硬件外设或功能:

这个是24年11月份推出的CP架构图,也是目前最新的,其中RTE下面的就是BSW层和MCAL层。里面的driver和controller都属于MCAL。 而痛心协议栈和操作系统则属于BSW层。
1. 微控制器驱动(Microcontroller Drivers)
-
作用:配置MCU核心功能,如时钟、电源模式、中断控制器(如NVIC)。
-
关键功能:
-
初始化MCU内核(如ARM Cortex-M/R系列)。
-
管理低功耗模式(Sleep、Stop等)。
-
控制内存保护单元(MPU)。
-
2. I/O驱动(DIO, PWM, ADC等)
-
DIO(Digital Input/Output)
控制数字引脚输入/输出状态(如开关量信号读取、LED控制)。 -
PWM(Pulse Width Modulation)
生成PWM波形(如电机调速、背光调节)。 -
ADC(Analog-to-Digital Converter)
采集模拟信号(如温度传感器、电池电压)。
3. 通信驱动(Communication Drivers)
-
CAN(Controller Area Network)
提供CAN控制器配置、报文收发接口(如车身网络通信)。 -
LIN(Local Interconnect Network)
支持LIN主从节点通信(如车窗控制)。 -
FlexRay
高速实时通信驱动(如线控系统)。 -
Ethernet
适用于Adaptive AUTOSAR的以太网驱动(如自动驾驶数据传输)。
4. 存储驱动(Memory Drivers)
-
Flash驱动
管理程序存储器的擦写操作(如OTA升级)。 -
EEPROM驱动
控制非易失性存储(如标定数据保存)。 -
RAM测试
实现内存自检(满足ISO 26262功能安全要求)。
5. 复杂设备驱动(Complex Drivers)
-
作用:处理非标准外设或高实时性需求(如直接控制传感器/执行器)。
-
示例:
-
电机控制(如BLDC电机FOC算法)。
-
高精度定时器(如喷油控制时序)。
-
标准MCAL模块主要包括MCU、GPT、WDG、DIO、ICU、OCU、SPI、CAN、LIN、ETH、PORT、FR(FLEXRAY)、FLS、FEE、ADC、PWM一共16个,不知道为什么IIC不是标准模块。但是好像用IIC缺失比较少。这里还有一个问题需要注意,汽车电子领域用的MCU都是专供这个领域的,比如英飞凌的TC系列芯片(TC367、TC377、TC397)、NXP的S32K系列(S32K124、S32K324)、瑞萨的RH系列(RH850)。最近TI也想进这个领域分蛋糕,但是他们的芯片用过一次,属实一般。虽然他们的STM32还挺好用的。这里国产的旗芯微也不错。
MCAL的开发与配置流程
-
硬件需求分析
根据ECU需求选择MCU型号(如英飞凌TC3xx、NXP S32K),明确外设资源(CAN通道数、ADC精度等)。 -
工具链配置
使用AUTOSAR工具(如Vector DaVinci Configurator、EB Tresos)生成MCAL配置代码:-
定义引脚映射(如Port模块配置)。
-
设置通信参数(如CAN波特率、报文ID过滤)。
-
配置中断优先级、DMA通道等。
-
-
代码生成与集成
工具自动生成C代码(如Mcu_Cfg.c,Can_Cfg.c),与手动编写的复杂驱动代码集成。 -
测试验证
-
静态测试:检查配置是否符合MCU硬件限制。
-
动态测试:通过HIL(硬件在环)验证外设功能(如ADC采样精度、CAN通信稳定性)。
-
功能安全测试:验证内存保护、错误注入处理机制(如ASIL D要求)。
-
工具链里面用的最多的就是EB其次是Vector的达芬奇。感觉EB更好用点,不知道是不是用的多的原因。但是瑞萨只支持达芬奇,用瑞萨的时候就得用达芬奇了。
MCAL的典型应用场景
-
车身控制模块(BCM)
-
DIO控制车灯、车门锁。
-
LIN驱动车窗升降电机。
-
PWM调节车内氛围灯亮度。
-
-
发动机控制单元(ECU)
-
ADC采集进气压力、氧传感器信号。
-
PWM控制燃油喷射脉宽。
-
定时器驱动火花塞点火时序。
-
-
电池管理系统(BMS)
-
ADC监测电池单体电压、温度。
-
CAN通信上报电池状态。
-
Flash存储电池健康数据。
-
-
智能驾驶域控制器
-
Ethernet驱动高速数据传输(如摄像头、雷达数据)。
-
复杂驱动处理多传感器同步采样。
-
除了这些还有VCU、数字钥匙、智能流媒体后视镜、各种车身域控单元等等。后续给大家讲下车里的架构以及架构的发展。
MCAL的优势与挑战
优势:
-
硬件无关性:上层软件无需修改即可适配不同MCU。
-
标准化开发:减少底层驱动开发时间,提升代码复用率。
-
安全合规:内置内存保护、错误检测机制,支持ISO 26262 ASIL等级认证。
挑战:
-
硬件适配复杂性:不同MCU的寄存器差异需精细处理。
-
性能优化:高实时性场景(如电机控制)需优化驱动代码效率。
-
工具链依赖:MCAL配置高度依赖商业工具(如Vector、EB),成本较高。
国产MCAL的发展现状
-
技术突破:经纬恒润、东软睿驰、普华基础软件等企业已推出国产AUTOSAR MCAL解决方案,逐步替代海外产品。
-
生态建设:国产MCU厂商(如芯驰科技、赛腾微电子)与本土AUTOSAR供应商(三巨头)合作,提供“芯片+MCAL”一体化方案。
拿了这位作者一张国产芯片介绍表给大家看一下。(懒着整理了哈哈,如果侵权的话我后面自己整理一下)
22家国产汽车MCU公司及型号盘点 - 知乎
-

-
挑战:
-
工具链成熟度(如调试、测试功能)仍需提升。
-
高端MCU(如车规级多核芯片)的MCAL支持能力不足。
-
简单介绍下国产AUTOSAR软件的三巨头:
-
东软睿驰
- 产品优势:东软睿驰的汽车基础软件平台产品NeuSAR具有软硬件协同能力强、软件模块覆盖完整度高等优势。其AUTOSAR产品NeuSAR版本为21-11,是目前国内最先进的,包括支持AUTOSAR Adaptive标准的NeuSAR aCore平台和支持AUTOSAR Classic标准的NeuSAR cCore平台。
- 生态建设:东软睿驰致力于建立完整的开发生态,包括从整车SOA设计到域控制器的应用架构设计,同时配置相应的平台管理产品和中间件。此外,东软睿驰还牵头推进了中间件ASF、车云一体等技术规范、行业标准的建设,在汽车基础软件的应用与传播、技术交流学习的促进、行业共识的形成、行业标准的建设等方面起到了重要作用。
- 会员等级:东软睿驰在2017年加入AUTOSAR时即为2级会员,后于2022年升级为1级会员。
-
经纬恒润
- 公司背景:经纬恒润成立之初靠代理销售国外汽车电子研发工具起家,2005年进入汽车电子领域,通过承接项目迎来汽车电子业务发展转折点。
- 合作情况:经纬恒润与英飞凌等硬件芯片厂商有长期合作关系,其自主开发的AUTOSAR中间件也更贴近中国国情。
- 会员等级:经纬恒润在2007年就已加入AUTOSAR,是最早加入的中国企业之一,后于2022年升级为1级会员。
-
普华基础软件
- 公司背景:普华基础软件由中央直属中国电子科技集团公司(CETC)控股,是纯软件企业,基本不涉及硬件生产制造。其汽车电子事业部专注于AUTOSAR基础软件的技术开发和产品推广应用。
- 产品与服务:普华基础软件与意法半导体合作密切,并提供ST系列芯片的MCAL Demo工程和培训服务、集成服务等。此外,普华还自主研发了ORIENTAIS AUTOSAR汽车电子基础软件平台,该平台提供了操作系统、底层驱动等基础软件模块及集成开发环境。其操作系统严格遵循ISO 26262开发流程,满足行业最高的功能安全要求。
- 合作与认证:普华基础软件在2017年加大与英飞凌的合作,并推出了基于AUTOSAR 4.2.2的英飞凌AURIX平台。同时,普华基础软件也通过了ASPICE 3级认证。
不过我觉得这里面恒润是实力是稍强于另外两家的,我指的是技术实力哈,这个可以去整车厂采访一下,而且培养体系比较完善,就是工资一般,所以有汽车电子界的黄埔军校的称号。
相关文章:
MCAL(Microcontroller Abstraction Layer)介绍
目录 MCAL的核心作用 MCAL的模块组成 1. 微控制器驱动(Microcontroller Drivers) 2. I/O驱动(DIO, PWM, ADC等) 3. 通信驱动(Communication Drivers) 4. 存储驱动(Memory Drivers…...
爬虫:PhantomJS的详细使用和实战案例
文章目录 一、PhantomJS介绍1.1 什么是 PhantomJS1.2 PhantomJS 的特点与优势二、PhantomJS 的安装2.1 在 macOS 上安装 PhantomJS2.2 在 Linux 上安装 PhantomJS2.3 在 Windows 上安装 PhantomJS2.4 验证安装三、PhantomJS 的基本使用3.1 示例 1:打开网页并截图3.2 示例 2:获…...
目标检测——数据处理
1. Mosaic 数据增强 Mosaic 数据增强步骤: (1). 选择四个图像: 从数据集中随机选择四张图像。这四张图像是用来组合成一个新图像的基础。 (2) 确定拼接位置: 设计一个新的画布(输入size的2倍),在指定范围内找出一个随机点(如…...
深度学习工程师的技术图谱和学习路径
在构建一个深度学习工程师的技术图谱时,按照“技能树与能力模型”的结构可以帮助清晰地展示出技术体系的层次化关系,帮助学习者更好地理解每个技术点的依赖与顺序。 深度学习工程师的技术图谱和学习路径 以下是深度学习工程师的技能树,包括从基础到进阶的学习路径,以及对…...
Qt 文件操作+多线程+网络
文章目录 1. 文件操作1.1 API1.2 例子1,简单记事本1.3 例子2,输出文件的属性 2. Qt 多线程2.1 常用API2.2 例子1,自定义定时器 3. 线程安全3.1 互斥锁3.2 条件变量 4. 网络编程4.1 UDP Socket4.2 UDP Server4.3 UDP Client4.4 TCP Socket4.5 …...
如何使用ArcGIS Pro制作横向图例:详细步骤与实践指南
ArcGIS Pro,作为Esri公司推出的新一代地理信息系统(GIS)平台,以其强大的功能和灵活的操作界面,在地理数据处理、地图制作和空间分析等领域发挥着重要作用。 在地图制作过程中,图例作为地图的重要组成部分&…...
Kotlin 嵌套类和内部类
在Kotlin中,嵌套类(Nested Class)和内部类(Inner Class)是两种不同的类,它们在定义和使用上有一些区别。 1.嵌套类(Nested Classes)默认是静态的(即等同于Java中的stati…...
蓝蝶(BlueStacks)模拟器Root、Magisk、LSPosed及Shamiko框架安装与过应用检测指南
蓝蝶(BlueStacks)模拟器Root、Magisk、LSPosed及Shamiko框架安装与过应用检测指南 蓝蝶bluestacks模拟器root和magisk以及Lsposed和shamiko框架的安装过应用检测 一、引言 蓝蝶(BlueStacks)模拟器是一款广受欢迎的安卓模拟器&…...
OpenCV计算摄影学(6)高动态范围成像(HDR imaging)
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 高动态范围成像(HDR imaging)是一种图像处理技术,旨在通过增加图像的动态范围来更准确地表示真实世界的亮度差…...
[ComfyUI][AI生图]如何在Comfyui中安装插件管理器
如何在ComfyUI便携版中安装插件管理器 在现代软件环境中,图形用户界面(GUI)提供了一种直观的方式来与应用程序交互。ComfyUI是一个出色的GUI框架,它使用户能够通过图形化方式配置和管理他们的应用程序。特别是ComfyUI的便携版,它允许用户在没有安装的情况下使用这一工具,…...
初探Ollama与deepseek
什么是Ollama?它与大模型有什么联系? 简单说,Ollama就像是你电脑上的一个 “大模型小助手”。 以前,很多强大的大语言模型,比如能回答各种问题、写文章、翻译等的那些模型,要么只能在网上的服务器上用&am…...
Linux top 常用参数记录
top命令经常用来监控linux的系统状况,能实时显示系统中各个进程、线程的资源占用情况,是常用的性能分析工具。 一些常用参数记录 top的使用方式 top [-d number] | top [-bnp] # 5s 更新一次 top -d 5# 进行2次top命令的输出结果 top -n 2# 查看进程的…...
CCF-CSP认证 202104-1灰度直方图
题目描述 思路 首先输入矩阵长度、矩阵宽度和灰度范围,结果数组长度可固定,其中的元素要初始化为0。在输入灰度值的时候,结果数组中以该灰度值为索引的元素值1,即可统计每个灰度值的数量。 代码 C版: #include <…...
怎么下载安装yarn
安装 npm install --global yarn 是否安装成功 yarn -v Yarn 淘宝源安装,分别复制粘贴以下代码行到黑窗口运行即可 yarn config set registry https://registry.npm.taobao.org -g yarn config set sass_binary_site http://cdn.npm.taobao.org/dist/…...
Vulhub靶机 AppWeb认证绕过漏洞(CVE-2018-8715)(渗透测试详解)
一、开启vulhub环境 docker-compose up -d 启动docker ps 查看开放的端口 影响版本 Appweb 7.0.2以及之前的版本 二、访问靶机IP 8080端口 访问IP会弹出个登录框 1、随便输个用户名,利用burp抓包 2、修改数据包 ,发包 Authorization: Digest usern…...
CSS 系列之:grid 布局
基本概念 <template><div class"parent"><div class"box">p1-1</div><div class"box">p1-2</div><div class"box">p1-3</div></div><div class"parent"><…...
DeepSeek MLA(Multi-Head Latent Attention)算法浅析
目录 前言1. 从MHA、MQA、GQA到MLA1.1 MHA1.2 瓶颈1.3 MQA1.4 GQA1.5 MLA1.5.1 Part 11.5.2 Part 21.5.3 Part 3 结语参考 前言 学习 DeepSeek 中的 MLA 模块,究极缝合怪,东抄抄西抄抄,主要 copy 自苏神的文章,仅供自己参考&#…...
【计算机网络入门】初学计算机网络(七)
目录 1. 滑动窗口机制 2. 停止等待协议(S-W) 2.1 滑动窗口机制 2.2 确认机制 2.3 重传机制 2.4 为什么要给帧编号 3. 后退N帧协议(GBN) 3.1 滑动窗口机制 3.2 确认机制 3.3 重传机制 4. 选择重传协议(SR&a…...
Conda 环境搭建实战:从基础到进阶
在当今复杂多变的软件开发与数据科学领域,拥有一个稳定、可复现且易于管理的开发环境是项目成功的基石。Conda 作为一款强大的跨平台环境管理与包管理工具,为开发者提供了便捷高效的环境搭建与依赖管理解决方案。本文将深入探讨 Conda 环境搭建的实战技巧…...
大数据-236 离线数仓 - 会员活跃度 WDS 与 ADS 导出到 MySQL 与 广告业务 需求分析
点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! 目前开始更新 MyBatis,一起深入浅出! 目前已经更新到了: Hadoop࿰…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...
ArcGIS Pro+ArcGIS给你的地图加上北回归线!
今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等,设置经线、纬线都以10间隔显示。 2、需要插入背会归线…...
6.计算机网络核心知识点精要手册
计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...
【Qt】控件 QWidget
控件 QWidget 一. 控件概述二. QWidget 的核心属性可用状态:enabled几何:geometrywindows frame 窗口框架的影响 窗口标题:windowTitle窗口图标:windowIconqrc 机制 窗口不透明度:windowOpacity光标:cursor…...
八、【ESP32开发全栈指南:UDP客户端】
1. 环境准备 安装ESP-IDF v4.4 (官方指南)确保Python 3.7 和Git已安装 2. 创建项目 idf.py create-project udp_client cd udp_client3. 完整优化代码 (main/main.c) #include <string.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h&…...
