作者:Stephen Du
免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性。复制/转发请注明来源/作者。
欢迎添加微信交流学习。
前言
NXP官网最近发布了其最新一代GPIS芯片:S32K3系列。这是继S32K家族S32K1系列之后的升级系列,在各方面都有较大提升,见下描述(来源于官网):
S32K3系列包括基于Arm®Cortex®-M7的可扩展32位MCU,支持ASIL B/D安全应用的单核、双核和锁步内核配置。这些功能包括带有恩智浦固件的硬件安全引擎,对无线固件更新(FOTA)的支持并为AUTOSAR®和非AUTOSAR免费提供符合ISO 26262的实时软件驱动程序。S32K3 MCU采用恩智浦的新型MaxQFP封装,与标准QFP封装相比,可减少多达55%的封装占用。
详情请见该链接。
根据其介绍得知,伴随其K3芯片一起发布的还有配套的驱动软件。驱动软件命名为RTD。该软件同时兼容AUTOSAR及以前的SDK风格代码。也就是现在只有一套代码啦。重点是免费,免费,免费。是AUTOSAR代码也免费啦。不光是工具链。
本文将带领大家快速搭建开发环境并运行官方提供的配套示例工程。
1. 前期准备
本文假设你使用S32DS自带的编译器来编译相关工程,调试器使用PE,调试环境使用S32DS。如果你使用其他第三方编译器,请根据本文思想自行解决或联系我。部分工程对应的makefile可能不支持其他编译器,可以查询其他模块,参照支持的模块进行修改适配。比如CAN模块的脚本里面支持GHS编译器,而ADC模块默认没配置GHS。
1.1 下载安装
由于该芯片刚推出,这些资源并非完全开放(可能只有一些大客户可获取),所以这里没有下载链接,请联系NXP相关人员(Sales)获取。我默认你已经拿到相关资源并且已安装好。本文默认你已经具备一些基础能力,比如验证环境安装没问题等(比如打开EB Tresos Studo并成功创建Workspace等)。因为安装过程和其他产品类似,并没有特殊要求,如果你的确不清楚,请参照我之前写的其他产品的安装手册,比如S32K1系列。
你需要安装的资源列表如下(如果你安装的时候已经有更新的安装包,请安装新的版本):
- EB Tresos Studio 27.0.1
- SW32K3_RTD_4.4_0.8.0
- S32 Design Studio for S32 Platform 3.3
注意:EB Tresos Studio的版本需要和MCAL安装包的Release note文档里面提及的版本保持一致。
强烈建议你保持默认路径安装。
1.2 更新调试器(PEMicro)驱动
如上图所示,打开S32DS,找到Help菜单,点击下面的Install New Software...
选项。
如上图所示,在弹出的窗口中,第一个输入框(Work with:)右侧下拉框找到
PEMicro - http://www.pemicro.com/eclipse/updates
网站链接并选择。选择后需要将这个网址改一下,由原来的http改为https,否则会由于连接不上网站报错。修改后如下图所示。
修改好网址后点击回车按钮就可,如果有更新,稍等片刻便会出现更新列表,如下图所示。
根据上图所示选择我们需要更新的安装包,这里可以看到该更新包比较新(版本为2020年9月,本月刚发布)。推荐安装最新版本。点击Next
按钮进行安装。接下来就和我们平时安装软件一样,如下系列图示。根据网络情况不同,安装过程可能会比较久。
2. 修改脚本
S32K3xx的RTD软件为每个软件模块都提供了示例工程,位于安装目录下每个模块文件夹下面的examples
文件夹下面。如果你是默认安装,以ADC模块为例,则位于下面所示路径:C:\NXP\SW32K3_RTD_4.4_0.8.0_P01\eclipse\plugins\Adc_TS_T40D34M8I0R0\examples
该文件夹下面有两个文件夹,分别为EBT
及S32DS
。EBT即为我们MCAL的工程。继续打开EBT文件夹,进入Adc_Example_001
文件夹。这就是真正的项目根目录文件夹。如果后文提及项目根目录则指:
C:\NXP\SW32K3_RTD_4.4_0.8.0_P01\eclipse\plugins\Adc_TS_T40D34M8I0R0\examples\EBT\Adc_Example_001
。其他模块类似,都在自己模块相应路径下。
部分模块可能文件夹层级不太一样,但我想你应该能区分到底是不是项目根目录。它里面的内容大概包括如下图所示内容:
项目根目录里面有一个readme.txt文件,建议你开始前阅读该文件,了解一些基础信息。该文件里也描述了修改脚本等相关内容,但部分地方有误,请以本文为准。out文件夹是编译的时候自动生成。
接下来进入正题,修改脚本。打开项目根目录下的project_parameters.mk
文件。修改下面三个变量的值(假设你是默认安装):
GCC_DIR = C:/NXP/S32DS.3.3/S32DS/build_tools/gcc_v9.2/gcc-9.2-arm32-eabi
TRESOS_DIR = C:/EB/tresos_27.1.0
PLUGINS_DIR = C:/NXP/SW32K3_RTD_4.4_0.8.0_P01/eclipse/plugins
其中第三个PLUGINS_DIR
的值部分模块的readme.txt文件描述有误,readme文件里面写的是EB安装路径下的plugins文件夹,但这里实际应该是我们RTD/MCAL安装包的plugins文件夹路径。如果保持默认安装应该为本文上面所示路径。
如果你调试器是使用劳德巴赫,则config.t32
文件根据readme文件所述进行修改;如果使用PE,则可忽略。
3. 生成配置代码
脚本修改完后,首先我们需要生成配置代码,这里我们不用打开EB Tresos Studio软件。当然你通过打开EB Tresos工具并按照平时我们导入工程,然后生成代码这个步骤肯定是可以的。这里介绍的是更为简洁的流程,因为我们的示例工程已经给我们配置好了。
首先需要检查一下你是否安装了make工具链,方式为打开命令行窗口(cmd.exe),输入:
>make
如果提示不能识别该命令,则说明没有安装,你可以选择安装主流的make工具,比如cygwin或者mingw等。实际上我们S32DS工具链中也自带了make系列工具,我们只需要将对应的路径添加到环境变量里面即可。
拷贝该路径:C:\NXP\S32DS.3.3\S32DS\build_tools\msys32\usr\bin
并添加到系统环境变量即可。如何添加系统环境变量请自行百度补习。如果你安装了其他make工具(如上所述),则将相关工具链对应的bin文件夹路径配置到环境变量里。
验证好make工具链没问题后,我们开始生成配置代码,在工程根目录下允许命令行窗口(cmd.exe),输入:
>make generate
上面省略了前面的路径,如果默认安装路径,如下图所示:
生成完成后,会提示有没有错误,如下图所示:
4. 编译
和步骤3一样,在项目根目录下允许命令行窗口(cmd.exe),输入:
> make build
如下图所示:
同样,它会提示编译有没有错,如果没错,则会在项目根目录下的out文件夹里面生成对应的elf文件。
在out文件夹里面搜索main.elf,检查是否生成。
5. 设置调试目标
到现在为止,我们已经生成好elf文件了,接下来就是调试。我们使用S32DS。打开S32D,我们不用建立工程,只需要新建一个调试目标即可。根据下图打开调试配置窗口。(如需新建工程,请跳过本章)
如果你已经在你的目标板上调试过其他工程,可以直接复制一个调试目标,然后进行修改。如下图:
选择Duplicte,然后重命名为test(上图中的test就是这样的来的),然后只需要将Main窗口里面的elf文件路径配置到我们工程的路径即可开始调试,如下图所示。
如果你没有,则在上图中选择New,新建一个调试目标,然后同样按照上图所示设置elf路径。还需要切换到Debugger标签页,设置Executable。其默认为空,拷贝下面命令到相应输入框:
${S32DS_K3_ARM32_TOOLCHAIN_DIR}/bin/${arm32_cross_prefix}gdb${arm32_cross_suffix}
如下图所示:
检查该页上面的调试器接口及芯片型号,如果不对,重新选择好即可,如下图:
然后你就可以开始下载调试了。
到此处已结束,下面章节可以不用看了。
6. 新建工程
如果你非要新建工程也可以,建一个空的工程即可,不用选择SDK,选择好芯片型号,然后设置好调试器即可。这样调试目标会自动帮我们建好。如下列图示:
工程创建好了,然后去设置调试目标,如下图:
然后在弹出的窗口中左侧展开GDB调试接口,会发现自动帮我们创建好了4个调试目标,选择其中一个(通常我们时Debug_FLASH),如下图所示:(这里就不说这4个的区别了,名称已经说明一切。)
然后在上图3处浏览你项目生成好的elf文件即可。然后点击Debug开始调试。