TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍

  • MCAL结构介绍
    • MCAL结构
    • MCAL模块
  • MCAL安装包说明
    • DemoWorkspace
    • Mclsar
  • EB 环境配置
    • EB环境安装
    • EB新建工程

->返回总目录-<

MCAL结构介绍

MCAL结构

MCAL是 Microcontroller Abstraction Layer(微控制器抽象层)的简写,是AuoSar架构中的概念,在Autosar架构中的位于BSW(基本软件层),且位于BSW的底层,如下:
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第1张图片
该结构图在AuoSar官方文档中AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf,MCAL位于BSW中的底层,属于底层驱动,对上层提供API接口,AutoSar架构中划分目的是使上层软件独立于硬件之外,这个读者可单独了解AutoSar架构和其分层意义,以及汽车电子为什么使用AutoSar,这里不多阐述。

MCAL模块

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安装包说明

先安装MCAL包,在对应的安装包里,点击exe安装,目录可自定义。安装好后在目录下可查看文件,下方说明对应目录内容。
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第2张图片

DemoWorkspace

DemoWorkspace为对应MCAL包模块的demo,点击进入,0_Src为MCAL工程代码,含有每个MCAL模块demo用例。1_ToolEnv为EB tresos工程,该工程为DEMO中使用到的MCAL配置。DemoAppBuild.bat和Makefile是编译脚本,脚本中指定了编译工具,但是我们不使用默认的工具,因此不关注这两个文件。
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第3张图片
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,incsrc中是生成的动态代码,对应模块的配置数据,比如上述的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
};

Mclsar

这里有两个文件,
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环境安装

在EB安装包EB_xx_Installer_CommandDownload中双击
setup.exe,一路默认安装即可,安装路径可自定义
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第4张图片
在EB安装包EB_xx_ClientLicenseAdmin_CommandDownload中安装client,一路默认安装即可.

在应用程序中输入EB,找到EB Client License Administrator并打开client,按照图示输入license
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第5张图片

安装插件,将MCAL安装包中的插件拷贝到EB安装路径下,如下图:
将MCAL安装路径下的插件全部复制
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第6张图片
拷贝到EB安装目录下:
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第7张图片

EB新建工程

点击tresos_gui.exe打开EB,
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第8张图片
新建工程:
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第9张图片
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第10张图片
新工程创建后再工程名上右击选择Module Configurations,可添加MCAL模块
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第11张图片
TC397 EB MCAL开发从0开始系列 之 [1.0]-MCAL结构及Demo介绍_第12张图片

到这里MCAL和EB的基本工程创建介绍就介绍完啦!
下个文章将开始介绍如何使用EB创建基本的MCAL工程,并使用Aurix Development Studio(免费的TASKING工具)在开发板上调试MCAL工程~~~

->返回总目录-<

你可能感兴趣的:(EB,MCAL运行工程,mcu,自动驾驶)