许多嵌入式应用程序已达到复杂程度,要求它们使用实时操作系统 (RTOS) 来管理应用程序中的任务计时、内存和许多其他活动。使用 RTOS 可能是一个受欢迎的方法,有助于简化开发。然而,与此同时,RTOS 可能会增加复杂性和出错的可能性。嵌入式开发人员可以使用 RTOS 感知调试,用来提高他们对基于 RTOS 的应用程序的执行力。
RTOS 感知调试本质上是一个组件或插件,包含在开发人员的集成开发环境 (IDE) 中,它了解正在使用的 RTOS,并为开发人员提供有关 RTOS 和应用程序行为方式的有用信息。 RTOS 感知调试通常可以包括基本信息,例如:
任务或线程信息
RTOS 对象状态
内存利用率
定时器和系统统计
如果没有 RTOS 感知调试,开发人员可能不得不真正深入挖掘才能找到他们寻求的信息。
开发人员可用的信息通常因与 IDE 一起使用的 RTOS 而异。 一个非常常见和有用的功能是查看线程信息的能力,当嵌入式开发人员使用 RTOS 感知调试时,他们可以查看其线程状态信息以评估重要细节,例如:
线程优先级
线程名称
线程状态
堆栈大小和最大使用量
线程执行计数
在典型的应用程序中,开发人员通常必须手动监视线程堆栈,以确保它们不会溢出。 当开发人员能够将他们的 IDE 集成到他们的 RTOS 中时,他们可以直观地监控此信息并查看最大堆栈使用量是多少,并确定他们是否接近溢出,甚至是否已经显着超大堆栈。 下面是一个从使用 SEGGER EmbOS 的简单应用程序中提取的示例。
虽然显示的信息可能看起来很基本,但它可以为开发人员提供有关其应用程序行为方式的非凡见解。例如,我们可以清楚地看到每个线程将 512 个字节中的 140 个字节用于其堆栈。如果这是对这些线程的最坏情况测试,开发人员可能会决定将堆栈大小调整为 256,并在应用程序的其他地方使用内存。我们还可以看到,高优先级任务运行了 49 次,而低优先级任务运行了 13 次。嵌入式开发人员可以快速查看这些数字,如果我们期望 2:1 或 3:1 的比率,我们可以看出应用程序有些地方不太对劲。
如前所述,获取有关任务的信息实际上只是起点。一些 RTOS 和 IDE 允许开发人员查看更多信息。例如,与 Express Logic ThreadX RTOS 集成的 E2 Studio 可以显示线程信息,还允许开发人员检查 RTOS 对象和消息队列的状态、计数信号量、互斥体和事件标志。这使开发人员能够更深入地了解 RTOS 在应用程序中的行为,而不是传统上可供嵌入式开发人员使用的。下面可以看到一个简单的例子,也可以和上面的例子进行比较。
随着 RTOS 部署在越来越多的系统中,开发人员需要加快速度并开始利用可用于调试这些系统的新工具。 RTOS 感知调试只是一种这样的技术,嵌入式开发人员可以使用它从他们的系统中快速收集传统上需要大量工作的洞察力。确保将其包含在工具箱中,这样可以减少调试所花费的时间。