前言
上篇文章将基础环境搭建完成后,本篇我们开始搭建一个基础工程,后面所有的开发围绕此基础工程展开进行开发。为了让大家更加了解MCAL,本篇课程手把手教学如何搭建一个MCAL的基础开发工程。
MCAL开发需要用到两个工程,一个是EB工程,主要用于配置芯片及外设驱动电气属性,一个是S32DS工程,主要是编译代码生成最终的可执行文件。EB和S32DS两个工程就好比SD32的工程只是MCAL的空壳,需要EB生成的配置文件连填充才可以发挥作用!
一、EB基础工程搭建
对于EB工程来说,上篇我们在安装RTD时官方就为我们提供了大量的示例工程,我们只需要在官网示例工程上修改即可,这样省时又省力。上篇安装的RTD目录如下:
我们将Dio作为基础工程,将此工程复制到EB的workspace中(注:文件路径需要根据大家实际安装的来):
在EB中打开如下:
点击Browse选择工程路径
导入工程:
初次编译:
编译完成
编译完成后如何查看编译结果呢?如下:
在generate下又两个文件夹,一个时include,一个是src分别为EB生成的源代码和头文件,好奇的小伙伴可以打开里面看一下,都是些宏定义于全局结构体之类的,没错,这些生成的文件仅仅只是配置文件,例如IO需要配置上拉/下拉,输出/输入,那么这些配置文件体现的就是这些。
为了工程能够最大简易化,我们在EB中做适量的修改如下:
需要将错误导出选项取消勾选,然后在编译:
接下来回到EB工程顶层目录,我们讲几个重要的文件夹。
generate文件:主要是保存EB编译输出的配置文件,分别在此目录下的src和include中。
Include:MCAL接口使用实例头文件。
Src:MCAL接口使用实例源文件。
TresosProject:这个文件夹很重要,目录下的config目录下.xdm保存着EB的模块配置信息。也就是说我配置的GPIO信息都存在了.xdm中,如果我想将GPIO移植到另一个工程,那么我们直接将对应模块的.xdm拷贝过去即可。
这里我们先对几个重要的文件夹做简单的介绍,先有个印象,后序我们用到在详细讲述。
二、EB使用技巧
本小节简单教大家使用以下EB,如果用过EB的小伙伴就可以跳过本节了。
右击工程选择Module Configurations选项。
打开Outline查看全局树节点:
打开outline,outline可以快速定位我们想看的树节点。
路径:window-> show view-> other->General->outline
其他后面用到的地方在做讲解。
三、S32DS基础工程搭建
安装的RTD中有很多我们用不到的文件,我们需要将他裁剪掉。步骤如下:
先将RTD中的MCAL库文件复制出来:
我们裁剪RTD裁剪后文件夹下的MCAL,裁剪步骤如下:
①除Base 和 Platform 外只保留 include 和 src
②CANIF 、MemIf 模块只有include,只保留include;ECUC,Resource 没有include 和 src,可以把文件夹整体删除。
③Base 模块除了“include”和“src”文件夹以外,还需要将Base模块下的“header”
④Platform除src和include,还需要留下“build_files”文件夹和startup 文件夹
Build_files下只保留 gcc 文件夹,其它是用于其它编译器的链接文件
Startup 文件夹startup\src\m7 文件夹,删除gcc外的其它两个文件夹,是用于其它编译器的启动代码。
若不想裁剪的小伙伴可直接用资料中裁剪好的。
打开S32DS,点击File->New->S32DS Application Project
点击Next,下面我们不选SDK,我们最后用的是MCAL驱动库。
点击Finish,会自动帮我们创建表文件、链接文件。接下来我们需要删除工程中不需要的文件夹,先删除include文件,MCAL有自己的头文件,然后删除位于“Project_Settings”中的“Startup_Code”文件夹和“Linker_Files”文件夹下的内容。MCAL有自己的链接文件和启动文件。
我们在工程目录中新建MCAL文件夹和EBCfg文件夹,其中EBCfg中新建include和src文件夹
将上诉裁剪后的MCAL驱动库以下部分拷贝至我们的工程MCAL目录中
将EB编译生成的配置文件分别放到S32DS工程目录EBCfg的include和src中
右击工程点击File->Refresh刷新工程
右击工程选择Build Configurations Exprlorer选项
右击工程选择Properties选项,进行如下配置:
①添加MCAL头文件路径
②定义相关宏
③选择C语言风格为C99
④优化等级设置,直接复制-funsigned-char -fshort-enums -fomit-frame-pointer -fstack-usage -fdump-ipa-all
⑤设置编译警告,直接复制:
-Wstrict-prototypes -Wundef -Werror=implicit-function-declaration -Wsign-compare
⑥设置链接文件
⑦设置编译杂项,–entry=Reset_Handler -lc -lm -lgcc
⑧添加启动文件
至此我们工程就设置完成了,接下来编译工程如下:
基础工程我们就搭建完成了,如果小伙伴觉得上诉搭建工程比较繁琐,可以直接使用资料包已经搭建好的基础工程,等学习完整个MCAL驱动开发后,在回来搭建会更加容易,下来我们开始驱动开发!
所有资料购买链接如下:本课件包含教学文档,驱动例程,以及各类安装包。
【闲鱼】https://m.tb.cn/h.5LD9uBP?tk=waHpWhhD5sF CZ3457 「我在闲鱼发布了【重磅推出,汽车电子必学AutoSAR开发之MCAL开发,基于】」
点击链接直接打开