天天看点

使用S32DS集成MCAL

作者:Stephen Du

免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性。复制/转发请注明来源/作者。

欢迎添加微信交流学习。
使用S32DS集成MCAL

很多网友希望了解如何将MCAL集成到我们的S32DS里的方法或者说如何使用S32DS来编译调试MCAL的代码。本文将一步步讲解如果实现。

如果本文对你有帮助,可关注,可私信,也非常欢迎添加微信,一起交流学习,我会不断推出相关文章。

1. 前言

由于MCAL提供的示例工程默认是Makefile的形式,而Makefile对于很多公司/开发人员来说学习成本稍高;或者有时候受项目情况限制,比如整个项目代码并非完整的AUTOSAR架构,只有底层使用MCAL,而工具链需要使用免费的S32DS。

基于这些需求,本文将重点讲解如何将配置好的MCAL集成到S32DS里与应用代码一起编译调试。关于相关配置工具及MCAL组件的安装及使用、示例工程运行、以及MCAL的配置请参照我其他文章。

本文介绍的大部分方法为通用方法,不限制于某个具体控制器型号,当然也不排除个别功能某些控制器不支持,希望你掌握核心知识,可以举一反三。

2. S32DS简介

S32DS(S32 Design Studio)是NXP新推出的一个跨平台(有Windows,Linux版本)的高度集成的集成开发环境(IDE)。该工具基于Eclipse IDE,集成了GNU编辑器集合(gcc),GUN调试器(gdb)等开源软件。可免费提供给客户使用,在官网下载安装即可。该工具可以编辑,编译,调试且没有代码大小限制,同时还提供了新一代的图形化配置工具(PE:Processor Expert),所有外设只需在界面里面配置好,自动生成代码,让你彻底摆脱繁杂的寄存器操作等类似工作,极大提高开发效率,缩短开发周期。ARM内核及PPC内核均有支持,具体支持型号请关注官网最新发布。

由于S32DS的环境不包含QKit,编译器也没经过安全认证。所以如果你的工程对功能安全有需求,不建议使用该环境。

3. S32DS打包MCAL成SDK

目前S32 DS V3.1以前的版本都无法支持自动导入MCAL(V3.1版本开始引入导入功能,正在开发中)。这里我们提供两种办法来集成。

方法一: 将使用到的相关模块代码手动拷贝到工程目录下进行源码集成。

方法二: 使用S32DS将MCAL打包成一个SDK,然后和默认SDK的使用方法一致。

显然第二种方法一劳永逸,尤其是你有多个项目需要使用时。关于第二种方法,如果使用S32DS制作自己的SDK请参见我之前的文章:S32DS创建自己的SDK。

4. S32DS新建工程

如果你采用的第二种方法,请按照前面的链接文章打包为SDK后。然后打开S32DS,进入菜单栏File -> New -> S32DS Application Project。在弹出的窗口中输入工程信息。如下图:

使用S32DS集成MCAL

在上图1处输入工程名,图2处选择芯片型号,图3处选择编译工具链,点击Next(图4处),进入上图右侧窗口,在SDKs选择框(图5处)选择我们打包好的MCAL的SDK。另外的选项根据需要设置,图示可作参考。

5. 源码集成

5.1 MCAL静态代码拷贝

如果你使用第一种方法,只需要将使用到的模块下面的静态代码和配置生成的"output\generated"文件夹拷贝到工程目录下集成编译即可。

这里说的静态代码指MCAL 安装目录下各模块Plugin文件夹下面的include和src文件夹。除这两个文件夹外的其他文件夹不要拷贝。

需要在工程设置里面添加H文件的路径。方法请见后面章节或我其他文章。

  1. 只需要拷贝你说使用到的模块即可,未使用或未配置的模块下的静态代码不要拷贝,否则会报错。
  2. 理论上拷贝过去怎么放可根据你项目文件结构统一安排即可,但我建议保持MCAL原始文件结构,每个模块独立文件夹,文件名也不要改,然后里面放置include和src文件夹。

5.2 MCAL配置文件拷贝

