前面介绍了安装S32DS,接下来介绍S32DS的基本使用。包括新建 S32DS Application 工程、从Example中新建工程、导入SDK中的已有例程、如何调试下载程序等。
首次打开S32DS会提示以后新建的工程,导入的例程等在哪个目录作为工作空间。默认路径是C盘的用户目录下,可以在自己电脑选择一个合适的目录,但是不要带中文。我选择在D盘目录,如下:
打开之后,会弹出一个更新组件的界面,可以先不用管,后续想更新可以菜单栏选择更新。
然后首次打开界面如下:
关闭欢迎界面即可,然后页面布局如下:
S32DS IDE是NXP基于Eclipse改写的,我们不用像Eclipse那样从零开始新建一个工程模板,然后把文件一点点的添加进来,然后再进行工程参数的配置。下面介绍
1、File -> New -> S32DS Application Project
2、工程名称、芯片型号、编译工具链选择
3、选择调试工具类型、SDK版本
4、最后点击完成即可
点击完成之后,会创建一个工程如下,该工程有了默认的 main 函数,但是没有做任何的事情,需要我们后续添加代码。我们点击那个锤子构建(编译)工程,可以正常编译,如下:
我们可以从S32DS集成的SDK中的Example新建工程,这样我们创建出来的工程,就不是一个空工程,没有任何功能,而是可以创建出带有某个例程的工程,非常方便我们学习和开发.
我们在学习某个外设组件的时候,非常建议使用这种方式创建一个官方的Demo工程,基于此工程进行学习或者移植到自己的项目中去。
1、File -> New -> S32DS Project form Example
2、选择哪个芯片型号的哪个例程模板
3、最后点击完成即可,然后创建出来的工程如下:
我们去NXP官网下载了 S32K1xx SDK 之后,里面提供了丰富的例程demo,这些例程都是基于S32DS IDE环境的,所以我们要使用这些例程,需要导入到 S32DS 中。
首先,我们已经去官网下载好了 S32_SDK_S32K1xx_RTM_4.0.3 这个SDK,下面介绍如何导入这些已有例程到S32DS中。
1、点击菜单栏的File,或者右键,然后点击import
2、导入存在的工程到工作空间
3、找到已存在的例程目录,然后点击完成
上面点击完成之后,可以导入已有例程了,但是我发现导入之后,会有报错。
而且编译之后,会有下面的报错:
看错误提示的话,明显是说找不到 arm-none-eabi-gcc 这个编译器。但是安装这个S32DS的时候不是已经安装了 gcc 编译器了的吗?为什么还会报错说找不到gcc编译器呢?
解决办法:
基于上面两种方式不是都能正常编译吗,于是我就研究了下上面介绍的基于Example创建工程,特意看了该工程使用哪个编译器。我查看了两个工程的属性界面,发现他们使用的编译器都一样,但是环境变量 PATH 的路径参数不一样。其中基于S32DS集成的SDK创建例程,编译器路径如下:
我把两个工程的编译器路径复制出来了,如下:
# 这个PATH参数是基于Example创建的工程
C:\NXP\S32DS_ARM_v2.2\eclipse\..\S32DS\build_tools\gcc_v6.3\gcc-6.3-arm32-eabi\bin;C:\NXP\S32DS_ARM_v2.2\S32DS\build_tools\msys32\usr\bin;C:/NXP/S32DS_ARM_v2.2/eclipse/jre/bin/client;C:/NXP/S32DS_ARM_v2.2/eclipse/jre/bin;C:/NXP/S32DS_ARM_v2.2/eclipse/jre/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Users\luobeihai\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Bandizip\;C:\Users\luobeihai\AppData\Local\Programs\Microsoft VS Code\bin;C:\NXP\S32DS_ARM_v2.2\eclipse
# 这个是导入 4.0.3 SDK 已有例程的PATH参数
C:\NXP\S32DS_ARM_v2.2\eclipse;C:\NXP\S32DS_ARM_v2.2\S32DS\build_tools\msys32\usr\bin;C:/NXP/S32DS_ARM_v2.2/eclipse/jre/bin/client;C:/NXP/S32DS_ARM_v2.2/eclipse/jre/bin;C:/NXP/S32DS_ARM_v2.2/eclipse/jre/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Users\luobeihai\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Bandizip\;C:\Users\luobeihai\AppData\Local\Programs\Microsoft VS Code\bin
很明显,他们不一样。解决办法那不就是把上面那个基于Example创建工程的PATH参数,复制到自己导入已有工程的那里就可以了。
然后点击确定之后,再次编译如下:
很明显编译正常了。不过左边的工程目录界面,还是有个 “x” 的标志,不知道为什么没有去掉,不过反正能正常编译通过了。
新建了一个工程之后,下面简单介绍下基本的UI界面。
其中最左下角那个是 Processor Export 界面,这个界面很重要,是图形化配置界面,然后可以根据这些配置自动生成代码。
编译后,下面的输出信息窗口,控制台会有编译输出信息,可以查看是否编译正常。
使用过Eclipse的应该都了解怎么调试下载了,S32DS使用起来其实和Eclipse也是一样的,要调试就先要新建一个配置文件。
其中,左边那些配置文件,都是系统帮我们创建好了的,我们其实可以直接用就行。有PE工具的调试,以及Jlink工具的调试。我目前使用到PE工具调试可以查看寄存器值,而Jlink调试查看不了寄存器值。
连接了开发板之后,点击Debug就可以吧程序下载到芯片上了,而且可以进入到调试界面。
调试界面和Eclipse差不多,介绍如下:
上面,编译调试完成之后,其实就相当于吧程序下载到了芯片里面了。如果是使用在Flash调试的话,那么就算是掉电也可以保存下载的程序。
S32DS默认生成的是 .elf 格式的可执行程序。但是很多时候,我们如果相使用第三方软件,如Jlink下载程序的话,需要生成 hex 或者 bin 文件的可执行程序(记得Jlink好像也可以下载 .elf 格式的程序?忘了)。下面我们介绍下怎么生成 hex 文件或者 bin 文件。
设置过程:
1、首先生成 hex 和 bin 文件的命令如下:
# 生成 hex 文件命令
arm-none-eabi-objcopy -O ihex "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.hex"
# 生成 bin 文件命令
arm-none-eabi-objcopy -v -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin"
# 生成 dis 反汇编文件
arm-none-eabi-objdump -d "${BuildArtifactFileName}" >"${BuildArtifactFileBaseName}.dis"
2、然后我们右键点击工程目录,“Project” -> “Properties” -> “C/C++ Build” -> “Settings” -> “Build Steps”,然后我们可以在 “Post-build steps” 添加生成 hex 文件或者 bin 文件的命令即可。注意多条命令是以英文的分号隔开。
3、添加生成校验和的bin文件命令
checksum -p ${TargetChip} -d "${BuildArtifactFileBaseName}.bin"
这条命令可以对bin文件进行校验和计算,然后把校验结果存放在bin文件里。具体是放在文件头还是文件末尾还不了解。我们可以不使用这个命令。