目录

  • 一、 S32DS for Arm/PA
    • PEMicro系列调试器包括以下接口类型:
    • 1.如何创建在MCU应用工程中添加SDK?
    • 2.如何使用SDK的demo工程?
    • 3.如何查看SDK外设组件(Component)的帮助文档?
    • 4. S32DS-使用Flash from file下载S19或elf文件
    • 5. 配置S32DS工程生成S19文件
      • 使用Flash from file下载S19/elf文件
    • 6. S32DS链接文件和启动过程详解
    • 7. S32DS应用程序开发实用技巧
      • (1)打开/导入本地工程
      • (2)S32DS IDE工程文件代码阅读
        • Search Text
        • 快速定位变量Variable/函数Function/宏Marco定义
        • 定位/打开文件存储目录
        • 使用第三方编辑器打开工程文件
        • 文本文件内容比较
        • 查看函数/变量调用层级
      • (3)S32DS IDE工程程序下载与调试
        • 正常debug与attach的区别
        • 设置调试默认断点
        • 查看和保存存储器内容(Memory)
        • 查看和修改CPU内核通用寄存器
        • 查看和修改外设寄存器(Embsys Registers)
        • 查看函数调用栈(Call Stack),分析程序调用过程
        • 查看汇编代码和进行汇编指令级调试(Disassembly)
        • 使用RTOS调试插件
    • 8. 嵌入式MCU开发之条件断点的设置(以S32DS+U-Multink debugger为例)
      • 1)硬件断点和软件断点:
      • 2)条件断点
        • 设置正常断点
        • 打开断点属性窗口并设置

本篇文章大量参考公众号作者的文章,之后会根据自己的使用不定期更新。

一、 S32DS for Arm/PA


S32 DS IDE for Arm®:面向S32K1、S32V、KEA和MAC57D54H器件的集成开发环境(IDE);
S32 DS IDE for Power Architecture®:面向S32R、MPC57xx和MPC56xx器件的集成开发环境(IDE)。

NXP S32DS IDE中提供的SDK软件架构如下:

PEMicro系列调试器包括以下接口类型:

USB Multilink/FX;
TraceLink-USB/Ethernet Port;
OpenSDA Embedded Debug–USB Port。
其中,
USB Multilink/FX是可以支持所有系列MCU的调试器(使用不同的Firmware和调试接口);
TraceLink为PEMicro推出的带有代码跟踪(trace)的调试器;
OpenSDA 为KEA/S32K系列MCU以及MPC57xx系列MCU FRDM/Devkit系列Demo板的板载调试器。
一般情况下我们给mpc5748g烧写代码时,采用USB Multilink接口

如何配置和使能Attach功能定位软件程序bug和完成bootloader与应用程序工程的联合调试
使用S32DS的Attach调试功能,可以在不下载改变目标MCU片上NVM且不复位MCU的情况下,非常方便的程序跟踪,定位ug。该方法在对BootLoader与应用工程进行联合调试时,十分有用。

首先,将BootLoader和应用工程的编译结果编程文件S19/HEX/BIN合并为一个,并通过编程器下载到目标MCU(利用本文介绍的方法也可以将调试配置选择Main窗口下的C/C++ application配置为某一编程文件S19/HEX/BIN,并且不再Startup窗口配置使能attach功能,则也可以将相应的编程文件下载到目标MCU);

然后,再依次用attach的方式加载BootLoader工程和应用工程elf文件中的调试信息对其进行调试即可。

1.如何创建在MCU应用工程中添加SDK?

新建应用工程向导中,选择内核和SDK、C语言库、默认调试器等。

工程创建成功后,在Project Explorer窗口中,可以看到一个ProcessorExpert.pe的文件,即为SDK的处理器专家配置信息储存文件。

2.如何使用SDK的demo工程?

S32DS IDE的SDK中集成了丰富的外设组件demo工程,这些SDK的demo工程是我们学习使用SDK最好的参考资料,强烈推荐大家在使用某一个外设组件之前,仔细阅读学习和测试相应的demo工程,在此基础上修改或者移植自己的SDK工程。

3.如何查看SDK外设组件(Component)的帮助文档?

