文章介绍了AUTOSAR MCAL的基础概念,软件架构以及AUTOSAR MCAL规范,拆解介绍了MCAL的相关背景知识。针对特定的芯片平台,文章还介绍了EB tresos工程的新建以及一些常见的tresos操作。
目录
MCAL全称为Microcontroller Abstraction Layer,即微控制器抽象层。顾名思义,作为AUTOSAR分层模型中BSW最底层,它包含可以直接访问所有映射到微控制器地址空间的片内外设与核心寄存器。它具有两方面特点,其一是将芯片相关的初始化配置进行统一的管理,可以通过图形界面配置的方式来生成动态代码。其二是实现并预留了符合AUTOSAR规范的接口,方便上层软件以统一的方式对MCAL进行使用。这两方面特点不仅能使以前需要Coding的开发工作转换为配置,提高开发速度,还可以保证上层软件的标准化和通用性。
下图是MCAL的基础软件架构,方便我们先做一些初步的了解:
下面对MCAL各部分模块驱动进行分析。首先我们来看微控制器(核心)驱动
下面我们来看存储器方面的驱动。
TC397还有FEE和FlsLoader两部分模块驱动从不同的角度来操作存储器。
下面我们继续来看通信相关的驱动模块。
最后我们来了解一下I/O相关的驱动。
每个微控制器都配备了自己的MCAL软件来访问系统 MCU 的片上外设,点击这里即可访问瑞萨芯片官网下载MCAL,英飞凌则需要在官网提交申请进行下载。
AUTOSAR MCAL驱动程序软件规范包含MCAL驱动程序需要满足的所有软件要求(包括静态&动态代码)。主要包括了以下几个部分。
MCAL代码分为静态代码以及动态代码,静态的代码为MCAL的核心代码,其提供符合AUTOSAR MCAL软件规范以及微控制器硬件规范的底层驱动程序,可以支持访问微控制器的片内外设。以TC3xx为例,MC-ISAR_AS422_TC3xx_BASIC_1.40.0\McIsar\Src\Mcal\Tricore目录下包含了BASIC部分的驱动静态代码,每个模块都包含对应的.c与.h文件。他们往往不需要用户进行改动。
MCAL的动态代码是通过代码生成工具生成的,代码生成工具需要输入PDF(Parameter Definition File)文件,这种文件以XML编写,通常为.arxml或者.xdm为后缀,定义了配置参数的描述及其最小值和最大值。下面的XML代码定义了McuPerformResetApi配置项的相关参数。
<v:var name="McuPerformResetApi" type="BOOLEAN">
<a:a name="DESC"
value="Pre-processor switch to enable / disable the use of the function Mcu_PerformReset()
TRUE : The function Mcu_PerformReset() is available
FALSE: The function Mcu_PerformReset() not is available"/>
<a:a name="IMPLEMENTATIONCONFIGCLASS"
type="IMPLEMENTATIONCONFIGCLASS">
<icc:v vclass="PreCompile">VariantPostBuild</icc:v>
</a:a>
<a:a name="POSTBUILDVARIANTVALUE" value="false"/>
<a:a name="ORIGIN" value="AUTOSAR_ECUC"/>
<a:a name="SCOPE" value="LOCAL"/>
<a:a name="SYMBOLICNAMEVALUE" value="false"/>
<a:a name="UUID"
value="ECUC:88316ee4-ac23-418d-a433-20ccecc20da2"/>
<a:da name="DEFAULT" value="false"/>
</v:var>
我们一般使用的配置工具是EB-tresos,它导入PDF(选择具体芯片平台)之后能够提供了图形界面(GUI)来供我们进行相关配置,然后最终生成动态代码。
它生成的动态代码包含两个部分,一个部分是与静态代码配合完成底层驱动工作,它们大部分的名称格式为*_PBCfg.c和*_PBCfg.h或者*_Cfg.h。芯片平台会基于Autosar规范,结合硬件平台的实际情况,提供MCAL User Manual以及MCAL Configuration Verification Manual,它们会进一步详细的说明针对此芯片对应的MCAL的方方面面,下图为MCU驱动模块代码文件结构,里边用红色框出的即为动态代码。
EB还会生成以.xdm为后缀的配置文档,保存了当前的配置信息。如下代码所示。
<d:var name="McuPerformResetApi" type="BOOLEAN" value="true"/>
它还生成了以.arxml结尾的ECU描述文件,如果AUTOSAR MCAL驱动程序在不同项目团队中共享,则ECU Desc文件可以充当代码生成工具的输入。下图一份MCAL生成的文件目录。
首先,使用默认路径或者提前建立好的文件夹路径存放workspace文件。
关闭掉引导文件之后,即可以看到可以看到下图,因为我之前建立(导入)过工程,这里显示了我有两个工程。
选择File-->New-->Configuration Project,建立新的工程。
起一个合法的工程名。
填写ECU_ID以及根据实际情况选择芯片类型,注意勾选Automatically add minimum number of child elements in lists。这样新建的工程会添加一些基本的配置结构,包括Port里各个PIN。
建立好之后就能在Project Explorer中见到我们刚建立好的工程,然后点击选择ECU(CSDN_TC397),右键选择Module Configurations添加驱动模块。
下图添加了MCU模块,选中左边的可选模块中的MCU,然后单击右指的绿色加号摁扭即可完成添加。?删除的的话选中中部已添加的模块,点击右指的红色减号摁扭即可完成删除,最右边可以修改生成代码的路径和使用的xdm文件,如果需要导入已有的模块xdm配置文件,在这里选择点击OK即可。
校验和生成摁扭如下如所示。
如果没有配置项非法或者依赖错误,生成会得到下图。
点击具体的驱动模块,右键可以选择模块使能状态,Disable之后不再生成该模块对应的动态代码。
十六宿舍 原创作品,转载必须标注原文链接。
?2023 Yang Li. All rights reserved.
欢迎关注?『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。