MPLABX具有许多模拟功能,故障排除和错误测试功能,我在大学期间编写C代码时发现这些功能非常有用。现在,即使是工业和系统也更复杂,实时操作系统(RTOS)似乎很常见。
我还没有能够将这些令人敬畏的故障排除工具与RTOS集成在一起。是否有一个刚刚被忽视的快速解决方案?或者是否有一些更基本的关于这两个没有jive?
谢谢!
答案 0 :(得分:1)
MPLABX仅其IDE,问题在于其编译器。 XC16和XC32与包括FreeRTOS在内的一些流行的RTOS兼容,但是,XC8编译器无法处理复杂的RTOS。它是一个非常有问题的编译器,无法从高级指针表达式生成有效的汇编代码。
答案 1 :(得分:0)
在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与用于PIC32的MPLAB Harmony集成。
大多数RTOS / PIC组合可能过于简单和利基市场,市场太分散甚至无法理解,说实话,你可能不会错过太多。
无论IDE中的RTOS感知如何,您仍然可以期望正常的源级符号调试器功能,但只能看到当前线程的非静态局部变量;这并不像看起来那么严格;通过在线程交互的信令和接收端使用断点,您可以在大多数情况下充分调试线程交互行为。