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

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

3天内不再提示

MCU程序的调试手段

硬件攻城狮 来源:最后一个bug 作者:最后一个bug 2022-10-19 14:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

调试参数在嵌入式开发中再常见不过了,比如滤波系数、PID参数,以及一些简单的模式参数切换、写入和读取等等。

初做项目或者一些简单粗暴的朋友们,程序里面一些参数直接硬编码写死,而想进行适当修改的时候就只能通过源代码重新编译,再次烧录。

一次性修改能够达到满意的效果那就不需要调试了,不然反复烧录个10几次应该是常事;同样如果MCU程序不太大可能花不了太多的时间,否则这样的调参方式效率实在太低了。

总结下来,在进行MCU程序的调试手段主要有两种 :

仿真器调试 和 终端调试

在项目的初期,仿真器调试作为主要的调试手段;而中后期主要是终端调试,下面聊聊这两个重要的调试内容 :

fdb6789c-4f75-11ed-a3b6-dac502259ad0.png

1

仿真器调试

仿真器调试是进行MCU开发前期必备的调试方法,常用的工具有Jlink,XDS100V3等等,这些开发工具都会匹配相应的IDE集成开发环境进行使用,不仅仅能够控制程序的运行过程(单步调试、断点等)还能够查看RAM寄存器和Flash中的各种数据,帮助开发工程师们快速的定位问题,排除bug。

比如,仿真器普遍采用的JTAG接口,其遵循的是JTAG协议,既然是通信协议那就不要太恐惧,了解通信协议和通信过程即可。

JTAG早期是用来测试芯片的,现在这项功能也是具备的,比如接上仿真工具就可以知道当前芯片是否可以烧录,指示灯也会变换颜色等;还可以通过JTAG接口访问芯片内部寄存器、挂在CPU总线上的相关设备等,最终获得这些数据展现在IDE环境中以便开发者定位芯片的问题。

fdd9e002-4f75-11ed-a3b6-dac502259ad0.png

图来源于 JTAG-Tutorial文档,仅供学习参考

仿真会影响CPU运行吗?

JTAG通过一种叫边界扫描的技术,仿真过程中其内部均有独立的寄存器等机构进行交互,正常运行过程中是不会影响到CPU的正常工作的,也就是说其仿真部分对于CPU是透明的。

2

终端调试

“终端”说白了就是一种人机交互接口,可以看成信息的输入与输出,一些朋友会说:我只用仿真器调试,不想用终端;仿真器调试又何尝不是一种终端的表现形式呢?只是说终端的相应功能已经嵌入到了你的集成开发环境IDE中,RAM数据和程序运行指针的修改都是用户数据的输入,而RAM数据的显示等等都是数据的输出。

但是,对于我们平时调试的需求,并不需要像仿真器调试这么强大,主要是一些关键数据的显示和一些命令的发送,一般的MCU项目都会有预留一定的通信接口,所以直接定义一套统一的调试通信协议并开发一些调试上位机那将会对MCU的调试效率大大提高,而且也方便以后移植到其他项目中使用。

当然,如果项目中原本就带有触摸屏或者按键+屏,也可以直接在这套终端上开发一些调试界面和功能,这样就不需要太依赖笔记本电脑什么的,至于调试功能是否灵活就看技术功底了。

很多朋友对开发上位机有点恐惧,人原本就对陌生的事物充满着恐惧!进行调试上位机开发其实只要具备一些基础的应用程序开发知识就能够在较快的时间里面掌握,当然如果你想把界面、特效、功能等等做得更加的秀,那就得有比较专业的知识和经验了!

好吧,你不想沾一点点应用程序的边,或者暂时没有太多的精力研究这一块,那我推荐你用研究一下终端,比如前面跟大家推荐的一款全能终端:

fdec0b88-4f75-11ed-a3b6-dac502259ad0.png

fdfe5a22-4f75-11ed-a3b6-dac502259ad0.png

很多朋友把这种类型的终端与串口调试助手混为一谈,这是不对的,终端功能一般比串口调试助手强点,像Linux这样命令行系统,几乎一切的操作均可以在终端上完成。

比如,在终端中让输出的信息带有颜色,从而可把打印的日志信息进行分级输出,以便信息的筛选;还能够使用转义字符来实现动态显示、排版等功能,比如类似于命令行“Top”的实现效果。

最后,给大家推荐一个强大的嵌入式shell -- letter shell 3.0

letter shell 3.0是一个C语言编写的,可以嵌入在程序中的嵌入式shell,主要面向嵌入式设备,以C语言函数为运行单位,可以通过命令行调用,运行程序中的函数。

审核编辑 :李倩

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

    关注

    147

    文章

    18604

    浏览量

    386855
  • 寄存器
    +关注

    关注

    31

    文章

    5588

    浏览量

    129051
  • C语言
    +关注

    关注

    183

    文章

    7642

    浏览量

    144599

