• 85查看
  • 0回复

[Autosar] AUTOSAR MCAL(1):Microcontroller Driver

[复制链接]

该用户从未签到

发表于 18-4-2024 21:45:26 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


目录1. MCAL概述2. Microcontroller Drivers2.1 MCU Drivers2.2 GPT Driver2.3 WatchDog Driver2.4 CoreTest3.小结
1. MCAL概述

今天正式开始AUTOSAR MCAL之旅。首先回顾一下AUTOSAR的分层,如下图:
AUTOSAR MCAL(1):Microcontroller Driverw1.jpg
Microcontroller Abstraction Layer(MCAL):红色部分,AUTOSAR BSW最下层,它可以直接访问µC和内部外设;ECU Abstraction Layer:绿色部分,负责提供统一的访问接口,实现对通信、内存或者I/O的访问,从而无需考虑这些资源由哪些外设或者设备提供;Complex Drivers:绿色部分,非AUTOSAR定义的特殊功能;Services Layer:紫色部分,为应用提供OS、NM、Memory、诊断等接口
那么我们要讨论的MCAL部分,里面具体内容如下:

AUTOSAR MCAL(1):Microcontroller Driverw2.jpg
它分为五个大类:

    Miicrocontroller Drivers:内部外设驱动,如GPT、Watchdog等;Memory Drivers:片内Flash、EEPROM和片外Flash的驱动等;Crypto Drivers:片上加密设备的驱动,如SHE、HSM;Communication Drivers:ECU板级通信的驱动,如CAN、LIN、SPI等;Wireless Comm. Drivers:无线网络通信的驱动I/O Drivers:模拟、数字输入输出的驱动,如DIO、PWM
今天主要讲Microcontroller Drivers 。 2. Microcontroller Drivers

如上面所讲,Microcontroller Drivers主要包含了GPT Driver、Watchdog Driver、MCU Driver和Core Test几个模块。2.1 MCU Drivers

该驱动主要为MCAL其他模块提供基础的MCU初始化、复位、下电和某些芯片特定功能。从代码角度看,MCU运行完BootRom的启动代码后,MCU Driver可能是CP AUTOSAR中最先被调用的模块,如下图:
AUTOSAR MCAL(1):Microcontroller Driverw3.jpg
进一步的,该模块主要提供的功能有:

    从硬件获取复位原因;提供芯片级复位;低功耗设置;RAM初始化;MCU时钟配置;
通过SWS中的API定义也可以窥探一二,如下::
AUTOSAR MCAL(1):Microcontroller Driverw4.jpg
其中比较常用的接口有Mcu_PerformReset,在诊断、看门狗、BswM和EcuM可以根据具体项目需求进行调用。2.2 GPT Driver

GPT Driver全称General Purpose Timer Driver,用于初始化和控制MCU内部的硬件计时器,具体的作用如下:
    开启和关闭硬件Timer;获取指定Timer值;控制基于时间触发的中断通知;控制基于时间唤醒的中断触发。
需要注意的是,GPT一般只用来产生时间基(Time base),用于产生中断,或者因此不是所有的硬件Timer都由GPT控制,特别是PWM、ICU这些驱动的功能实现。所以一般来讲,我们在设计代码时只需选用一个Timer给Gpt就行了。Gpt运行模式分为One-Shot和Continuous两种。One-Shot表示一旦Timer计数达到目标值,硬件Timer会自动停止计数并保持当前值,如下:
AUTOSAR MCAL(1):Microcontroller Driverw5.jpg
Continunous表示一旦Timer达到目标值,硬件timer又会自动从0开始计数;
AUTOSAR MCAL(1):Microcontroller Driverw6.jpg
2.3 WatchDog Driver

该模块比较简单,就是用于初始化看门狗、喂狗、切换看门狗模式等。能够调用的API也比较羞涩,如下:
    Wdg_InitWdg_SetModeWdg_SetTriggerCondition
2.4 CoreTest

在考虑Fusa设计时,CoreTest、RAMtest和Flash Test是必须要涉及的。CoreTest主要就是针对MCU的内核最小系统进行测试,常见的Core主要由CPU、内部特定memory(例如Cache、TCM)、中断控制器、MPU和调试接口等组成,如下:

AUTOSAR MCAL(1):Microcontroller Driverw7.jpg
因此,CoreTest驱动主要提供对内核的测试Patten配置、轮询和通知测试结果等等,此外还要对特定内核提供测试手段,例如要测arm某内核,就需要对内核的通用寄存器和ALU进行测试。因此,CoreTest这个模块通常是要与芯片厂提供的内核STL进行结合。 那么这里就要考虑一个问题,这个测试是上电之后只做一次,还是周期触发去测试,
AUTOSAR MCAL(1):Microcontroller Driverw8.jpg
这要涉及到内核的通用寄存器测试,因此还是有很大风险。3.小结

本文主要对Microcontroller Driver做了一个概述,了解了每个模块的作用,大家其实在日常工作接触的比较多的通信和memory,这块涉及的相对底层,和MCU本身提供的硬件特性强相关,做一个科普方便后续给做MCU bringup。

往期回顾:

1.汽车标定精选
汽车标定技术--标定概念详解
汽车标定技术--Bypass的前世今生
万字长文:汽车标定技术--XCP概述

2.AUTOSAR精选
AUTOSAR CryptoStack--CSM Job夹带了哪些私货
AUTOSAR 诊断栈分析(一)
AUTOSAR OS概述(一)

3.汽车网络安全精选
汽车信息安全--MCU启动常用密码算法
汽车网络安全方案需求分析
汽车信息安全--常见车规MCU安全启动方案
车载信息安全场景概述

4.汽车功能安全精选

5.汽车虚拟化精选

    汽车ECU虚拟化技术初探(一)

    汽车ECU虚拟化技术(二)--U2A虚拟化功能

6.杂七杂八

    Flash模拟EEPROM原理浅析

    征途漫漫:汽车MCU的国产替代往事

    车规MCU应用场景及国产替代进展

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 2-5-2024 00:05 , Processed in 0.285755 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.