uC-OS-II学习指导书(精)

uC-OS-II学习指导书(精)

ID:46613500

大小:79.00 KB

页数:6页

时间:2019-11-26

uC-OS-II学习指导书(精)_第1页
uC-OS-II学习指导书(精)_第2页
uC-OS-II学习指导书(精)_第3页
uC-OS-II学习指导书(精)_第4页
uC-OS-II学习指导书(精)_第5页
资源描述:

《uC-OS-II学习指导书(精)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、UCOS初级程序员指南(转)本文面向首次接触UC/0S-II的程序员,为他们介绍一下这个系统的一些基木特征和编程上的注意事项,并介绍几个值得了解的API。木文作者已经成功的将uC/OS-II移植到几种不同CPU之上。包括EPSONS1C33和SunplusunSP?等,积累了丰富的经验,现在愿意和朋友们分亨这些经历。希望木文的资料对于希望使用这个系统来开发的朋友冇所帮助,作者乐意与您分享任何您成功的喜悦。ThispassageiswrittenforthebasicprogrammerswhoarefirstdevelopedwiththeuC/OS-II

2、realtimeOS。Iwilltalkaboutthebasicstructureofthissystem。AndIwilldiscusshowtousesomeoftheusefulAPI□Iwillalsodiscusstheimpofthemutilty-taskinginuC/OSTI。(—)uC/OS-11简介uC/OS-II是一-种基于优先级的可抢先的硬实时内核。白从92年发布以來,在世界各地都获得了广泛的应用,它是一种专门为嵌入式设备设计的内核,目前已经被移植到40多种不同结构的CPU上,运行在从8位到64位的各种系统Z上。尤其值得一提的是

3、,该系统白从2.51版木Z后,就通过了美国FAA认证,可以运行在诸如航天器等对安全要求极为苛刻的系统之上。鉴TuC/OS-II可以免费获得代码,对于嵌入式RTOS而言,选择uC/OS无疑是最经济的选择。(二)uC/OS-II应用程序基木结构应用uC/OS-II,自然要为它开发应用程序,下面论述基于uC/OS-11的应用程序的基木结构以及注意事项。每一个uC/OS-II应用至少要有一个任务。而每一个任务必须被写成无限循环的形式。以下是推荐的结构:voidtask(void*pdata)INT8Uerr;InitTimer();//可选For(;;)//你的应

4、用程序代码OSTimeDly(l);//可选}}以上就是基木结构,至于为什么要写成无限循环的形式呢?那是因为系统会为每一个任务保留一个堆栈空间,由系统在任务切换的时候换恢复上下文,并执行一条reti指令返冋。如杲允许任务执行到最后一个花插号(那一般都意味着一条ret指令)的话,很可能会破坏系统堆栈空间从而使应用程序的执行不确定。换句话说,就是"跑飞”了。所以,每一个任务必须被写成无限循环的形式。程序员一定要相信,自己的任务是会放弃CPU使用权的,而不管是系统强制(通过ISR)还是主动放弃(通过调川OSAPI)o现在來谈论上面程序中的InitTimerOW数

5、,这个函数应该由系统提供,程序员有义务在优先级最高的任务内调用它而且不能在for循环内调用。注意,这个函数是利所使用的CPU相关的,每种系统都有自己的Timer初始化程序。在uC/OS-II的帮助手册内,作者特地强调绝对不能在OSInit()或者OSStartO内调用Timer初始化程序,那会破坏系统的可移植性同时带来性能上的损失。所以,一个折屮的办法就是象上面这样,在优先级最窩的程序内调用,这样可以保证当0SStartO调用系统内部函数OSStartHighRdyO开始多任务后,首先执行的就是Timer初始化程序。或者专门开一个优先级最高的任务,只做一件

6、事情,那就是执行Timer初始化,Z后通过调用OSTaskSuspend()将自己挂起來,永远不再执行。不过这样会浪费一个TCB空间。对于那些RAM吃紧的系统来说,还是不用为好。(三)一些重要的uC/OS-IIAPI介绍任何一个操作系统都会提供大量的API供程序员使用,uC/OS-II也不例外。由于uC/OS-II面向的是嵌入式开发,并不要求大而全,所以内核提供的API也就大多和多任务息息相关。主要的育以下儿类:1)任务类2)消息类3)同步类4)时间类5)临界区与岀件类我个人认为対于初级程序员而言,任务类和时间类是必须要首先掌握的两种类型的API。下面我就

7、來介绍比较重要的:1)OSTaskCreate函数这个函数应该至少再main函数内调用一次,在OSInit函数调用Z后调用。作用就是创建一个任务。目前有四个参数,分别是任务的入口地址,任务的参数,任务堆栈的首地址和任务的优先级。调用木函数后,系统会首先从TCB空闲列表内申请一个空的TCB指针,然后将会根据用戸给出参数初始化任务堆栈,并在内部的任务就绪表内标记该任务为就绪状态。最后返冋,这样一个任务就创建成功了。1)OSTaskSuspend函数这个函数很简单,一看名字就该明白它的作用,它可以将指处的任务挂起。如果挂起的是当前任务的话,那么还会引发系统执行任

8、务切换先导函数OSShed来进行一次任务切换。这个函数只有一•个参

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。