被称为 8051 的 RTOS 的基本要求

Posted

技术标签:

【中文标题】被称为 8051 的 RTOS 的基本要求【英文标题】:basic requirements to be called RTOS for 8051 【发布时间】:2013-01-15 22:36:58 【问题描述】:

我想为 8051 制作一个 RTOS,并且非常困惑在 8051 中制作一个操作系统应该遵循什么最低要求,因为在 RAM 和 ROM 的情况下 8051 的资源非常有限。这只是分配类型的问题,但我真的很困惑,因为我们为 8051 制作软件,它们不是操作系统吗?哪些功能将微控制器的正常常规编码与 RTOS 区分开来?请帮忙谢谢

【问题讨论】:

操作系统不必是几兆字节的庞然大物,它可以定义为a collection of software that manages computer hardware resources and provides common services for computer programs。看看Femto OS,它的占用空间只有几 k,设计用于尺寸与您的 8051 相当的微控制器 非常感谢,我认为 Femto OS 正是我想要的。我正在经历这个。谢谢 很高兴能帮上忙,祝你好运! @fvu:您的评论看起来很像答案,请考虑将其发布。 【参考方案1】:

典型的 RTOS 至少提供以下功能:

确定性任务调度 任务同步机制 进程间通信机制 定时器服务

RTOS 调度程序通常基于优先级和抢占式 - 准备运行的最高优先级任务将运行,而不管低优先级任务的状态如何。

Jack Ganssle on RTOS Fundamentals on TechOnline 的介绍可能对您有用。它由 Micrium 赞助并使用 uC/OS-II 作为案例研究,但它普遍适用于大部分。

特别是 8051 能够特别高效地进行任务上下文切换,因为它有多个寄存器组,可通过一条指令进行切换。

【讨论】:

@califford.... 感谢您解释最低限度的任务,还有一件事,任务呢?它应该被硬编码到 RTOS 代码中还是应该留给用户在运行时编写他们的任务?这让我现在很困惑 @AbdulRehman:我不确定您的意思,但 RTOS 提供了创建和安排任务的方法,但您编写任务。通常,这将是一个无限循环等待某个调度事件(消息、计时器、信号量等)然后处理它的函数。 “创建任务”函数将把一个指向您的任务函数的指针作为其参数之一。【参考方案2】:

RTOS 的functionality 很大程度上取决于它以确定性和及时的方式执行特定工作负载的能力。这些通常包括线程、同步操作和具有专门算法的调度程序,旨在以确定性方式执行线程。

在 8051 中实现这一点将是一项艰巨的任务(由于处理器的硬件架构,甚至可能是不可能的)。此类 uC 上更常见的方法是使用Cyclic Executive 和中断处理程序的优先级嵌套来强制执行优先级。您可以将这种方法视为某种 RTOS。

【讨论】:

感谢您向我介绍 Cyclic Executive 这个词,实际上我想知道循环执行和 OS 方法之间的区别。 相反,8051 上的 RTOS 是完全可能的。它的多个可切换寄存器组使上下文切换非常简单和快速。大约 1990 年,我第一次在 8051 上使用 RTOS(Intel iDCX-51)。FreeRTOS 和 uC/OS-II 都有 8051 端口。 @Clifford - 堆栈空间,如“可能只有几个线程不够用,除非您在每次上下文更改时将堆栈换出到 xdata 中”。 @MartinJames 我似乎记得我过去为 Siemens C165 uC 构建的 RTOS 上的一个非常相似的安排。有点搞砸了从中断发出 RT 线程信号的延迟! @MartinJames:我并没有说它没有受到严格的限制,只是说它并非不可能甚至不切实际并且完全适合某些任务。它当然不会是我的 RTOS 的首选,但是当我使用 iDCX-51(回溯)时,我认为它是一个 8044(带有 BITBUS 接口的 '51),我们有一个用于 BITBUS 的 tx 和 rx 任务,“主处理器的双端口 RAM 接口的输入和输出任务。

以上是关于被称为 8051 的 RTOS 的基本要求的主要内容,如果未能解决你的问题,请参考以下文章

基于8051单片机实现电子时钟+数字秒表设计

串口中断优先级最高的是

8051的中断控制响应时间一般为多少个机器周期

单片机就那点资源,为啥还要用RTOS?

RTOS训练营站在更高的角度学习C语言

RTOS训练营站在更高的角度学习C语言