当前位置:首页 > 单片机 > 单片机
[导读]引 言μC/OS-II作为一个嵌入式实时操作系统,自1992年以来,因其源代码的完全公开和优越性能,已为众多的爱好者和开发人员所了解并得到了广泛应用。μC/OS-II是一个占先式内核,执行时间可确定(即函数的调用与服

引 言

μC/OS-II作为一个嵌入式实时操作系统,自1992年以来,因其源代码的完全公开和优越性能,已为众多的爱好者和开发人员所了解并得到了广泛应用。μC/OS-II是一个占先式内核,执行时间可确定(即函数的调用与服务的时间是可知的,不依赖于应用程序的大小),目前最多支持64个任务(8个为系统保留),总是执行处于就绪态的优先级最高的任务。目前,51系列及其扩展型单片机仍在单片机应用系统占较大比重,因而详细介绍μC/OS-II在AT89C51上的移植实现过程,解决移植过程中出现的问题,有很大的实用意义。

1 KEIL C51编译器中函数再入栈的处理

(1)再入函数与再入栈

再入函数可以被递归调用,可同时被两个或多个进程调用。再入函数经常在实时应用或在中断和非中断必须共用一个函数的情况下被使用。编译时,在存储器模式的基础上为再入函数在内部或外部存储器中建立一个模拟堆栈区,称为再入栈,又可叫仿真堆栈,其增长方向是从上到下。

(2)具体实现过程

μC/OS-II是一个占先式内核,使用了较多的再入函数,用户只有通过C编译器来产生可再入代码。不同的编译器,对再入函数的仿真堆栈的处理不一样,如TC可以自动处理;而在单片机系统中应用较广的KEIL C51编译器中,要在startup.a51中进行设置。KEIL C51中,再入函数的返回地址保存在8051的硬件堆栈中,形参和局部变量必须保存在仿真堆栈中。在SMALL模式下,仿真栈与硬件堆栈分享共同的存储区,堆栈增长方向相反。而典型的51单片机真正的RAM只有128个字节,还有部分要用于位寻址区和工作寄存器,可用作仿真栈的空间有限。在这种方式下移植后,在中断嵌套或任务调用时系统会崩溃。因而,可以使用LARGE模式编译,这样,仿真栈就位于XDATA区,有充分的存储空间。编译前,要先在 startup.a51中修改设置。XBPSTACK=1,XBPSTACKTOP设为仿真栈的最高地址加1(对于64KB外RAM,最高为 0FFFFH,也可以保留部分地址用于外部I/O接口)。

2 时钟节拍初始化

时钟节拍是μC/OS-II运行的基础,其原理就是利用定时器中断,每隔一个时钟节拍中断一次,在发生中断时,内核判断是否进行任务切换或者别的操作。节拍率一般在10~100次之间,越高则系统的额外负荷就越重。可以使用AT89C51的定时器T0中断来实现。
void TimerInitiate(unsigned char Crystal,unsigned char Frequence)
{ //Crystal 晶振 Frenquence 时钟节拍率
unsigned long temporary=0;
temporary=1000000/(12*Frequence);
temporary=65535-Crystal*temporary;
TMOD=(TMOD & 0XF0) | 0X01; /* Timer 0工作在方式1*/
TL0=(unsigned char )temporary ;
TH0=(unsigned char )(temporary>>8);
TR0=1;
ET0=1;
}

初始化定时器中断必须紧跟在多任务系统启动之后,一般放在第一个任务中。

在Keil C51编译器中,代码优化级别设为9级,编译后,本程序占用的RAM和ROM空间约为:DATA 67.1 XDATA 732 CODE 8113 (字节)。基本上要使用外部的数据和程序存储器。

在存储器容量许可的条件下,可以加入更多μC/OS-II提供的系统功能,如邮箱、消息序列等。

结 语

μC/OS-II以其良好的稳定性与可靠性、实用的系统服务和完全公开的源代码,推动了实时操作系统的应用,也使应用系统的功能更加完善。
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

μC/OS-II以其可移植、可固化、可裁剪的特性著称,适用于需要实时性的项目。

关键字: μC/OS-II

北京——2024年10月29日 亚马逊云科技日前宣布,通过与光环新网与西云数据的紧密合作,在亚马逊云科技(北京)区域和(宁夏)区域推出Amazon Lambda SnapStart功能,将基于Java Lambda函数的...

关键字: 函数 数据处理

北京2024年10月29日 /美通社/ -- 亚马逊云科技日前宣布,通过与光环新网与西云数据的紧密合作,在亚马逊云科技(北京)区域和(宁夏)区域推出Amazon Lambda SnapStart功能,将基于Java La...

关键字: START 亚马逊 PS 函数

关于数据分析与可视化,以下介绍Pandas读取数据以及保存数据的方法,毕竟我们很多时候需要读取各种形式的数据,以及将我们需要将所做的统计分析保存成特定的格式。

关键字: 函数 Panda

深圳2024年8月15日 /美通社/ -- 近日,知名量化交易平台水母量化正式推出了突破性的轮动交易策略回测功能,目前已进入公测阶段。该功能实现了从策略设计、历史回测到实盘自动交易一体化流程,帮用户解决了策略验证难、交易...

关键字: 编程 仿真 函数 开源

加利福尼亚库尔弗城2024年7月16日 /美通社/ -- Snail, Inc. (纳斯达克股票代码: SNAL) (以下简称"蜗牛游戏"或"公司")是一家领先的全球独立开发商和发行商,专注于互动数字娱乐,今日宣布方舟:...

关键字: iOS 安卓系统 移植 移动平台

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。

关键字: python 函数 对象编程

测试数据综合分析的绝佳工具,深受工程师和研究员欢迎

关键字: 后处理分析软件 向导 函数

上海2023年2月16日 /美通社/ -- 近日,诺华中国宣布与中国红十字基金会正式启动"中国地中海贫血救助项目"广西地区专项援助,将在当地定向资助困难家庭地中海贫血患儿,同时通过相关医生培...

关键字: BSP 控制 移植 大众

北京2022年12月7日 /美通社/ -- 2022年12月3日,由高博医学(血液病)广东研究中心南方春富(儿童)血液病研究院、南方医科大学南方医院共同主办的高博医学论坛·华南造血干细胞移植论坛通过线下线上...

关键字: 移植 HD PID 血细胞
关闭