4

我听说可以使用内置的引导加载程序和您编写的内核为 PIC 微控制器编写操作系统。我还听说它必须是 RTOS。

  1. 这是真的?你真的可以为 PIC 制作一个操作系统内核(使用 C/C++)吗?
  2. 如果是 1,有没有这方面的例子?
  3. 如果是 1,您是否需要任何类型的软件来创建内核?
  4. Microchip 是唯一一家生产 PIC 微控制器的公司吗?
  5. PIC单片机可以在mac上编程吗?

谢谢!

4

5 回答 5

7
  1. 是的,您可以编写自己的内核(我自己编写了 2 个)。是的,您可以用 C 语言为 PIC 编写它。如果你想要先发制人的调度,那么在编写上下文切换时你将很难完全避免组装。另一方面,您可以很容易地纯粹用 C 编写一个协作内核(我自己已经这样做了)。(请注意,创建操作系统不是一项简单的任务......我会先用纯 C 语言让你的脚湿透,然后使用一两个操作系统,然后尝试创建一个。)

  2. FreeRTOS 就是一个很好的例子。它具有用于 PIC24F、PIC33F 和 PIC32MX 的预先存在的端口(即在 Explorer16 演示板上无需任何修改即可运行的 MPLAB 项目)(以及用于其他供应商设备的 20 多个其他官方端口)。支持PIC18F,但它并不漂亮......

  3. 您只需要 MPLAB 来创建内核(来自 Microchip)。它可以与 C 和汇编互换使用。根据处理器的不同,有免费版本的 C30 和 C32 编译器可与 MPLAB 一起使用。

  4. PIC 是一种微控制器,是 Microchip 的商标。许多其他公司制造微控制器并将其称为其他名称(例如 AVR、LPC、STM32)。

  5. 是的,新版本的 MPLAB X 在 Mac、Linux 和 Windows 上受支持。

于 2012-05-02T01:07:45.537 回答
4

我建议您查看FreeRTOS

于 2012-05-01T20:56:42.070 回答
2

我支持 FreeRTOS 的投票;我们一直在 PIC24 设计中使用它。该端口运行良好,并且不使用大量内存。

Microchip 支持许多第三方 RTOS。

大多数都有免费的演示项目,您可以下载这些项目,在 MPLAB 中构建,并非常轻松地在 Explorer16 板上编程。然后,您可以随心所欲地进行试验。

于 2012-05-02T12:29:58.423 回答
1

PIC 不是单一架构。PIC10 与 PIC24 有很大不同,尽管它们和它们之间的每个 PIC 都有一些共同点。另一方面,基于 MIPS 的 PIC32 是一个完全不同的架构。所以你必须清楚你指的是什么PIC。

PIC 上的操作系统不一定RTOS,但它非常适合使用设备的应用程序域,因此任何不具备实时能力的东西都会不太有用。

PIC 已经有许多RTOS 端口。

就开发方法而言,内核调度程序没有什么特别之处,C 语言和大多数情况下只需要一个小汇编程序 - 没有特殊工具。如果您愿意,您可以使用 100% 的汇编程序,这可能是获得最小/最快的代码所必需的,但前提是您的汇编程序知识比编译器的知识更好。

PIC 是 Microchip 特有的,尽管Parallax SX或多或少是一个克隆。例如,与 ARM 不同,Microchip 不会将该架构授权给第三方芯片制造商或 IP 提供商。在任何情况下,IMO 都不会想要它;有更好的架构。ARM Cortex-M 特别适合 RTOS 内核实现,而 AVR 的指令专为从 C 源代码高效转换而设计。即使是古老的 8051 也非常适合 RTOS 实施;它的八个寄存器组使上下文切换非常快(最多八个线程),并且与 ARM 一样,8051 架构设备可从多个制造商处获得。

于 2012-05-08T20:42:57.097 回答
0

PIC 18F CPU 的硬件栈只有 31 个字节长。其他 RAM 存储器不能用作堆栈。即使是 8051 IRAM 内存也有 128 字节的堆栈。我做过8051、ARM和PIC 18F的RTOS,感觉PIC 18F不太好。如果 PIC32 的 RAM(16K 到 64K)可以作为堆栈使用,如果堆栈指针为 16 位长,将比 PIC18F 类型好得多。有人知道吗?

于 2016-04-22T05:09:20.003 回答