PIC微控制器操作系统

4

听说可以使用内置的引导加载程序和自己编写的内核为PIC微控制器编写操作系统,而且必须是实时操作系统。

  1. 这是真的吗?您是否可以用C/C++为PIC编写操作系统内核?
  2. 如果问题1的答案是肯定的,是否有任何示例可供参考?
  3. 如果问题1的答案是肯定的,是否需要任何类型的软件来创建内核?
  4. Microchip是唯一生产PIC微控制器的公司吗?
  5. PIC微控制器能否在Mac上进行编程?

谢谢!


1
你认为为什么需要在像PIC这样的小型微控制器上使用操作系统? - Paul R
@PaulR 这是一个项目,我正在编写一个可以为小型设备执行多项任务的小型操作系统。PIC微控制器小巧、常用、现代且价格低廉。 - Coder404
作为一名专业的嵌入式程序员,我发现在PIC上使用RTOS几乎总是比不使用更好的选择。 - Adam Casey
@Adam:有趣 - 我本以为对于大多数PIC应用程序来说,完整的RTOS会过度设计,但我可以看到小型多任务内核的价值。 - Paul R
1
@PaulR - 我同意;有不同级别的RTOS... FreeRTOS是一个小型的多任务内核,在PIC上非常适合。我们发现,它几乎总是比编写自己的调度程序更好,特别是在PIC24及以上版本上。 - Adam Casey
有一种基于微控制器的计算机叫做Maximite,它使用PIC32芯片。它附带了一个嵌入式BASIC解释器,称为MMBasic - Chris Tusa
5个回答

7
  1. 是的,你可以编写自己的内核(我自己写过两个)。如果你想要抢占式调度,则在编写上下文切换时完全避免使用汇编将非常困难。另一方面,你可以轻松地纯粹使用C编写协作内核(我自己也这样做过)。(请注意,创建操作系统并不是一项简单的任务...我建议先熟悉纯C,然后使用一个或两个操作系统,再尝试创建一个。)
  2. FreeRTOS是一个很好的例子。它有现成的端口(即在Explorer16演示板上无需修改即可运行的MPLAB项目)适用于PIC24F、PIC33F和PIC32MX(以及其他20多个官方端口适用于其他供应商的设备)。虽然PIC18F也被支持,但情况并不理想...
  3. 你只需要MPLAB来创建内核(Microchip提供免费版本)。它可以与C和汇编语言相互配合使用。根据处理器的不同,MPLAB还有免费版本的C30和C32编译器。
  4. PIC是一种微控制器,是Microchip的商标。许多其他公司生产微控制器并称之为其他名称(例如AVR、LPC、STM32等)。
  5. 是的,MPLAB X的新版本支持Mac、Linux和Windows。

完整回答我的问题+1!谢谢! - Coder404
另外需要注意的是,您可以使用其他IDE来为PIC微控制器编程,例如ccsinfo.com提供的CCS C,这是PIC最好的IDE+C编译器之一;或者您可以使用来自mikroeletronika的IDE,它支持C、Pascal或Basic用于PIC和AVR。 - Diego Garcia

4

我看到了这个问题,想知道如何编译并将其保存到PIC中?此外,我需要RTOS支持检测按钮并确定是否按下按钮。 - Coder404
查看“支持的MCUs”页面以了解支持的工具。至于按钮 - 这将是您需要实现的任务。 - Oliver
请参见:http://www.freertos.org/a00090.html#MICROCHIP - Paul R
@程序员:典型的RTOS内核提供基于优先级的抢占式线程调度、进程间通信,通常还提供一些最小化的中断处理框架。通常不包括I/O。在您的情况下,您可以让按钮输入触发中断,然后中断向线程发送事件。或者(效率较低),您可以有一个线程轮询输入并将事件发送给其他线程。 - Clifford

2
我赞同使用FreeRTOS;我们在PIC24设计中一直使用它。该移植工作良好,不会占用太多内存。 Microchip支持许多第三方RTOS。 大多数都有免费的演示项目可供下载,在MPLAB中构建,并非常容易地编程到Explorer16板上。然后,您可以尽情进行实验。

1

PIC 不是单一的架构。PIC10 与 PIC24 差别很大,尽管它们和每个 PIC 之间都有一些共同点。另一方面,基于 MIPS 的 PIC32 是完全不同的架构。因此,您必须清楚自己所指的是哪种 PIC。

在 PIC 上运行的操作系统不必是实时操作系统(RTOS),但这将非常适合设备所用的应用领域,因此任何不能实时处理的东西都会减弱其实用价值。

已经有许多适用于 PIC 的 RTOS 端口

内核调度程序没有特殊的开发方法,在大多数情况下,只需要 C 和一些汇编语言即可 - 没有特殊工具。如果您希望获得最小/最快的代码,则可以使用 100% 汇编语言,但前提是您的汇编语言知识比编译器更好。

PIC是Microchip专有的,虽然Parallax SX更或多或少是一个克隆。与ARM不同,Microchip不会将架构授权给第三方芯片制造商或IP提供商。无论如何,在我看来,没有人会想要它;还有更好的架构。ARM Cortex-M特别适合RTOS内核实现,AVR指令旨在从C源代码进行高效转换。即使是受人尊敬的8051也非常适合RTOS实现;其八个寄存器库使上下文切换非常快(对于最多八个线程),并且像ARM一样,8051架构设备可从多个制造商获得。


谢谢您的评论。我已决定基于ARM Cortex-M(由于您的建议)开发我的项目FreeRTOS。 - Coder404

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接