->返回总目录-<
MCAL是 Microcontroller Abstraction Layer(微控制器抽象层)的简写,是AuoSar架构中的概念,在Autosar架构中的位于BSW(基本软件层),且位于BSW的底层,如下:
该结构图在AuoSar官方文档中AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf,MCAL位于BSW中的底层,属于底层驱动,对上层提供API接口,AutoSar架构中划分目的是使上层软件独立于硬件之外,这个读者可单独了解AutoSar架构和其分层意义,以及汽车电子为什么使用AutoSar,这里不多阐述。
MCAL细分四个大模块,Microcontroller Drivers(Gpt,Wdg,Mcu,CorTst),Memory Drivers(Fls,Eep),I/O Drivers(Ocu,Icu,Pwm,Adc,Dio,Port),Communication Driver(Spi,Lin,Can,Fr,Eth,Uart)
先安装MCAL包,在对应的安装包里,点击exe安装,目录可自定义。安装好后在目录下可查看文件,下方说明对应目录内容。
DemoWorkspace为对应MCAL包模块的demo,点击进入,0_Src为MCAL工程代码,含有每个MCAL模块demo用例。1_ToolEnv为EB tresos工程,该工程为DEMO中使用到的MCAL配置。DemoAppBuild.bat和Makefile是编译脚本,脚本中指定了编译工具,但是我们不使用默认的工具,因此不关注这两个文件。
0_Src目录如下:
以下大概列举了文件内容,内容功能描述在每行后备注
.
|-- AppSw
| `-- Tricore
| |-- Cfg_Ssw
| | `-- TC39B // BMHD UCB配置
| | |-- Ifx_Cfg_SswBmhd.c
| |-- DemoMcal // MCAL模块的测试demo
| | |-- Demo_Adc // MCAL模块的adc测试demo,下同
| | |-- Demo_Can_17_McmCan
| | |-- Demo_Dio
| | |-- Demo_Fee
| |-- Main // core0_main.c位置(corex)
`-- BaseSw
`-- Infra // MCAL模块依赖代码
|-- Autosar_Srv // MCAL模块中使用到的det,ecu及在EB中配置的回调函数
| |-- CanIf.c
| |-- CanIf.h
| |-- CanIf_Cbk.c
| |-- CanIf_Cbk.h
| |-- CanIf_Types.h
| |-- xxx.c/.h
|-- Integration // MCAL模块依赖的MMAP及SchM调度接口
| |-- Adc_MemMap.h
| |-- xxx.c/.h
|-- Irq
|-- Ssw // MCU启动SSW代码,从这里开始启动,调用到corex_main
|-- TC39B
|-- Tricore
|-- Ifx_Sswxx.c/.h
1_ToolEnv为EB tresos工程,其目录结构如下:
.
|-- 0_Build
| |-- 1_Config // tricore对应的编译工具链,对应的链接脚本,lsl.
| |-- Config_Tricore_Dcc
| |-- Config_Tricore_Ghs
| |-- Config_Tricore_Gnuc
| |-- Config_Tricore_Tasking
|-- 1_Debug
|-- 2_Tresos
| |-- DemoApp
| |-- config // MCAL模块配置文件,配置内容在这里体现
| |-- Port.xdm
| |-- xxx.xdm
| |-- output // 配置输出文件,这里是输出的arxml文件(可以导入到Davinci cfg中),inc和src中是生成的动态代码,对应模块的配置数据,
| |-- Port_Bswmd.arxml
| |-- xxx.arxml
| |-- inc
| | |-- Port_Cfg.h
| | |-- xxx.h
| |-- src
| |-- Port_Lcfg.c
| |-- xxx.c
|-- StartFwDos.bat
|-- Start_Eclipse.bat
这里要注意output是配置输出文件路径,这里输出的arxml文件可以导入到Davinci cfg中在cfg中配置MCAL,当然,也可以从Davinci cfg将配置导出,导入到EB tresos配置MCAL,inc和src中是生成的动态代码,对应模块的配置数据,比如上述的Port模块,Lcfg.c中定义了,端口属性,如下,gpio0.0配置成输入,上拉,输入模式,默认为低电平。通过静态代码中Port_Init(&Port_Config)初始化所有的PORT端口
static const Port_n_ConfigType Port_kConfiguration[] =
{
/* Port0 */
{
{
/* Port pins direction, characteristics and mode configuration */
((uint8)PORT_PIN_IN | PORT_PIN_IN_PULL_UP | PORT_PIN_MODE_GPIO),/*Pin 0*/
},
{
/* Port pins initial level configuration */
PORT_PIN_LEVEL_LOW,/* Pin 0 */
},
/* Port pins drive strength1 configuration */
Portx_lPdrConfig1(
(PORT_INPUT_LEVEL_CMOS_AUTOMOTIVE|PORT_PIN_PAD_STRENGTH_DEFAULT),/*Pin0*/
),
/* Port pins drive strength2 configuration */
Portx_lPdrConfig2(
(PORT_INPUT_LEVEL_CMOS_AUTOMOTIVE|PORT_PIN_PAD_STRENGTH_DEFAULT),/*Pin8*/
),
{/* Port pin run time mode changeable or not configuration */
PORT_PIN_EMERGENCY_STOP_DISABLE,/* Pin 0 */
}
},
}
const Port_ConfigType Port_Config =
{
/* Port Configuration set */
&Port_kConfiguration[0],
/* Port 40-th Disc configuration set */
XXX
};
这里有两个文件,
PluginsTresos是Tresos插件,安装后需要把这里的插件Adc_Aurix2G等内容拷贝到EB安装路径下tresos/plugins/下,需要用到哪些模块就拷贝哪些插件,原则上是可以全部拷贝过去。
注意:EB没插件时无法创建对应MCU MCAL工程的。无法选择芯片型号。下方会讲解EB如何安装。
Src是MCAL静态代码和静态代码需要的寄存器地址及寄存器以及基本的数据类型。在工程当中,使用到哪些模块就添加哪些模块代码。
.
|-- Infra_Prod
| |-- Platform // 数据类型
| | |-- Platform_Types.h
| | |-- Std_Types.h
| |-- Sfr // 寄存器地址及寄存器类型
| `-- TC39xB
`-- Mcal
|-- Tricore // MCAL的静态代码
|-- Adc
|-- Dio
|-- McalLib
|-- Mcu
|-- Port
在EB安装包EB_xx_Installer_CommandDownload中双击
setup.exe,一路默认安装即可,安装路径可自定义
在EB安装包EB_xx_ClientLicenseAdmin_CommandDownload中安装client,一路默认安装即可.
在应用程序中输入EB,找到EB Client License Administrator并打开client,按照图示输入license
安装插件,将MCAL安装包中的插件拷贝到EB安装路径下,如下图:
将MCAL安装路径下的插件全部复制
拷贝到EB安装目录下:
点击tresos_gui.exe打开EB,
新建工程:
新工程创建后再工程名上右击选择Module Configurations,可添加MCAL模块
到这里MCAL和EB的基本工程创建介绍就介绍完啦!
下个文章将开始介绍如何使用EB创建基本的MCAL工程,并使用Aurix Development Studio(免费的TASKING工具)在开发板上调试MCAL工程~~~
->返回总目录-<