0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

恩智浦分享Zephyr调试技巧

恩智浦MCU加油站 来源:恩智浦MCU加油站 2025-03-13 09:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前面几期中,我们着重给大家介绍了如何搭建Zephyr开发环境,以及如何添加自己的应用代码。今天让我们开始一个新的篇章:Zephyr调试技巧以及介绍Ozone进行Zephyr的调试分享。

Zephyr调试技巧

printk调试法:通过使用prink来打印一些辅助调试信息,操作简单,适合于基础的profiling,但是可能会导致时序问题,尤其是针对在中断上下文的处理中。还有针对于logging系统,zephyr提供了不同的配置选项,用户可以根据需要进行配置。

https://docs.zephyrproject.org/la‍test/services/logging/index.html

e89810c2-ffa6-11ef-9310-92fbcf53809c.png

“IO” Toggle: 通过调用Zephyr的GPIO API,通过观察引脚的翻转情况进行调试

源码级Debug:尽管Zephyr本身没有调试IDE的支持,但由于Zephyr构建系统最终会生成elf格式的文件,我们就可以现有调试工具进行调试

运行虚拟环境:由于Zephyr对POSIX API的支持,使得Zephyr源码其实可以运行在例如PC端,那么就可以让我们直接在PC端进行应用的开发,无需下载到目标板上。

尝试关闭优化:由于编译器优化,往往源代码顺序会被重新排序,导致单步调试的困难,我们可以通过关闭优化来解决:

CONFIG_NO_OPTIMIZATIONS=y

不过,有时我们会发现关闭优化后,某些能够运行的程序会突然出现hardfault。最大问题可能是由于关闭了优化选项,导致某些代码的栈使用量增加触发栈溢出异常。一般来说,我们可以通过增加系统栈或是中断栈的大小来解决:

CONFIG_MAIN_STACK_SIZE=8192
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=8192
CONFIG_ISR_STACK_SIZE=2048

通过打印ram或是rom占用情况对代码进行分析

west build -t ram_report
west build -t rom_report

源码调试工具推荐:

a)原生支持:

e8aec8da-ffa6-11ef-9310-92fbcf53809c.png

b) MCUXPresso VS Code插件:

https://github.com/nxp-mcuxpresso/vscode-for-mcux/wiki/Debug

e8c8eef4-ffa6-11ef-9310-92fbcf53809c.png

c) Cortex-Debug插件:

https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug

e8f242d6-ffa6-11ef-9310-92fbcf53809c.png

d) 其他,例如Segger Ozone等

使用Ozone进行Zephyr调试

Ozone是个啥?先来个简短的自我介绍吧:

Ozone是一款由SEGGER公司开发的专业嵌入式应用程序调试和性能分析工具,Ozone是一个独立的图形调试器,支持多种单片机架构,包括Arm Cortex-M、Renesas RX、NXP LPC等。Ozone可以与任何为其输出生成Elf/Dwarf调试信息的工具链一起使用,例如GCC、Clang、ARM、IAR等编译器。

Ozone提供了丰富的调试功能,如程序下载、单步执行、变量更新窗口、汇编指令调试、芯片寄存器查看、断点设置等。

1. 源码级调试:Ozone支持C/C++源码级的调试和汇编指令的调试,用户可以在调试过程中直接查看和编辑源代码。

2. 多文件格式支持:Ozone支持ELF或兼容文件(*.elf, .out, .axf)、Motorola S-record文件(.srec, .mot)、Intel hex文件(.hex)以及二进制数据文件(.bin)。

3. 实时终端和Flash Breakpoints:Ozone可以直接使用J-Link内置的实时终端和无限Flash断点功能。

4. 脚本化项目文件:Ozone提供脚本化的项目文件,允许用户通过脚本自动配置和执行调试任务。

5. 自定义界面:Ozone的用户界面完全可定制,用户可以根据需要调整布局和功能。

6. 系统变量编辑器:Ozone提供了一个系统变量编辑器,方便用户修改和调试系统级别的变量。

7. 高级内存窗口:Ozone的内存窗口支持保存、加载和填充操作,用户可以方便地查看和修改内存内容。

开发环境:

Ozone适用于多种开发环境,可以在Windows、Linux、macOS等平台上运行。

集成工具:Ozone通常与J-Link调试器配合使用,但也可以与其他支持SWD和JTAG调试的硬件调试器一起使用。

总的来说,Ozone是一款功能强大且灵活的嵌入式应用程序调试和性能分析工具,适用于各种复杂的调试场景。尽管在某些方面存在一些不足,但其丰富的功能和高度的可定制性使其成为嵌入式开发者的重要工具之一。

接下来让我们看看怎么新建一个Ozone调试工程,并添加我们的Zephyr.elf,详见下面小视频:

为了能够更好的支持Zephyr OS的调试,我们还需要在工程配置文件中添加Zephyr调试插件,打开.jdebug尾缀的Ozone工程文件,添加如下内容到OnProjectLoad函数中:Project.SetOSPlugin("ZephyrPlugin");

至此,我们就完成了Ozone的全部配置工作,相信大家有了Ozone之后,都能得心应手!

