- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于实时操作系统的程序设计技术;
汪 海 鹰
Email: cdiswhy@;课程回忆;
Windows CE3.0:一种针对小容量、移动式、智能化、32位、连接设备的模块化实时嵌入式操作系统;
Windows NT Embedded 4.0:一种针对基于PC体系结构解决方案的全功能嵌入式操作系统;
带有Server Appliance的Windows 2000:为建立能够利用Windows 2000强大功能的专用服务器设备,提供了一种快捷方式。;
原属于ISI公司产品,已被WindRiver公司兼并
模块化、高性能的实时嵌入式操作系统
Palm OS
3COM旗下的Palm Computing掌上电脑公司的产品
在PDA市场上占有很大的市场份额
Palm Os的特点
处理速度快
耗电量低,使用时间长
具备执行低内存需求应用程序的能力
与PC间的数据交换容易
应用软件的开发性高;
开发工具很多 GNU C、Codewarrior以及Pocket C;
专业程序设计者可使用C/C++来开发,而一般人则可使用程序产生器来完成;
Codewarrior是Palm程序设计领域中功能最强大的开发工具.;自由免费产品
开放源代码,不存在黑箱技术
内核小、功能强大、运行稳定、系统健壮、效率高
易于定制剪裁,在价格上极具有竞争力
不仅支持x86CPU,还可以支持其他数十种CPU芯片
有大量的且不断增加的开发工具
沿用Unix的发展方式,遵循国际标准,可以方便地获得众多第三方软硬件厂商的支持
内核的结构在网络方面是非常完整的。提供了对十兆、百兆、千兆以太网、无线网络、令牌网、光纤网、卫星等多种联网方式的全面支持;美国的Jean J. Labrosse先生业余时间,自己编写的。
1992年初发表了μC/OS ,1999年出版了介绍μC/OS-Ⅱ的书籍,为v2.0的版本。2002年出版了v2.52的版本。
2000年得到了美国联邦航空管理局对商用飞机的、符合RTCA DO178B标准的认证。
;公开的源代码:http://www.uCOS -II.com
可移植性:绝大部分代码使用ANSI C编写,可移植性较强
向上兼容:从μC/OS 升级到 μC/OS -Ⅱ很方便
可固化
可裁减
占先式:总是运行就绪条件下的优先级最高的任务;多任务:可以管理64个任务,其中保留8个给系统
可确定性:函数调度与任务的执行时间是可知的
任务栈:每个任务都有自己独立的栈,降低应用程序对RAM的要求
中断管理:中断可以使正在执行的程序挂起,终端嵌套层达255层
系统服务:提供很多的系统服务,邮箱、消息队列、信号量等;μC/OS-Ⅱ系统框图;
;;2.1 任务的基本概念;μC/OS-II的任务有两种:
用户任务:由应用程序设计者编写的任务
为解决应用问题而编写的
系统任务:系统提供的任务
为应用程序提供某种服务
μC/OS-II最多可以对64个任务进行管理;2.1.1 任务的状态;17;2.1.2 用户任务代码的一般结构;2、用户应用程序的一般结构;void MyTask3(void *pdata) //定义用户任务3
{
for(;;)
{
……
}
}
void main()
{
……
OSInit(); //初始化uC/OS-II
……
OSTaskCreate(MyTask1,……); //创建用户任务1
OSTaskCreate(MyTask2,……); //创建用户任务2
OSTaskCreate(MyTask3,……); //创建用户任务3
……
OSStart(); //启动任务
……
};2.1.3 系统任务;;2.1.4 任务的优先权及优先级别;;;2.2 任务堆栈;2.2.1 任务堆栈的创建;;堆栈的增长方向是随系统所使用的处理器不同而不同;2.2.2 任务堆栈的初始化;;2.3 任务控制块及任务控制块链表;2.3.1 任务控制块的结构;成员OSTCBStat用来放置任务的当前状态,可能的置值;2.3.2 任务控制块链表;2.3.3 任务控制块链表的管理;;2.4 任务就绪表及任务调度;2.4.1 任务就绪表的结构;40;如何根据优先级查找就绪表具体位置?
只用6位2进制数表示0~63,64个任务
用高3位表示OSRyGrp的具体数据位,即数组元素的下标;
低3位表示具体数组元素的具体数据位!
例:已知某一个已经就绪的任务的优先级别prio=49,试判断应该在就绪表的哪一位置上置1。
49的二进制形式其低6位为110001,于是可知应该在OSRdyTbl[6]的D1位上置1,同时要
文档评论(0)