为什么要使用商业版嵌入式开发工具?如何选购?

为什么要使用商业版嵌入式开发工具?如何选购?

【描述】随着微控制器越来越复杂,开发环境越来越多变,使用付费的商业版嵌入式开发工具可以大幅提升开发效率,节省BOM成本和时间成本。本文通过实例,介绍了专业调试器等商业版嵌入式开发工具的性能特点,以及选型要点,帮助开发者做出正确的采购决策。

【摘要】专业和高性能的嵌入式开发工具,可以帮助嵌入式开发者监视芯片并查看其软件是否按照预期方式运行,还可以指出错误或优化代码规模,能够大幅提升开发效率,节省BOM成本和时间成本。本文以几款专业的调试器和工具链为例,介绍了专业嵌入式开发工具的特点以及使用的必要性,同时介绍了专业嵌入式开发工具的选型要点,作为开发者采购决策指南。

从只有几千字节存储空间的简单 8 位控制器,到现在先进的 32 位控制器,虽然微控制器经历了诸多演变,但是许多开发人员仍在使用老旧的工具,拖慢了开发周期。


设计人员若要适应当今快速发展且复杂多变的开发环境,则需要确保拥有合适的工具才能应对。他们需要嵌入式工具,以便监视芯片并查看其软件是否按照预期方式运行;他们还需要可指出错误或优化代码规模的工具,以降低其 BOM 成本。

现在有许多工具可以帮助他们降低整体开发成本,加快调试过程,从而缩短上市时间。本文将介绍一些这样的工具,然后说明如何通过它们获得最大收益。

用专业调试器,省钱省时间

开发人员编写的软件程序第一次试运行就正常工作非常少见。因此软件开发需要调试,所以对于软件开发人员来说,最重要的工具就是调试器。利用调试器,开发人员可以将应用程序加载到目标微控制器上,逐步检查代码,查看存储器和其他寄存器,并操纵硬件。


问题是,许多专业开发人员通常使用的调试器是其低成本开发板所附带的。这些调试器方便、便宜,而且在演示时表现完美。但是,在开发专业软件时,可能会出现以下限制:

  • 断点有限
  • 时钟速率降低
  • 缺乏跟踪功能
  • 功能极少

换言之,有时真是一分钱一分货:附送的简化工具集可能不是快速有效地开发和调试软件的最佳方式。

专业级调试器具有许多功能,可提高工程师的生产力,例如无限制的断点。许多调试器只能使用微控制器的内部比较器来设置断点,而在大多数情况下只有两个可用。在有数万行代码的复杂程序中,只有两个可用的断点可能会导致开发人员把时间浪费断点切换上,也可能会导致开发人员错过软件中的关键点,从而错过潜伏的漏洞。这样一来,可能会导致编码时间更长,反而增加了开发成本并影响了上市时间。

专业级调试器提供的算法不仅可以使用硬件断点,还可以使用软件和闪存断点,为开发人员提供了更多的灵活性,而且用来评估代码的断点数量几无限制。

当然专业级调试器不便宜。它们的价格可以轻松标到几百到几千美元。但它们为开发人员带来了不可计算的投资回报,并能使用多年,无需升级或更换。选择调试器时,开发人员应该问自己几个问题:

  • 调试器的断点数是否无限制?
  • 这是一款可以与几乎所有工具链和微控制器配合使用的第三方调试器吗?
  • 五年后这个调试器还能使用吗?
  • 这个调试器有很好的生态系统吗?
  • 调试器的能力可以扩展吗?

因为符合上述标准而变得非常受欢迎的一款第三方调试器是 Segger J-Link。根据开发人员的需求,Segger J-Link可提供不同的版本。其中包括:J-Link Base UnitJ-Link PlusJ-Link Trace(图 1)。

图 1:Segger J-Link调试器型号比较。(来源:Segger)

消除隐患,揪出潜藏错误

高级调试器(通常也是最昂贵的)配备ETM跟踪连接器,可以获得大量跟踪数据,这是使用JTAG或SWD的标准跟踪无法实现的。

使用高级跟踪功能,开发人员可以将调试器与商业工具链(如适用于ARM的Keil MDK-PRO)连用,来监视系统中的每一行代码在测试期间是否得到执行。如下例所示,针对 ARM 的 Keil MDK-PRO 与跟踪调试器一并运行,检测到了那些代码行在测试期间得到执行(图 2)。这种跟踪对于需要 100% 测试覆盖的安全关键型系统非常有用。在未测试代码之处,可能会潜藏错误并在以后导致问题。

图 2:在调试模式下运行并对软件执行分支分析的用于 ARM 的 Keil MDK-PRO。左侧的绿色块表示在测试期间得到执行的代码行。(图片来源:Keil)

如果开发人员不想购买成熟的跟踪工具,则可以使用 SWD 进行跟踪。在这种情况下,开发人员可以选择使用如 Segger 的 SystemView 或 Percepio 的 Tracelyzer 之类软件工具将跟踪信息流传输到在 PC 上执行的应用程序。这些跟踪系统通常在 RTOS 中工作,并且需要几行代码来设置跟踪任务、捕获数据并将其发送到调试器,然后再发送到 PC 上。

显示软件跟踪的输出示例(图 3)。开发人员可以使用这些工具来检测诸如优先级转换、死锁、线程饥饿以及许多在复杂系统中可能遇到的其他问题。每个任务都有一条生命线,显示其何时就绪、何时执行、何时完成,以及在此期间可能发生的任何事件,例如发出和接收信号。

专业开发人员需要这样的细节,同样地,也要求他们使用的调试工具能够检索这类信息。

头像
得捷电子

评论已关闭。

Copyright©DigiKey Electronics