|
技术文库首页
|
编程
|
IC
|
晶体管
|
精解
|
中频
|
其它
|
电源
|
基础
|
电脑
|
无线
|
液晶
|
微波
|
空调
|
手机
|
|
热水器
|
电动车
|
LED屏
|
焊机
|
您现在的位置: 华玉生活网 >> 技术文库 >> 无线 >> 正文>> 繁體中文

实时操作系统μC/OS-II在AT89S52上的移植

1引言实时操作系统是为微处理器或微控制器管理设计的底层软件。在嵌人式应用中,使用实时操作系统的最主要目的是增加系统的可靠性,提高开发效率、缩短开发周期。μC/OS-II是一个可移植(portable)、可固化的(romable)和占先式的(preemptive)实时内核,最多可以管理64个任务(用户最多可以设计56任务)。μC/oS-II的源代码公开,绝大部分代码使用标准的ANSIC:书写,所以可以方便地移植到很多不同种类的处理器或控制器上。用户可以

1 引 言

实时操作系统是为微处理器或微控制器管理设计的底层软件。在嵌人式应用中,使用实时操作系统的最主要目的是增加系统的可靠性,提高开发效率、缩短开发周期。μC/OS-II是一个可移植(portable)、可固化的(romable)和占先式的(preemptive)实时内核,最多可以管理64个任务(用户最多可以设计56任务)。μC/oS-II的源代码公开,绝大部分代码使用标准的ANSIC:书写,所以可以方便地移植到很多不同种类的处理器或控制器上。用户可以免费从相关网站下载源代码。

目前,51系列的单片机在世界范围内有着广泛的应用。AT89S52是ATMEL公司利用51内核生产的一款FLASH型8位微控制器。控制器内部集成了8 kB的FLASH,256 B RAM,3个16位定时计数器,4组8位并行口,1个全双工可编程串行口。

笔者在用AT89S52单片机设计多路数据采集器时,在编译器KEIL环境下,成功地把μC/OS-II移植到AT89S52单片机上面。下面论述如何将μC/OS-II移植到AT89S52上。

2移植条件和必要步骤

μc/OS-II要求微处理器有堆栈指针、有CPU内部人栈与出栈指令以及一定容量的硬件堆栈。AT89S52能够满足这些要求。

μC/OS-II在设计的时候充分考虑了可移植性。移植工作包括在OS CPU.H中设置1个常量、声明几个数据类型、声明3个宏,在OS CPU C.C中写6个简单的C函数,以及在OS CPU A.ASM中写几个汇编语言函数。

3移植的主要过程

3.1 OS CPU.H的编写

OS CPU.H需要规定栈的增长方向。这里定义常量OS STK GROWTH为0,表明栈的增长方向向上。

用户要用到的变量类型应该在这里定义,同时必须注意KEIL对C语言的扩展。笔者只定义了以下几种变量类型。

最后还需要声明OS-TASK-SW()宏。

#define OS TASK SW() OSCtxSw()

3.2 OS CPU C.C中相关函数的编写

在(OS CPU C.C)中要写几个C函数(OS CPUC.C)。这几个C函数包括OSTaskStklnit(),OSTaskCreateHook(),OSTaskDelHook(),()STaskSwHook(),OSTaskStatHook(),OSTimeTickHook()。他们中除了OSTaskStkInit()外都是用户根据自己的需要定义的,可以没有任何内容。下面着重讨论OSTaskStklnit()。

函数OSTaskStklnit()由任务创建函数OSTaskCreate()或()STaskCreateExt(),在建立每个任务的时候初始化任务堆栈。初始化后的任务堆栈看起来就像刚刚发生中断一样。开始运行这个任务就是模拟中断返回,把初始化后堆栈的各个值恢复给各个寄存器。所以初始化任务堆栈就是在任务堆栈中模拟发生过1次中断后的堆栈结构,按照中断后的进栈次序预留各个寄存器的存储空间,还要在这些存储空间里面放上恰当的初值。用户堆栈初始化时从下向上依次保存:用户堆栈长度,PCL,PCH,PSW,ACC,B,DPL,DPH,R0,R1,R2,R3,R4,R5,R6,R7。

初始化任务栈的时候,需要传递任务代码起始指针(task)、参数指针(pdata)、任务堆栈顶端的地址(就是堆栈栈顶指针ptos)。任务栈初始化完成后,返回1个新的堆栈栈顶指针,OSTaskcreate()或OSTaskCreateExt()将他保存到OS TCB中去。OSTaskStklnit()的程序清单如下:

OS STK*OSTaskStklnit(void(*task)(void*pd),void*

ppdata,OS STK *ptos,INTl 6U opt)reentrant



3.3 OS_CPU_A.ASM中相关函数的编写

在OS CPU A.ASM中要写几个汇编语言的程序。这几个汇编程序包括OSStARtHIghRdy(),OSTIckISR(),OSCtxSw()和OSIntCtxSw()。限于篇幅,笔者在这里只给出了OaNtARtHIghRdy()和OSTIckISR()的程序代码。

