• 在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/

    然后点击下载即可。

    在这里插入图片描述

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

    在这里插入图片描述

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

    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之后,我们把所需的文件复制到我们新建工程的目录下面,准备后续使用。

    在这里插入图片描述

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

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

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

    在这里插入图片描述

    3. 创建S32K144的Keil应用工程

    1)新建工程

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    2)新建工程目录结构

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

    在这里插入图片描述

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

    3)添加文件

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

    在这里插入图片描述

    新建一个基本的工程,所需要添加的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函数进行打印调试。

    在这里插入图片描述

    2、配置头文件路径

    在这里插入图片描述

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

    在这里插入图片描述

    4、选择 .sct 散列文件。

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

    在这里插入图片描述

    5、调试选项的配置

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

    在这里插入图片描述

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

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

    在这里插入图片描述

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

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

  • 相关阅读:
    JVM Code Cache代码缓存简介
    React知识点系列(8)-每天10个小知识
    tomcat部署、tomcat虚拟主机及tomcat多实例、tomcaty优化
    浅尝docker--基础篇
    2022国赛正式题nfs 解题
    linux守护进程
    母乳放冰箱能保存多久?怎么解冻?
    【Spring Boot】拦截器使用和常用功能统一封装
    【Rust日报】2023-10-10 使用 Cackle 抵御 Rust 供应链攻击
    设备安全:防火墙总结(1)
  • 原文地址:https://blog.csdn.net/luobeihai/article/details/132797495