S32K3学习笔记01-S32K3 RTD【MCAL&SDK】的使用和环境搭建

  • 1 前言
  • 2 准备工作
  • 3 安装
    • 3.1 安装EB Tresos
    • 3.2 安装MCAL
    • 3.2 安装S32DS
  • 4 SDK开发示例
    • 4.1 SDK包安装
    • 4.2 导入一个Demo
    • 4.3 新建一个工程
  • 5 MCAL开发示例
    • 5.1 MCAL软件包组成
    • 5.2 通过EB配置MCAL并生成代码
    • 5.3 编译配套的MCAL Demo
    • 5.4 在S32DS中使用PE仿真器调试
    • 5.5 使用Lauterbach调试
  • end

1 前言

  NXP最近又推出了新的GPIS系列MCU S32K3,也就是S32K1的升级版,虽然是升级版,但是性能提升的不是一点半点,那是贼凶啊,接下来一段时刻,我就要好好学习一下这个MCU,并且把我的学习过程写点笔记,分享给大家,欢迎大家建议和纠错。

  这第一篇就介绍一下开发环境的搭建,在这里我使用S32DS进行SDK方式的开发,配合EB tresos进行MCAL开发。

  简单的来说就是:EB tresos可以为MCAL开发提供图形化配置界面,而S32DS则为SDK开发提供图形化配置界面。

  这篇文件介绍的方式流程如下:

  SDK开发流程为:

#mermaid-svg-aPQmItk7TFLNoFCU {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-aPQmItk7TFLNoFCU .error-icon{fill:#552222;}#mermaid-svg-aPQmItk7TFLNoFCU .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-aPQmItk7TFLNoFCU .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-aPQmItk7TFLNoFCU .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-aPQmItk7TFLNoFCU .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-aPQmItk7TFLNoFCU .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-aPQmItk7TFLNoFCU .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-aPQmItk7TFLNoFCU .marker{fill:#333333;stroke:#333333;}#mermaid-svg-aPQmItk7TFLNoFCU .marker.cross{stroke:#333333;}#mermaid-svg-aPQmItk7TFLNoFCU svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-aPQmItk7TFLNoFCU .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-aPQmItk7TFLNoFCU .cluster-label text{fill:#333;}#mermaid-svg-aPQmItk7TFLNoFCU .cluster-label span{color:#333;}#mermaid-svg-aPQmItk7TFLNoFCU .label text,#mermaid-svg-aPQmItk7TFLNoFCU span{fill:#333;color:#333;}#mermaid-svg-aPQmItk7TFLNoFCU .node rect,#mermaid-svg-aPQmItk7TFLNoFCU .node circle,#mermaid-svg-aPQmItk7TFLNoFCU .node ellipse,#mermaid-svg-aPQmItk7TFLNoFCU .node polygon,#mermaid-svg-aPQmItk7TFLNoFCU .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-aPQmItk7TFLNoFCU .node .label{text-align:center;}#mermaid-svg-aPQmItk7TFLNoFCU .node.clickable{cursor:pointer;}#mermaid-svg-aPQmItk7TFLNoFCU .arrowheadPath{fill:#333333;}#mermaid-svg-aPQmItk7TFLNoFCU .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-aPQmItk7TFLNoFCU .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-aPQmItk7TFLNoFCU .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-aPQmItk7TFLNoFCU .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-aPQmItk7TFLNoFCU .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-aPQmItk7TFLNoFCU .cluster text{fill:#333;}#mermaid-svg-aPQmItk7TFLNoFCU .cluster span{color:#333;}#mermaid-svg-aPQmItk7TFLNoFCU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-aPQmItk7TFLNoFCU :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

在S32DS配置外设
在S32DS编译
在S32DS中调试
使用其他调试工具

  MCAL开发流程

