S32KSDK使用详解之KeilMDK开发S32K1xx系列MCU应用程序(使用ProcessorExpert配置SDK)汽车电子expert成长之路电子技术应用AET中国科技核心期刊

1.通过KeilIDE的PackInstaller在线安装S32KSDKpack

2.升级KeilPack中EAR0.8.6的S32K14xSDK到RTM2.0.0版本

2.1通过packSDK安装目录下的ReleaseNotes确定SDK版本

2.3将KeilpackSDK安装目录下的middleware、platform和rtos三个文件夹替换为RTM2.0.0SDK的,以实现SDK升级

3.新建S32K的Keil应用工程并选择使用SDK

3.1创建S32K的Keil应用工程

3.2选择和配置S32KSDK驱动

4.在S32DSforARMv2018.R1中使用ProcessorExpert图形化配置生成SDK驱动配置文件

4.1新建S32K144的S32DS应用工程并选择使用S32K14xSDKRTM2.0.0

4.2从ProcessorExpert的ComponentLibrary中添加SDK驱动组件

4.3根据S32K144-EVB硬件设计配置SDK组件

4.4生成SDK配置代码

4.5将ProcessorExpert生成的S32KSDK配置代码拷贝添加到Keil应用工程中

5.设置S32KKeil应用工程选项与在Keil中调用S32KSDK

5.1设置Target使用MicroLIBC语言库

5.2设置KeilC/C++编译器配置

5.3设置Keil汇编代码编译器配置

5.4设置Linker的链接文件使用SDK提供的S32K144_64_flash.sct

5.5调用S32K14xSDK驱动及添加测试应用程序

①用户按键GPIO输入中断ISR

②main()函数调用时钟初始化、GPIO引脚初始化、GPIOIRQ中断使能及ISR安装、ADC模块初始化和自校准(AutoCalibration)以及LPUART串口初始化函数

③main()函数主循环中调用ADC软件触发采样转换及转换结果读取API,并将结果通过LPUART串口阻塞发送API函数发送给PC电脑

5.6编译KeilSDK应用工程

6.使下载调试和测试S32K的KeilSDK应用工程

6.1设置编译目标为Flash,将应用程序下载到S32KFlash中进行调试,掉电程序不丢失

6.2设置编译目标为SRAM,将应用程序下载到S32KSRAM中进行调试,掉电后程序丢失

总结

ARM公司的Keil,也被称为KeilMDK(MicrocontrollerDevelopmentKit)集成开发环境(IDE)是很多ARM内核控制器开发者的首选工具链,原因如下:

①Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。其方便易用的集成环境、强大的软件仿真调试工具让MCU的应用工程开发事半功倍;

②Keil是与IAR齐名的专业MCU编译器,其编译效率非常高,并对业界的几乎所有调试器(debugger)都支持,相对GHS和Windriver来说,性价比较高;

④KeilIDE的ARM编译器的界面保持了与之前C51编译器一致,都十分简洁易用,让很多之前使用51单片机的庞大用户群体能够无缝升级;

NXP的S32K1xx系列汽车级通用MCU,使用ARMCortexM0+/M4F内核,也当然可以使用KeilMDK开发其应用程序,但是在NXP提供的SDK中,并不直接支持KeilMDK:

然而,Keil公司在2017年年底通过其packinstaller提供过一般SDK的支持包:一方面,其使用的SDK版本是EAR0.8.6,是早期版本,存在很多bug,因此,并不推荐用户使用;另一方面,Keil中无法像S32DSIDE一样使用ProcessorExpert对S32KSDK进行图形化配置从而自动生成SDK驱动配置文件;

为此,本文详细介绍KeilIDE中S32KSDK的pack安装、SDK升级至RTM2.0.0、使用S32DSIDE的ProcessorExpert为S32KKeil应用工程配置S32KSDK,S32K的Keil应用工程编译器、链接器设置,编译链接和调试等,并提供了配套的demo工程供大家参考学习,希望对大家有所帮助。

