当生活无法提供调试接口时,闪烁一个RGB LED
是的,我知道;如果我们想创造高质量的产品,我们需要适当的工具,包括足够的调试端口,但正如您所知,生活有时会变得令人讨厌。
最近在我的自由职业生涯中,我发现我的两个客户未能在他们的产品中添加任何类型的文本调试文本。有一次,硬件设计工程师只是忘记添加这样的通道,直到他们投入大量板卡后才意识到自己的错误。在另一个例子中,产品非常小型化,没有空间。幸运的是,在这两种情况下,我都可以使用 RGB(三色)LED 来辅助调试。有时当你得到柠檬时,你唯一能做的就是制作柠檬水,我最终使用 RGB LED 来实现一个闪烁的消息系统。
从这些经验中,我惊讶地发现,只要采用人性化的调制方案,基于 RGB LED 的调试非常实用,而且功能出乎意料地丰富。
我的消息的调制方式是选择不同的颜色来表示代码上下文,并选择闪烁计数和样式来表示该上下文中的特定消息。闪烁在 LED 上按顺序排列并显示,类似于基本文本记录通道处理短文本消息的方式。
LED调试模块使用以下函数实现了四种闪烁节奏:
led_debug_blink(颜色,数字)
短暂闪烁指示。led_debug_blink_wide(颜色,数字)
用于更相关情况的更长闪烁指示。led_debug_blink_error(color, number)
和led_debug_blink_wide_error(color, number)
用于短和长错误指示,分别具有与其他相同的功能签名。
这些功能中的每一个都会创建一个独特的闪烁过程。正常眨眼会持续一秒,间隔半秒,而大范围眨眼会活动两秒,间隔半秒。错误消息用红色表示,然后上下文颜色闪烁,如图 1 所示。
四种标准和错误调试功能的闪烁时间图
(点击此处查看大图。来源:Felipe Lavratti)
请注意,图 1 中的黄色区域用于指示所选上下文。如果我们决定简单地打开或关闭 RGB LED,那么图 1 中的黄色区域可能是绿色、蓝色、黄色、青色、品红色或白色;也就是说,除了黑色(全部关闭)和红色(用于指示错误情况)之外,任何可通过打开或关闭 RGB LED 获得的颜色。如果我们决定使用脉宽调制 (PWM),我们可以实现更宽的色域。然而,廉价的 RGB LED 在混合颜色方面并不是很好,因此很难区分某些组合,而其他组合(如橙色)似乎工作得相当好。
仔细选择闪烁周期和方法以简化人类可读性,事实证明这对于开发阶段的工程师和测试期间的现场技术人员来说已经足够了,前提是避免通过 LED 发出过多的消息。
使用 LED 进行调试并不理想,但在我正在研究的系统中,它提供了一种无需任何类型的设备连接到产品的快速方法来观察系统状态,从而帮助加快了现场的开发和测试。为了让团队习惯每种颜色背景和闪烁节奏的含义,需要进行一些培训,但很快就学会了。最重要的是,它分别区分了信息性消息和错误消息,我们的方案提供了足够的信息让我们快速确定哪一段代码出了问题。
我相信这是一个例子,在这个例子中,通过少量的努力来调整系统以适应使用它的人的能力,将一个可能难以使用的调试界面转变为一个非常有效的界面。
费利佩·拉夫拉蒂 为家庭自动化开发了互联网连接设备,为手持式销售点机器创建了嵌入式 Linux 应用程序和驱动程序,并为工业应用程序实现了用于过程控制和数据记录器的嵌入式数学算法。在他职业生涯的早期,Felipe 意识到质量的重要性,因此他采用了每一种必要的现代技术,将坚固的产品带入生活;开发过程的每个部分都进行质量管理:编码、测试、验收、部署、集成和部署。目前,Felipe 是一名自由顾问和开发人员。可以通过
联系他
嵌入式