NXP最近又推出了新的GPIS系列MCU S32K3,也就是S32K1的升级版,虽然是升级版,但是性能提升的不是一点半点,那是贼凶啊,接下来一段时刻,我就要好好学习一下这个MCU,并且把我的学习过程写点笔记,分享给大家,欢迎大家建议和纠错。
这第一篇就介绍一下开发环境的搭建,在这里我使用S32DS进行SDK方式的开发,配合EB tresos进行MCAL开发。
简单的来说就是:EB tresos可以为MCAL开发提供图形化配置界面,而S32DS则为SDK开发提供图形化配置界面。
这篇文件介绍的方式流程如下:
SDK开发流程为:
MCAL开发流程
准备工作当然就是下载一些东西喽。需要下载三个东西,分别是NXP官方的调试IDE,配置MCAL的EB tresos以及S32K3的RTD软件包。
RTD是什么,Real-time Driver,在S32K1时代,MCAL和SDK是两套不同的软件包,但是到了S32K3,就把两者集成了一下,MCAL和SDK共用一套代码,也就是RTD,意思其实就是这两个软件包里面的底层代码都是一样的。简单的来说,现在K3的MCAL就是在SDK的底层基础上封装了一层符合AUTOSAR标准的接口层,RTD的具体结构框架如下图:
图中High Level Interface指的就是符合AUTOSAR的MCAL接口层,而Low Level Interface就是传统意义上比较高效的SDK底层接口层。
如果有NXP的授权账号,就可以在下面链接下载到这些东西的安装包,登录账号后,点击MY_NXP:
点开 Software Licensing and support, 找到S32K3 Standard Software,点开就可以看到这三个东西的下载链接了:
①对于EB tresos的下载,需要记住标记的激活码。
②对于MCAL(SDK),就下载最新的就好了,这里我选择是1.0.0。
如果是MCAL开发的话,只需要下载MCAL安装包,如果是SDK开发的话,只需要下载SDK软件包。
③对于S32DS,可以看到这个版本需要S32DSV3.4,所以需要下载V3.4版本的S32DS就好了,另外还需要下载S32K3的支持补丁包。
下面就是一顿漫长的等待,等所有东西都下载好了之后,有如下东西:
分别是:
这样所需要的文件就全部下载好了。
下载EB tresos的时候可能会出现浏览器把后缀uip改成了gz的情况,将其修改回uip即可。
点击setup.exe,一直next即可,非常简单,中间需要记住其安装路径即可,后续会用到。
又是一次漫长的等待。安装完成后再点击EB_Client_License_Administrator_1_4_1_Setup.exe安装激活工具。之后打开EB激活工具,将之前下载EB时候保存的激活码添加到激活工具中,这样EB tresos就可以正常使用了(注:EB License目前提供的为试用版,不能用于项目正式量产,请联系EB购买正式license)。
点击SW32K3_RTD_4.4_1.0.0_CD01_D2108.exe安装MCAL(SDK),一直Next,直到这一步,将上一步安装的EB tresos的安装路径填进去,之后就非常简单了。
安装S32DS就非常简单了,一直下一步即可,这里不做赘述了。安装完成后还需要安装S32K3的补丁软件支持包,点击Help->Install New Software后将前面下载的K3支持补丁包Add后,选中所有后点击Next:
之后就是经过漫长的等待,等待补丁安装完成。
打开S32DS后,点击Help->Install New Software后将前面下载的SDK软件包Add后,选中后点击Next:
之后就是经过漫长的等待,等待SDK包安装完成。
点击File->New->S32DS Project From Example, 选取一个Demo:
之后打开Demo中的mex文件即可打开S32DS的图形化可配置界面进行相关的配置:
通过这个界面就可以对S32K3的IO,时钟,外设等进行配置,具体细节不再赘述,之后点击Update Code生成代码。
之后就是正常的编译,调试了,这里也就不多说啥了,非常简单。
也是可以直接新建一个工程,具体操作如下,点击File->New->S32DS Application Project,选择芯片型号:
点击Next:
选择正确的SDK后,点击Finish,一个新的工程就创建成功了,接下来就是编译和调试了。
可能有些人安装的是最新版本的SDK软件包,发现编译会失败,这种问题一般是因为你安装的工具链与SDK软件包的版本不匹配问题。比如目前最新版RTD1.0.0用的工具链是GCC10.2,但是你安装的工具链还是GCC9.2,如下:
这个时候就需要更新一下S32DS的工具链就好了,点击help->check for update,然后更新就好了。
找到安装的MCAL(RTD)目录打开,如下:
可以看到有很多外设的例子,点开某一个例子如下:
各个文件夹所包含的内容描述如下:
名称 | 描述 |
---|---|
autosar | epd文件 |
config | EB配置模板文件 |
doc | 当前外设MCAL的Integration Manual和User Manual |
examples | EB tresos工程Demo和S32DS工程Demo |
generate_PB | PostBuild版模板源文件和头文件 |
generate_PC | PreCompile版模板源文件和头文件 |
generate_swcd | (个人猜测应该没啥用,我也不知道) |
include | 当前外设MCAL驱动的头文件(需要移植) |
META-INF | (个人猜测应该没啥用,我也不知道) |
src | 当前外设MCAL驱动的源文件(需要移植) |
上面介绍了examples文件夹里面有EB Tresos的工程和S32DS的工程,再打开examples/EBT
文件夹的一个例子如下:
各个文件夹所包含的内容描述如下:
名称 | 描述 |
---|---|
debug | 一些劳德巴赫的调试脚本 |
generate | EB tresos生成的代码(其中的src和include需要移植) |
include | MCAL配套Demo的头文件 |
out | 编译生成的.o文件以及elf可执行文件 |
src | MCAL配套Demo的源文件 |
TresosProject | EB工程文件 |
Makefile | MCAL配套Demo的Makefile |
project_parameters.mk | Makefile的包含文件,注意包含一些路径,配置信息 |
再打开其中的TresosProject
文件夹:
其中config
文件夹里面就包含了当前EB工程的xdm配置文件。
所以当使用EB配置完所有的外设MCAL后,只需要把以下的文件中的源文件和头文件移植到自己的工程中就可以了,分别是:
在上面的表格中,需要移植的内容已经加了 “(需要移植)” 字样作了标记。
S32K3的MCAL(RTD)为每个软件模块都提供了示例工程,也是在上面所说的examples文件夹中。
该文件夹下面有两个文件夹,分别为EBT 及S32DS。其中EBT即为MCAL的工程,其中不仅包含了EB tresos的工程,还包括了配套的demo,下面就以其中ADC的例子做示范。
打开EB,并点击File->Import:
找到相应的MCAL工程路径,选取自己想要的demo后,点击Finish。
之后就是对MCAL进行配置,点击生成代码按钮,就可以生成相应的MCAL代码了。
另外打开项目属性,可以修改生成代码的存储位置,如果需要使用RTD里面的makefile和配套的MCAL demo的话,修改路径的话则无法通过编译。
首先编辑一下project_parameters.mk脚本文件,修改一下其中的相关路径信息,该文件位置如下如所示。
可以按照readme.txt里面的提示修改:‘
接下来再把编译工具链路径添加到环境变量中,类似于cygwin或者mingw这些,S32DS安装目录中默认就有,具体路径如下:
C:\nxp\S32DS.3.4\S32DS\build_tools\msys32\usr\bin
将其添加至环境变量中:
接下来就可以编译了,打开windows的cmd,将路径切换至示例Demo的路径,我用的是一个ADC的demo,所以如下:
随后执行
make build
编译代码,最后会在当前工程路径下out文件夹下生成可执行文件main.elf。
注意:如果你在该工程的基础上增加了新的模块,比如我在上述工程中增加了CAN模块,那么为了使得编译通过,我们还需要修改一下project_parameters.mk脚本文件,将CAN的MCAL源文件和头文件的路径添加进编译路径MCAL_MODULE_LIST中,如下:
MCAL_MODULE_LIST := Base CanIf Rte Platform Os Mcu EcuC Det EcuM Adc Resource Port Dio Lcu Mcl Can
接下来就是使用S32DS来调试在上一步编译Demo生成的可执行文件了。
使用PE仿真器连接S32K3后,打开S32DS后,点击Debug Configurations:
然后安装下图提示选择PE interface,新建一个调试工程:
按照下图进行设置:
其中Executable处应填写:
${S32DS_K3_ARM32_TOOLCHAIN_DIR}/bin/${arm32_cross_prefix}gdb${arm32_cross_suffix}
随后点击Debug即可进行调试。
按照以上的步骤即可在S32DS调试MCAL配套的Demo了。
接下来再使用Lauterbach调试一下上面编译生成的可执行文件。
使用Lauterbach进行调试的话,则还需要修改一下config.t32文件,该文件的路径如下所示:
将其中的SYS变量修改成Lauterbach的安装路径, 我修改后如下:
随后就是打开Lauterbach,使用命令连接上S32K3后,再运行脚本run.cmm,脚本路径如下图所示:
随后就可以正常调试RTD里面MCAL配套的Demo了。