这里先介绍4个宏:PUSHALL,POPALL,SAVESTFACK和RESTORESACK。PUSHALL的作用是把当前所有寄存器的内容以保存到系统栈中;POPALL的作用是在任务切换之前从系统堆栈恢复所有的寄存器中的内容;SAVESTACK的作用把系统栈的内容保存到任务栈(片外RAM);RESTORESTACK的作用把任务栈的内容复制到系统栈(片内)。在本设计中,由于AT89S52单片机的片内RAM有限,所以把任务栈设计在了片外。


OSStARtHIghRdy()的作用是使处于就绪状态的任务开始运行。在这个函数中调用钩子函数OSTaskSwHook(),这个函数可以让用户扩展系统的功能。然后获得优先级最高的任务的指针,根据这个指针从要开始运行任务的任务堆栈中恢复所有寄存器,恢复完后执行1次中断返回(AT89S52单片机没有直接改变PC的指令),程序就开始运行就绪状态任务了。OSStARtHIghRdy()的程序清单如下:


OSTIcKISR()μC/OS-Ⅱ中的时钟节拍中断服务程序。μC/OS-Ⅱ需要用户提供周期性信号源,用于实现时间延时和确认超时。μC/OS-Ⅱ中的时钟节拍服务是通过在中断服务子程序OSTIcklSR()中调用OSTimeTick()来实现的。OSTIcklSR()的程序清单如下:

OSCtxSw()用在任务级的切换场合。当需要从低优先级的任务切换到高优先级的任务时或当前任务自动放弃CPU时,先保存处理器的内容到当前任务的任务堆栈。再调用钩子函数OSTaskSwHook。然后从要开始任务的任务堆栈里恢复所有寄存器和PC的值,最后执行中断返回指令开始运行新的任务。

OSIntCtxSw()用于中断级的任务切换。在μC/OS-Ⅱ中,中断发生后,有时会激活优先级比被中断的任务更高的任务,此时就需要任务切换,将调用OSIntCtxSw()。OSIntCtxSw()是在OSIntExit()中被调用的。

4 结 语

在移植过程中有几个地方必须注意:由于AT89852单片机的程序存储器和数据存储器容量有限,所以必须扩展片外ROM和RAM,必须把系统和用户程序对ROM和RAM的需求量都考虑在内,并留有一定的余量。为了更好地利用系统功能,还必须对OS CFG.H中的常量进行相关的设置。随着嵌入式技术的不断发展,相信μC/OS-Ⅱ将有更加广泛的应用。


