专业人员的物联网设备调试工具和技术指南
投稿人:DigiKey 北美编辑
2021-03-23
对于嵌入式系统的开发来说,必须很好地将软件和硬件相结合,即使是看似最简单的物联网 (IoT) 设备,也变得极其复杂和具有挑战性。如此一来,当出现错误时——因为这是不可避免的——调试时间通常就不是几个小时,而是可能需要数周或数月。此类延误不仅增加了开发成本,导致产品无法按时进入市场,还延迟了生产计划,破坏了供应链和商业计划。
为缩短调试时间并保持项目进度,最佳方法是将硬件调试工具和免费提供的软件相结合,以深入了解系统的性能和问题发生的位置。因此,无论是专业人员还是业余爱好者,拥有合适的工具对于其快速、正确地完成工作是大有裨益的。
本文将讨论可用于调试和分析物联网设备性能的开发工具和软件。本文将以 STMicroelectronics 的开发板为例,将其作为物联网设备,并使用 SEGGER Microcontroller Systems 的工具和软件来认识系统并进行调试。本文还将讨论如何最大限度地缩短调试时间并按期交付物联网项目的一些小技巧和小窍门。
需要调试的典型物联网设备
从智能家居到工业监视控制,物联网设备几乎遍布所有各业。尽管应用多种多样,但一个物联网设备仅需要几个典型的组件。其中包括:
- 微处理器
- 用于连接的无线电
- 传感器
开发者不希望自定义旋转自己的板子来探索调试技术,或者测试他们的应用代码片段。这样做实在太费时间了。更明智的做法是,采用低成本开发板展开工作,比如 STMicroelectronics 的 B-L4S5I-IOT01A 物联网节点探索套件。在该套件几乎拥有能在典型物联网设备上找到的组件(图 1)。
图 1:STMicroelectronics 的 B-L4S5I-IOT01A Discovery 套件包括物联网设备通常需要的所有组件。(图片来源:STMicroelectronics)
该开发板包括 STM32L4S5VIT6,这是一款 Arm® Cortex®-M4 微控制器,运行速度为 120 兆赫兹 (MHz)。这款微控制器配备了高达 2 兆字节 (Mbytes) 的闪存和 640 千字节 (KB) RAM。重要的是,为便于调试或测试,该板包括了 Wi-Fi 和大量的传感器,可以用来快速构建模拟物联网测试设备。
专业调试硬件工具
几乎每块开发板都带有板载 JTAG/SWD 接口,因此开发人员不必出去找程序员。相反,他们可以直接使用开发板。虽然这对于营销目的来说很好,但对于真正的工程来说却不尽人意:板载调试器通常都是大幅缩减版本,存在一定的局限性,比如可用断点的数量和接口波特率。对于新手来说,这些限制似乎并不是什么大事,但拥有无限的断点可以避免不断地启用和禁用断点,而快速波特率是应用追踪所必须的(关于追踪的详细内容参见软件工具部分)。
有几种不同的工具可以提供专业的调试体验,但工具本身只是解决方案的一半。好工具还需有好的软件支持。从硬件和软件角度来看,有一套工具非常吸引眼球,那就是 SEGGER J-Link 系列。该系列中的一个调试器版本几乎适用于从学生、业余爱好者到硬核专业人员的任何水平开发人员。
经验表明,对于一般开发者来说有两种型号最有用:J-Link Base 和 J-Link Ultra+(图 2)。这两种设备的外形尺寸相同,但 J-Link Ultra+ 确实为开发人员提供了更快的 RAM 下载速度(3 Mbytes/s 与 1.0 Mbyte/s)和更快的 SWD 接口速度(是 100 MHz 而非 30 MHz)。当开发人员希望要跟踪其应用,以了解性能、RTOS 性能或者进行系统调试时,就会凸显更快的速度所带来的优势。
图 2:SEGGER J-Link Ultra+ 通过 50MHz 的目标接口来增强开发者的调试器体验。(图片来源:SEGGER Microcontroller Systems)
J-Link 和 B-L4S5I-IOT01A 开发板的好处在于,两者可以通过 Tag-Connect TC2050-IC-NL 电缆和 TC2050-CLIP-3PACK 固定夹连接。这样,就可通过"钉子垫"与开发板相连(图 3)。这可能需要将 J-Link 的 20 针连接器与 TC-2050 电缆上的 10 针连接器进行连接。为此,可选用 8.06.04 J-Link 10 针位针式适配器。
图 3:在 B-L4S5I-IOT01A 开发板上,Tag-Connect 电缆组件可以通过类似钉床的 pc 板基底面(右)进行连接。(图片来源:STMicroelectronics)
开发者一旦在硬件方面封堵了这条路,就可以使用软件工具来分析和调试自己的应用。
专业的软件调试工具
有不少软件工具与 SEGGER J-Link 工具配合得相当好,而这些工具竟然不是 SEGGER 提供的。下面就了解一下这类免费工具中的几种,看看开发者如何利用这些工具来调试软件。
首先是 J-Scope。J-Scope 与示波器类似,可以显示随时间变化的数值。开发者可以监视单个或几十个变量。但请注意,随着所监视的变量越来越多,会出现样本缓冲溢出和数据丢失的情况,导致了可以采集的样本数量越来越少。
通过向 J-Scope 提供编译器输出的 elf 文件来选择变量。这提供了要读取的存储器位置,然后开发人员可以设置采样率,并监视变量如何随时间变化。图 4 所示为一个简单的三变量跟踪示例。
图 4:当应用实时运行时,J-Scope 可以用来通过 J-Link 监视变量。(图片来源:SEGGER Microcontroller Systems)
接下来是 Ozone。Ozone 是一种调试器接口和性能分析器。开发者可以将 elf 文件加载到工具中并进行源码级调试。他们可以设置断点,更新代码。对于开发人员来说,一个特别有用的功能是还可以执行指令跟踪(如果硬件支持的话),并识别哪些汇编和 C 代码语句已被执行。这对于验证硬件在环 (HiL) 测试的代码覆盖率特别有用。
Ozone 还可以帮助开发人员分析系统性能(图 5),实现变量随时间变化的可视化。这提供类似于 J-Scope,但集成度更高的功能。该软件甚至可以用来监视电力消耗,并将所有这些事件在一个地方同步。
图 5:除了代码覆盖和 RTOS 感知调试外,Ozone 还可以在应用实时运行时通过 J-Link 跟踪变量。(图片来源:SEGGER Microcontroller Systems)
第三种工具是 SystemView。使用 SystemView,开发人员可以分析 RTOS 系统的运行性能。任务切换记录在跟踪缓冲中,然后通过调试器向 SystemView 报告(图 5)。然后,SystemView 显示这些信息,让开发人员查看相互关联的切换并测量系统性能。这也是一个进行系统可视化和发现错误及其它问题的绝好方法。
图 6:SystemView 提供了一个进入 RTOS 的链接,允许开发人员测量任务性能,并将 RTOS 正在做什么以及何时做进行可视化。(图片来源:SEGGER Microcontroller Systems)
嵌入式系统的调试技巧和窍门
调试物联网设备时,需要开发人员在硬件和软件方面同时拥有合适的工具。如果开发人员希望尽量减少调试时间,就必须满足上述条件。要想成功完成调试,这里有几个“小技巧和小窍门”开发人员应该牢记,比如:
- 使用专业的调试器,这样能最大限度地提高接口波特率。从一个系统中能获得多少有用的数据,取决于接收数据的速度。速度较慢会延长调试时间。
- 在开发周期的早期安装调试软件。开发人员不应该等到出现问题时才去安装调试工具。
- 从开发伊始就使用跟踪工具。这将使开发人员能够监视系统性能,立即了解软件变化对系统的影响。
- 在测试过程中,利用指令跟踪或程序计数器采样来了解系统的代码覆盖率。未经测试的条件分支和代码中会存在错误。
- 利用快速传输协议来获取片外数据,如实时传输 (RTT) 库。
遵循这些“提示和技巧”的开发人员会发现,他们在尝试开发物联网设备时会省去不少时间,避免许多麻烦。
结语
物联网设备软件已经变得很复杂,但这并不意味着专业或业余开发人员需要陷入不断调试系统的困境。使用专业的开发工具和软件可以为开发人员提供他们所需要的见解,不仅是调试系统,还包括分析和提高系统性能。通过对这些工具的投资,用户可以大幅减少调试时间,并在合理的时间内将项目投入使用并推向市场。
免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。