为什么MPLAB X与RTOS不兼容

时间:2015-05-28 15:45:12

标签: c rtos mplab

MPLABX具有许多模拟功能,故障排除和错误测试功能,我在大学期间编写C代码时发现这些功能非常有用。现在,即使是工业和系统也更复杂,实时操作系统(RTOS)似乎很常见。

我还没有能够将这些令人敬畏的故障排除工具与RTOS集成在一起。是否有一个刚刚被忽视的快速解决方案?或者是否有一些更基本的关于这两个没有jive?

谢谢!

2 个答案:

答案 0 :(得分:1)

MPLABX仅其IDE,问题在于其编译器。 XC16和XC32与包括FreeRTOS在内的一些流行的RTOS兼容,但是,XC8编译器无法处理复杂的RTOS。它是一个非常有问题的编译器,无法从高级指针表达式生成有效的汇编代码。

答案 1 :(得分:0)

在MPLABX中没有什么可以阻止RTOS开发,缺少任何集成功能并不妨碍使用RTOS库;毕竟它只是一个像其他任何图书馆一样的图书馆。然而,RTOS所暗示的是一个稍微复杂的运行时和调试环境,并且在大多数情况下,当你遇到一个断点所有线程都被挂起。

您对RTOS整合的期望是什么?在提供这种整合的情况下,支持各不相同;一些可能的功能包括:

  • 查看线程调用堆栈
  • 查看多个线程的状态,
  • 查看状态内核对象,
  • 支持线程的调试和断点,
  • 每线程CPU负载统计信息
  • 线程执行和上下文切换的时序图。

当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与用于PIC32的MPLAB Harmony集成。

大多数RTOS / PIC组合可能过于简单和利基市场,市场太分散甚至无法理解,说实话,你可能不会错过太多。

无论IDE中的RTOS感知如何,您仍然可以期望正常的源级符号调试器功能,但只能看到当前线程的非静态局部变量;这并不像看起来那么严格;通过在线程交互的信令和接收端使用断点,您可以在大多数情况下充分调试线程交互行为。