普通嵌入式软件的调试经验及一些有用的工具
创始人
2025-10-31 15:06:05
0次

这次我将分享一些调试嵌入式软件的经验和一些有用的工具。

需要说明的是,这不是一篇大师教你如何成为大师的文章,因为我还不是大四的; 是一个普通嵌入式软件工程师从无经验到有一点经验的调试总结,非常基础。

我们常说软件要分三部分写,七部分协调写。 在实际开发中,确实是这样的。 工作了好几年了,对此的感触也越来越深。 每当需求出来时,我都能很快完成代码。 然而,调试需要花费大量时间。

这里需要明确的是,调试的目的不仅仅是为了调整整个功能需求。 功能调优是最基本的需求,还需要优化、逻辑完善、异常处理等。 因此,需要很长时间。

我记得我毕业时参与的第一个项目。 该项目的硬件架构比普通产品更加复杂:

上位机软件编程_上位机程序怎么编_上位机软件调试程序

我负责的部分是D芯片的软件。 D芯片的作用与产品功能类似。 当时数据通过A发送,经过B、C,再到D,产品功能无法正常运行。 我当时的第一反应是我负责的D芯片逻辑可能有问题。

A、B、C均由经验相对丰富的工程师负责,C的负责人仍为总监级别。 你也觉得问题应该出在我负责的D芯片的代码上,因为我是一个刚毕业的新人。 我认为这个问题更有可能是我的问题。

他们没有检查这是否是他们的问题。 他们每天晚上都来看看我是否发现了问题。 我花了几天时间才终于找到它。 C芯片发给我的数据有问题~

由于当时缺乏调试经验,无法快速定位问题。 如果是今天上位机软件调试程序,这些问题很快就能查出来。 感谢迄今为止积累的一些经验:

上位机程序怎么编_上位机软件调试程序_上位机软件编程

调试经验

在正常的开发和调试过程中,可能会出现两种情况:

1. 自主开发

上位机软件调试程序_上位机程序怎么编_上位机软件编程

对于一些小项目,如果整个项目都是我们自己开发的话,调试起来会更容易。 既然是我们自己开发的,我们就会更加熟悉。

我的习惯是模块化开发。 每个模块开发完成后,我首先想办法测试该模块。 如果没有问题的话,就集成到项目中去。 在模块的最初开发和测试期间,代码可以是随意的。 调整后,可以重新组织代码并集成到项目中。

自测方法:有些代码直接对应功能,可以直接测试看功能是否正常; 可以通过日志复制一些代码,看看是否正常; 有的可能需要在线调试看看是否符合预期; 有些需要数据输入。 是的,你可以自己模拟一些数据等等。

2. 协同开发

上位机软件编程_上位机程序怎么编_上位机软件调试程序

协同开发可能会比较麻烦。 特别是有时甚至需要跨部门调试。

我的习惯是:先开发并自测自己的模块; 然后模拟对方,简单自测一​​下通讯情况。

自测自己模块的方法与之前独立开发时相同。 当我们模拟对方进行测试时,我们需要考虑是否需要更多的时间。 如果太花时间,算了,等到联调吧。

如果花的时间少,可以自测通讯。 可能有三种情况:

其实协同开发并不需要沟通的自测,而是取决于个人的习惯。

我模拟了自测通信,以便对自己模块的通信有一定程度的控制。 当联调出现问题时,我可以快速突出对方的问题。 其实这并不是为了推责,而是为了更好地分析解决联调问题。

比如我最近的项目中,设备是连接到手机APP的。 APP局域网内的网络分配功能和设备通讯功能。 我负责设备端,充当服务端; 另一方充当客户。

在和对方联合调试之前,我已经写了一个客户端运行在PC或者设备上,模拟对方的手机APP,对我的模块进行了基本的自测,也检测到了我的模块的一些问题。

后来我们准备和对方联调的时候,出现的问题大部分都是在对方这边,所以这个时候我就可以帮助对方分析问题,提高联调的效率。

我分享了我的一些经验和想法。 我们来看看一些具体的调试方法和工具:

调试方法一、LOG

在我的实际工作中,日志拷贝调试已经解决了我的大部分问题。 对于常见问题,可以通过分析日志来定位问题。 而且,对于日志记录有很多要求,我们需要复制出有助于我们调试的信息。

例如:

带有时间戳、函数名、行号等可以帮助分析问题的信息。 例如:

[func:100]

事实上,在实际应用中,可能不仅包含上述信息,还可以根据需要进行添加。

这样就可以清楚地了解程序转到分支判断时的执行流程。

您可以清楚地知道操作从哪里开始。

例如,在统一的日志格式中添加特定的标签,例如“BUSINESS”。 喜欢:

[BUSINESS][func:100]

由于业务逻辑通常是整个项目的最低级别,其他模块为其服务。

当我们查看日志时,可以在编辑器中搜索关键字“BUSINESS”,只列出与业务逻辑相关的日志。 我们只要看那些日志,就可以大致了解程序的运行过程。

事实上,其他模块也可以根据需要进行标记。

处理数据的模块可能需要复制一些数据来分析源数据是否正常。 您可以稍微控制复制的频率,在不影响数据分析的情况下复制尽可能少的日志。

否则,某些日志文件很容易达到数百 MB,从而难以分析。 特别是,当需要将日志保存在flash上​​时,为了防止日志填满flash,往往需要限制日志文件的大小并进行滚动日志覆盖。 此时,如果无效日志过多,则可能会覆盖有效日志。

之前有关日志调试的文章:

2、在线调试

在线调试可以让您看到程序运行的更多细节。 您应该能够完成基础工作。

GDB此前相关推文:

关于keil调试相关的内容,推荐阅读好友Osprey写的文章(公众号:Osprey谈单片机)。 这方面他研究得很深入。

3.其他调试工具

之前我们的公众号也分享过很多有用的调试相关工具:

(1)虚拟LCD

这是一个实用的液晶模拟器。 如果您手上还没有LCD或者处于开发初期,需要频繁下载程序来验证功效,可以使用VirtLCD来提高我们的开发调试效率。

VirtLCD介绍及简单使用:

(2)Wireshark

Wireshark是一款网络数据包分析软件。 例如,当我们在调试socket通信时,我们可以使用Wireshark来监控,看看我们是否发送了数据,或者是否收到了对方发送的数据。

wireshark介绍及简单使用:

(3)VSPD

VirtualSerialPortDriver (VSPD) 是一个虚拟并行端口软件。 虚拟并行端口软件是模拟化学串行端口的软件。 它完全复制了硬件 COM 端口的功能,并将被操作系统和串行应用程序识别为真正的端口。

在对并口上位机进行编程时,需要进行调试。 一种方法是与下位机通讯进行测试; 另一种方法是使用虚拟并口软件进行测试。

VSPD介绍及简单使用:

(4)LVGLGUI引导器

GUIGuider是NXP为LVGL开发的上位机GUI设计工具。 它可以通过拖动控件来设计LVGLGUI页面,加速GUI设计。

相关文章:

(5)Jlink+JScope

J-Scope是SEGGER推出的一款波形显示软件,简单易用。 需要配合Jlink仿真器(V9或V10)使用。

J-Scope简介及简单使用:

(6)SEGGER_RTT

RTT的全称是RealTimeTransmit(实时传输),由SEGGER推出上位机软件调试程序,是与Jlink仿真器(V9或V10)配合使用的一种调试方法。

SEGGER_RTT介绍及简单使用:

(7) 厘米回溯

CmBacktrace(CortexMicrocontrollerBacktrace)是一个开源库,用于ARM Cortex-M系列MCU的错误代码的手动跟踪和定位以及错误原因的手动分析。

CmBacktrace介绍及简单使用:

(8)沃法+

VOFA+(威士忌)插件驱动的高自由度主机。 它是一个通用的数据调试工具,使图形调试像并口调试一样简单。 数据可视化可以通过复制字符串或发送十六进制补码来完成。

官方网站:

VOFA+介绍及简单使用:

(9)QEMU

QEMU是一个著名的开源模拟器(官方网站:)。 它可以在X86PC上运行,模拟Arm、MIPS、RISC-V等各种CPU和开发板,以及网卡、声卡、键盘、sdcard、emmc、USB等类型外设。

我还没用过QEMU。 我之前转载过的一篇文章:

(10)瓦尔格林德

