《 嵌入式系统设计与实践》一一3.5 调试工具箱(和灭火器)

简介: 本节书摘来自华章出版社《 嵌入式系统设计与实践 》一 书中的第3章,第3. 节,作者:Elecia White 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.5 调试工具箱(和灭火器)
到目前为止,我们对数据表、用户手册、原理图的所讨论都停留在纸上(或电子文件上)。让我们在硬件上实践一下吧。等一等,在动手之前,请注意触摸硬件会让它遭受电击并将它损坏(特别是当你刚脱下羊毛外套的时候)。
3.5.1 保管好电路板
向硬件工程师要一些工具,用以保证电路板的安全。注意电路板应该放在哪儿。在需要移动时,始终将它放在存放电路板的那个袋子里。抗静电垫子很便宜,这也迫使人们不得不在办公桌上为硬件分配一个空间(即使不使用防静电手腕带,防静电垫子仍然是一个较好的改善,比电路板被倒下的书砸坏或从桌上猛丢到地上要好很多)。
如果可能的话,当需要往电路板上增加的电线时,需要将它们粘合并焊接好。返工一个损坏的电线要花费不止1小时的时间。同样道理,如果连接器没有特定的方向,使得它们只能以一种方式接入,那么给电路板拍个照片或者标记出正确的接入连接器的方式。
我喜欢将硬件连接到一个我可以关掉的电源插座(最好是计算机没有连接的插座)。有一份紧急情况下停止所有工作的计划,真的很不错。同时,注意灭火器在哪儿,以防万一。
严肃地说,问题通常不是由小火星造成的,而更多的是与烟雾有关。不管怎么说,一块损坏的电路板是不可能赢得朋友的。当经理或硬件工程师询问要为嵌入式软件开发分配多少电路板时,总要多要一两个以备用。名义上说,这样就可以确保对多个电路板做硬件测试。一旦系统开始有些初步成绩了,软件工程师最有可能失去对电路板的使用权,因为要用它展示给别人看。至少,这些都是我们应该给出的,想要一个备用板的原因,不是因为很可能损坏第一个(或两个)。
注意: 通常也会有些制造上的错误,特别是在密度比较高的电路板的设计早期。PCB裸板会用于连接性测试,但是所做的工作也仅限于此,特别是对于一个新设计来说,测试所有的焊点是否正确地连接、没有断裂或者短路。当某块电路板不能正常工作时,有第二块可以继续尝试再加上第三块将是非常有帮助的,当在两块电路板上得到的结果不同时,第三块电路板可以用做比较。
3.5.2 工具箱
我热爱我的工具箱,因为它赋予了我对硬件工程师一定程度上的独立性。我办公桌上的工具箱,可以让我用一种相对安全的方式对电路板做些小的改动(使用尖嘴钳移动跳线比用手指不太可能损坏电路板)。不算各种跳线丝、RS-232阴阳转换器,以及报废的电池,多年来我积累的工具还包括:
尖嘴钳
镊子(一对用作小钳子,一对用作镊子)
美工刀
数字万用表(后面会讲到这个)
电工胶带
三福记号笔
多种螺丝刀(或一个但有很多工具)
闪光灯
放大镜
安全眼镜
扎带(魔术贴和拉链带)
如果公司有良好的实验室且其他人都将他们的工具放置在有标记的区域内,那么可以使用他们的工具(但还是应该有你自己的工具)。如果没有,就去五金店跑一趟可能会让我们在未来工作中少一些挫折。
3.5.3 数字万用表
即使不打算有一个更完备的工具箱,我还是强烈建议软件开发人员拥有一块数字万用表(DMM)。购买一块便宜的、涵盖基本功能的万用表,花费只是一顿不错午餐的钱。当然,也可以花费整整一个星期的食物预算去购买一块非常不错的数字万用表,但显然不需要这么做。作为一个嵌入式软件工程师,通常我们只需要使用很少的一些功能。
首先,电压模式。在理想的情况下,数字万用表至少应该能够阅读从0~20V、精度0.1V 以及0~2V、精度0.01V。使用数字万用表的电压模式时,我们通常希望得到的答案是:是不是达到了特定的电压?虽然1mV精度的数字万用表有时候可能是不错的,但是80%的情况下使用万用表时遇到的问题会是“芯片或者器件是否已经加电了呢?”
其次最重要的模式是电阻检查模式,通常表示为欧姆(Ohm)符号和一系列三弧线。并不需要知道具体的电阻值。这种模式的真正用途是确定什么时候所有的东西都相互连接起来。正如电压模式可以回答:“这个器件有电了吗?”这个问题,这种模式将回答“这些组件是否正在互相通信?”
为了确定板上的两个点之间的电阻,数字万用表通过测试点发送一个小的电流。只要电路板是关闭的,这就是安全的。不要在加了电的电路板上运行电阻模式,除非确实需要这么做。
当数字万用表的蜂鸣器响起来时,表示有两个测试探针之间没有明显的电阻,表明它们已经相互连接(你可以通过将两个探针碰到一起以检查数字万用表的蜂鸣器)。使用这种模式,数字万用表可用于快速确定电缆或板上的走线是否已经坏了。
最后,数字万用表最好具有电流模式,这用安培符号(A或mA)表示。这个模式可以用来测量系统消耗了多少功率。在第10章会更多地讨论它。
3.5.4 示波器和逻辑分析仪
有时候,我们需要知道电路板上的电信号意味着什么。有三种方法可以帮助我们看到这些移动中的信号:
传统的示波器
测量模拟信号,通常一次是其中两个或四个。数字信号通过模拟来测量,但这个比较麻烦,因为每次只能看到两个点之一(高或低)。
逻辑分析仪
只能用于测量数字信号,通常同一时间可以测量很多信号(16、32或64)。逻辑分析仪曾经是庞然大物,需要花好几天去安装和配置。但通常会在安装完成数小时之类发现问题。现在很多可以连接到计算机,并做些辅助设置,这样安装过程只需一会儿。此外,许多逻辑分析仪带有协议分析仪,可以解释数字总线上的信号,所以可以很容易地看到处理器的输出是什么。因此,如果有一个SPI通信总线,并且往该总线上发送了一系列字节,那么协议分析仪将能够解释总线上的信息。网络分析仪是一种特定类型的协议分析仪,专门用于复杂的网络通信分析。
混合信号示波器
混合信号示波器结合了传统示波器和逻辑分析仪的特点,具有很多模拟通道和8个或16个数字通道。这是我个人最喜欢的,混合信号范围可同时分析不同类型的信息。
这些示波器往往是共享资源,因为它们比较昂贵。虽然,可以买到价格合理的设备连接到计算机,但有时它们的功能集仅限于非显而易见的方式。一般来说,物有所值。
设置示波器
第一步,是要确定哪些信号(S)可以帮助我们找出问题。第二步,需要将示波器的地线夹接地)。如果有多个地(AC地、DC地、模拟地)并且不能确定应该将仪器连接到哪个地时,就请教电子工程师。因为接地错误会损伤示波器。
第三步,将探针连接到感兴趣的信号。许多处理器有这样的小引脚,需要专门的探针。另一方面,许多硬件工程师在他们的电路板上放置测试点,知道软件团队为了调试,可能需要访问特定硬件信号。另外,可以将电线焊接在需要的信号线上并装上探针。
如果以前从来没有设置过示波器,那么使用起来就有点儿困难。示波器手册各有不同,但它们是最好的可以寻求帮助的地方(大部分是在线的)。没有对所有示波器通用的手册,所以在一页一页翻阅手册的时候,我只能告诉大家可以通过查找单词找到有用的信息。
图3-11显示了一个典型的示波器屏幕。最重要的点是,沿x轴移动的时间和沿y轴变化的电压。这些坐标轴的刻度是可配置的。
在示波器用户界面上的某个地方,应该有一个旋钮,可以调节时间刻度。把它往右旋转,可以看到每个水平刻度的显示,比如,从1~0.5秒(然后再往下到毫秒或微秒)。它控制了整个屏幕的时间刻度。对于调试来说,目的是从最大可能的时间基线开始,把你想看到的信息显示给你。
警告: 如果放大太多,会看到奇怪的事情,因为推测的数字信号将它们自己真实的(有些夸张的)颜色显示了出来。
在设置好了时间基线之后,还需要设置电压坐标轴的刻度。这可能是一个访问所有通道(或探针)的旋钮,使我们可以通过另一种方式切换通道,否则就可能每一个通道都有一个旋钮。无论哪种方式,把它往右旋转,这样每个垂直区块都被放大(5~2V,直到毫伏)。
image

