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.有效文献查找与管理的步骤与技巧指南学术文章论文引用文献:在综述中准确引用所使用的文献,确保遵循相关的引用格式(如APA、MLA等)。 八、保持文献更新(Keep Literature Updated) 学术研究是一个动态的过程,新的文献和研究不断涌现。因此,保持文献的更新是非常重要的。可以通过以下方式保持更新: 设置文献提醒:在相关数据库中设置文献提醒,以便及时获取该领域的最新研究https://www.163.com/dy/article/JJHEKJKS0556A727.html
2.Zilibrary资源轻松获取指南,详细下载指南助你轻松找到所需资源本文旨在为广大热爱阅读的朋友们提供关于如何使用Zilibrary这一电子书籍平台的详细指南,从了解平台的基本信息开始,逐步介绍如何下载书籍的详细步骤,包括可能遇到的问题及解决方法,提高下载效率的建议以及使用平台的小技巧,提及慈云数据等先进技术在助力用户获取和享受数字资源方面所发挥的重要作用。 https://www.zovps.com/article/index.php/post/412333.html
3.libraryResource使用libraryloaderlazihuman的技术博客libraryResource使用 library loader 我们在绘制原理图和PCB过程中,原理图符号和PCB封装的绘制、3D模型的查找和绘制需要占用大量时间。 贸泽网站提供了一款元器件库工具——Altium Library Loader,它依靠贸泽背后强大的数据库和器件库,可以将多种元器件的原理图符号、PCB封装、3D模型直接导入Altium Designer软件中,不仅节省https://blog.51cto.com/u_12947/10772907
4.如何在zilibrary上下载电子书到静读天下【创新维】_触控一体机哪个品牌好 【创新维】_无线触摸一体机 【创新维】_85寸触摸一体机厂家 【创新维】_触控一体机42寸 【创新维】_山东42寸触摸一体机 【创新维】_佛山触摸一体机 【创新维】_触摸一体机厂商 【创新维】_天津触控一体机 【创新维】_纳米电容屏黑板 https://xbeibeix.com/video/BV1BN4y1K7Za
5.CNKI使用教程第十六讲格式精灵:一键排版省时省力上一讲,我们一起学习了学术不端检测工具的功能及使用,本期就为大家介绍下论文排版工具——格式精灵,帮助大家缩短成稿时间,提高写作效率~ 已关注关注重播分享赞关闭观看更多更多退出全屏视频加载失败,请刷新页面再试刷新视频详情 》〉扫码关注答题有奖〈《 https://mp.weixin.qq.com/s?__biz=MzUzMzUyNTg1NQ==&mid=2247500480&idx=1&sn=f9417bb3c148d8d52d4a660bd1e1381d&chksm=fb04bbd9b0c159d9f015fa61599f2bf3d1ae040153ed94aa631318f5923a05ba4be79ef4d32b&scene=27
6.文献综述学术论文阅读的10个高效工具。阅读文献是学术研究和文献综述的重要一步,如何高效阅读学术论文是学术研究者经常遇到的难题。本篇公众号文章将介绍10款阅读学术论文的高效工具。 第一个是R Discovery, R Discovery是一款免费的应用程序,供研究者查找和阅读研究论文。研究者可以使用该工具文献搜索和阅读感兴趣的学术论文,可以访问学术文章、科学期刊、https://zhuanlan.zhihu.com/p/13649414493
7.Zilibrary可用入口检索知识文献检索小木虫论坛求助:免费英文专业图书Zilibrary可用入口?https://muchong.com/t-16286086-1-pid-1
8.zliabary图书馆登录入口zliabary图书馆入口地址Zlibrary网址入口:>>点击进入<< 备用网址:>>点击进入<< 一、使用步骤 1、首先点开上方链接,如若遇到打不开的情况可能是路线不稳定,那么切换为下方备用网址即可。 2、需要登录账号,没有账号的小伙伴注册一个就行。 3、上边有着zliabary语言设置教程,先把zliabary设定变成中文,随后登陆zliabary。 https://app.ali213.net/gl/1280717.html
9.课堂秀创新设计学院第二季国际联合设计教学工作坊即将启动3.使用Raspberry Pi和或Ardunio进行数字/模拟输入和输出 4.了解Python、Javascript和NodeJS的核心用法 5.使用Python和NodeJS创建web服务器 6.了解网络系统的要素 7.在Processing library p5js中实现实时数据可视化 8.了解艺术设计的原型(prototype)的重要性 https://www.thepaper.cn/newsdetail_forward_7761577
10.自然博物馆用英语如何表达英语作为世界上较广泛使用的语言之一,学好英语对我们未来的工作和生活都有很大的帮助。为了帮助大家更好的学习,下文中是如何表达博物馆的英语信息,一起来看看吧。 博物馆的英语是museum,读音为英[mju"zim],美[mju"zim]。 museum解析如下: https://www.yswxk.com/qa-detail/ce2fb7a9d72211eea8fdfa163e176f5c
11.scikitlearn:machinelearninginPython—scikitExamples Dimensionality reduction Reducing the number of random variables to consider. Applications:Visualization, increased efficiency. Algorithms:PCA,feature selection,non-negative matrix factorization, andmore Examples Model selection Comparing, validating and choosing parameters and models. http://scikit-learn.org/
12.3年级下册语文听课记录13篇(全文)1、打开书和安静一起触摸春天,注意读准字音,读通课文,看看盲童安静如何走进春天的?她触摸到了什么? 2、出示词语,正音,理解“磕磕绊绊”,范写“瞬”字。生试写,感受盲童的生活不易。 流畅 穿梭 悄然 拢住 奇迹 磕磕绊绊 多姿多彩 扑腾 曲线 缤纷 弧线 瞬间 清香袅袅 花繁叶茂 https://www.99xueshu.com/w/file68vyvm6c.html
13.系统分享教你如何注册ZZ-Library是一个提供免费电子书和学术论文的大型数字图书馆,始于2009年,拥有超过50万本书和4000万篇期刊论文。用户可以免费注册并下载资源,注册后享受更多功能。文章提供了详细的注册和使用教程,以及Z-Library的特色和历史背景。 摘要由CSDN通过智能技术生成 https://blog.csdn.net/qq_22903531/article/details/131373013
14.Zlibrary国内镜像网站入口链接有哪些Zlibrary使用教程 第一步:将上方的链接地址放入浏览器中或者是点击【zliabary网页版】,之后就会跳转新的界面; 第二步:玩家注册完成账号之后就可以顺利的登录了,或者是登录已有的账号; zliabary怎么设置中文 第一步:顺利登录网址之后,选择【Connect】,目前语言是英文; https://m.vqs.com/article/20014.html
15.PSoCCreator教程:如何在工程中创建LibraryProjectPSoCCreator会支持PSoC4000T 吗? 在同一 SDK/IDE 中使用预先加载的示例和主板支持包来完全支持所有PSoC4000 器件会很有帮助。 如果 发表于01-31 06:21 如何在CANPSOC6的PSoCCreator顶级设计中实现移位寄存器? 如何CANPSOC6的PSoCCreator顶级设计中实现移位寄存器? 目标设备是 CY8C6347BZI-BLD43 https://www.elecfans.com/d/1237154.html
16.如何使用集合初始值设定项初始化字典如何在查询中返回元素属性的子集 接口 委托 字符串 索引器 事件 泛型 其他C# 文档 使用英语阅读 保存 添加到集合 添加到计划 通过 Facebookx.com 共享LinkedIn电子邮件 打印 项目 2024/03/25 13 个参与者 反馈 本文内容 示例 另请参阅 Dictionary<TKey,TValue>包含键/值对集合。 其Add方法采用两个参数,一个https://msdn.microsoft.com/zh-cn/library/bb531208
17.php中的反射详细讲述php教程PHP 5 具有完整的反射 API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。 TP框架中反射的使用 1、ReflectionClass::__construct — 构造一个 ReflectionClass 类 public ReflectionClass::__construct ( mixed $argument ) https://www.php.cn/php-weizijiaocheng-388404.html
18.小学英语课程表magazine / ,m?g?'zi:n / 杂志 newspaper / 'nju:z,peip? / 报纸 dictionary / 'dikneri / 词典 2.身体部位(body) foot / fut / 脚 head / hed / 头 face / feis / 脸 hair / h / 头发 nose / n?uz / 鼻子 https://www.meipian.cn/297omv2p
19.MacOS安装XCode及使用bluedrum它可以安装Xcode 3.1.4+iphone sdk 3.1.2的版本。很不幸,苹果的官网只有最新的XCode 3.2.2+iphone SDK 4下载了。如果你想做iphone开发,只能好去找其它办法下载这个版本,或者去使用Mac OS 10.6.x来开发。 二.升级Mac OS 10.5.5到10.5.7 在折腾几天后,我确定先用 Mac OS 10.5.5来安装Xcode 3.1.4. http://blog.chinaunix.net/uid-20587912-id-405204.html