Valgrind 是 Linux 下开源(GPLV2)仿真和调试工具的集合。

Valgrind介绍及简单使用:

(11)猎犬

Bushound 是一款用于 PC 笔记本电脑上总线数据包监视和控制的开发工具。 用于捕获合约数据包以及来自设备的输入输出操作,是一个功能强大的总线合约解析器。

之前是和USB上位机进行联调的。 该工具可以监控上位机发送的数据是否正确。 我们还没有在我们的官方账户上分享关于布什猎犬的文章,所以当我有机会时我会花点时间分享它。

相关内容

热门资讯

大浪淘金APP黑幕揭秘:内盘操...   大浪淘金APP平台最隐蔽的黑幕,在于其完全封闭的内盘交易系统。这个看似与国际市场接轨的交易平台,...
告别固定工资实现财富自由?一品...   普通投资者被广告宣传诱导,注册就送现金,充值返现金券等等这些宣传方式,都是在引流到平台开户,不怕...
哈易购APP打着现货交易幌子搞...   网络上各类白银、铂金等贵金属投资广告铺天盖地,不少平台以"现货交易"为名,暗中却从事着非法期货交...
5元起投!高额收益?中国白银、...   上海华通白银国际交易中心有限公司(以下简称“华通白银国际”)打着“白银、铂金现货订购”的旗号,实...
"九州订购APP、起...   近年来,贵金属投资热度持续攀升,但乱象也随之而来。一些不法分子趁机搭建虚假交易平台,打着"低门槛...
坚锅淘金APP投资者频繁爆仓亏...   坚锅淘金APP对外宣称是贵金属现货交易平台,日常出入金看似畅通无阻,给人一种合规运营的假象。但事...
斗金订购APP“5元订购现货”...   斗金订购APP“5元订购现货”骗局揭秘:充值易、回本难,越陷越深!  许多投资人在未核实平台合规...
贵金属APP乱象曝光:&quo...   当前市场上部分贵金属类APP未取得正规交易资质,涉嫌误导消费者参与白银、铂金等商品的非合规交易!...
华通白银、银宝街APP被指虚假...   警惕现货白银投资陷阱:上海华通白银背后的平台涉嫌非法期货交易  近年来,各类现货白银交易平台以“...
充值送300,月入过万?别被量...   如今,网络上充斥着大量未经批准的贵金属及其他产品订购交易平台。这些平台普遍缺乏合法经营资质,却将...
鑫汇智投APP贵金属非法期货、...   鑫汇智投APP贵金属非法期货、人为控盘,大量投资者遭恶意收割  鑫汇智投APP长期以“低门槛、高...
矅光智策APP非法贵金属交易骗...   不少投资人在矅光智策APP上进行贵金属交易后出现了严重亏损。许多人在下载该平台时,根本不清楚其是...
飞鸽订购APP非法期货交易骗局...   飞鸽订购APP非法期货交易骗局,很多投资者根本没搞懂规则就盲目充值,买涨买跌跟买cai票一样!平...
天龙白银APP被操控的非法期货...   中小投资者在网络平台参与商品现货订购交易,表面看似合规合法,实则暗藏诸多难以察觉的风险。商品现货...
下载送试玩金?千万别碰!带你揭...   当前,许多贵金属APP交易平台正采用欺诈性营销手段。它们通过抖音等短视频平台,以“5元起投”“充...
泡泡淘金APP骗局:打着&qu...   泡泡淘金APP骗局:打着"商品订购"幌子,实则非法期货收割投资者!投资需谨慎,切勿轻信“高额回报...
南商云购APP虚假电子盘背后的...   南商云购是虚假电子盘吗?它是否具备合规的交易资质?这个曾经的"现货电子盘"如今摇身一变,披上了"...
警惕"祥龙订购&qu...   祥龙订购APP、掌上银牛APP等平台背后的运营方——四川禄宏商品现货市场有限公司,仅具备现货交易...
中国白银、华银:虚假宣传、后台...   中国白银APP宣称是上市公司“中国白银集团”与“上海华通白银国际交易中心”旗下的现货交易平台,提...
起底“优品订购”APP非法期货...   “优品订购”APP根本不具备任何合法的交易资质。其背后的运营方仅凭随便注册一家公司、开发一款交易...