图3-11:简化的示波器屏幕
如果不确定,那么将时间刻度设置为大约100ms/区块,将电压精度设置为大约2V/区块。如果需要,可以在此基础上放大(或缩小)。
另一个不同的旋钮将设置屏幕上每个通道的位置及零线。图3-11在屏幕左侧显示了每个通道的零线。可能是每个通道都有一个旋钮或者以重用的方式在所有通道之间共用一个旋钮。在每个通道之间保持一点点相互距离,以便可以看清每一个通道。(可能只用一个按钮就可以关闭不需要的通道。)
接下来,找到一个旋钮并设置时间刻度的零点。这将导致一个垂直线不固定地显示在屏幕上。将其设置到靠近中间的位置。或者,如果要查找某个事件发生后的信息,可以将它设置到屏幕的左边,如果想知道该事件之前发生的事情,就将它设置到屏幕的右边。
此时,可以打开系统,并看到一条摆动的线。它可能很快地移动,以至于根本看不明白它在做什么,但这只是一个开始。如果没有任何反应,找一找写着“运行/停止”(Run/Stop)的按钮。停止模式将显示停留在一个特定的时间点,使我们有机会思考所观察到的东西。靠近“运行/停止”按钮的可能是一个“单一”(Single)按钮,这个按钮等待一个触发,然后把系统置于“停止”(Stop)模式。还有一个“自动”(Auto)按钮,它将让系统持续不断地触发。
警告: 如果有“自动”按钮,那么在按下这个按钮之前要非常小心。请检查名称意味着自动触发还是自动设置。前者是有用的,但后者试图自动配置示波器。我发现它往往完全随机地重置示波器配置。
要设置一个触发,就得找到“触发”旋钮。这将会拉出一个水平线以显示触发电平。这是依赖于通道的,但不像其他依赖通道的旋钮,它通常不能为每个通道设置触发。事实上,它需要额外的配置,通常是通过屏幕上的菜单和按钮。我们期望将触发设置在感兴趣的事件开始(或结束)时发生变化的通道上。我们需要选择触发被激活后是上升还是下降,还需要设置触发的频率。如果想看到第一次变化,那么设置一个很长的超时时间。如果想看到最后一次的变化,则设置短暂的超时时间。
有些其他的事情需要注意。除非确实需要这么做,否则不要将示波器置于交流(AC)模式。存在一种可能性,探针提供的信号是屏幕上大小的10倍(或1/10)。这取决于探针,因此, 如果此时放大幅度处于关闭状态,那么找到10椎谋昙牵⑶仪谢坏秸飧鲎刺?
如果按照我的指导(以及示波器手册)对示波器进行设置,但是它却没有按照所期望的去工作,那么就需要向丰富经验的人寻求帮助。示波器是一种强大并且有用的工具,但需要经过许多实践才能真正达到最佳效果。在开始时遇到一些挫折,不要气馁。