原文标题:调试MCU上位机不会写?可以玩下终端!

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式开发调试神器全解析:JTAG、SWD、串口打印

    写嵌入式代码只是第一步,调试才是决定项目能不能顺利推进的关键。MCU不跑?外设不响应?代码跑飞?没有合适的调试手段,排查问题就像摸黑找路。本文带你搞懂三大调试利器——JTAG、SWD、
    的头像 发表于 11-24 19:04 204次阅读
    嵌入式开发<b class='flag-5'>调试</b>神器全解析:JTAG、SWD、串口打印

    芯源的MCU都支持哪些下载器?Jlink等支持芯源的MCU下载调试嘛?

    芯源的MCU都支持哪些下载器?Jlink等支持芯源的MCU下载调试嘛?
    发表于 11-21 06:49

    闪灯程序的构建与调试

    在上一篇文章中我们成功了搭建了环境,那么接下来就用闪灯程序来认识一下编译和调试工具吧!
    的头像 发表于 11-05 14:52 4009次阅读
    闪灯<b class='flag-5'>程序</b>的构建与<b class='flag-5'>调试</b>

    ‌STMicroelectronics AEK-MCU-SPC5LNK 编程调试器技术解析

    STMicroelectronics AEK-MCU-SPC5LNK加密狗开发用作SPC58汽车微控制器的调试器/编程器加密狗。AEK-MCU-SPC5LNK结合了无源USB转JTAG调试
    的头像 发表于 10-21 11:51 254次阅读
    ‌STMicroelectronics AEK-<b class='flag-5'>MCU</b>-SPC5LNK 编程<b class='flag-5'>调试</b>器技术解析

    请问Finsh可以支持裸机?

    我想在我们裸机的里面加入finsh的的功能,是否可以支持呢? 我们的系统为消息事件驱动的伪系统,比较稳定,但是缺少一些调试手段
    发表于 09-28 14:46

    无法调试程序,显示nuM453 mcu错误怎么解决?

    我正在处理 keil ide,突然我无法调试代码,它显示错误 我也卸载了 ide 和驱动程序包,但出现了同样的问题,如果有人遇到这样的问题,请帮助我。
    发表于 08-15 07:57

    AS32X601系列MCU硬件最小系统设计与调试方案探析

    在嵌入式系统领域,MCU(微控制单元)作为核心部件,其硬件最小系统设计的合理性与调试的有效性直接决定了整个系统的稳定性与可靠性。凭借其卓越的性能和丰富的功能,广泛应用于各类电子设备中。本文以国科安芯
    的头像 发表于 07-22 13:46 406次阅读

    RT-Trace初体验一之使用Trace功能调试Cortex-M4 | 技术集结

    随着嵌入式系统规模和复杂度不断提升,传统的调试手段已难以满足对系统运行状态的精细化分析需求。为提升开发效率、优化系统性能,RT-Thread推出了一款全新调试工具——RT-Trace。该工具
    的头像 发表于 07-06 10:03 1142次阅读
    RT-Trace初体验一之使用Trace功能<b class='flag-5'>调试</b>Cortex-M4 | 技术集结

    如何调试nRF5 SDK

    本文将讲述Nordic nRF5 SDK的主要调试手段,以帮助大家快速定位问题,并解决问题。一般来说,你可以通过打log方式,IDE的debug模式,SDK自带的app_error_check函数
    的头像 发表于 06-24 08:59 510次阅读
    如何<b class='flag-5'>调试</b>nRF5 SDK

    #工作原理大揭秘 #单片机 #电路原理 #MCU#mcu程序开发

    mcu
    宇凡微电子
    发布于 :2025年06月19日 19:02:28

    硬件调试:JLink 驱动配置与调试技巧

    摘要: 本文深入探讨了 JLink 调试器在嵌入式系统硬件调试中的应用,详细阐述了 JLink 驱动配置的方法以及硬件调试技巧。本文以国科安芯的AS32系列MCU芯片为例,通过分析 J
    的头像 发表于 06-12 23:20 1267次阅读
    硬件<b class='flag-5'>调试</b>:JLink 驱动配置与<b class='flag-5'>调试</b>技巧

    SEGGER J-Link调试器支持Allegro微控制器

    SEGGER领先的J-Link调试器现在可用于Allegro MicroSystems MCU程序下载和在线调试。有了J-Link的支持,结合Ozone多平台
    的头像 发表于 06-10 09:29 892次阅读

    RISC-V JTAG:开启MCU 芯片调试之旅

    基于 RISC-V 架构的 MCU 芯片JTAG 调试过程及操作,为后续类似调试工作提供详实参考的依据,助力研发团队高效推进芯片研发进程。 RISC-V 架构以其开源、模块化等优势在 MCU
    的头像 发表于 05-07 17:57 2341次阅读
    RISC-V JTAG:开启<b class='flag-5'>MCU</b> 芯片<b class='flag-5'>调试</b>之旅

    SEW_DPV1调试手

    电子发烧友网站提供《SEW_DPV1调试手册.pdf》资料免费下载
    发表于 04-01 16:29 0次下载

    使用Ozone调试基于nRF9160 Zephyr应用程序

    Ozone是SEGGER免费的嵌入式软件调试器。它是一个强大的工具,可以让你深入了解嵌入式系统中发生的事情。它在调试nRF9160 Zephyr应用程序时特别有用。整理多个线程和多映像构建可能很困难,但这就是你想要的工具。
    的头像 发表于 02-25 17:07 1424次阅读
    使用Ozone<b class='flag-5'>调试</b>基于nRF9160 Zephyr应用<b class='flag-5'>程序</b>