打印
[触控技术]

在51单片机上跑操作系统

[复制链接]
228|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pmp|  楼主 | 2024-1-15 15:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、什么是RTX51
RTX51是keil公司开发的一款实时操作系统,由汇编编写,其有两个版本:Tiny版本和Full版本。
其中Tiny版本采用分时调度的方式,占用资源小,可以运行在STC89C52RC这种只有256个字节的单片机上,而Full版本是抢占式调度,支持任务间通信和内存管理等功能,功能强但占用资源多,适合RAM更大的单片机上,不适合STC89C52RC单片机,所以这里我们只做Tiny版本的分享。
运行流程
RTX51 Tiny 本质上是一个实时操作系统(RTOS),他通过不同任务间的切换,允许单片机同时(实际上是伪并行)完成多个功能或者运行多个任务。在裸机编程中,我们往往会在没有RTOS的条件下实现一个特定的实时程序(在一个单循环中实现一种或多种功能,或者运行一个或多个任务);这样的设计往往会遇到资源分配、运行时间以及程序维护的问题,而像RTX51这样的RTOS就可以帮我们很大程度上解决这些问题,在程序结构中,我们创建多个任务死循环体,每个任务循环体运行很短的一段时间后就会释放CPU资源,给其他循环体(又称为任务)来运行,因为切换的时间极短,所以在我们感官上,这些循环体就是在同时运行!
学习方式
一个实时操作系统(RTOS) 可以更灵活有效地分配系统资源,让原本复杂的逻辑简单化,其程序设计使用标准C语言进行开发,并可以用Keil的编译器进行编译。因为其底层源码为汇编,学习原理比较复杂,所以我们只要学会如何操作对应的API函数就行,至于具体学习RTOS内核,则可以去找uC/OS、RT-Thread、FreeRTOS等实时系统学习。
具体参数
Tiny的具体资源参数
任务数目就是上面所提到的循环体数目。
CODE空间指的是ROM空间,STC89C52RC用有8KROM大小,900字节对他来说微不足道。
DATA空间指内部RAM,STC89C52RC有128个字节,XDATA指外部RAM,STC89C52RC有128个字节外部RAM。
定时器0用来做单片机的时间基准,用于Tiny内核做参考进行任务调度。
二、移植准备工作
既然是编写在STC89C52RC上移植RTOS,首先要准备的工具则是一个Keil软件和一个软件工程(默认已经完成)。这里我准备的一个LED例程程如下,编译通过。
找到Tiny源文件
右击keil,打开文件所在位置
返回此文件夹的上一级,找到C51文件夹,点击进去,找到如下文件路径
C51\RtxTiny2\SourceCode
复制配置文件(.a51)和库文件(.lib)到我们的工程下
复制到点灯例程,这里我新建了一个文件夹专门放源文件
在keil内添加文件
配置keil
在keil设置里面按下图配置选择RTX-Tiny系统
配置完成后我们在main函数复制以下内容
#include "RTX51TNY.h"/******************************************************************************** 函 数 名       : task_create* 函数功能     : 任务0* 输    入       : 无* 输    出      : 无*******************************************************************************/void task_create(void) _task_ 0{ while(1) {  ; }  }
编译一下,结果如下,无报错
我们系统的移植就完成了,下面就是根据项目需要对内容的具体修改以及调用API了
三、API介绍
在编译完成之后,我们点击RTX51TINY.H的头文件里面

使用特权

评论回复
沙发
olivem55arlowe| | 2024-2-3 07:56 | 只看该作者
可以选择专门为资源受限环境设计的实时操作系统(RTOS),例如Micrium的uC/OS-II的Tiny版本或Keil的RTX-Tiny

使用特权

评论回复
板凳
caigang13| | 2024-2-3 14:57 | 只看该作者
51单片机主要是内存太小了,很少跑系统。

使用特权

评论回复
地板
yorkbarney| | 2024-2-5 11:17 | 只看该作者
51单片机通常使用C或汇编语言进行编程。在选择操作系统时,需要确保其支持这些编程语言。

使用特权

评论回复
5
xiaoyaodz| | 2024-2-5 11:47 | 只看该作者
由于51单片机的资源有限,可能需要对操作系统进行裁剪,以适应硬件需求。这意味着需要移除一些不必要的功能和组件,以节省内存空间和处理资源。

使用特权

评论回复
6
mmbs| | 2024-2-5 12:34 | 只看该作者
评估51单片机的硬件资源,包括RAM、ROM、CPU速度等,以确保所选操作系统能够在此环境下运行。

使用特权

评论回复
7
zerorobert| | 2024-2-5 15:03 | 只看该作者
在51单片机上运行操作系统,需要一个合适的开发环境,包括编译器、调试器和仿真器等。这可能需要购买相应的开发工具包,或者使用第三方开发软件。

使用特权

评论回复
8
chenci2013| | 2024-2-6 15:14 | 只看该作者
一些实时操作系统(RTOS)如Contiki、TinyOS或者专门为51单片机设计的操作系统可能是合适的选择。

使用特权

评论回复
9
mmbs| | 2024-2-6 16:06 | 只看该作者
在编写代码时,需要尽可能优化内存使用。这可能包括使用位操作代替乘法,合并小的内存块来减少碎片,以及避免使用动态内存分配。

使用特权

评论回复
10
pl202| | 2024-2-6 20:24 | 只看该作者
需要对操作系统进行移植,即将其源代码调整以适应51单片机的特定硬件架构。这可能涉及到编写或修改底层驱动程序,以及调整操作系统的核心代码以适应51单片机的指令集和内存布局。

使用特权

评论回复
11
ccook11| | 2024-2-6 21:13 | 只看该作者
51单片机的处理能力和内存空间相对较小,因此在选择操作系统时,需要选择针对这类硬件优化的操作系統。例如,一些实时操作系统(RTOS)可以在此类硬件上运行良好。

使用特权

评论回复
12
averyleigh| | 2024-2-6 22:06 | 只看该作者
根据应用需求选择合适的操作系统。对于51单片机,可以选择uC/OS、Tiny51等轻量级操作系统。

使用特权

评论回复
13
modesty3jonah| | 2024-2-6 22:37 | 只看该作者
设计任务时,每个任务应该尽可能简单,避免长时间的计算或等待。任务切换时,保存和恢复寄存器状态所需的内存也要计算在内。

使用特权

评论回复
14
timfordlare| | 2024-2-6 23:08 | 只看该作者
必须使用专门为小型微控制器设计的轻量级RTOS,并对其进行必要的定制和优化。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

pmp

156

主题

7247

帖子

6

粉丝