瑞达币购买
桂山秋竹_唐年桂2023年
桂北云雾图_唐年桂202

  • 扩展阅读
  • 上一个文章:
  • 【返回网站首页】 【返回无线】
  • 下一个文章:
  • 【字体: 】【】【发表评论】【加入收藏】【告诉好友】【打印此文
    文章 软件 电影 商品

    相关文章

    本站公告

    • 扫一扫,打赏给我们,谢谢!

      本站2016年12月16日起取消ruida.org.cn域名,该域名正式作废,该域名发布任何信息与本站无关。


      启用ruida.orghy928.net域名;

      瑞达网,瑞达科技网宣

    附页内镶内容
    健康养生 商场新品 股市K线、指标知识
     六种药酒配制法[11月7日]
     国公酒_散风祛湿,舒筋活络[3月8日]
     气血双补党参、麦冬、黄芪炖[11月29日]
     参桂再造丸_臂丛神经痛[11月29日]
     臂丛神经痛该怎样治疗[11月29日]
     舒筋络酊、百宝丹擦剂、参桂[11月29日]
     臂丛神经痛针灸治疗[11月29日]
     枳椇子_利水渗湿药[11月29日]
     三七、丹参、西洋参_颈椎病[8月17日]
     枸杞泡姜芽(嫩姜)的做法及功[5月20日]
     瑞达币购买
     桂山秋竹_唐年桂2023年新作品
     桂北云雾图_唐年桂2023年新作品
     广西2019年《高考指南》+《招生计
     金士科前置过滤器
     金牛前置过滤器
     USB口24系列编程器第二版含USB延
     液晶电视、液晶显示器图纸、维修
     彩电、显示器、DVD、EVD打印机等
     高清CRT彩电、显示器图纸刻录 4G
     [理财]各种短视频赚钱方法
     [会员]专业交易实战控制系统
     [理财]1分2分5分硬币回收价格表(20250123)
     [理财]1分2分5分硬币回收价格表(20230928)
     [理财]1分2分5分硬币回收价格表(20230624)
     [理财]2022 年新版1分2分5分硬币回收价格表…
     [理财]微信收款码如何开通商业版收信用卡费…
     [指标]R平方_基金指标
     [指标]标准差_基金指标
     [指标]平均回报_基金指标
    装修案例 网站建设 电器维修
     一般水电安装几个常用尺寸[1月29日]
     三相电表接法及度数的正确读…[5月8日]
     万能通用卧室房门锁更换步骤…[2月22日]
     乳胶漆的八大施工步骤及涂刷…[2月14日]
     旧墙翻新步骤及注意事项[2月14日]
     屋面防水施工工艺流程及注意…[1月16日]
     专利产品“防污吸气帽”新产…[1月8日]
     鲁班尺吉数对照表高清图片查…[10月29日]
     砂浆胶作用与危害[9月21日]
     4种处理水泥地面起砂方法[9月21日]
     网页html点击切换显示内容完[11月7日]
     动易SiteWeaver6.6网站管理系[7月31日]
     中国阴历农历JS支持 HTML网页[2月26日]
     java script error 容错处理[2月15日]
     几款还不错的网页特效显示日[2月14日]
     图片可以调大小的代码[12月14日]
     动易SW6.8网站系统改自适应支[11月20日]
     网站建设_套餐服务[12月4日]
     网站建设-费用明细[12月4日]
     不显示出来的代码[12月3日]
     联想 小新Air 14 2019笔记本…[6月15日]
     滚筒洗衣机脱水声音大原因及…[4月17日]
     智能电视不能开机强制恢复出…[1月16日]
     各大品牌智能电视机恢复出厂…[1月16日]
     洗衣机自己排水或不存水漏水…[6月15日]
     海尔冰箱出现-03还滴滴报警[5月29日]
     TCL电视通用教程安装教程[2月2日]
     TCL L43V7300A-3D液晶彩电出…[2月2日]
     先锋液晶电视LED-32B550无光…[1月17日]
     智能电视主板的应用与维修(…[1月11日]
    电器资料 下载 读书
     三个代码让电脑提速畅通秘籍[3月13日]
     视得安750D6对讲门铃工作原理…[9月13日]
     什么是量子芯片和光子芯片[5月14日]
     沃尔沃S90汽车遥控钥匙失灵的…[1月19日]
     LED显示屏瑞合信PLus单双色全…[12月22日]
     Windows 照片查看器无法显示…[8月6日]
     已经设置IE主页,但是打开还…[7月6日]
     如何调整空压机压力?空压机…[6月8日]
     剪映-视频编辑软件手机版使用…[5月28日]
     锂电池保护板作用及同口和分…[3月18日]
     [书籍]滕王阁序_原文_注释译文_白
     [书籍]《天工开物》明代宋应星初
     [电影]《抓娃娃》高清电影
     [联想]Lenovo S540-14API Compl 
     [书籍]《墨子》原文注释译文
     [LED条屏]瑞合信单双色/全彩控制系统
     [LED条屏]LED显示屏瑞合信手机APP6.
     [书籍]全本新注聊斋志异
     [书籍]广西2023年高考指南 招生计
     [书籍]个人防护手册(第二版)
     广西高考2024~2022年历史类([6月25日]
     凤阳花鼓[3月8日]
     《滕王阁序》[3月2日]
     卷一百二十八 艺文_杂记[2月24日]
     卷一百二十七 艺文_杂记[2月24日]
     卷一百二十六 艺文_国朝[2月24日]
     卷一百二十五 艺文_国朝[2月24日]
     卷一百二十四 艺文_五言排律[2月24日]
     卷一百二十三 艺文_历朝[2月24日]
     卷一百二十二 艺文_历朝[2月24日]
    珠宝玉器 在线电视台
     鸡血石与鸡血玉有什么区别[6月12日]
     鸡血玉[6月12日]
     鸡血石 (bloodstone)[6月12日]
     什么是莫桑石(Moissanite)[6月12日]
     可以戴钻石洗澡吗[1月22日]
     钻石如何保养才好呢?[1月22日]
     PT容易花的问题和钻戒保养问…[1月22日]
     切工 钻石的雕刻艺术[1月22日]
     如何保养好钻戒[1月22日]
     钻戒保养方法[1月22日]
     中央体育台
     中央新闻台
     宁夏卫视
     湖北卫视
     西藏卫视
     辽宁卫视
     河北卫视
     北京卫视
     政法频道
     农民频道
     湖南经视
     湖 南 台
     河南频道
     湖南卫视
     兵团卫视
     江苏卫视
     旅游卫视
     湖南都市
     七彩戏剧
     动漫秀场
     游戏风云
     法制天地
     魅力音乐
     新 娱 乐
     南 方 TV
     浙江卫视
     齐鲁频道
     山西影视
     东南卫视
     上海卫视
     贵州电视台
     重庆电视台
     山东卫视
     哪吒之魔童闹海《哪吒2》在线
     《抓娃娃》在线电影
     流浪地球2剧情介绍
     《万里归途》完整版
     《阿凡达2:水之道》耗资3.1
     2021港剧《梅艳芳》5集全.HD
     误杀2 -电影-完整版视频在线
     亲爱的/亲爱的小孩/打拐/家之
     《第一炉香》-电影-完整版视
     《扬名立万》-电影-完整版视
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论

    | 服务声明 | 充值中心| 华安五金电器 | 收费标准| 论坛| 留言| 实用查询| 会员中心| 下载帮助| 设为首页|

    技术支持:瑞达科技 即时交谈QQ:237013889 QQ群:13810759 E-Mail:237013889@qq.com
    非盈利网站,如有侵权,请来信来电告知,第一时间处理,谢谢!
    桂ICP备17008104号 华玉生活网网站统计
    tj