AVR上的多任务RTOS

时间:2011-10-25 03:27:18

标签: real-time avr rtos avr-gcc qnx

我有一个AT90USB162 AVR芯片,我想运行多任务RTOS,所以我正在评估可能的RTOS与我的AVR芯片一起使用。 AVR支持哪些多任务RTOS?也许是QNX? (是否可以在AVR微芯片上运行QNX内核?)。

提前致谢。

5 个答案:

答案 0 :(得分:9)

Atmel AT90USB162是一款基于8位AVR RISC的微控制器 - QNX可以延伸,而AVR不在他们的BSP directory

Micrium支持使用uC / OS-II的AVR

FreeRTOS也支持AVR

答案 1 :(得分:4)

当你说“RTOS”时,我认为你的意思是先发制人的多任务?我猜(因为这是一个8位AVR)你不需要文件系统,网络堆栈等?

如果您正在寻找一个小型的,先发制人的多任务内核,您可能需要查看 Quantum Platform - 我在资源非常有限的情况下使用它像AVR和AV的平台MSP430。同事们也在8位8051和HC11变体上使用过它。

QP的抢占式内核(QK)是一个运行完成内核,它可以降低其堆栈(RAM)要求,并使上下文切换资源消耗更少(没有TCB,更少的上下文来保存和恢复)。 p>

有一种“小”的QP / C变体,以及“微小”的QP-nano变体。由于这些术语绝对毫无意义没有数字, the QP-nano page 会对内核类型进行比较。它们的典型尺寸。例如(提供的最小数字):典型的RTOS,10K ROM,10K RAM; QP / C - 8K ROM,1K RAM; QP-nano - 2K ROM,100字节RAM。

好处是所有代码都可用,因此您可以下载&尝试一下&亲自看看。

答案 2 :(得分:3)

QNX - 没有机会! QNX是一款相对较大且复杂的操作系统,适用于带MMU的32位设备,不仅提供内核级调度,还提供文件系统,容错网络,POSIX API,GUI等。其最重要的特性是支持内存保护 - 每个线程运行在其自己的虚拟内存段中,因此只能在具有适当硬件支持的设备上运行。

您希望从操作系统中获得哪些功能?在8位设备上,期望基于优先级的先发制人调度和IPC是合理的。其他服务(如网络,文件系统,USB等)通常是RTOS供应商的附加服务,或者必须自己与第三方代码集成。

如果你想不花钱,显而易见的选择就是FreeRTOS。虽然在某些方面是非常规的,但即使在API级别相当传统,它也是称职的。在我对ARM的测试中,上下文切换时间较慢,其他内核我将其与我测试的其他内核进行了比较,但AVR可能不是这种情况,如果您需要实时响应时间,则只会出现问题。几微秒。 AVR具有相当大的寄存器集,因此上下文切换在任何情况下通常都很昂贵。

Atmel在http://www.atmel.com/products/AVR/thirdparty.asp#有一份第三方支持列表,包括RTOS。他们列出了以下内容:

  • CMX Systems,Inc:CMX-RTX,CMX-Tiny +(附加组件:CMX-MicroNet,CMX-FFS)
  • FreeRTOS.org:FreeRTOS
  • Micriμm,Inc:μC/ OS-II
  • Nut / OS:具有Posix类API的RTOS和TCP / IP堆栈。
  • SEGGER:embOS

我有CMX-Tiny +(在dsPIC上),embOS(在ARM上)和FreeRTOS(在ARM上)和uC / OS-II上的个人经验。它们都是胜任的,uC-OS-II有一个小的限制,即只允许每个优先级的单个任务(没有循环调度),但因此可能更快的上下文切换。在embOS的情况下,我已成功集成第三方文件系统和USB代码,尽管供应商也有自己的附加组件。

答案 3 :(得分:0)

虽然不能直接回答你的问题,作为资源有限的8位控制器,想一想在提交操作系统层之前的优势,只有当项目必须处理主要的子系统时,操作系统层的优势才会受益。编码和维护ex很繁琐。文件系统,图形,音频,网络等。

由于大多数供应商提供集成开发环境和标准库以及更多,您可以使用C,C ++等高级语言编写代码,因为简单的控制任务坚持您自己的框架工作将更易于管理

答案 4 :(得分:0)

Athomthreads是AVR支持的轻量级RTOS。它支持:

  • 具有255个优先级的抢占式调度程序
  • 具有相同优先级的轮循
  • 信号量
  • Mutex
  • 消息队列
  • 计时器

它是开源的,大约有1k行代码。相比之下,使用Eclipse构建AVR的演示项目会生成96到127 kb的.bin文件。当然,FreeRTOS具有更多功能(例如内存管理,包括动态内存)和更好的安全性。但是,如果您只需要多线程,则atomthreads很不错。

Here是多个RTOS之间的全面比较。