关于DSP2812上uCOS-II操作系统的说明

关于DSP2812上uCOS-II操作系统的说明

ID:40616089

大小:119.00 KB

页数:5页

时间:2019-08-05

关于DSP2812上uCOS-II操作系统的说明_第1页
关于DSP2812上uCOS-II操作系统的说明_第2页
关于DSP2812上uCOS-II操作系统的说明_第3页
关于DSP2812上uCOS-II操作系统的说明_第4页
关于DSP2812上uCOS-II操作系统的说明_第5页
资源描述:

《关于DSP2812上uCOS-II操作系统的说明》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、关于uCOS-II操作系统的说明一、工程文件的说明工程的所有文件在ucos目录下,打开工程文件后可以看到下面一些源文件·cmd文件工程的CMD文件与一般程序中的CMD文件相同。由F2812.cmd和DSP281x_Headers_nonBIOS.cmd两个文件组成。其中对F2812.cmd文件进行了一些修改,将代码段定义在FLASH中,.bss和.ebss段都定义在低64K的数据空间中,以保证定义在.ebss段中的人物堆栈可以通过堆栈指针被访问。·C语言和汇编源文件这部分文件在CCS窗口的Source文件夹下可以看到,主要有下面一些文件:Ucos_ii.c:操作系统

2、的头文件包含文件。OS_TickISR.asm:主要是OSTickISR()函数,是操作系统时钟节拍中断的服务函数。OS_Sw.asm:主要是OSCtxSw()函数,非中断级任务切换函数,也是系统完成任务切换调用的30号中断(即USER11软中断)的中断服务函数。OS_StartHighRdy.asm:主要是OSStartHighRdy()函数,在操作系统开始运行后(OSStart()函数开始执行以后)启动优先级最高的任务,一般情况下该任务是TaskStart任务。OS_ISR.asm:中断服务程序的汇编源文件,尽量把要使用的中断服务程序放在这个文件中,使用汇编语言

3、按照OS_SCIARXISR()的结构编写。关于中断服务程序后面会进一步加以说明。OS_IntSw.asm:主要包含中断级任务切换函数OSIntCtxSw(),完成中断级任务切换。OS_GlobalStack.c:该文件中主要是全局任务堆栈的定义。OS_cpu_c.c:该文件中主要是任务堆栈初始化函数OSTaskStkInit()及其他一些与CPU相关的C语言函数的定义。Ex1l.c:工程的主函数文件。DSP281x_xxxx.c:例程中DSP2812外设操作的一些源代码,可以在这些文件中添加必要的操作外设的函数。·头文件这部分主要是操作系统的配置可提供的一些函数的

4、源文件,以及2812一些寄存器的定义,主要有两个文件需要注意:os_cfg.h:移植操作系统得配置文件,其中的宏定义参考蓝色的《嵌入式实时操作系统uCOS-II原理与应用》一书的第九章。os_globalstack.h:该文件主要是关于系统堆栈的一些宏定义,主要有两个量:TASK_STK_SIZE,任务堆栈大小的定义,这里定义为128;N_TASKS,系统中除了空闲任务,开始任务(TaskStart)外的任务个数,这里为2,当系统中需要更多的任务时,这个值夜需要修改。堆栈的大小与进行任务切换时需要保存的寄存器的个数和任务中局部变量的个数都有关,因为CCS环境中局部变

5、量的存储空间在堆栈中,一般情况下128是够用的,也是必须的,可以根据实际需要增加。二、uCOS-II操作系统的说明uCOS-II操作系统实际上只是一个进行任务调度和进程同步的一个实时内核。或者说,系统只提供了一些进行任务调度和进程间通信的函数和机制,用户在这个内核的基础上构建自己的实时系统。在uCOS-II中编写程序和在不用操作系统得环境中编写程序基本上是一样的。不同的是,没有操作系统的程序中,只有主程序是一个无限循环,其它所有的函数都通过中断和主循环被调用。由主循环串起常用的操作,用中断串起由异步事件触发的操作。而在uCOS-II中,系统需要完成的功能被划分为若干

6、个相对独立的任务,单独来看,每一个任务都如主程序一样是一个无限循环。操作系统根据优先级优先的原则调度不同的就绪任务对CPU的使用权。不同的任务之间可以通过信号量,消息队列和消息邮箱等实现通信。当一个任务由于等待某任务而处于等待状态时,则已就绪的最高优先级任务获得CPU的使用权,进入运行状态,从而保证了当某个任务处于等待状态时CPU没有停止下来,其它任务可以在CPU上运行。·uCOS-II中的程序框架uCOS-II的程序包括main函数,开始任务(Taskstart)和若干其它任务构成。绝大部分操作都是由任务完成的,操作系统不停的在不同的任务之间切换。而中断服务程序则

7、尽可能简单,只完成发送信号量等操作。程序从main函数开始执行,完成一些初始化操作之后,启动多任务操作,开始运行优先级最高的任务(很多情况下是开始任务TaskStart)。操作系统通过定时中断或其它方式(如OSTimeDly()函数)触发一次任务调度,完成在不同的任务之间切换。Main函数的示意性代码如下:voidmain(void){若干系统的初始化操作;OSInit();//完成操作系统,任务控制块(TCB)、事件控制块(ECB)//的初始化,并完成空闲任务和统计任务的创建(如果运行统计任务)信号量、消息邮箱、消息队列的初始化;创建开始任务;OSStart(

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

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

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