学习调试实时嵌入式软件

原文:Learn to debug real-time embedded software
作者:Jacob Beningo
译者:刘翔宇 审校:刘帝伟
责编:周建丁([email protected]

嵌入式软件开发人员面临的最大的挑战就是调试软件。嵌入式系统现在变得非常复杂,上面运行着实时操作系统、连接栈、USB,以及在涉及到应用软件之前的各种系统安全代码。然而我碰到的许多工程师仍然使用断点来调试软件,而没有使用现在许多现代化和先进的技术。出于这个原因,我提供了一个学习现代化调试技术的机会。

我在DesignNews Continuing Education Center(CEC)上开设了一门学习调试实时嵌入式软件的课程。7月11日至15日课程免费开放,将会通过实用的方法来教开发者如何调试实时嵌入式软件。

为什么要参加课程呢?阅读调试技术是一种体验,但是实际运用这些技术又是一种完全不同的经历。为了体验这些技术可以如何被运用,课程里将会使用一块NXP K64F Freedom电路板,上面有一个120MHz、1MB闪存、256KB RAM的ARM Cortex-M4处理器。这块K64F板带有Arduino R3接头,有着许多功能,比如以太网、加速传感器、SB卡插槽、摄像头扩展头、板载调试器、LED等。只需35美元,非常廉价,但它却是用于调试的利器。

学习调试实时嵌入式软件

这门课程开始会教学生如何设置开发包和工具链。因为开发包有强大的ARM M4板载处理器,课程也会快速向学生介绍FreeRTOS,以及如何快速地将它部署到嵌入式系统中。这些设置将作为各种开发技术的基础和基本框架。

在进入高级主题之前,我们将测验传统的技术,比如使用printfassert。开发者通常会将printf运用到MCU外围设备UART上,如果不小心处理的话,系统的实时性能可能会受到影响。我们将研究如何减少printf对实时性能的影响,以及使用内置核心功能来将此影响降至最低。

调试嵌入式系统有时需要你非常了解处理器,尤其是芯片中的故障。我们将会深入了解ARM Cortex-My的异常以及调试软件时可用的调试模块及硬件。这些硬件包括串行线调试(SWD)和串行线输出(SWO),它们已经是不可或缺的了。

这门课程最精彩的部分无疑是实时跟踪工具的设置和实验,比如System Viewer和Tracealyzer。它们这种能够形象化展示嵌入式系统如何工作,以及获取信息的能力,比如任务执行时间最小值、平均值、最大值,是前所未有的。我们将会探索这些工具如何工作,以及开发人员如何使用这些技术获得最大效益。

调试嵌入式系统是设计周期中不可或缺的环节,即使有细心的设计和实现。了解如何快速高效地调试系统,可以节省开发成本,缩短产品上市时间。你使用什么技术来调试嵌入式系统呢?

在DesignNews.com上注册Jacob的“调试实时嵌入式系统”DesignNews CEC 课程,包括向作者提问。如果你不能参加在线课程,你可以在后期的引用中进行学习。