#mermaid-svg-GNX262hqtLZalSCA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GNX262hqtLZalSCA .error-icon{fill:#552222;}#mermaid-svg-GNX262hqtLZalSCA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-GNX262hqtLZalSCA .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-GNX262hqtLZalSCA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-GNX262hqtLZalSCA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-GNX262hqtLZalSCA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-GNX262hqtLZalSCA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-GNX262hqtLZalSCA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-GNX262hqtLZalSCA .marker.cross{stroke:#333333;}#mermaid-svg-GNX262hqtLZalSCA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-GNX262hqtLZalSCA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-GNX262hqtLZalSCA .cluster-label text{fill:#333;}#mermaid-svg-GNX262hqtLZalSCA .cluster-label span{color:#333;}#mermaid-svg-GNX262hqtLZalSCA .label text,#mermaid-svg-GNX262hqtLZalSCA span{fill:#333;color:#333;}#mermaid-svg-GNX262hqtLZalSCA .node rect,#mermaid-svg-GNX262hqtLZalSCA .node circle,#mermaid-svg-GNX262hqtLZalSCA .node ellipse,#mermaid-svg-GNX262hqtLZalSCA .node polygon,#mermaid-svg-GNX262hqtLZalSCA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-GNX262hqtLZalSCA .node .label{text-align:center;}#mermaid-svg-GNX262hqtLZalSCA .node.clickable{cursor:pointer;}#mermaid-svg-GNX262hqtLZalSCA .arrowheadPath{fill:#333333;}#mermaid-svg-GNX262hqtLZalSCA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-GNX262hqtLZalSCA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-GNX262hqtLZalSCA .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-GNX262hqtLZalSCA .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-GNX262hqtLZalSCA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-GNX262hqtLZalSCA .cluster text{fill:#333;}#mermaid-svg-GNX262hqtLZalSCA .cluster span{color:#333;}#mermaid-svg-GNX262hqtLZalSCA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-GNX262hqtLZalSCA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

在EB配置MCAL
使用编译器编译
在S32DS中调试
其他调试工具

2 准备工作

  准备工作当然就是下载一些东西喽。需要下载三个东西,分别是NXP官方的调试IDE,配置MCAL的EB tresos以及S32K3的RTD软件包。

  RTD是什么,Real-time Driver,在S32K1时代,MCAL和SDK是两套不同的软件包,但是到了S32K3,就把两者集成了一下,MCAL和SDK共用一套代码,也就是RTD,意思其实就是这两个软件包里面的底层代码都是一样的。简单的来说,现在K3的MCAL就是在SDK的底层基础上封装了一层符合AUTOSAR标准的接口层,RTD的具体结构框架如下图:

  图中High Level Interface指的就是符合AUTOSAR的MCAL接口层,而Low Level Interface就是传统意义上比较高效的SDK底层接口层。

  如果有NXP的授权账号,就可以在下面链接下载到这些东西的安装包,登录账号后,点击MY_NXP

  点开 Software Licensing and support, 找到S32K3 Standard Software,点开就可以看到这三个东西的下载链接了:

  ①对于EB tresos的下载,需要记住标记的激活码。

  ②对于MCAL(SDK),就下载最新的就好了,这里我选择是1.0.0。

  如果是MCAL开发的话,只需要下载MCAL安装包,如果是SDK开发的话,只需要下载SDK软件包。

  ③对于S32DS,可以看到这个版本需要S32DSV3.4,所以需要下载V3.4版本的S32DS就好了,另外还需要下载S32K3的支持补丁包。

  下面就是一顿漫长的等待,等所有东西都下载好了之后,有如下东西:

分别是:

  1. EB Tresos安装包
  2. S32DS安装包
  3. MCAL安装包
  4. K3支持补丁包
  5. SDK包

这样所需要的文件就全部下载好了。

3 安装

3.1 安装EB Tresos

  下载EB tresos的时候可能会出现浏览器把后缀uip改成了gz的情况,将其修改回uip即可。

  点击setup.exe,一直next即可,非常简单,中间需要记住其安装路径即可,后续会用到。

  又是一次漫长的等待。安装完成后再点击EB_Client_License_Administrator_1_4_1_Setup.exe安装激活工具。之后打开EB激活工具,将之前下载EB时候保存的激活码添加到激活工具中,这样EB tresos就可以正常使用了(注:EB License目前提供的为试用版,不能用于项目正式量产,请联系EB购买正式license)。

