当前位置: 首页 > news >正文

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的核心作用

  1. 硬件抽象
    将MCU的硬件特性(如寄存器配置、外设操作)封装成标准化的API,使上层软件无需关心具体硬件型号。

  2. 统一接口
    提供跨平台的驱动程序接口(如GPIO控制、CAN通信),确保应用代码可移植到不同MCU。

  3. 降低开发成本
    避免针对不同芯片重复开发驱动代码,加速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的开发与配置流程

  1. 硬件需求分析
    根据ECU需求选择MCU型号(如英飞凌TC3xx、NXP S32K),明确外设资源(CAN通道数、ADC精度等)。

  2. 工具链配置
    使用AUTOSAR工具(如Vector DaVinci Configurator、EB Tresos)生成MCAL配置代码:

    • 定义引脚映射(如Port模块配置)。

    • 设置通信参数(如CAN波特率、报文ID过滤)。

    • 配置中断优先级、DMA通道等。

  3. 代码生成与集成
    工具自动生成C代码(如Mcu_Cfg.cCan_Cfg.c),与手动编写的复杂驱动代码集成。

  4. 测试验证

    • 静态测试:检查配置是否符合MCU硬件限制。

    • 动态测试:通过HIL(硬件在环)验证外设功能(如ADC采样精度、CAN通信稳定性)。

    • 功能安全测试:验证内存保护、错误注入处理机制(如ASIL D要求)。

        工具链里面用的最多的就是EB其次是Vector的达芬奇。感觉EB更好用点,不知道是不是用的多的原因。但是瑞萨只支持达芬奇,用瑞萨的时候就得用达芬奇了。


MCAL的典型应用场景

  1. 车身控制模块(BCM)

    • DIO控制车灯、车门锁。

    • LIN驱动车窗升降电机。

    • PWM调节车内氛围灯亮度。

  2. 发动机控制单元(ECU)

    • ADC采集进气压力、氧传感器信号。

    • PWM控制燃油喷射脉宽。

    • 定时器驱动火花塞点火时序。

  3. 电池管理系统(BMS)

    • ADC监测电池单体电压、温度。

    • CAN通信上报电池状态。

    • Flash存储电池健康数据。

  4. 智能驾驶域控制器

    • Ethernet驱动高速数据传输(如摄像头、雷达数据)。

    • 复杂驱动处理多传感器同步采样。

        除了这些还有VCU、数字钥匙、智能流媒体后视镜、各种车身域控单元等等。后续给大家讲下车里的架构以及架构的发展。


MCAL的优势与挑战

优势

  • 硬件无关性:上层软件无需修改即可适配不同MCU。

  • 标准化开发:减少底层驱动开发时间,提升代码复用率。

  • 安全合规:内置内存保护、错误检测机制,支持ISO 26262 ASIL等级认证。

挑战

  • 硬件适配复杂性:不同MCU的寄存器差异需精细处理。

  • 性能优化:高实时性场景(如电机控制)需优化驱动代码效率。

  • 工具链依赖:MCAL配置高度依赖商业工具(如Vector、EB),成本较高。


国产MCAL的发展现状

  • 技术突破:经纬恒润、东软睿驰、普华基础软件等企业已推出国产AUTOSAR MCAL解决方案,逐步替代海外产品。

  • 生态建设:国产MCU厂商(如芯驰科技、赛腾微电子)与本土AUTOSAR供应商(三巨头)合作,提供“芯片+MCAL”一体化方案。

拿了这位作者一张国产芯片介绍表给大家看一下。(懒着整理了哈哈,如果侵权的话我后面自己整理一下)

22家国产汽车MCU公司及型号盘点 - 知乎

  • 挑战

    • 工具链成熟度(如调试、测试功能)仍需提升。

    • 高端MCU(如车规级多核芯片)的MCAL支持能力不足。

简单介绍下国产AUTOSAR软件的三巨头:

  1. 东软睿驰

    • 产品优势:东软睿驰的汽车基础软件平台产品NeuSAR具有软硬件协同能力强、软件模块覆盖完整度高等优势。其AUTOSAR产品NeuSAR版本为21-11,是目前国内最先进的,包括支持AUTOSAR Adaptive标准的NeuSAR aCore平台和支持AUTOSAR Classic标准的NeuSAR cCore平台。
    • 生态建设:东软睿驰致力于建立完整的开发生态,包括从整车SOA设计到域控制器的应用架构设计,同时配置相应的平台管理产品和中间件。此外,东软睿驰还牵头推进了中间件ASF、车云一体等技术规范、行业标准的建设,在汽车基础软件的应用与传播、技术交流学习的促进、行业共识的形成、行业标准的建设等方面起到了重要作用。
    • 会员等级:东软睿驰在2017年加入AUTOSAR时即为2级会员,后于2022年升级为1级会员。
  2. 经纬恒润

    • 公司背景:经纬恒润成立之初靠代理销售国外汽车电子研发工具起家,2005年进入汽车电子领域,通过承接项目迎来汽车电子业务发展转折点。
    • 合作情况:经纬恒润与英飞凌等硬件芯片厂商有长期合作关系,其自主开发的AUTOSAR中间件也更贴近中国国情。
    • 会员等级:经纬恒润在2007年就已加入AUTOSAR,是最早加入的中国企业之一,后于2022年升级为1级会员。
  3. 普华基础软件

    • 公司背景:普华基础软件由中央直属中国电子科技集团公司(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&#xf…...

爬虫: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灰度直方图

题目描述 思路 首先输入矩阵长度、矩阵宽度和灰度范围&#xff0c;结果数组长度可固定&#xff0c;其中的元素要初始化为0。在输入灰度值的时候&#xff0c;结果数组中以该灰度值为索引的元素值1&#xff0c;即可统计每个灰度值的数量。 代码 C版&#xff1a; #include <…...

怎么下载安装yarn

安装 npm install --global yarn 是否安装成功 yarn -v Yarn 淘宝源安装&#xff0c;分别复制粘贴以下代码行到黑窗口运行即可 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、随便输个用户名&#xff0c;利用burp抓包 2、修改数据包 &#xff0c;发包 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 模块&#xff0c;究极缝合怪&#xff0c;东抄抄西抄抄&#xff0c;主要 copy 自苏神的文章&#xff0c;仅供自己参考&#…...

【计算机网络入门】初学计算机网络(七)

目录 1. 滑动窗口机制 2. 停止等待协议&#xff08;S-W&#xff09; 2.1 滑动窗口机制 2.2 确认机制 2.3 重传机制 2.4 为什么要给帧编号 3. 后退N帧协议&#xff08;GBN&#xff09; 3.1 滑动窗口机制 3.2 确认机制 3.3 重传机制 4. 选择重传协议&#xff08;SR&a…...

Conda 环境搭建实战:从基础到进阶

在当今复杂多变的软件开发与数据科学领域&#xff0c;拥有一个稳定、可复现且易于管理的开发环境是项目成功的基石。Conda 作为一款强大的跨平台环境管理与包管理工具&#xff0c;为开发者提供了便捷高效的环境搭建与依赖管理解决方案。本文将深入探讨 Conda 环境搭建的实战技巧…...

大数据-236 离线数仓 - 会员活跃度 WDS 与 ADS 导出到 MySQL 与 广告业务 需求分析

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...