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

2023-11-08

目录


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

一、 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

S32DS IDE使用Tips--参考汽车电子expert成长之路 的相关文章

  • C51简介及Keil的使用

    前言 此文档主要是针对有一定C C 编程基础 并打算用Keil从事C51开发的开发人员 C51涉及的知识比较多 但是入门基本的开发 还是容易的 C51简介 1 C51概念 C51继承于C语言 主要运行于51内核的单片机平台 单片机 单片微型
  • 【系统移植】开发板的启动过程(认识uboot)

    在系统移植之前 需要先了解开发板启动的大致流程 了解了大致流程后 才知道开发板启动需要哪些东西 了解开发板启动的时候 一定会遇到闻所未闻的东西 所以我们了解的顺序是 了解开发板启动时涉及到的部件 了解启动过程中涉及到的文件 uboot 内核
  • 继电器、并联的二极管和驱动三极管选型实战演练

    继电器选型原则 继电器的选用原则参见下表 在表中 必须确定 栏中有 号的项目被确定之后 就可选定一款继电器 如果有进一步的要求 需要进一步考虑 参考 栏中有 号的相应项目 下面对表格中的所有参数进行详细说明 触点 1触点负载 确定继电器所能
  • 初学树莓派——(六)树莓派安装OpenCV及USB摄像头配置

    目录 1 安装OpenCV 1 1前言 1 2换源及源内容更新 1 3安装依赖 1 4下载whl包 1 5安装OpenCV 1 6检查安装 2 USB摄像头配置 同时检查OpenCV安装情况 2 1前言 2 2Python调用cv2库来检查
  • GD32F310 (一) LED 点灯

    作者 小飞虫科技 淘宝 首页 小虫飞科技 淘宝网 taobao com 开发板 GD32F3X0系列 使用引脚为 PB4 初始化LED void LED Init void enable the led clock rcu periph c
  • 嵌入式学习:stm32学习路线推荐之思维导图

    从9月1日开始学习STM32后 对于STM32的一些个人总结 1 对于STM32和51的区别 对于 STM32来说 基本的大概都和51单片的内容相似 但是由于STM的引脚和寄存器的数量较多 所以需要一个更加完善的管理机制 导致了 时钟 的产
  • FPGA硬件工程师Verilog面试题(基础篇二)

    作者简介 大家好我是 嵌入式基地 是一名嵌入式工程师 希望一起努力 一起进步 个人主页 嵌入式基地 系列专栏 FPGA Verilog 习题专栏 微信公众号 嵌入式基地 FPGA硬件工程师Verilog面试题 二 习题一 多功能数据处理器
  • GPIO引脚的模式设置:开漏、推挽、拉高、拉低、中断输入、串行通信、模拟输入输出、容错输入、PWM输出。过零检测介绍。

    开漏输出 软件 将GPIO口设置为开漏输出模式 可以实现开漏输出控制方式 输出电平只能被拉低 而不能被拉高 在使用开漏输出时 需要外部接上一个上拉电阻 将输出电平拉高到高电平 开漏输出常用于驱动I2C总线 LED灯等场景中 硬件设置为开漏输
  • 06 CubeMX HAL库stm32作从机 硬件I2C中断接收无BUG程序

    文章目录 CubeMX HAL库stm32作从机 硬件I2C中断接收无BUG程序 一 设置烧录模式 二 使用外部晶振 三 开启IIC中断 四 设置IIC参数 五 配置外部时钟 六 设置工程信息 七 代码生成项配置 八 在Keil中打开工程
  • 用于Arduino的S4A图形化编程图文详解

    文章结构 1 说明 2 实操 2 1 S4A安装 2 2 Arduino IDE 安装 2 3 下载S4A的固件 2 4 连接 2 5 刷入S4A固件 2 6 打开S4A并测试 3 附录 Uno引脚图 1 说明 作者还拥有个人公众号 会写一
  • U-Boot启动过程完全分析

    1 1 U Boot工作过程 U Boot启动内核的过程可以分为两个阶段 两个阶段的功能如下 1 第一阶段的功能 硬件设备初始化 加载U Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 2 第二阶段的功能 初始化本阶段使
  • 通过External Tools在STM32CubeIDE下使用DAP-LINK

    目录 一 文章背景 二 准备工作 2 1 Stm32CubeIDE 2 2 DAP LINK 2 3 STM32目标板 三 配置过程 3 1 连接目标板 3 2 配置仿真器 3 3 更改调试设置为远程调试 3 4 新建OpenOcd扩展工具
  • STM32 FLASH操作

    STM32 的闪存模块由 主存储器 信息块和闪存存储器接口寄存器等 3 部分组成 主存储器 该部分用来存放代码和数据常数 如 const 类型的数据 对于大容量产品 其被划分为 256 页 每页 2K 字节 注意 小容量和中容量产品则每页只
  • 步进电机基础(5.6)-步进电机的驱动与控制-闭环控制

    步进电机基础 5 6 步进电机的驱动与控制 闭环控制 前言 基本信息 前言说明 5 6 闭环控制 前言 基本信息 名称 描述说明 教材名称 步进电机应用技术 作者 坂本正文 译者 王自强 前言说明 根据我读的 步进电机应用技术 这本书 进行
  • 毕业设计 STM32人体红外测温枪温度采集系统 - 单片机

    文章目录 1 前言 2 主要器件 3 实现效果 4 设计原理 MLX90614 红外温度传感器 5 部分实现代码 6 最后 1 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求
  • STM32F103C8t6程序下载

    一 下载程序之前了解的内容 STM32英文手册下载 https www stmcu org cn document list index category 158 STM32的芯片上有两个管脚BOOT0和BOOT1 这两个管脚在芯片复位时的
  • 属性,服务,事件

    属性 即设备支持的可读和 或可设置的参数功能 以一个灯为例 灯的开关就可以定义为一个属性 用户可以读取该属性的当前数值来得知灯的开关状态 也可以通过对该属性进行设置来打开或者关闭这个灯 服务 如果设备的某个功能只能设置 不能获取 那么可以将
  • Oracle块损坏处理(MOS)

    处理 Oracle 块损坏 文档 ID 1526911 1 适用于 Oracle Database Enterprise Edition 版本 7 0 16 0 到 11 2 0 2 0 发行版 7 0 到 11 2 本文档所含信息适用于所
  • 计算机基础:一颗芯片是怎样诞生的?

    一颗芯片是怎样诞生的 芯片属于半导体 半导体是介于导体和绝缘体之间的一类物质 元素周期表中硅 锗 硒 硼的单质都属于半导体 这些单质通过掺杂其他元素生成的一些化合物 也属于半导体的范畴 这些化合物在常温下可激发载流子的能力大增 导电能力大大
  • Linux值得学习吗?打工人利用业务时间学习Linux需要多长时间?

    nbsp Linux值得学习吗 打工人利用业务时间学习Linux需要多长时间 在开始前我有一些资料 是我根据自己从业十年经验 熬夜搞了几个通宵 精心整理了一份 Linux的资料从专业入门到高级教程 工具包 点个关注 全部无偿共享给大家 在评

随机推荐