实验五(嵌入式实时操作系统实验报告)

实验五(嵌入式实时操作系统实验报告)

ID:1159266

大小:547.00 KB

页数:5页

时间:2017-11-08

实验五(嵌入式实时操作系统实验报告)_第1页
实验五(嵌入式实时操作系统实验报告)_第2页
实验五(嵌入式实时操作系统实验报告)_第3页
实验五(嵌入式实时操作系统实验报告)_第4页
实验五(嵌入式实时操作系统实验报告)_第5页
资源描述:

《实验五(嵌入式实时操作系统实验报告)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、中国矿业大学计算机学院数据库原理实验报告学号:08083572班级:信科08-3姓名:刘俊迪专业:电子信息科学与技术实验五:uC/OS-II内核移植实验1.实验目的:n了解uC/OS-II内核的基本原理和主要结构n掌握将uC/OS-II内核移植到ARM处理器上的基本方法n掌握uC/OS-II下基本多任务应用程序的编写2.实验内容:学习uC/OS-II再ARM处理器上的移植过程编写简单的多任务应用程序,同时实现跑马灯和数码管显示的功能3.实验原理:(1)uC/OS-II的移植1、汇编语言、C语言代码需要移植2

2、、移植工作集中在多任务切换的实现上3、在ARM处理器上的移植,需要完成的工作包括:修改三个和体系结构相关的文件,代码量大约是500行。这三个文件是OS_CPU_C.c、OS_CPU_C.H以及OS_CPU_A.S(2)OS_CPU.H的移植1、数据类型定义INT8U->unsignedcharINT8S->signedcharINT16U->unsignedshortINT16S->signedshortINT32U->unsignedintINT32S->signedint2、ARM处理器相关宏定义退出临

3、界区#defineOS_ENTER_CRITICAL()ARMDisableInt()进入临界区#defineOS_EXIT_CRITICAL()ARMEnableInt()3、堆栈增长方向堆栈由高地址向低地址增长,这个也是和编译器有关的,当进行函数调用时,入口参数和返回地址一般都会保存在当前任务的堆栈中,编译器的编译选项和由此生成的堆栈指令就会决定堆栈的增长方向。#defineOS_STK_GROWTH1(3)OS_CPU.c的移植成绩:优良中差教师中国矿业大学计算机学院数据库原理实验报告1、任务堆栈初始

4、化1、由OSTaskCreate或OSTaskCreateExt调用2、用来初始化任务的堆栈并返回新的堆栈指针stk。初始状态的堆栈模拟发生一次中断后的堆栈结构。3、在ARM体系结构下,任务堆栈空间由高至低依次将保存着pc、lr、r12、r11、r10、…r1、r0、CPSR、SPSR4、堆栈初始化结束后,OSTaskStkInit返回新的栈顶指针,OSTaskCreate或OSTaskCreateExt将指针保存在任务的OS_TCB中。2、系统hook函数任务创建钩子OSSTaskCreateHook任务

5、删除钩子OSTaskDelHook任务切换钩子OSTaskSwHook任务统计钩子OSTaskStatHook时钟节拍处理钩子OSTimeTickHook3、中断级任务切换函数1、该函数由OSIntExit()和OSExIntExit()调用2、在时钟中断ISR(中断服务例程)中发现有高优先级任务等待的时钟信号到来,则需要在中断退出后并不返回被中断任务,而是直接调度就绪的高优先级任务执行。3、该函数通过设置一个全局变量need_to_swap_context标志以表示在中断服务程序中进行任务切换,然后在OS

6、TickISR()中判断该变量以进行正确的动作。(4)OS_CPU_A.S的移植1、时钟节拍中断服务函数1、时钟节拍是特定的周期性中断2、时钟节拍率越快,系统的额外开销就越大。越慢则系统响应速度越慢3、本系统使用定时器0作为时钟节拍源,产生间隔10mS的时钟节拍4、OSTickISR()就是时钟节拍中断服务函数,也就是定时器0的中断处理函数2、退出临界区和进入临界区函数ARMDisableInt/ARMEnableInt1、直接操作CPSR的I、F位2、ARMDisableInt将CPSR的I、F位设置为1

7、,关闭所有中断3、ARMEnableInt将CPSR的I、F位设置为0,打开中断成绩:优良中差教师中国矿业大学计算机学院数据库原理实验报告3、任务级上下文切换函数OS_TASK_SW1、该函数当任务因为被阻塞而主动请求cpu调度时被执行,由于此时的任务切换都是在非异常模式下进行的,因此区别于中断级别的任务切换。2、它先将当前任务的cpu现场保存到该任务堆栈中,然后获得最高优先级任务的堆栈指针,从该堆栈中恢复此任务的cpu现场,使之继续执行。这样就完成了一次任务切换。4、OSStartHighRd1、该函数是

8、在OSStart函数中调用2、负责从最高优先级任务的TCB中获得该任务的堆栈指针sp,并依次将cpu现场恢复,这时系统就将控制权交给用户创建的该任务进程,直到该任务被阻塞或者被其他更高优先级的任务抢占cpu3、该函数仅在多任务启动时被执行一次,用来启动之前创建的第一个,也就是最高优先级的任务执行(5)多任务应用程序的编写C语言入口函数1、调用函数ARMTargetInit初始化ARM处理器;2、调用OSInit进

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

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

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