相关文章
|
Python Windows
Python 获取视频时长(附代码) | Python工具
Python 获取视频时长(附代码) | Python工具
Python 获取视频时长(附代码) | Python工具
|
7月前
|
存储 缓存 Java
Python中的__slots__:减少内存占用的高级技巧
本文深入解析Python的`__slots__`机制,从内存开销原理、优化机制、实践技巧、继承处理到典型场景(如金融系统、游戏实体、缓存),全面阐述其减少30%–50%内存占用、提升20%–50%属性访问速度的核心价值,并提醒使用限制与最佳实践。(239字)
360 0
|
7月前
|
数据采集 供应链 数据可视化
1688宝贝详情数据接口实战—B 端视角下的竞品(供应商)数据拆解全指南
本指南面向B端企业,详解如何通过1688宝贝详情API实现竞品与供应商数据化拆解。涵盖API接入、字段商业价值映射(价格梯度、MOQ、SKU库存、资质认证、物流履约、销量反馈等)、实战分析框架及合规要点,助力跨境铺货、批发选品、定价优化与供应链决策,真正将API转化为业务增长引擎。(239字)
|
7月前
|
人工智能 JSON 物联网
别光“调戏”ChatGPT了!亲手微调一个专属大模型,你需要知道这些
本文深入浅出地讲解大模型“训练-微调-推理”三步法,类比医生培养过程,帮助读者理解AI如何从通才变为专才。涵盖技术原理、实操步骤、效果评估与GPU选型,助力个人与企业打造专属AI模型,推动AI应用落地。
655 9
|
开发者
1688工厂信息接口指南
1688工厂信息接口用于获取供应商基础信息、生产能力及交易信用数据,支持供应链分析与评估。核心功能包括企业信息、生产能力、交易勋章、认证资料等。调用需申请接口权限,配置商品ID与返回字段。
|
8月前
|
监控 数据可视化 测试技术
2025年接口错误自动分析工具对比与性能测试平台选型指南
文章围绕2025年接口错误自动分析工具与性能测试平台展开,介绍其发展背景、行业痛点,拆解主流解决方案类型及技术原理,通过横向对比各方案在自动化根因分析、报告详细度等方面的差异,给出企业选型建议,还解答常见问题。
|
8月前
|
关系型数据库 应用服务中间件 Linux
Linux 项目实战入门:从 0 到 1 搭建 LNMP 网站环境
本文手把手教你从零搭建LNMP网站环境,涵盖CentOS 7虚拟机配置、Nginx+MySQL+PHP安装与联动设置,提供详细命令与排错指南,并扩展部署WordPress实战,助你快速掌握Linux Web环境核心技能。
696 0
|
机器学习/深度学习 人工智能 搜索推荐
DeepSeek 速成指南:普通人也能秒懂的 AI 实战手册
DeepSeek 是一款强大的中文大语言模型,能处理长文本、多模态输入,适用于职场、学习、生活等场景。它擅长文案创作、数据分析与复杂任务拆解,相比 ChatGPT,在中文表达和网络热梗上更具优势。掌握精准提问、结果校验和效率工具三大技能,可大幅提升使用效果。同时,避免过度依赖、隐私泄露和伦理模糊的“三大天坑”,并通过角色扮演、思维链拆解等进阶技巧挖掘潜力。DeepSeek 不是替代品,而是助力你高效完成任务、拓展知识边界的超级大脑。未来属于善于与 AI 协作的人,立即行动,设计专属协作流程!
1149 0
DeepSeek 速成指南:普通人也能秒懂的 AI 实战手册
|
机器学习/深度学习 算法 API
量子计算编程语言:面向未来的开发工具
量子计算编程语言是面向未来的开发工具,基于量子力学原理,能够突破经典计算的瓶颈。本文介绍了量子计算编程语言的发展历程、主要特点、应用前景及学习方法,涵盖了QCL、Q#、Quipper等代表性语言,以及Qiskit、ProjectQ等主流工具,为开发者提供了全面的学习路径。
|
Web App开发 移动开发 JavaScript
HTML 音频(Audio)详解
HTML5通过`<audio>`元素为网页音频播放提供了丰富支持。本文将介绍其基本用法、属性(如`controls`、`autoplay`)、事件监听、格式兼容性(MP3、OGG、WAV、AAC),并提供JavaScript控制示例。此外,还将讨论优化技巧,如使用CDN、懒加载及提升用户体验的方法。