NXP

恩智浦致力于打造安全的连接和基础设施解决方案,为智慧生活保驾护航。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 恩智浦
    +关注

    关注

    14

    文章

    6051

    浏览量

    134891
  • Zephyr
    +关注

    关注

    0

    文章

    47

    浏览量

    6514

原文标题:Zephyr调试,你需要掌握这些技巧!

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    解读Zephyr log系统的使用 Zephyr的shell和log功能介绍

    之前 我们从 0 开始新建了一个简单的 Zephyr 应用- 从0开始打造属于自己的HelloWorld ,本期就 带着大家熟悉一下 Zephyr 的 shell 和 log 系统。 首先给大家介绍
    的头像 发表于 02-27 09:19 1714次阅读
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>解读<b class='flag-5'>Zephyr</b> log系统的使用 <b class='flag-5'>Zephyr</b>的shell和log功能介绍

    使用Tracealyzer调试Zephyr中的优先级反转

    Percepio Tracealyzer已经在600多个支持Zephyr的开发板上完成了验证,可以帮助开发人员改进Zephyr应用的调试和性能分析。
    的头像 发表于 04-21 11:31 989次阅读
    使用Tracealyzer<b class='flag-5'>调试</b><b class='flag-5'>Zephyr</b>中的优先级反转

    《电子发烧友电子设计周报》聚焦硬科技领域核心价值 第3期:2025.03.10--2025.03.14

    2、RK3588开发板技术分享 TF卡烧写大于4G容量镜像 3、Zephyr调试技巧 开源项目与实战干货 : 1、使用OpenVINO运行DeepSeek-R1蒸馏模型 2、N
    发表于 03-14 18:00

    2018未来科技峰会

    "未来科技峰会”是规模最大的高端行业峰会,旨在通过精彩座谈、技术研讨、最新科技和解决方案的展示引领业界通过技术创新为世界带来改变!
    发表于 09-10 13:37

    MIMXRT595-EVK是否可以在SRAM中运行hello_world zephyr示例?

    专家,我知道 MIMXRT1xxx 能够在 ITCM 中运行 hello_world 但是 MIMXRT595 中没有 ITCM 只有 SRAM。MIMXRT595-EVK是否可以在SRAM中运行hello_world zeph
    发表于 03-30 06:38

    宣布大中华区第二届杯创新设计大赛复赛选手

    宣布大中华区第二届杯创新设计大赛复赛选手 30名选手(队伍)将获助资助,将创
    发表于 09-25 08:21 808次阅读

    发布 LPCXpresso 6

    10月9日讯——半导体 (NXP Semiconductors N.V.) (纳斯达克代码:NXPI)近日宣布推出LPCXpresso 6,它基于 Eclipse,是颇受欢迎的
    发表于 10-09 10:51 1214次阅读

    助推本土COG创新设计

    参赛方案后, 10名选手最终脱颖而出,其中包括朱正晶设计的“基于PCA8538的直流电机PID速度调试系统”、高广设计的“基于
    发表于 12-17 11:39 1396次阅读

    高通以470亿美元总额收购_有何实力?

    近日消息,激进投资商艾略特管理公司(Elliott Management Corp)披露占有芯片制造商半导体公司(NXP Semiconductors NV)6%的股份,暗示将以更高价格将
    的头像 发表于 06-16 11:42 3508次阅读

    无线MCU产品及方案介绍

    无线MCU产品及方案介绍
    发表于 10-16 15:42 9次下载
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>无线MCU产品及方案介绍

    OpenHarmony生态论坛:在OpenHarmony的机遇与挑战

    OpenHarmony生态论坛:在OpenHarmony的机遇与挑战,关于行业的探索分享
    的头像 发表于 04-25 16:36 1847次阅读
    OpenHarmony生态论坛:<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>在OpenHarmony的机遇与挑战

    官网

    官网 大唐是一家中国汽车半导体公司,拥有深厚的股东背景和坚实的平台。我们紧跟国家战略,聚焦新能源汽车和储能,开发电池管理芯片,为实现核心器件国产化尽一份绵薄之力。 关于
    发表于 03-27 14:25 1537次阅读

    半导体公司

    半导体公司 半导体创立于2006年,其前身为荷兰飞利浦公司于1953年成立的半导体事业部,总部位于荷兰埃因霍温。 [1-2]
    发表于 03-27 14:32 1741次阅读

    智能家电创新方案一文看尽 智能家电技术日给你答案

      科技赋能,将会让我们日常的家居生活变得多智能?让我们一起到 “智能家电技术日” 中找答案—— 在日前举办的“智能家电技术日”活动中,
    的头像 发表于 03-28 11:46 6380次阅读
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>智能家电创新方案一文看尽  <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>智能家电技术日给你答案

    Zephyr赋能安全可靠的嵌入式开发

    日前,联手Zephyr实时操作系统成功举办了Zephyr Project Meetup上海站的活动,6场主题演讲以及深入的现场技术交流,吸引了数十位来自全国各地的开发者的参与。
    的头像 发表于 04-21 10:26 1025次阅读