2

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

提前致谢。

4

5 回答 5

9

Atmel AT90USB162 是一个基于 RISC 的 8 位 AVR 微控制器——QNX 将是一个延伸,AVR 不在他们的BSP 目录中

Micrium通过 uC/OS-II 支持 AVR

FreeRTOS还支持 AVR

于 2011-10-25T03:49:20.403 回答
4

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

如果您正在寻找一个小型、抢先式多任务内核,您可能需要查看Quantum 平台——我已经在 AVR 和 MSP430 等资源非常有限的平台上使用过它。同事们也在 8 位 8051 和 HC11 变体上使用了它。

QP 的抢占式内核 (QK) 是一个运行到完成的内核,它减少了它的堆栈 (RAM) 要求并减少了上下文切换的资源密集型(没有 TCB,需要保存和恢复的上下文更少)。

有一个 QP/C 变体,它是“小”的,还有一个 QP-nano 变体,它是“小”。由于这些术语在没有数字的情况下绝对没有意义,因此 QP-nano 页面比较了内核类型及其典型大小。例如(提供的最低数字):典型的 RTOS、10K ROM、10K RAM;QP/C - 8K ROM,1K RAM;QP-nano - 2K ROM,100 字节 RAM。

好消息是所有代码都可用,因此您可以下载并尝试并亲自查看。

于 2011-10-26T16:37:05.090 回答
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 堆栈。
  • 赛格:embOS

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

于 2011-12-15T10:30:14.353 回答
0

虽然不是您的问题的直接答案,但作为资源有限的 8 位控制器,在提交到 OS 层之前考虑一下优势,只有当项目必须处理繁琐的主要子系统时,OS 层的优势才会受益代码和维护前。文件系统、图形、音频、网络等。

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

于 2017-01-30T14:57:28.823 回答
0

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

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

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

是多个 RTOS 之间的综合比较。

于 2020-04-29T13:35:23.610 回答