【发布时间】:2015-05-28 15:45:11
【问题描述】:
MPLABX 具有许多模拟功能、故障排除和错误测试功能,我在大学编写 C 代码时发现这些功能非常有用。现在我在工业界和系统更加复杂,实时操作系统(RTOS)似乎很常见。
我还不能将这些出色的故障排除工具与 RTOS 集成。是否有一个刚刚被忽视的快速修复?还是说这两者之间有什么更根本的东西?
谢谢!
【问题讨论】:
MPLABX 具有许多模拟功能、故障排除和错误测试功能,我在大学编写 C 代码时发现这些功能非常有用。现在我在工业界和系统更加复杂,实时操作系统(RTOS)似乎很常见。
我还不能将这些出色的故障排除工具与 RTOS 集成。是否有一个刚刚被忽视的快速修复?还是说这两者之间有什么更根本的东西?
谢谢!
【问题讨论】:
没有什么可以阻止 MPLABX 中的 RTOS 开发,缺少任何集成功能并不妨碍使用 RTOS 库;毕竟它只是一个像其他图书馆一样的图书馆。然而,RTOS 确实意味着稍微复杂的运行时和调试环境,并且在大多数情况下,当您遇到断点时,所有线程都会暂停。
您对 RTOS 集成有何期望?在提供这种整合的情况下,支持会有所不同;一些可能的功能包括:
当 RTOS 产品来自第三方供应商时,RTOS 集成必须通过两个供应商之间的双边协议,或者 IDE 供应商为此目的提供了文档化的插件架构,并且RTOS 供应商或其他方已选择支持它。有许多 RTOS 供应商和许多 IDE - 选择两个一起工作而不是限制您对可能不太适合您的应用程序或目标的产品的选择。
即使是具有某种程度的 RTOS 集成的 IDE 也很少实现线程级断点 - 它们需要内置到内核中的功能(在上下文切换上切换断点),而不仅仅是 IDE 或调试器。例如,VxWorks 支持这一点,但它不针对 PIC。
当 IDE、RTOS 和编译器通常来自同一供应商时,IDE 中的 RTOS 集成最为常见;例如 Mentor Graphics Nucleus、WindRiver 的 VxWorks、QSSL 的 QNX、TI 的 CCS 和 DSP/BIOS 或 Keil 的 uVision 和 RTX;没有一个是针对PIC的。 Xpress Logic 的 ThreadX 与 MPLAB Harmony for PIC32 集成。
大多数 RTOS / PIC 组合可能过于简单和小众,市场过于分散甚至无法打扰,老实说,您可能不会错过太多。
不管 IDE 中的 RTOS 意识如何,您仍然可以期待正常的源代码级符号调试器功能,但只能看到当前线程的非静态局部变量;这并不像看起来那么严格;通过在线程交互的信号端和接收端使用断点,您可以在大多数情况下充分调试线程交互行为。
【讨论】:
MPLABX 只是 IDE,问题在于编译器。 XC16 和 XC32 兼容一些流行的 RTOS,包括 FreeRTOS,但是,XC8 编译器无法处理复杂的 RTOS。它是一个非常有问题的编译器,无法从高级指针表达式生成有效的汇编代码。
【讨论】: