【问题标题】:PIC Microcontroller Operating System [closed]PIC微控制器操作系统[关闭]
【发布时间】:2012-05-01 20:54:31
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 您认为为什么需要在 PIC 等小型微控制器上安装操作系统?
  • @PaulR 这是一个我正在编写一个可以为小型设备做很多事情的小型操作系统的项目。 PIC 体积小、受支持、现代且价格低廉。
  • @PaulR - 作为一名专业的嵌入式程序员,我发现在 PIC 上使用 RTOS 几乎总是一个更好的主意。
  • @Adam:有趣 - 我原以为完整的 RTOS 对大多数 PIC 应用程序来说太过分了,但我可以看到小型多任务内核的价值。
  • @PaulR - 同意;有不同级别的 RTOS... FreeRTOS 是一个小型多任务内核,完全适合 PIC。我们发现它几乎总是比编写自己的调度程序要好,尤其是在 PIC24 及更高版本上。

标签: operating-system kernel pic bootloader rtos


【解决方案1】:
  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。

【讨论】:

  • +1 完全回答了我的问题!谢谢!
  • 另一个注意事项是,您可以使用其他 IDE 为 PIC 微控制器编程,例如 ccsinfo.com 中的 ccs c,这是 PIC 的最佳 IDE+C 编译器之一,或者您可以使用 mikroeletronika 中的那个支持 PIC 和 AVR 的 C、Pascal 或 Basic。
【解决方案2】:

我建议你查看FreeRTOS

【讨论】:

  • 我看到了那个并且想知道它。您将如何编译并将其保存到 PIC 中?我还需要 RTOS 支持检测按钮并确定是否按下了按钮
  • 查看“支持的 MCU”页面了解支持的工具。至于按钮——嗯,这将是你的工作来实现。
  • @Coder:典型的 RTOS 内核提供基于优先级的抢先线程调度、进程间通信以及通常用于中断处理的一些最小框架。通常不包括 I/O。在您的情况下,您可能让按钮输入触发中断,然后中断向线程发出事件信号。或者(效率较低)您可能有一个线程轮询输入并将事件发送到其他线程。
【解决方案3】:

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

Microchip supports many third party RTOSes.

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

【讨论】:

    【解决方案4】:

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

    PIC 上的操作系统必须和 RTOS,但它非常适合使用设备的应用程序域,因此任何不具备实时能力的东西都可以有点用处不大。

    PIC 已经有很多RTOS ports

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

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

    【讨论】:

    • 感谢您的评论。我决定基于 ARM Cortex-M 制作我的项目 FreeRTOS(根据您的建议)。
    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 2021-06-06
      相关资源
      最近更新 更多