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

目录

  • 一、 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

S32DS IDE使用Tips--参考汽车电子expert成长之路_第1张图片
S32 DS IDE for Arm®:面向S32K1、S32V、KEA和MAC57D54H器件的集成开发环境(IDE);
S32 DS IDE for Power Architecture®:面向S32R、MPC57xx和MPC56xx器件的集成开发环境(IDE)。

NXP S32DS IDE中提供的SDK软件架构如下:
S32DS IDE使用Tips--参考汽车电子expert成长之路_第2张图片

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接口
S32DS IDE使用Tips--参考汽车电子expert成长之路_第3张图片
如何配置和使能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语言库、默认调试器等。
S32DS IDE使用Tips--参考汽车电子expert成长之路_第4张图片
工程创建成功后,在Project Explorer窗口中,可以看到一个ProcessorExpert.pe的文件,即为SDK的处理器专家配置信息储存文件。
S32DS IDE使用Tips--参考汽车电子expert成长之路_第5张图片

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

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

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的帮助文档,路径如下。
S32DS IDE使用Tips--参考汽车电子expert成长之路_第7张图片

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

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

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

工程上右键-Properties,
S32DS IDE使用Tips--参考汽车电子expert成长之路_第9张图片
S32DS IDE使用Tips--参考汽车电子expert成长之路_第10张图片

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

然后重新编译即可,默认生成的S19文件后缀为.srec,需要手动修改为.s19才能被编程工具识别。
S32DS IDE使用Tips--参考汽车电子expert成长之路_第11张图片

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

····这个略过去吧。
····因为我们一般使用的是别人给的elf格式的文件烧写到MCU中,具体步骤如下,只需修改框中的elf文件路径即可。
S32DS IDE使用Tips--参考汽车电子expert成长之路_第12张图片

无论提供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文件中包含的函数或地址。
S32DS IDE使用Tips--参考汽车电子expert成长之路_第13张图片

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

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

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

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

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

调试界面中,EmbSys Registers窗口。

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

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

调试界面中,Debug窗口可查看当前程序运行的调用栈。
S32DS IDE使用Tips--参考汽车电子expert成长之路_第14张图片
······比如上图中,从下而上就是当前函数的调用关系,main()函数地址0x1003208调用了函数syslnit(),在syslnit()中地址0x100319A又调用了函数CLOCK_SYS_SetConfiguration()…
······点击函数调用栈中的某一函数,即可快速跳转到其调用子函数的地址。

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

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

使用RTOS调试插件

S32DS IDE集成了FreeRTOS的调试插件,以方便查看RTOS的任务堆栈、优先级、系统堆(heap)和资源使用情况,从而分析RTOS运行情况。
S32DS IDE使用Tips--参考汽车电子expert成长之路_第15张图片

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

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

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

S32DS IDE使用Tips--参考汽车电子expert成长之路_第16张图片

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,嵌入式)