您的位置 首页 知识

怎么选用51单片机开发操作系统

如何采用51单片机开发操作体系-51系列单片机只要128个或许256个字节的片内RAM空间,略微不留意就用完了。假如操作体系把片内的RAM运用得所剩无几,那用户的运用程序用啥? 假如说用户的程序能够把变量界说在片外RAM中的话,那么体系的硬件仓库放在哪? 尽人皆知,51系列单片机的硬件仓库不能放在片外,所以要在51系列单片机上开发操作体系的话就要少用它的片内RAM。

1,操作系统软件的代码不能太长

因为51系列单片机的系统硬件本钱相对缺少,假设操作系统的代码比运用程序的代码还大,甚至使得用户的运用程序要考虑给操作系统让出本钱,这样的操作系统即使功用再完善,也不实用。现在盛行的嵌入式操作系统就不能运用于51系列单片机,原因是代码太大。开发一个5000行的依据裸机的运用程序也便是占用 7~8KB ROM空间,一个操作系统用掉了几十KB,占空间不算,实时性的优势恐怕也没了(履行这么多的指令要时刻)。所以,μCOS的作者也不支持将他的代码移植到51系列单片机上,这也就不奇怪了。

2,操作系统不能占用太多的片内RAM空间

51系列单片机只需128个或许256个字节的片内RAM空间,稍微不留心就用完了。假设操作系统把片内的RAM运用得所剩无几,那用户的运用程序用啥? 假设说用户的程序可以把变量定义在片外RAM中的话,那么系统的硬件库房放在哪? 尽人皆知,51系列单片机的硬件库房不能放在片外,所以要在51系列单片机上开发操作系统的话就要少用它的片内RAM。但是不必片内RAM是办不到的,因为操作系统也要传递参数,也要运用库房。C51单片机的C函数传递参数是通过寄存器和存储器的,不能通过库房。但是可以通过一些方法使得操作系统代码少用片内RAM。


 

3,处理好函数的重入疑问

开发实时占先式的操作系统,可重入函数是非用不可的。可重入函数可以被一个以上的任务调用,而不必担忧数据被损坏。可重入函数任何时候都可以被连续,一段时刻后又可以工作,而运用数据不会丢掉。使得函数具有可重入性有必要使得函数可以满足下列三个条件之一:

① 不运用同享本钱;

② 在运用同享本钱时关连续,运用结束后再开连续;

③ 在运用同享本钱时恳求信号量,运用完后开释信号量。

这些条件在规范C中编程很简单结束,但是在Keil C51中就比较费事。因为规范C是把局部变量分配到用户库房中(动态分配),而Keil C51将局部变量分配到寄存器或内存固定地址(静态分配),并通过变量掩盖剖析的方法,使多个函数的局部变量运用相同的内存地址以削减内存占用。在 Keil C51中,假设局部变量分配在寄存器中还好些,假设局部变量分配在内存中就比较费事。

4,库房的分配疑问

占先式操作系统的首要任务便是进行任务的调度,通过对任务的实时调度来结束系统的功用。任务调度过程中,不可避免的发生任务对系统本钱的抢占疑问,因为系统中 CPU只需一个,而每个任务都认为自个是CPU的肯定占用者,每一个任务都是一个死循环。任务间进行切换的依据便是各自的优先级,一个高优先级的任务可以通过任务调度函数或许连续退出函数等来连续正在工作的任务。被连续的任务只需自个的优先级在其时组织稳当任务表中最高时,才能从被连续处持续工作。这就需求为每个任务分配任务库房,来保存任务的环境变量。因为每个任务在不相同时刻被连续时需求保存的环境变量数目不相同,所以任务库房空间的分配疑问也是一门学问。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/345563.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部