3.2 安装MCAL

  点击SW32K3_RTD_4.4_1.0.0_CD01_D2108.exe安装MCAL(SDK),一直Next,直到这一步,将上一步安装的EB tresos的安装路径填进去,之后就非常简单了。

3.2 安装S32DS

  安装S32DS就非常简单了,一直下一步即可,这里不做赘述了。安装完成后还需要安装S32K3的补丁软件支持包,点击Help->Install New Software后将前面下载的K3支持补丁包Add后,选中所有后点击Next

  之后就是经过漫长的等待,等待补丁安装完成。
  

4 SDK开发示例

4.1 SDK包安装

  打开S32DS后,点击Help->Install New Software后将前面下载的SDK软件包Add后,选中后点击Next

  之后就是经过漫长的等待,等待SDK包安装完成。

4.2 导入一个Demo

  点击File->New->S32DS Project From Example, 选取一个Demo:

  之后打开Demo中的mex文件即可打开S32DS的图形化可配置界面进行相关的配置:


  通过这个界面就可以对S32K3的IO,时钟,外设等进行配置,具体细节不再赘述,之后点击Update Code生成代码。

  之后就是正常的编译,调试了,这里也就不多说啥了,非常简单。

4.3 新建一个工程

  也是可以直接新建一个工程,具体操作如下,点击File->New->S32DS Application Project,选择芯片型号:

  点击Next

  选择正确的SDK后,点击Finish,一个新的工程就创建成功了,接下来就是编译和调试了。

  可能有些人安装的是最新版本的SDK软件包,发现编译会失败,这种问题一般是因为你安装的工具链与SDK软件包的版本不匹配问题。比如目前最新版RTD1.0.0用的工具链是GCC10.2,但是你安装的工具链还是GCC9.2,如下:

  这个时候就需要更新一下S32DS的工具链就好了,点击help->check for update,然后更新就好了。

5 MCAL开发示例

5.1 MCAL软件包组成

  找到安装的MCAL(RTD)目录打开,如下:

  可以看到有很多外设的例子,点开某一个例子如下:

  各个文件夹所包含的内容描述如下:

名称 描述
autosar epd文件
config EB配置模板文件
doc 当前外设MCAL的Integration Manual和User Manual
examples EB tresos工程Demo和S32DS工程Demo
generate_PB PostBuild版模板源文件和头文件
generate_PC PreCompile版模板源文件和头文件
generate_swcd (个人猜测应该没啥用,我也不知道)
include 当前外设MCAL驱动的头文件(需要移植
META-INF (个人猜测应该没啥用,我也不知道)
src 当前外设MCAL驱动的源文件(需要移植

  上面介绍了examples文件夹里面有EB Tresos的工程和S32DS的工程,再打开examples/EBT文件夹的一个例子如下:

  各个文件夹所包含的内容描述如下:

名称 描述
debug 一些劳德巴赫的调试脚本
generate EB tresos生成的代码(其中的src和include需要移植
include MCAL配套Demo的头文件
out 编译生成的.o文件以及elf可执行文件
src MCAL配套Demo的源文件
TresosProject EB工程文件
Makefile MCAL配套Demo的Makefile
project_parameters.mk Makefile的包含文件,注意包含一些路径,配置信息

  再打开其中的TresosProject文件夹:

  其中config文件夹里面就包含了当前EB工程的xdm配置文件。

  所以当使用EB配置完所有的外设MCAL后,只需要把以下的文件中的源文件和头文件移植到自己的工程中就可以了,分别是:

  1. 所有使用到外设MCAL的源文件和头文件,
  2. EB生成源文件和头文件

  在上面的表格中,需要移植的内容已经加了 “(需要移植)” 字样作了标记。

5.2 通过EB配置MCAL并生成代码

  S32K3的MCAL(RTD)为每个软件模块都提供了示例工程,也是在上面所说的examples文件夹中。

  该文件夹下面有两个文件夹,分别为EBT 及S32DS。其中EBT即为MCAL的工程,其中不仅包含了EB tresos的工程,还包括了配套的demo,下面就以其中ADC的例子做示范。

  打开EB,并点击File->Import:

  找到相应的MCAL工程路径,选取自己想要的demo后,点击Finish。

  之后就是对MCAL进行配置,点击生成代码按钮,就可以生成相应的MCAL代码了。

  另外打开项目属性,可以修改生成代码的存储位置,如果需要使用RTD里面的makefile和配套的MCAL demo的话,修改路径的话则无法通过编译。

5.3 编译配套的MCAL Demo

  首先编辑一下project_parameters.mk脚本文件,修改一下其中的相关路径信息,该文件位置如下如所示。

  可以按照readme.txt里面的提示修改:‘

  1. TRESOS_DIR:EB tresos的安装路径
  2. GCC_DIR:编译器的路径
  3. PLUGINS_DIR:MCAL的安装路径

  我修改后如下:

  接下来再把编译工具链路径添加到环境变量中,类似于cygwin或者mingw这些,S32DS安装目录中默认就有,具体路径如下:

C:\nxp\S32DS.3.4\S32DS\build_tools\msys32\usr\bin

  将其添加至环境变量中:

  接下来就可以编译了,打开windows的cmd,将路径切换至示例Demo的路径,我用的是一个ADC的demo,所以如下:

随后执行
make build
编译代码,最后会在当前工程路径下out文件夹下生成可执行文件main.elf。

  注意:如果你在该工程的基础上增加了新的模块,比如我在上述工程中增加了CAN模块,那么为了使得编译通过,我们还需要修改一下project_parameters.mk脚本文件,将CAN的MCAL源文件和头文件的路径添加进编译路径MCAL_MODULE_LIST中,如下:

MCAL_MODULE_LIST := Base CanIf Rte Platform Os Mcu EcuC Det EcuM  Adc Resource Port Dio Lcu Mcl Can

5.4 在S32DS中使用PE仿真器调试

  接下来就是使用S32DS来调试在上一步编译Demo生成的可执行文件了。

  使用PE仿真器连接S32K3后,打开S32DS后,点击Debug Configurations

  然后安装下图提示选择PE interface,新建一个调试工程:

  按照下图进行设置:


  其中Executable处应填写:

${S32DS_K3_ARM32_TOOLCHAIN_DIR}/bin/${arm32_cross_prefix}gdb${arm32_cross_suffix}

  随后点击Debug即可进行调试。

  按照以上的步骤即可在S32DS调试MCAL配套的Demo了。

5.5 使用Lauterbach调试

  接下来再使用Lauterbach调试一下上面编译生成的可执行文件。

  使用Lauterbach进行调试的话,则还需要修改一下config.t32文件,该文件的路径如下所示:

将其中的SYS变量修改成Lauterbach的安装路径, 我修改后如下:

  随后就是打开Lauterbach,使用命令连接上S32K3后,再运行脚本run.cmm,脚本路径如下图所示:

  随后就可以正常调试RTD里面MCAL配套的Demo了。

end

小猫爪:S32K3学习笔记01-S32K3 RTD【MCALSDK】的使用和环境搭建相关推荐

  1. ④ESP8266 开发学习笔记_By_GYC 【Ubuntu系统下ESP8266 开发环境搭建】

    目录 ④ESP8266 开发学习笔记_By_GYC [Ubuntu系统下ESP8266 开发环境搭建] 一.安装前准备 1.乐鑫官方的ESP-IDF 编程指南 2.ESP-IDF风格的ESP8266 ...

  2. 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot

    本篇学习笔记是观看黑马程序员Activiti7视频而得 Activiti7 一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是" ...

  3. (Python入门)学习笔记一,初次接触尝试使用Python——环境搭建与配置

    (Python入门)学习笔记一,初次接触尝试使用Python 早就耳闻Python大名,搞大数据.做人工智能.整机器学习,就得了解Python.之前一直没有去了解,现在由于之前一个项目涉及到一点Pyt ...

  4. Metro UI CSS 学习笔记之一:简介和Metro UI CSS 环境搭建

    简介: Metro UI CSS 是一套用来创建类似于Windows 8 Metro UI风格网站的样式. 这组风格被开发成一个独立的解决方案.Metro UI CSS包含两种类型的许可证: MIT和 ...

  5. Adroid学习笔记-入门资料以及V2.3系统开发环境搭建

    今年工作签得比较顺利,签了国内著名的通讯IT企业,同时拿到国内著名即时通讯软件公司,国内著名的通讯IT兼国企母公司和其移动开发子公司等另外三家公司的offer.之后时间便充裕,同时步入通讯行业,对手机 ...

  6. 干货! 快速上手typescript的学习笔记 (对比JS的新特性,环境搭建,webpack配置,ts编译配置)

    前提需要有js的基础 文章目录 TypeScript 产生背景 什么是TypeScript? TypeScript增加了什么 TypeScript开发环境搭建 基本类型 编译文件配置 tsconfig ...

  7. Hyperledger Fabric学习笔记(二)- Fabric 2.2.1环境搭建

    一.参考文章如下: 1.https://blog.csdn.net/zhanglingge/article/details/106208491 2.https://blog.csdn.net/qq_4 ...

  8. Open-Falcon学习笔记(一)Open-Falcon v0.3.0环境搭建

    文章目录 一.主机准备 二.参考文档 三 .环境配置 3.1 配置阿里YUM源.安装基本工具 3.2 关闭防火墙.Selinux 3.3 修改主机名 3.4 配置时间同步 3.5 安装go环境 3.6 ...

  9. 小猫爪:S32K3学习笔记09-S32K3之Safety简介

    小猫爪:S32K3学习笔记09-S32K3之Safety简介 1 前言 2 Safety相关硬件介绍 3 Safety相关软件介绍 4 Safety文章目录 END 1 前言   接下来,就要开始进学 ...

最新文章

  1. suse linux登录黑屏,SUSE Linux登录时黑屏解决办法
  2. 最强人脸检测来了 yolov5 face
  3. 用python画四叶草代码-python—字符串拼接三种方法
  4. hdu2196 树形DP
  5. 魔术方法php重定向,PHP魔术方法__get()
  6. 朱邦芬院士:我所熟悉的几位中国物理学大师的为人之本
  7. C++中用TinyXML对XML文件进行解析
  8. 使用Fastjson解析List对象时出现:{$ref:$.data[0].task.OBJECTS[0]}的问题原因及解决方法...
  9. Scintilla教程(6): 字符集
  10. 《实时控制软件设计》团队项目分组
  11. 关于解决netstat -nb中出现请求的操作需要提升问题
  12. 科学计算机设计总结,科学计算器课程设计报告
  13. Halcon深度学习目标检测例程学习经验(1)
  14. 咖说 | 新基建中区块链的位置:基础设施的基础技术
  15. 初识HTML(五)进阶:CSS盒子模型、页面布局
  16. CarSim仿真快速入门(十六)—CarSim传感器仿真之ADAS Sensor Objects (2)
  17. 使用google高级搜索技巧
  18. 并行计算mpi实现矩阵转置,mpi分布式编程简介,点对点通信方法
  19. html语言简介 ppt,网页制作与HTML语言基本结构简介.ppt
  20. 网页平面设计/广州平面UI设计培训就业班课程

热门文章

  1. 测试月经周期的软件,大姨妈预测app
  2. Echarts-水球图笔记
  3. YOLOV5模型训练之JSON格式的数据集制作,一个py程序搞,搞不定邮件联系,我帮你!!!!
  4. php性别类型是什么,专属男女的各种性别符号
  5. PPTV电视怎么安装第三方软件看电视直播方法
  6. 国内外电信运营商云计算实施情况对比分析
  7. java 电话号码归属地查询
  8. ubuntu 网络连接图标灰色处理
  9. 从实验到投稿录用的一次经历(历时小半年)
  10. 如何写优雅的代码(序)——自语