【S32K】S32K144入门笔记(1) 从零开始进行开发环境搭建

0.目录

1. 起因

算起来,接触S32K144有1个月了,突发的项目需求让使用这个片子,当时真是一头雾水。
在此之前的自己是一直使用ST的片子,感觉这个片子的好处就是系列比较全,不同的需求去找不同的型号就行,而且坑被人踩的差不多了,基本上问题都能找到类似的。这次遇到的问题就是,ST没有车规的型号。必须要换
其实个人认为,不同的芯片,真很难说什么好什么不好,我自认做项目还没能抠到芯片自身性能的区别而导致一个可以一个不可以。(当然主频啊外设啊,这些硬指标就不说了,我指的就是同样的速度们同样的外设间的区别)
S32K144这个片子,不能说不好,用起来也没啥大坑。
唯一的问题,资料太少了,基本只能去官网找到有用的,我太南了

2. 开发环境

2.1 软件开发环境选择

S32K144的开发环境主流是这么三种:

  1. S32DS
    S32DS是NXP官方给的开发工具
  2. Keil
    Keil需要下载pack支持包,部分源码需要从S32DS导出。
  3. IAR
    这个没有深究,一直没怎么用过。

2.2 S32DS

我这边选择的是S32DS来做的,本来就是第一次使用NXP的片子,还是用原生的工具,支持可能好一些,少踩些坑。
要注意的就是S32DS也有好几种,就像Keil有Keil C51,Keil MDK一样,编译的内核不一样的,在官网要选择一下。
S342K144要选择 S32DS IDE for Arm.

2.2.1 下载&安装

找到的最新的安装包是S32DS_ARM_Win32_v2018.R1_b180326.exe(目前是2019年10月),下载比较慢,安装时填写激活码(官网上下载界面有,免费的),一路next就OK,没啥坑。
主要的坑在于,安装完这个之后,需要再升级一个升级包(S32DS_ARM_v2018.R1_UP10.zip),才能得到最新的库函数接口。(升级操作:help-Install new software窗口下点击Add,在Add Repo中选择S32DS_ARM_v2018.R1_UP10.zip)
如果没有做升级,默认的库是EAR_SDK_0.8.6版本的,升级之后就是RTM_SDK_3.0.0(别问我EAR和RTM什么区别,我用起来感觉是一样的)。后面在请教原厂FAE的过程中,对面觉得我们的库太老了,内含bug,而且跟踪调试也比较难(别人问你一年前写的代码的问题,你也会懵的)

2.2.2 Demo工程

这部分很重要,因为这可能是我们实现工程最直接也是最有效的方法了(这个是资料最全的)。
在File-New-S32DS project from example,可以调出能导入的demo工程。
感觉demo主要分了两类
1.寄存器开发版本
感觉类似之前Stm32的寄存器版本,类似51的开发,都是直接配寄存器的。这种效率更高,但是可读性和移植性比较差。
2.库函数版本
感觉类似stm32的hal库,NXP命名是Pal库,都是一个中间的抽象层。这个版本的代码支持用pe来做图形化配置(这部分感觉没有st的STM32cube好用)

2.3 硬件开发板选择

开关板肯定是选官方的(这么小众的片子也没有第三方的开发板)。
官方版我找到两版本,一黄一蓝。
S32K144老版开发板
S32K144新版开发板
其实更喜欢蓝色的,感觉更小巧,而且基本要的功能都有了,只不过估计是早期版本,已经没有货了。
黄色的长条就是S32K144EVB。
官方demo都是基于这个写的。

2.3.1 硬件架构

开发板自带了调试接口OpenSDA,这是个什么东西会在后面介绍。
板载接口有CAN、Lin/Uart、ADC、PWM、IO(Key)…
简单功能都有了。
够用了。
开发板硬件

2.3.2 调试接口

硬件最早打板的时候来问我,要给我留个什么调试接口。我当时还没拿到调试板,就跟他说要OpenSDA。
然后我两对视了一会,硬件一脸懵逼的走了(最后还是给我留的是SW口,VCC GND DIO CLK NRT,用jlink调试)。
其实最早的时候我会把OpenSDA误会成一种类似于jtag、sw这样的一种调试接口。后来发现并不是这样的。OpenSDA相当于在SW之上又封装了一层交互接口,可以类似U盘的操作,实现了一种很方便的下载代码的方法。觉得还挺有想法的。这部分我就不赘述了,列了参考链接在下面,文章写的很好。
通过OpenSDA,可以通过优盘的方式更新固件,也可以在S32DS中直接下载仿真运行。
在这里插入图片描述

3 新建S32DS工程

简单记录一下步骤吧。这里选择的是基于SDK库接口来开发的。

  1. File-new-S32DS application project
  2. 在弹出的对话框中,填写“project name”,左下角选择芯片型号,中间如果不想用默认地址,可以勾掉“Use default location”,选择一个文件夹。
    S32DS会在这个文件夹下面新建一个和project name同名的文件夹,代码文件都会放进去。
    在这里插入图片描述
  3. 点击next,在SDKs中选择对应的SDK版本。(就是库函数之类的,建议用最新版本的SDK,老的有问题才会更新新的)
    新装的v2018.R1是0.8.0版本的SDK
    目前(2019.10.12)最新的版本是3.0.0(安装S32DS_ARM_v2018.R1_UP10.zip)
  4. finish之后就新建了一个工程
  5. 开始添加我们的东西。
    第一步就是修改 **.pe文件。
    刚建立的工程 components 如下:
    修改封装,改成我们真实使用的封装。不同封装之间,芯片会有差异,比如S32K144,有64引脚封装和100引脚封装。选择了64引脚,有些功能(比如uart3之类的)就无法使用(废话,pin都没有怎么用。)
    更换封装
  6. 更换封装之后,pin_mux会有打叉,因为引脚不兼容了。remove,重新拉一个pin的组件。顺便把其他需要的组件都加进来。然后修改对应的组件参数。

添加所有组件
7. 自动生成库函数接口代码 project - generate pe code
8. 在mian.c里写自己的代码,新建自己的.c文件。这个库有意思的地方在于一大堆的extern,很多变量直接就能用。怎么说呢,个人用起来比较别扭,我更倾向于模块独立,耦合性很低,有标准的输入输出接口的模块。但是入乡随俗吧,能用就行。

参考连接

飞思卡尔Kinetis开发板OpenSDA调试器那些事(上)- 背景与架构—痞子衡
S32K SDK使用详解之S32 SDK软件编程思想详解
S32K工程移植到Keil

系列文章

S32K144入门笔记(1) 从0开始进行开发环境搭建

发布了25 篇原创文章 · 获赞 7 · 访问量 5121

猜你喜欢

转载自blog.csdn.net/tao475824827/article/details/102661370