在MDK-Keil中开发S32K144

对于NXP的S32K1xx系列MCU,前面已经介绍过,官方有专门支持该系列MCU开发的IDE工具——S32DS,这个工具还有对应的代码生成配置工具,而且也是官方推荐使用的工具。

S32DS开发环境是基于Eclipse改写的,熟悉Eclipse的话可以很快上手。但是很多人使用MDK-Keil软件更多,所以介绍下怎么使用MDK-Keil环境来开发S32K144.

1. 安装S32K144 Pack包

我们首先要安装S32K1xx的Pack包。Pack包可以到Keil的官网进行下载,也可以通过菜单栏Pack Installer 界面进行下载。

S32K1xx的pack包最新版本是1.5.0,下载官网:

https://www.keil.arm.com/packs/s32_sdk_dfp-keil/boards/

然后点击下载即可。

在MDK-Keil中开发S32K144_第1张图片

下载完成之后,双击pack包进行安装:

在MDK-Keil中开发S32K144_第2张图片

安装路径默认即可。因为我已经安装过了,所以提示是否替换。

2. 文件准备

在新建S32K144的Keil工程之前,我们需要先把所必需的文件准备好。这些文件无非就是S32K1xx系列MCU的SDK库文件,所以我们首先要去官网下载了S32K1xx的SDK。

可以通过下面的官网链接下载,目前最新的版本是 4.0.3 .

https://www.nxp.com.cn/design/software/development-software/s32-sdk/s32-software-development-kit-for-s32k1:S32SDK-ARMK1

得到SDK之后,我们把所需的文件复制到我们新建工程的目录下面,准备后续使用。

在MDK-Keil中开发S32K144_第3张图片

在前面一篇文章中,已经详细介绍了S32K1xx的SDK框架和各个文件夹的作用了。这里不多介绍。

我们把 platform / rtos 这两个文件夹复制到我们要新建Keil工程的目录下,platform 的内容其实就是NXP提供的 S32K1xx 开发的外设驱动库函数,还要启动文件,链接文件等等。rtos目录则是关于通信的外设驱动会使用到信号量、互斥量等内容,然后这个文件有裸机实现的接口,也有基于FreeRTOS进行二次封装实现的。

复制那两个文件夹过来之后,如下:

在MDK-Keil中开发S32K144_第4张图片

3. 创建S32K144的Keil应用工程

1)新建工程

1、选择菜单 Project->New Uvision Project… 新建工程

在MDK-Keil中开发S32K144_第5张图片

2、选择新建工程的保存路径

在MDK-Keil中开发S32K144_第6张图片

3、选择S32K型号,我使用的开发板是NXP的S32K144-EVB开发板,对应的芯片型号就是 S32K144UAxxxLLx ,根据自己手上的硬件选择对应的型号就行。

在MDK-Keil中开发S32K144_第7张图片

最后点击OK即可完成新建一个工程了。

2)新建工程目录结构

工程的目录结构因人而异,按照自己的习惯来就好。我自己新建的工程目录结构如下:

在MDK-Keil中开发S32K144_第8张图片

目前这些目录还没有加入SDK外设驱动相关的文件。

3)添加文件

给前面新建的工程目录结构,添加相关的文件。

在MDK-Keil中开发S32K144_第9张图片

新建一个基本的工程,所需要添加的SDK库文件有:

  • 启动代码:包括 startup.c 和 startup_S32K144.S 的汇编文件。
  • S32K1xx Peripheral Driver,就是外设驱动代码。基本的工程需要包括以下模块的文件。
    • clock:系统时钟初始化配置相关代码
    • edma:这个是dma外设,其他模块需要用到dma的接口函数
    • interrupt:中断相关API接口函数
    • lpuart:这个是串口外设驱动,我们打印调试需要用到
    • pins:GPIO外设驱动
  • system_S32K144.c 文件
  • OSIF接口文件,这个文件是一些通信外设驱动文件需要引导的操作系统接口API,如信号量,互斥量等。
  • main.c :用户主函数

我们把上面所需的这些文件,添加到对应的每个工程的目录文件夹中。

4)工程配置

我们点击魔术棒的按钮,然后对工程进行基本的配置。主要就是配置下头文件的路径,还要一些常用的设置就行了。注意的是,我们需要选择AC6版本的编译器,因为NXP最新的SDK选择只支持AC6版本的编译器了。

1、勾选使用 Use MicroLIB ,这样我们可以使用printf函数进行打印调试。

在MDK-Keil中开发S32K144_第10张图片

2、配置头文件路径

在MDK-Keil中开发S32K144_第11张图片

3、汇编编译器选项添加 START_FROM_FLASH 这个宏定义。

在MDK-Keil中开发S32K144_第12张图片

4、选择 .sct 散列文件。

NXP的SDK,里面的代码用到了大量的自定义的外部符号了,而这些符号都是在散列文件中定义的,所以我们需要使用NXP自己写的散列文件。而不能使用MDK-Keil自动生成的散列文件。

在MDK-Keil中开发S32K144_第13张图片

5、调试选项的配置

调试器选择自己对应的调试器即可,我使用的是J-Link调试器。

在MDK-Keil中开发S32K144_第14张图片

最终,使用MDK-Keil开发S32K144的模板工程就新建好了。

然后我们编译这个工程的结果如下:

在MDK-Keil中开发S32K144_第15张图片

提示说有2个警告,都是说这个版本不支持 xxx 什么的符号,我目前还不了解怎么去除这2个警告,先不管他,后面有机会再了解。

后续我就根据这个模板工程,进行S32K144的开发学习了。

你可能感兴趣的:(NXP-S32K,S32K1xx,S32K144,Keil)