- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
uCOS—II在TS101上移植
uCOS—II在TS101上移植
摘要:近年来,DSP处理器的处理能力得到很大的提高,这使得在这些处理器上移植操作系统成为变的合理、合算。研究如何在ADI公司的TS101芯片上进行uC/OS-II操作系统的移植。
关键词:嵌入式操作系统;uC/OS-II;TS101;移植
中图分类号:TP311 文献标识码:A 文章编号:1671—7597(2012)0510012-02
0 引言
传统上认为,DSP处理器适合进行运算密集型任务处理,不适合使用操作系统。然而,当前最新型的DSP处理器的片上资源和处理能力都得到了很大的提升,这使得在上面移植一个轻量级的操作系统变得合理又合算。因为这些操作系统占用的资源极少,但是使得系统具有了多任务并行处理和调度的能力。TS101是ADI公司的高端数字信号处理芯片,它具有极强的并行处理能力。uC/OS—II是mi crium公司推出的一个性能优异、可裁剪、支持抢占式任务调度的嵌入式系统实时内核。如果将该操作系统移植到TS101上,将在消耗系统资源极少的情况下,使应用系统具有并行任务实时调度的能力。本文将主要介绍在移植的过程中需要注意的问题。
uC/OS—II是一个原代码开放的嵌入式实时操作系统。TS101是ADI公司的双核DSP芯片,该芯片具有3*2Mbits的内存,寄存器单元较多,因此,在移植的时候应当考虑到这些因素的影响。
1 移植过程中的关键技术
1.1 对uC/OS-II原版本的修改
我们采用通过美国航空航天管理局安全认证的2,52版本作为移植的母本文件。根据TS101芯片结构、开发环境以及应用环境的特点对原始文件进行了修改。主要方面如下:
1)改变了任务控制块(OS_TCB)数据类型的定义。对该数据类型中所包含的元素数量以及类型没有做修改,只修改了这些元素的在该结构体中的顺序。这样做是为了在汇编语言中索引方便,因为编译器根据各个元素的类型以及位置来安排该元素相对于该结构体首地址的位置。
2)通过函数调用实现任务之间的切换。原始版本的操作系统在进行任务切换的时候,首先引发一个中断(通常是一个软中断),在中断中实现上下文切换,并返回到新任务执行。我们采用函数调用的方式实现这个过程,即:由需要被切换的任务调用一个函数,由该???数实现上面中断的功能。采用这种技术可以解放一个中断资源。
3)保护临界区的时候,取消了原始版本所定义的前两种保护方式,仅保留第三种方式。即:用局部变量保存全局中断允许标志并在脱离临界区的时候恢复。
4)修改初始版本的任务堆栈初始化函数为双任务栈,这样做是为了与TS101的双核双栈结构兼容。
1.2 堆栈结构及其管理
TS101是双核结构,每个内核都有自己的堆栈,这决定了在进行任务切换的时候同时管理两个中断。相应的,任务栈的初始化也对j,k两栈分别进行。
TS101用J26、J27以及K26、K27分别管理J/K两个堆栈,堆栈由高地址向低地址增长。下表为任务栈的结构:
关于上表的一些解释:
1)上表的左半页为J栈的存储情况,右半夜为K栈的存储情况。2)表中单元由上到下表示栈的增长方向,栈的增长相应于物理地址的减小。3)每个大的单元表示四个内存字,但是有的大单元被分为更小的单元,这些小单元按从左到右表示栈的增长方向,即右边的小单元的地址比左边的小。4)CJMP1保存返回地址,而CJMP2为程序返回后重新付给CJMP寄存器的值,即CJMP寄存器的原值。比如,一个任务被中断并发生切换,那么,在保存该任务的上下文的时候,将RETIB的值作为保存在CJMP1中,作为下次重新切换回该任务是的返回地址,而CJMP将保存到CJMP2中,这样的话,在任务下次切换回来的时候,可以将CJMP恢复到中断前的状态。5)IMASKH并不表示该处保存的是IMASKH寄存器的全部内容,它仅保存其中的全局中断允许位。6)严格按照FILO原则操作堆栈。7)在保存x/ySTAT之前,不能进行任何X/Y核运算、传送指令,因为这些指令可能影响到STAT的状态。同样的,在保存J31和K31之前,不能进行任何的IALU元算指令,因为这些指令可能影响到j/kSTAT的状态(注:TS101用j31和k31维护j/kSTAT)。
1.3 任务切换
在下列条件下,将发生任务切换:
1)高优先级的任务等待某事件发生的时候,将自己挂起并切换到低优先级的就绪任务。2)低优先级的任务发布某事件发生的信号将使自己挂起并切换到等待该事件的高优先级任务。3)高优先级改变自身优先级并调用任务切换函数切换到新的就绪任务。4)在中断中发布某事件的发生将使得任务切换并返回到等待该事件的任务。
总的来说,任务的切换条件有任务中切换和中断中切换两种情况。任务中
文档评论(0)