我有一个AT90USB162 AVR芯片,我想运行多任务RTOS,所以我正在评估可能的RTOS与我的AVR芯片一起使用。 AVR支持哪些多任务RTOS?也许是QNX? (是否可以在AVR微芯片上运行QNX内核?)。
提前致谢。
答案 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)
您希望从操作系统中获得哪些功能?在8位设备上,期望基于优先级的先发制人调度和IPC是合理的。其他服务(如网络,文件系统,USB等)通常是RTOS供应商的附加服务,或者必须自己与第三方代码集成。
如果你想不花钱,显而易见的选择就是FreeRTOS。虽然在某些方面是非常规的,但即使在API级别相当传统,它也是称职的。在我对ARM的测试中,上下文切换时间较慢,其他内核我将其与我测试的其他内核进行了比较,但AVR可能不是这种情况,如果您需要实时响应时间,则只会出现问题。几微秒。 AVR具有相当大的寄存器集,因此上下文切换在任何情况下通常都很昂贵。
Atmel在http://www.atmel.com/products/AVR/thirdparty.asp#有一份第三方支持列表,包括RTOS。他们列出了以下内容:
我有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。它支持:
它是开源的,大约有1k行代码。相比之下,使用Eclipse构建AVR的演示项目会生成96到127 kb的.bin文件。当然,FreeRTOS具有更多功能(例如内存管理,包括动态内存)和更好的安全性。但是,如果您只需要多线程,则atomthreads很不错。
Here是多个RTOS之间的全面比较。