ucos2操作系统在51单片机上的移植

ucos2操作系统在51单片机上的移植

ID:2019779

大小:257.50 KB

页数:26页

时间:2017-11-14

ucos2操作系统在51单片机上的移植_第1页
ucos2操作系统在51单片机上的移植_第2页
ucos2操作系统在51单片机上的移植_第3页
ucos2操作系统在51单片机上的移植_第4页
ucos2操作系统在51单片机上的移植_第5页
资源描述:

《ucos2操作系统在51单片机上的移植》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、μC/OS-Ⅱ在51单片机上的移植姓名:学号:25目录1绪论21.1嵌入式实时操作系统21.2μC/OS-Ⅱ嵌入式操作系统21.3μC/OS-Ⅱ原理22μC/OS-Ⅱ内核结构32.1临界区32.2任务及任务控制块32.3任务状态42.4任务调度52.5中断处理52.6时钟节拍52.7μC/OS-Ⅱ初始化与启动63μC/OS-Ⅱ在51单片机上的移植63.1OS_CPU.H文件的移植63.2OS_CPU_A.ASM文件的移植83.3OS_CPU_C.C文件的移植204移植结果测试234.1设计原理234.2应用程序设计234.3结果分析25251绪

2、论1.1嵌入式实时操作系统大多数的操作系统只注重平均性能,如对于整个系统来说,所有任务的平均响应时间是关键,而不关心单个任务的响应时间。而嵌入式实时操作系统最主要的特征是性能上的实时性,从这个角度上看,可以把嵌入式实时操作系统定义为“当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统”。目前大多数嵌入式操作系统提供以下管理功能:1.任务管理所有嵌入式操作系统都是多任务的,目前所说的多任务大都是指多线程方式或多进程方式,两

3、者的运行机制不完全一样。以多进程为例,调度程序的好坏直接影响到系统的性能。和一般的操作系统一样,嵌入式操作系统的作用也是决定在特定的某一时刻系统应该运行哪一个进程,对嵌入式系统中的运行软件进行描述和管理,并完成处理机资源的分配与调度。2.存储管理在嵌入式系统中,一般不采用虚拟内存管理,而采用动态内存管理方式,即当程序的某一部分需要使用内存时,利用操作系统提供的分配函数来处理,一旦使用完,可通过释放函数来释放所占用的内存,这样内存就可以重复使用,这样提高了内存的利用率,方便了用户的使用,并提供了足够的存储空间。3.周边资源管理在操作系统中必须提供

4、周边资源的驱动程序,以方便资源管理和应用程序使用。4.中断管理嵌入式操作系统和一般操作系统一样,一般都是用中断方式来处理外部事件和I/O请求。中断管理负责中断的初始化安装、现场的保存和恢复、中断栈的嵌套管理等。1.2μC/OS-Ⅱ嵌入式操作系统μC/OS-Ⅱ是一个可裁剪、源码开放、结构小巧、抢先式的实时多任务内核,主要面向中小型嵌入式系统,具有执行效率高、占用空间小、可移植性强、实时性能优良和可扩张性强等特点。μC/OS-Ⅱ结构小巧,即使包含全部功能如信号量、消息邮箱、消息队列以及相关函数等,编译后的μC/OS-Ⅱ内核也仅有6~10KB,所以它

5、比较适用于小型控制系统,μC/OS-Ⅱ也具有良好的扩展性能。1.3μC/OS-II原理25μC/OS-II包括任务调度、时间管理、内存管理、资源管理四大部分。它的移植只与4个文件相关:汇编文件(OS_CPU_A.ASM)、处理器相关C文件(OS_CPU.H、OS_CPU_C.C)和配置文件(OS_CFG.H)。有64个优先级,系统占用8个,用户可创建56个任务,不支持时间片轮转。它的基本思路就是“近似地每时每刻总是让优先级最高的就绪任务处于运行状态”。为了保证这一点,它在调用系统API函数、中断结束、定时中断结束时总是执行调度算法。任务的切换是

6、通过模拟一次中断实现的。μC/OS-II工作核心原理是:近似地让最高优先级的就绪任务处于运行状态。2μC/OS-Ⅱ内核结构2.1临界区一个任务在某些时候可能会访问共享内存、共享文件或其他共享资源,这些对共享内存进行访问的程序片断称作临界区。为了防止不同的任务同时处于临界区,必须使用一定互斥的方法来避免这种情况的发生,因此μC/OS-Ⅱ在处理临界区代码时需要关中断,处理完毕后再开中断。μC/OS-Ⅱ定义两个宏来开关中断,μC/OS-Ⅱ中的这两个宏调用分别是:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。2.2任务及

7、任务控制块在μC/OS-Ⅱ中,一个任务看起来像其它C的函数一样,有函数返回类型,有形式参数变量,但是任务是不会返回的,所以返回参数要定义成void类型,下面这个程序就是一个任务函数:voidTask(void*pdata){for(;;){/*用户代码*//*调用μC/OS-Ⅱ的各种服务*//*用户代码*/}}当任务完成以后,任务函数可以调用OSTaskDel()来实现自我删除。任务想要再次进入内核可以调用OSTaskCreat()或者OSTaskCreatExt()。任务函数的形式参数变量是由用户代码在第一次执行时带入的,将变量定义成void

8、指针是为了允许用户应用程序传递任何类型的数据给任务。用户也可以建立许多相同的任务,且所有都使用同一个任务函数,但可以向这个任务传入不同的数据,就可以达

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

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

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