【AUTOSAR MCAL】MCAL基础与EB tresos工程新建

2023-12-17 09:44

本文主要是介绍【AUTOSAR MCAL】MCAL基础与EB tresos工程新建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章介绍了AUTOSAR MCAL的基础概念,软件架构以及AUTOSAR MCAL规范,拆解介绍了MCAL的相关背景知识。针对特定的芯片平台,文章还介绍了EB tresos工程的新建以及一些常见的tresos操作。

目录

MCAL概述

基本概念

软件架构

AUTOSAR MCAL规范

新建TC3xx EB-tresos工程


MCAL概述

基本概念

MCAL全称为Microcontroller Abstraction Layer,即微控制器抽象层。顾名思义,作为AUTOSAR分层模型中BSW最底层,它包含可以直接访问所有映射到微控制器地址空间的片内外设与核心寄存器。它具有两方面特点,其一是将芯片相关的初始化配置进行统一的管理,可以通过图形界面配置的方式来生成动态代码。其二是实现并预留了符合AUTOSAR规范的接口,方便上层软件以统一的方式对MCAL进行使用。这两方面特点不仅能使以前需要Coding的开发工作转换为配置,提高开发速度,还可以保证上层软件的标准化和通用性。


软件架构

下图是MCAL的基础软件架构,方便我们先做一些初步的了解:

下面对MCAL各部分模块驱动进行分析。首先我们来看微控制器(核心)驱动

  • GPT Driver:GPT(General Purpose Timer)通用定时器驱动模块使用MCU硬件定时器通道,为操作系统或者其他基础软件模块提供计时功能,实现不同周期的任务调用以及操作时间统计等功能。
  • WDG Driver:WDG(Watchdog)驱动程序可以提供不同喂狗周期的初始化配置,并提供超时不喂狗重启(软件崩溃)的功能。
  • MCU Driver:MCU(Micro Controller Unit)驱动程序提供MCU设置、初始化时钟并完成配置电源模式等。

下面我们来看存储器方面的驱动。

  • FLS Driver:FLS (Flash) 驱动程序初始化 FLS并读取/写入FLS。以TC397为例,FLS对DFlash0 Bank完成读取写入擦除等操作。

TC397还有FEE和FlsLoader两部分模块驱动从不同的角度来操作存储器。

下面我们继续来看通信相关的驱动模块。

  • SPI Handler/Driver:SPI(Serial Peripheral Interface)SPI驱动模块是微控制器内部同步串行通信接口的驱动,可以配置数据使用SPI驱动的内部缓冲器,或者是由用户提供的外部缓冲器。可以根据硬件属性来定义SPI任务,然后组成任务序列,以优先级排序的方式来传递数据。
  • LIN Driver:LIN(Local Interconnected network)是基于UART/SCI(Universal Asynchronous Receiver-Transmitter/SerialCommunication Interface通用异步收发器/串行通信接口)的低成本串行通信协议,该模块完成LIN模块初始化以及收发等操作。
  • CAN Driver:CAN驱动主要完成对片内CAN控制器的初始化与使用,完成CANController,CanHardwareObject等配置。
  • FlexRay Driver:FlexRay设备驱动程序初始化FlexRay并执行FlexRay输入/输出。
  • Ethernet Driver:该驱动模块对所使用的以太网控制器的硬件特性进行了抽象,完成以太网初始化以及收发。

最后我们来了解一下I/O相关的驱动。

  • PORT Driver:对芯片的所有I/O口进行初始化,可以配置成通用I/O、模数转换、脉宽调制等功能。对各管脚的具体配置和使用取决于微控制器引脚功能分配。
  • DIO Driver:DIO(Digital Input/Output)驱动对微控制器硬件管脚的访问进行了抽象,驱动输出通用I/O口置位或读出输入通用I/O口。
  • ADC Driver:ADC(Analog Digital Converter)是片内模拟转数字驱动程序。它提供初始化,启动/停止AD转换,设置AD转换结果缓冲区并读取AD转换结果的功能。
  • PWM Driver:PWM驱动为片内PWM模块提供初始化和控制服务,可生成周期和占空比都可变的方波脉冲。
  • ICU Driver:ICU(Input Capture Unit)是微控制器的输入捕获单元。它可以对信号边沿进行检测并通知,它还可以测量PWM波形。

每个微控制器都配备了自己的MCAL软件来访问系统 MCU 的片上外设,点击这里即可访问瑞萨芯片官网下载MCAL,英飞凌则需要在官网提交申请进行下载。


AUTOSAR MCAL规范

AUTOSAR MCAL驱动程序软件规范包含MCAL驱动程序需要满足的所有软件要求(包括静态&动态代码)。主要包括了以下几个部分。

  1. 功能概述:定义模块实现的具体功能,比如定义MCU驱动程序提供基本微控制器初始化、时钟初始化、电源管理模式(低功耗)以及复位等微控制器特定功能。下图说明了MCU驱动规范的范围。

  2. 依赖关系:定义了此模块与其他模块的依赖关系,下图为模块涉及包含的头文件结构图。

  3. 功能规范:定义了包括复位、时钟管理的一般功能规范,还定义了包括错误分类,错误检测,错误通知以及调试支持等一系列功能规范。

  4. API规范:定义了模块包含的数据类型,模块内部的类型定义,函数定义以及预留的接口和API参数检测。下图为Mcu_Init的函数定义。

  5. 功能时序图:定义用户代码与驱动模块完成特定功能的时序,下图为应用代码与MCU驱动模块间为完成MCU初始化功能所经历的时序图。

  6. 配置规范:定义了提供给用户进行初始化以及驱动能力配置选项的规范说明,下图定义了驱动是否提供重启接口的配置选项。

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 availableFALSE: 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生成的文件目录。


新建TC3xx EB-tresos工程

首先,使用默认路径或者提前建立好的文件夹路径存放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.

欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。

这篇关于【AUTOSAR MCAL】MCAL基础与EB tresos工程新建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/503914

相关文章

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

MyBatisX逆向工程的实现示例

《MyBatisX逆向工程的实现示例》本文主要介绍了MyBatisX逆向工程的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录逆向工程准备好数据库、表安装MyBATisX插件项目连接数据库引入依赖pom.XML生成实体类、

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键