①在工程的组件浏览窗口中选中某一外设组件,右键Doxygen Documentation,即可打开帮助文档([S32DS software development kit]),
路径如下:(file:///D:/S32DS/S32DS_for_PA/S32DS/software/S32_SDK_S32PA_RTM_3.0.0/doc/html_MPC5748G/index.html)。该帮助文档为存储在S32DS IDE安装目录下的网页文件。在该文件中,包含SDK各个外设组件的详细功能表述(Detailed Description),特性(Features),功能(Functionality)、初始化配置(Initialization)、注意事项(Important Notes)、demo代码(Example code)、数据结构(Data Structures)以及相应的API函数参数描述(Functions)等。
②在S32DS IDE的安装目录下,提供了相应SDK的帮助文档,路径如下。

4. S32DS-使用Flash from file下载S19或elf文件

····在项目联合开发中,供应商需要给客户提供可测试的程序,但又不希望客户看到应用工程的源代码和工程,这个时候就可以提供应用工程的编译结果S19文件或者二进制可执行文件-elf给客户,让他们使用编程工具/调试器下载完成功能验证。
····本文介绍如何生成S19和elf文件,并使用自带的Flash from file工具下载单独的S19或elf文件到目标MCU。
····在S32DS工程中,默认编译后都会在工程目录下生成与应用同名的.elf文件,但是不会生成S19文件:

5. 配置S32DS工程生成S19文件

工程上右键-Properties,

S32DS支持生成不同输出格式文件S19--Motorolas S-record,HEX--IntelHEX和bin文件--Raw binary

然后重新编译即可,默认生成的S19文件后缀为.srec,需要手动修改为.s19才能被编程工具识别。

使用Flash from file下载S19/elf文件

····这个略过去吧。
····因为我们一般使用的是别人给的elf格式的文件烧写到MCU中,具体步骤如下,只需修改框中的elf文件路径即可。

无论提供S19/HEX/BIN文件还是elf文件,客户都没有办法进行二次开发,因为无法获得源代码和工程。

6. S32DS链接文件和启动过程详解

······本段介绍了如何通过应用工程的链接文件(57xx_flash.ld)和启动文件(startup.s),实现用户自定义data和code段以及重定向代码/函数的自动拷贝实现方法和步骤。
······对于开发BootLoader来说,了解其链接文件和启动过程尤为关键
参考S32DS使用Tips–S32DS for Power V1.2 链接文件和启动过程详解.
文章太长,稍后再看。

7. S32DS应用程序开发实用技巧

参考S32DS使用tips-工欲善其事必先利其器.

(1)打开/导入本地工程

File-Import-General-Exiting Projects into Workspace。
注意:“Copy Projects into workspace”,这个选项可选可不选。不勾选,该工程在本地被打开,而不会拷贝到当前工作空间。

(2)S32DS IDE工程文件代码阅读

Search Text

在任意C源文件(.c和.h)中,选中任意字符(通常为变量、函数),右键Search Text-File/Project/Workspace,即可在前文件/当前工程/当前工作空间中搜索其使用情况。

快速定位变量Variable/函数Function/宏Marco定义

三种方法:
①选中后,右键Open Declaration;
②选中后按F3;
③按着Ctrl键鼠标点击变量/函数/宏。

定位/打开文件存储目录

在任意打开的文件中,右键Show In–System Explorer。

使用第三方编辑器打开工程文件

在工程浏览器窗口,选中某一文件,右键-Open with–System Editor。

文本文件内容比较

在工程浏览器窗口,按着Ctrl键,选择两个不同的文本文件(.c/.h/.s/.srec/.map/.txt等),然后右键-Compare with–Each other。

查看函数/变量调用层级

在C源文件中选中要查看的函数,右键-Open Call Hierarchy即可打开层级调用窗口。

(3)S32DS IDE工程程序下载与调试

正常debug与attach的区别

设置调试默认断点

······默认应用工程的调试目标配置main()函数为其默认断点,这样启动debug后,就回自动停在main()函数最开始处。如果需要调试MCU的启动过程(即从复位函数Reset_Handlder到跳转到main函数的过程),则需要改变调试目标的默认断点设置。方法如下:
输入想要设置的默认断点即可,比如设置为复位函数Reset_handler。默认配置为main函数,也可设置为其他任意elf文件中包含的函数或地址。

查看和保存存储器内容(Memory)

调试界面中,Windows–Show View–Memory即可打开存储器查看窗口。
点击Memory窗口右侧的导出图标,输入数据导出格式(Format)、开始地址、结束地址和文件名(含存储路径),即可。
存储器数导出功能在bootloader开发、参数标定以及bug定位分析中很有用。

查看和修改CPU内核通用寄存器

调试界面中,通过Registers窗口即可查看。

查看和修改外设寄存器(Embsys Registers)

调试界面中,EmbSys Registers窗口。

默认寄存器的值时不显示的,只有双击寄存器名或者外设寄存器组之后,调试器才会读取并显示寄存器/寄存器组的值

查看函数调用栈(Call Stack),分析程序调用过程

调试界面中,Debug窗口可查看当前程序运行的调用栈。

······比如上图中,从下而上就是当前函数的调用关系,main()函数地址0x1003208调用了函数syslnit(),在syslnit()中地址0x100319A又调用了函数CLOCK_SYS_SetConfiguration()…
······点击函数调用栈中的某一函数,即可快速跳转到其调用子函数的地址。

查看汇编代码和进行汇编指令级调试(Disassembly)

调试界面中,点击菜单栏快捷图标“i”,即可打开反汇编窗口Disassembly,查看当前程序的汇编代码并进行汇编指令级调试。

使用RTOS调试插件

S32DS IDE集成了FreeRTOS的调试插件,以方便查看RTOS的任务堆栈、优先级、系统堆(heap)和资源使用情况,从而分析RTOS运行情况。

8. 嵌入式MCU开发之条件断点的设置(以S32DS+U-Multink debugger为例)

在嵌入式MCU软件debug过程中,设置断点是定位bug最常见而有效的手段。

1)硬件断点和软件断点:

2)条件断点

条件断点是满足一定条件才出发的断点。可实现如下功能:
①测试一变量是否满足一个给定的值;
②让某个函数执行给定的次数;
③只在特定的线程或处理器上才触发。

······条件除了可以设置跟(全局/局部)变量相关外,还可以设置与硬件外设寄存器,特别是外设状态寄存器值的变化相关,从而帮助我们捕捉到硬件状态变化的瞬间。

设置正常断点

······调试界面中,在想要设置断点的C文件源代码最左行双击即可添加断点,再双击即可取消断点。在Breakpoints窗口中双击断点列表中的任一断点即可跳转到其所在的C代码行。

打开断点属性窗口并设置

······在Breakpoints窗口中,选中设置好的断点,右键选择“Breakpoint Properties…”打开断点属性设置窗口。Common–Type设置为Regular常规类型,然后输入条件即可。
比如当局部变量lCount=20触发断点,则输入:lCount==20

······此外,还可设置断点条件为MCU外设硬件寄存器发生变化时触发。

比如本例中,通过S32K144 EVB的两个用户按键中断翻转RGB LED等, 当按键SW2时会触发PORTC的IRQ中断,在其中断ISR中toggle 连接到PTD0的红色LED,所以设置main.c 119行的断点条件为:
PTD->PDOR&0x0001 == 0x0001

这样即可实现每按下两次SW2,将触发一次该断点,暂停调试。

······还可以通过逻辑关系运算符对同一个断点设置更多的组合条件。
比如:

PTD0输出高电平,而且全局变量gCount等于10时:
(PTD->PDOR&0x0001 == 0x0001)&&(gCount==10)PTD0输出高电平,或者全局变量gCount等于10时:
(PTD->PDOR&0x0001 == 0x0001)|(gCount==10)PTD0输出不为高电平,或者全局变量gCount等于10时:
!(PTD->PDOR&0x0001 == 0x0001)|(gCount==10)

S32DS IDE使用Tips--参考汽车电子expert成长之路相关推荐

  1. 【转载】【收藏】汽车电子expert成长之路公众号系列文章列表

    汽车电子expert成长之路公众号系列文章列表 2017-07-19 胡恩伟 汽车电子expert成长之路 本文列出本人担任Freescale/NXP汽车电子FAE期间工作中想跟大家分享的一些汽车电子 ...

  2. 【转载】CodeWarrior IDE使用tips之prm链接文件详解(自定义存储器分区以及自定义RAM数据初始化与在RAM中运行函数)...

    CodeWarrior IDE使用tips之prm链接文件详解(自定义存储器分区以及自定义RAM数据初始化与在RAM中运行函数) 2017-08-19 胡恩伟 汽车电子expert成长之路 内容提要 ...

  3. J-Link配合S32DS IDE使用时遇到的问题总结

    J-Link配合S32DS IDE使用时遇到的问题 IDE:S32DS version 3.4 MCU:S32K342 Debugger: J-Link 之前使用的是PE Multlink Unive ...

  4. 架构师成长之路:如何提升技术掌控力?

    架构师成长之路:如何提升技术掌控力? 简介: 在很多人眼里,架构师就犹如古代的将军一般,既能运筹帷幄决胜千里,又能独闯敌营取人首级,是所有士兵们崇拜的偶像...好了,其实我只是想说:能成为一名优秀的架 ...

  5. 如何成为一名架构师,架构师成长之路

    技术人人都是xx 父文章 人人都是面试_个人渣记录仅为自己搜索用的博客-CSDN博客 我的成长之路_个人渣记录仅为自己搜索用的博客-CSDN博客 相关文章 架构师好书推荐_个人渣记录仅为自己搜索用的博 ...

  6. 高通Camera 软件工程师的成长之路

    本文以个人的工作学习经历来描述一 Camera 软件工程师的披荆斩棘之路,时间从大学开始,以至任职于高通 Camera 软件工程师结束,杂以本人学习过程当中的一系列学习笔记和博客文章,绝对是干货满满, ...

  7. CSDN付费专栏写作感悟及成长之路、兼论学习会员模式的创作者协同效应

    CSDN付费专栏写作感悟及成长之路.兼论学习会员模式的创作者协同效应 目录 CSDN付费专栏写作感悟及成长之路.兼论学习会员模式的创作者协同效应 #首先.感恩. #其次,责任. #再次,初心与收益. ...

  8. redis成长之路——(一)

    为什么使用redis Redis适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed的功能,跟传统意义上的持久化有比较大的差别,那么可能大家就 ...

  9. 从程序员到架构师的最佳技术成长之路

    我把程序员到架构师的技术成长之路分为几个典型的阶段:工程师 - 高级工程师 - 技术专家 - 初级架构师 - 中级架构师 - 高级架构师,总的成长原则是每个阶段都需要"积累经验.拓宽视野.深 ...

最新文章

  1. nginx配置websocket负载均衡
  2. 为什么我的文章没有被推荐?
  3. 一些奇葩的元素节点object,video
  4. 树的存储结构-孩子兄弟表示法
  5. 在html中样式表的三种类型,css样式有哪几种类型?
  6. java学习(178):终篇?静态代理?动态代理?
  7. f3arra1n3.4.1版本_Sysmon v11.1新版本功能测试报告
  8. 兄弟3150cdn更换硒鼓_耗材知多点:一体式硒鼓及分离式硒鼓
  9. PyTorch入门-深度学习回顾和PyTorch简介
  10. zookeeper专题:使用zookeeper客户端实现动态监听节点并获取数据
  11. HDU 1079 Calendar Game 博弈
  12. Tomcat的实现原理
  13. Qt Designer位置
  14. VC中画虚线矩形的方法
  15. python写excel,请大表哥喝杯茶
  16. linux-命令简写——归原
  17. css+html 嵌套表格做简单网页
  18. pta中c语言编程问题答案,pta题库答案_浙大远程教育2015秋 程序设计基础C 求PTA实验代码题库liujiahai-C答案_淘题吧...
  19. Blog:全民媒体时代的来临?
  20. 树莓派(USB麦克风和麦克风阵列) 录音和播放

热门文章

  1. 时序分析:异步复位的removal time和recovery time
  2. Python实现程序自动发送短信
  3. sourceinsight4.0序列号
  4. 【Axure教程】橡皮擦的擦除效果——刮奖原型
  5. numpy100问1-50问代码
  6. iconmoon字体图标的使用方式
  7. 英文论文怎么做实验?
  8. Spring面试题(2022)
  9. 关于笔记本插网线识别不出来的解决办法
  10. MySQL之InnoDB的两个配置参数INNODB_FAST_SHUTDOWN和INNODB_FORCE_RECOVERY,用不好可能导致线上万数据丢失