将EB工程生成好的"output\generated"文件夹拷贝到工程目录下即可(两种方法都需要拷贝该文件夹)。

也可直接在EB工程里面设置该文件夹到工程目录路径下,设置方法:打开EB Tresos Studio,在工程管理窗口,选中工程右键,Properties -> Configuration Project -> Code Generator -> Browse。如下图:

使用S32DS集成MCAL

5.3 自己的应用代码

在S32DS里面新建文件即可,也可以将自己写好的代码拷贝到工程目录下,刷新S32DS可自动识别,但是需要在工程设置里面添加H文件的路径。

5.4 其他必备文件

MCAL默认没有启动文件,链接文件等。这里我们为了简单,直接使用了S32DS新建工程时自动生成的文件(SDK版本)。你也可以参照MCAL demo工程提供的文件。

除了这些文件外,通常你还需要中断管理相关代码(除非你的工程不需要使用中断资源),这个默认MCAL也不包含,你可以将SDK版本的中断管理模块拿来使用,也可以参照Demo工程里面的文件(nvic)。

6. S32DS工程配置

6.1 编译文件配置

如果你使用第二种方法(打包成SDK使用的):

考虑到SDK通常多个项目使用,所以在打包SDK过程中,我们将所有模块都使能了(推荐)。但实际项目种可能你只使用了其中几个模块,其他模块不需要,也没有配置,我们必须移除这些未使用的模块,否则会导致编译错误。

如果使用第一种方法,我们只需要拷贝我们使用到的模块的静态代码即可。

如何移除这些未使用的模块:

新增/移除: 打开S32DS,进入工程管理窗口,工程右键 -> Build Configurations Explorer。在弹出窗口中根据实际使用情况勾选编译文件。如下图:

使用S32DS集成MCAL

新增/移除: 对于新增的文件,在工程处右键刷新(Refresh/F5),工具会自动识别出新增的文件,但是默认是灰色加斜线的图标(如下图左侧红框处),代表该文件不会编译,除了按照上面介绍的方法可以添加/移除编译列表外,还有一个更加快捷方式。选中需要新增/移除的文件/文件夹右键,选择build path ->Add to -> Debug /Release/Debug_RAM。如需移除,则选择Remove from。如下图:(两种方法实现的目的是完全一样的,两者展现方式不一样,第一种方法可以在一个窗口中管理整个工程的所有文件,而第二种需要文件/文件夹一个一个操作(也可一次性选择多个文件操作),根据自己喜好选择即可)

使用S32DS集成MCAL

移除: 对于移除编译列表的操作,除了上述两种方法外,还有一种方法。该方法和第二种新增方法类似。在需要移除的文件/文件夹右键,选择Resource Configurations -> Exclude from Build。如下图:

使用S32DS集成MCAL

6.2 工程属性配置

如果你的工程里面没有使用AUTOSAR OS,需要在编译配置里面增加宏定义(也可以在打包SDK的时候定义):

AUTOSAR_OS_NOT_USED

。否则编译的时候会报

"找不到Os_memmap.h文件"

以及

"ISR重复定义"

的错误。

进入编译参数配置界面有三种途径:

  1. 工程右键 -> Properties
  2. 菜单栏Project -> Properties
  3. Dashboard -> Project settings/Build settings

进入工程配置界面后,进入C/C++ Build -> Settings -> Tool Settings -> Standard S32DS C Compiler -> Preprocessor,点击+号,输入宏定义名称:

AUTOSAR_OS_NOT_USED

。(按下图连线顺序进行即可)

其他参数配置进入方法一样,将不在赘述。如下图(下图中右上角大红框里面展示了如何增加包含头文件路径的方法,后文会使用到):

使用S32DS集成MCAL

MCAL对编译参数也有要求,我们强烈建议你根据MCAL安装目录下的文档里面规定的参数进行配置。如上图所示。

7. 编译调试运行

总结下来,其实方法很简单,就两步。拷贝源码;配置参数。

做完上述所有操作后,接下来就编译调试了。这里不再介绍编译调试的(基本操作)详细步骤。

如果还不清楚怎么操作的同学,可通过开头提供的方式交流。

继续阅读