下载安装MDK(Keil5)IDE,这里使用最新的Keilv5.27。只有Keilv5.24及以上版本才支持S32K1xx系列MCU。

打开安装好KeilIDE,在下图中点击其菜单栏PackInstaller的快捷图标即可打开补丁包安装器:

然后,在补丁包安装器--PackInstaller,在线(online)搜索S32K下载安装其最新的SDKpack,请保持电脑网络连接正常:

安装完成后,结果如下:

这样S32KSDK作为Pack,就被安装在Keil的安装目录下了。其中,

通过检查每个安装目录下的ReleaseNotes.pdf,可以确定该pack中的SDK版本:

可以发现,Keil的pack中包含的SDK版本较老,还是EAR0.8.6的,并非推荐使用的RTM版本。所以需要更换为最小的RTM版本,这里替换为S32K14xRTM2.0.0,具体方法和步骤如下:

①目录platform/devices/S32K144/startup下的arm文件夹

Tips:该文件夹包含个partnumber的启动汇编文件--startup_S32K14x.s,需要备份S32K142/4/6/8相应子目录以支持整个S32K14x系列:

②目录platform/devices下的startup.c启动文件

③目录platform/devices/S32K144/linker下的arm文件夹

Tips:该文件夹包含个partnumber链接文件--*.sct,分散加载文件,需要备份S32K142/4/6/8相应子目录以支持整个S32K14x系列:

④目录platform/drivers/src/interrupt下的interrupt_manager.c文中断管理器驱动源文件

①将KeilpackSDK安装目录下的middleware、platform和rtos三个文件夹删除:

②然后,将S32DSforARMv2018.R1安装目录下S32K14x_RTM_2.0.0文件夹下的middleware、platform和rtos三个文件夹拷贝到Keil的S32Kpack安装目录下:

使用该压缩包,大家可以省略步骤2.2的备份工作;

大家将其下载后,在2.4步骤,将压缩包拷贝到KeilpackSDK安装根目录下,右键->解压到当前文件夹(X),覆盖新的SDK即可完成升级最后一步Keil工具链移植代码恢复:

在解压过程中确认文件替换窗口中,选择“全部选是(A)”:

选择菜单Project->NewUvisionProject...创建应用工程:

选择保存路径,并输入应用工程名,点击“save”保存:

选择MCU型号(Device)和软件pack,这里测试硬件平台使用S32K144EVB,其partnumber为FS32K144UAVLL,LQFP-100引脚封装,故选择S32K144UAxxxLLx即可:

Tips:在以上窗口中,可以通过搜索快速找到具体的partnumber,S32K1xx系列MCU的partnumber命名规则如下:

在Keil的ManageRun-TimeEnvironment窗口中,选择需要使用到的SDK驱动和BSP及中间件协议栈等;

这里,为了测试S32K144-EVB的ADC模拟输入、GPI按键输入和LED输出以及LPUART窗口通信,选择如下:

BoardSupport(BSP):(S32K144-EVB)

Tips:不能选择这里的BSPAPI,因为其调用的还是老版本SDKERA0.8.6的驱动,其与我们更新的RTM2.0.0不兼容;

Device:

eDMA:由ADC驱动、LPUART及其他通信外设驱动使用;

Device->SDKDriver中选择的SDK驱动具体如下:

Tips:在选择SDK驱动时,Keil会Validate用户的选择,找出其中的依赖关系,比如选择S32K144-EVB的LED组件时,其依赖其SDK的PINDriver和Clock驱动,点击“Resolve”即可自动选择添加相应SDK驱动:

Tips:Keil应用工程的SDK配置可以在开发过程中随意增加和删除,通过KeilIDE的ManageTun-TimeEnvironment快捷图标即可打开:

选择好SDK驱动之后,其相应的底层驱动代码就会被添加到应用工程中:

在S32DSforARMv2018.R1中新建一个S32K144的应用工程,选择使用同样的S32K14xSDKRTM2.0.0:

为了配置生成Keil应用工程中SDK驱动的配置文件,在S32DS应用工程中,添加相应的SDK组件--ADC、LPUART,PINS、Clock_Manager、Interrupt_Manager、eDMA和osif等:

根据S32K144-EVB的以下硬件设计:

S32K144-EVB上有一颗三色RGBLED,低电平点亮,高电平熄灭:

RGBLED的S32K144MCU引脚分配如下表:

RGBLED

S32K144GPIO

方向

BLUE

PTD0

输出

RED

PTD15

RGEEN

PTD16

S32K144-EVB设计了两个下拉到地的用户机械按键作为GPIO输入,可做GPIOIRQ上升沿中断测试:

USERBUTTONS的S32K144MCU引脚分配如下表:

USERBUTTONS

BTN0

PTC12

输入下拉

PTC13

S32K144-EVB设计了一个5K的滑动变阻器连接到S32K144MCU的ADC0的12通道,以测试ADC模拟信号采集转换功能:

外部滑动变阻器的S32K144MCU引脚分配如下表:

外部滑动变阻器

ADC通道

POTENTIOMETER

PTC14

ADC0_SE12

S32K144的LPUART连接到S32K144-EVB的板载OpenSDA虚拟串口:

LPUART1的S32K144MCU引脚分配如下表:

LPUART1

TXD

PTC7

输入

RXD

PTC6

完成以上SDK驱动组件配置后,点击GenerateCode,即可生成需要的SDK配置代码:

Tips:在S32DSIDE应用工程中,打开任意C代码源文件,在编辑窗口中,右键->ShowIn->SystemExplorer,即可在Windows的资源管理器中打开其所在的文件夹目录:

在Keil应用工程工程根目录下新建ProcessorExpert_Generate_SDK_ConfigFiles和Application文件夹,并将S32DS应用工程中ProcessorExpert配置生成的代码和main.c拷贝到相应目录下:

并在Keil工程中,创建两个同名的group,将相应目录下的所有文件添加到Keil应用工程中:

若在应用程序中要使用C语言标准库,比如stdio.h中的标准输入输出函数,则需要使能使用MicroLIB库,方法如下:

在Keil工程的目标选项(OptionsforTarget)的Target一栏勾选UseMicroLIB选项如下:

在Keil工程的目标选项(OptionsforTarget)的C/C++一栏设置其C/C++编译器选项如下:

在Keil工程的目标选项(OptionsforTarget)的Asm一栏设置其汇编编译器选项如下:

在linker设置中,将默认的"UseMemoryLayoutfromTargetDialog"选项去勾选,然后手动选择S32K144_64_flash.sct作为工程链接文件(ScatterFile,分散加载文件):

完成以上设置之后,在keil应用工程中就可以使用S32K14xSDK了,只需要在调用SDK驱动的C源代码文件中,包含Cpu.h头文件即可:

#include"Cpu.h"

针对本例测试,在main.c中添加如下代码:

①用户按键GPIO输入中断IST

Tips:以上代码中使用了S32K14xSDK的中断管理器(Interrupt_Manager)组件的中断ISR安装API函数--INT_SYS_InstallHandler(),故需要将MCU的中断向量表重映射到SRAM中,所以需要修改工程的分散加载文件--,S32K144_64_flash.sct在其开始处定义宏--__ram_vector_table__:

#define__ram_vector_table__1

完成以上代码之后,编译即可:

选择编译和调试目标为“S32K144_DebugFlash”进行编译:

编译完成后,在工程目标选项的Debug配置中,选择使用合适的硬件调试器:

然后又点击Keil菜单栏的调试进入图标,即可进入调试,并运行至默认的main()函数第一行的断点:

全速运行,或者重新复位S32K144-EVB板,即可发现测试功能工作正常:

Tips:Keil除了可以支持ULINK和JLINK这样的专业调试器对S32K系列MCU进行程序下载和调试器之外,还支持使用S32K144-EVB板载OpenSDA或者PEMicro的U-Multink作为调试器下载和调试S32K的KeilSDK应用工程。

具体方法和配置,请参考Keil官网通过的以下应用笔记(其中还包含了诸多KeilIDE的编译器使用和Debugger软件使用Tips,是学习KeilIDE不可多得的参考资料,强烈推荐):

选择编译和调试目标为“S32K144_DebugRAM”重新编译应用工程:

然后,在工程目标选项的Debug配置中,选择使用合适的硬件调试器:

Tips:这里实现将程序加载到MCUSRAM中进行调试的关键是:在以上配置界面中,去勾选“loadApplicationatStartup”,选择InitializationFile,使用工程根目录下的Dbg_RAM.ini初始化脚本,其通过控制脚本实现了从编译结果*.axf中读取并设置CPU内核堆栈指针(SP),程序计数器(PC)和中断向量表偏移地址(VTOR)设置,复位并加载编译器结果到MCUSRAM以及脚本命令控制运行到main()函数等工作:

DebugRAM的调试结果如下:

与DebugFlash一样,可以实现相同的调试功能,全速运行,测试结果与DebugFlash一致。

Tips:DebugRAM时,中断向量表和应用程序被编译到SRAM中了,不占用MCU的Flash资源,所以其不会破坏原有MCUFlash中的程序,且下载过程无需擦除和编程Flash,所以下载速度非常快,也因此,其常被用作外设/应用程序快速验证或者产品量产后做失效分析(FA--FailureAnalyze)进行硬件外设模块功能验证。其掉电后,程序丢失。其实,即使下载后未掉电,SRAM中的程序不会丢失,此时复位MCU,SRAM中的程序也不会执行,因为MCU复位后默认的中断向量表在0x0000的Flash地址;

本文详细介绍了ARMKeil5.27IDE中使用S32KSDK开发S32K应用程序的方法和步骤,以及如何将S32DS中ProcessorExpert图形化配置和生成的S32KSDK配置文件添加到Keil工程中使用的方法和步骤。

同样的SDK代码,在不开编译器优化的情况下:

使用Keil编译的结果如下:

使用S32DSv2018.R1(gccv6.3)编译的结果如下:

可以看到,Keil和S32DS编译的结果,占用SRAM资源相差不大,但占用的Flash(代码编译结果存储器)空间却只有S32DS编译结果的一半不到(15.72kB.vs33.45kB);

代码编译效率提高了一倍多!!!

除了本文的Keil开发S32K应用程序及SDK使用之外,Keil官网也提供了以下三个应用笔记和丰富的demo工程,供大家参考学习:

THE END
1.pink老师学成在线案例(含源码与素材)一叶知秋04学成在线源码与素材链接:https://pan.baidu.com/s/1qd7YK7ekD3HshTmBodOOSQ 提取码:1111 全程手打 html代码: <!DOCTYPEhtml>Document<!-- 头部开始 --><!-- logo --><!-- nav导航 -->首页课程职业规划<!-- 搜索 -->https://www.cnblogs.com/th04/p/17916884.html
2.学成在线网站首页模板代码最代码 www.zuidaima.com 最全面,最专业的源代码分享网站,近万名用户分享超过数万份高质量的java/jquery/bootstrap/html/css源代码https://www.zuidaima.com/share/3992734255401984.htm
3.刚上线的Android源代码在线阅读利器,可看最新Android10!推荐作为Android开发,在日常工作和学习中,经常需要去阅读 Android 系统的源代码。体验最优的做法当然是把源码下载到本地,但是 Android 版本那么多,对于广大开发而言,略显过重。所以通常我们会选择一些在线看源码的方式。 在之前的文章中,我推荐了 androidxref.com,不过它在源码上的的更新没有那么及时,最新的源码只更新到https://cloud.tencent.com/developer/article/1541312
4.二十三学成在线案例头部区域学成在线PSD源文件。 开发工具 = PS(切图)/ cutterman插件 + vscode(代码)+ chrome(测试)。 2.2、案例准备工作 我们本次采取结构与样式相分离思想: 1.创建study目录文件(用于存放我们这个页面的相关内容)。 2.用vscode打开这个目录文件夹。 3.study目录内新建images文件夹,用于保存图片。 https://www.jianshu.com/p/e6c5688f4265
5.学成在线笔记+踩坑(5)——媒资模块上传视频,断点续传【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析 目录 5 上传视频 5.1 媒资管理页面上传视频流程预览 5.2 断点续传技术 5.2.1 什么是断点续传 5.2.2 测试分块与合并,RandomAccessFile随机流 https://blog.csdn.net/qq_40991313/article/details/129760408
6.谈谈解决数据丢失错误时效等问题的方法数据可观察性平台部署数据沿袭、查询更改检测和相关性洞察等功能,以确定系统、代码或数据级别出现问题的位置。 数据可观测性帮助全球领先的社区旅游网络BlaBlaCar将解决问题的时间缩短了50%。 “调查根本原因的200小时现在基本上减少了一半。现在,数据工程师几乎不需要调查这个问题,因为根本原因就在你面前。”BlaBlaCar的https://36kr.com/p/2392734081686153
7.2025年单独招生简章(三)办学层次:博士、硕士、本科 (四)学校代码:10066 (五)学校地址:天津市河西区大沽南路1310号 (六)学校简介: 天津职业技术师范大学成立于1979年,是我国最早建立的以培养职业教育师资为主要任务的普通本科师范院校,是教育部与天津市人民政府共建高校、人力资源和社会保障部与天津市人民政府共建高校,天津市高水平特https://sxzytb.sx985.com/news/detail?id=fab97dc70748435994b4d8a3116810371400
8.java免费开源在线教育系统在线java开发学成在线项目是传智燕青老师研发的JavaEE分布式微服务架构项目,采用SpringCloud框架研发,课程共20天,应广大学员的建议现将整个项目的技术点以问题的形式进行总结,方便大家学习总结。 1 学成在线是个什么样的项目? 从两个方面进行阐述: 1)项目的功能(业务) https://blog.51cto.com/u_16099279/6735784
9.2024年14款国内外主流低代码开发平台对比:总有一款适合您!低代码开发平台是一种更偏向于赋能技术人员的工具,它允许开发人员通过将可视代码块拖放到工作流中来创建应用程序,从而以最少的手工编码快速设计应用程序。 市场中有非常多的低代码开发平台,令人眼花缭乱。应当选哪个低代码开发平台?别担心,请继续往下看。 https://www.zoho.com.cn/creator/articles/creatordapandian.html
10.2020届计算机科学方向毕业设计(论文)阶段性汇报于收集数据方面,在APEX实验室的帮助下,获得了7千余例HDU和POJ上的源代码及其对应的标签,大大加快了课题的进展。于设计算法方面,基于目前现有的研究都依靠语法树、控制流图和数据流图进行分析的现状,初步设计了从源代码直接入手进行分类的软件。目前的F1分数约在70左右,正在试验各种修改以及优化。https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709
11.我收藏的这100+个”杀手级“网站,你用过几个?1、carbon - 代码美化 网址:carbon 这个不用多说吧,你经常在别人的文章里面看到的,创建逼格很高的源代码图片。 2、ray.so - 代码美化 网址:ray.so 你可能觉得Carbon做出的图片已经很好看了,但你再看看ray.so!这个网站还有一个黑暗模式和一些预置的不同编程语言的主题。你还可以使用它的VS代码扩展。 https://developer.aliyun.com/article/1248577
12.Hello!GitHub好用好玩值得收藏的开源项目集合~ ?learn-go-with-tests(通过单元测试学Go) GitHub地址:http://github.com/quii/learn-go-with-tests 通过单元测试学习 Go 语言。下载仓库源码后,进入对应目录。每一个小文件夹就是一个对应的 Go 项目,在里面go test即可运行单元测试。由于是测试驱动开发,所以需要在你改动代码之后跑通单元测试才算学会通过https://maimai.cn/article/detail?fid=1475370684&efid=VfsByAn5y7pBiausQZV-1A
13.6款最佳学生成绩统计和管理工具推荐飞书低代码平台是一款功能强大的开发工具,旨在帮助教育机构和教师快速构建学生成绩管理和分析应用。该平台提供了拖拽式的开发界面,无需编写大量代码即可创建复杂的应用。飞书低代码平台支持多种数据源的集成,允许用户轻松导入学生成绩数据,并进行多维度的分析和展示。 https://www.feishu.cn/content/6-best-student-performance-management-tools
14.产业互联网周报海外裁员潮继续,涉及戴尔微软等十余家企业(2月6日-2月12日)海外裁员潮继续发酵,戴尔将裁员约6650人,波音今年将在财务和人力资源部门裁员2000人,迪士尼计划裁员7000人以节约成本,微软旗下代码托管平台GitHub宣布裁员10%300人将受影响;此外,ChatGPT仍为上周热点,百度、京东、小米等多家企业快速上马ChatGPT项目,机构认为2023年有望成为AIGC发展大年,不过业界开https://static.nfapp.southcn.com/content/202302/14/c7356584.html
15.小闪电创始于2016年,专业的代码在线运行 编辑 1 0下载全屏 嵌入式开发-MOS精灵 ¥86.00 全屏动画嵌入式开发蕃茄钟固件开源原理图开放WiFi芯片ESP8266 购买成品固件广场QQ交流群 店铺(MOS精灵固件) 售出硬件均已内置VIP激活码,可刷入和更新官方VIP固件。 作为JSRUN重点支持设备,JSRUN重新设计了主板和硬件方案,标配顶部触控按https://jsrun.net/
16.一步一步教你在线免费训练机器学习模型(启用GPU和TPU)当你提交并运行内核时,你将在交互式会话的单独会话中从上到下执行内核。在完成之后,你将生成一个新的内核版本。内核版本是工作的快照,包括已编译的代码、日志文件、输出文件、数据源等。内核的最新内核版本是内核查看器中向用户显示的内容。 (4)数据环境 https://blog.itpub.net/31545819/viewspace-2216969/
17.GitHub致力于打造和收集各种简单、易用、便捷的在线工具,无需注册和下载即可免费使用,目前共开发了数百款有趣且有用的小功能,数量还在持续增加中,部分来源于开源项目。工具主要包括:程序员在线文档、在线转换、加密解密、站长工具、代码开发、Css样式、文本工具、二维码处理、图片处理、生活办公、娱乐工具等等。 https://github.com/mydearcc/tools
18.疯狂的美工一站式电商设计师店铺代码装修工具交流学习平台疯狂的美工一站式电商设计师店铺代码装修工具交流学习平台是一个内容丰富的淘宝天猫/阿里1688/京东/阿里国际站美工设计师店铺代码装修工具、设计工具及教程资源发布网站,本站同时为广大设计师提供了灵感分享、学习交流的平台。https://www.fkdmg.com/
19.JELLY在线代码调试平台CodeHouse诞生记在线代码调试 CodeHouse 平台,是一个支持在线调试预览代码的平台,实现了代码开箱即用、实时预览、分享代码、一键部署、切换镜像源、安装依赖、支持主流前端框架等功能,首次接入 NutUI 组件库。支持 vue 和 react 组件的在线调试功能,目前雏形已现,未来可期~ https://jelly.jd.com/article/61d69d6c9b585d01b13fb880
20.开源低代码在线设计平台源码在线表单设计开源低代码在线设计平台源码在线表单设计 项目简介 olcd是一个支持直接通过拖拽表单来设计前端整个功能和生成sql等其他高级功能的web可视化平台。 此项目能做些什么 做简单的通用的原型设计, 支持设计搜索栏、列表、编辑、详情 编辑和设计搜索栏 编辑和设计数据表格https://www.ymama.net/news/txtlist_i1708v.html