首页 实时嵌入式内核在DSP上的移植实现

实时嵌入式内核在DSP上的移植实现

举报
开通vip

实时嵌入式内核在DSP上的移植实现 《工业控制计算机》!""!年 #$卷第 %期 在设计单片机及 &’( 等智能系统时,系统程序 经常采用这样的方法:主程序循环执行各子程序模块, 并通过中断或查询实现外部事件。但是,这种方式不能 很好地解决实时性问题。比如,即使某子程序模块运行 条件完全具备,若主程序没有运行到该点,子模块也得 不到运行,这在实时性要求严格的系统中是不允许的。 而 !) *+’,--就能很好地解决这样的问题。!) *+’,-- 是由 ./012334 编写的实时嵌入式操作系统内核 (56+’),源码完全公开,具有可移植性...

实时嵌入式内核在DSP上的移植实现
《工业控制计算机》!""!年 #$卷第 %期 在 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 单片机及 &’( 等智能系统时,系统程序 经常采用这样的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 :主程序循环执行各子程序模块, 并通过中断或查询实现外部事件。但是,这种方式不能 很好地解决实时性问题。比如,即使某子程序模块运行 条件完全具备,若主程序没有运行到该点,子模块也得 不到运行,这在实时性要求严格的系统中是不允许的。 而 !) *+’,--就能很好地解决这样的问题。!) *+’,-- 是由 ./012334 编写的实时嵌入式操作系统内核 (56+’),源码完全公开,具有可移植性强、支持多任 务等特点,但其中与处理器相关的部分代码需要用户 用汇编编写。在采用该实时内核的系统中,可以将应用 程序分成若干任务(线程),并赋予每个任务一个优先 级,由该实时系统内核实现任务调度。使各任务在休 眠、就绪、运行、挂起、被中断五种状态间转变。就绪任 务中优先级最高者将占有 )(7。要使 !) *+’,--能在 &’( 芯片 68’9!")$:"; 上运行,必须做相应的移 植,主要工作是有针对性地编辑 !) *+’,--中的三个 与处理器相关的文件:"+’<)(7=>#+’<)(7<)=) $+’<)(7头文件中,定义了与处理器相关的 常量 +’<’6@、宏 +’ 中还定义了宏 +’; $"%&’"(%")*+ ?@A*B /C&D 9(B+ -!软中断实现任务切换! - 此外,系统为区别不同的 ,#E 压栈顺序,需用户 根据所选 ,#E自定义 $"%"&(%FD$)&G常量的值H 若堆栈是从低地址向高地址方向伸展,定义为 3,反之 为 I。 &0"123,4536 的堆栈增长方向是递减的,因 此 $"%"&(%FD$)&G为 I,即: 9:;<=>; $"%"&(%FD$)&G I ! "#$%&’$%(%文件的编辑 $"%,#E%,J, 文件中,要求用户编写六个 , 函 数 :$"&?@K"7K/>=7 *+、$"&?@K,L;?7;GMMK *+、$"N &?@K!;OGMMK*+、$"&?@K"PGMMK*+、$"&?@K"7?7GMMK *+、$"&=A;&=QKGMMK*+。其中只有 $"&?@K"7K/>=7*+是 必要的,其它函数是为方便用户扩展功能而设,因而可 定义为空。 函数 $"&?@K"7K/>=7*+用于系统创建用户任务时, 建立并初始化任务堆栈。该函数跟处理器的硬件体系 密切相关,它将所有的寄存器压栈,返回新的堆栈栈 顶,并将它们保存在该任务的任务控制块 $"%&,R 中,最终使初始化后的堆栈跟刚发生过一次中断一样。 这样,系统无需对调度程序作特殊地处理即可直接对 新任务进行调度。在 &0"123,4536系统中应该保存 的寄存器有:累加器 ’、R,辅助寄存器 ’D8,以及寄存 器 R(、&、"&3、"&I、RD,、#0"&、DS’、D"’、/0D 等。 为方便起见,可以定义寄存器压栈和出栈的宏。!, - $".// 系统还给该函数提供了任务代码指针!7?@K, 参数指针!T:?7?以及栈顶指针!T7M@ 等,函数可由 !T7M@获取任务堆栈指针 "#,并将参数指针!T:?7? 的值放到 ’ 中,然后将!7?@K 压栈,接着各寄存器赋 初值并压栈,保存在寄存器中的参数也随之存放在堆 栈中,最后返回栈顶指针给 $"%&,R,此时的任务堆 栈就符合系统要求了。当初始化后的任务成为最高优 先级的就绪任务时,系统调度函数根据该任务控制块 $"%&,R 中保存的栈顶指针,将堆栈中保存的寄存器 值切换到 ,#E 的寄存器中,使系统开始运行当前最 高优先级任务。事实上,这个过程模仿了编译器对程序 地调用。 ) "#$%&’$*(*#+文件的编辑 此文件包括的四个函数都涉及对寄存器地处理, 跟处理器有关,由于不同的处理器有不同的寄存器,所 以操作系统在这个文件里给用户留下四个函数接口, 以便用户根据所选处理器编写相应的汇编程序以完成 固定的功能。四个函数分别是 $""7?L7G=UVD:W*+、 $",78"P*+、$"/>7,78"P*+、$"&=QK/"D*+。 1JI $""7?L7G=UVD:W*+ 该函数是由启动函数 $""7?L7*+调用的,功能是使 系统能及时地运行优先级最高的就绪任务,由于系统中 数据指针 $"&,RG=UVD:W 一直指向就绪任务中优先 级最高的任务控制块 $"%&,R,使得 $""7?L7G=UVD:W *+轻易就可获取最高优先级任务的栈顶指针,再将保存 在此任务堆栈的寄存器值恢复到 ,#E寄存器中,使该 任务得以运行,实现多任务的启动。对 &0"123,4536 而言,$""7?L7G=UVD:W*+代码编写如下: %$""7?L7G=UVD:WX ,’YY 9%$"&?@K"PGMMK Z 调用用户自定义的 $"N &?@K"PGMMK *+ Y! !*%$"&,RG=UVD:W+H ’ Z$"%&,R 的 3偏址单元存放 的是任务堆栈指针 C$# "&Y0 ’H ’D3 Z’D3 中的值是该 &,R 的地址 C$# Y! !’D3H ’ Z获得堆栈指针 C$# "&Y0 ’H "# Z将堆栈指针指向任务堆栈 C$# "& 9IH !*%$"D[>>=>U+ Z设定 $"D[>>=>U 为 &DES ,$C&S\&%DS"&$D] Z恢复所有寄存器 DS&S Z中断返回 在调用函数 $"&?@K"PGMMK*+时,由于当前任务 控制块 $"&,RQ[L 仍然指向将要被切换出去的任务, 而 $"&,RG=UVD:W 则指向即将被运行的任务,因此 用户可在 $"&?@K"PGMMK*+中对它们操作,以实现特 殊的功能,当然该函数也可定义为不做任何事的空函 数。从程序我们可以看出,要运行最高优先级的任务, 首先得找到该任务堆栈指针,然后将寄存器内容及参 数从堆栈中恢复到 ,#E 的寄存器中,$"D[>>=>U 只 是用来区分是 $""7?L7G=UVD:W*+还是正常的任务切 换在调用 $"&?@K"PGMMK*+。当执行了中断返回指令 后,处理器开始执行最高级的就绪任务。 1J2 $",78"P*+ 前面曾提过,任务切换时使用了软中断,并将中断 向量指向 $",78"P*+,因此该函数所要做的就是执行 任务级的任务切换。其目的是为了保证 ,#E 永远运 行就绪 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 中优先级最高的任务。这跟 $""7?L7G=UVN D:W*+类似,然而,前者是由 $""7?L7*+调用的,只是执 行启动多任务的功能,而 $",78"P*+是任务调度函数 12 《工业控制计算机》!""!年 #$卷第 %期 &’’()*+,-通过宏 &’./0’1.’2,-调用的,执行的是 多任务的调度功能:不仅要使高优先级任务得以恢复 运行,还得将待切换出去的任务保存起来,两者的差别 也可以从程序代码中比较出来: .&’345’67 3&8/9:/.’0;9 <保存处理器寄存器内容 =>? ’@A B <当前任务堆栈指针保存到任务 &’./3B 中 => !,.&’/3B3CD-A 0 < 8&@ ’/=? 0A 0E" < 8&@ ’/= BA !0E" < 30== F.&’/GHI’6JKKI < 调 用 用 户 自 定 义 的 &’L /GHI’6JKKI ,- => !,.&’/3BJMN)E+O-A 0 <待恢复任务优先级控制块 => !,.&’@DMKJMN)E+O-A B <待恢复任务优先级 ’/= 0A !,.&’/3B3CD- <高优先级就绪任务赋予当前 控制块 ’/= BA !,.&’@DMK3CD- < 待恢复的就绪任务优先级设 为当前优先级 ’/=? 0A 0E" <恢复任务堆栈指针 8&@ => !0E"A 0 < 8&@ ’/=? 0A ’@ <指针指向优先级最高就绪任务堆栈 8&@ 8&@ 3&8/9:/.E9’/&E9 <恢复寄存器 E9/9 <执行中断返回指令 显然,对当前任务相关内容地保存、给当前优先级 数据结构赋值以及给当前任务控制块赋值都是 &’L ’4GD4JMN)E+O,-所不具有的。也许有人会产生疑问,既 然这是任务级的切换,为什么要执行中断返回指令 “E9/9”而不是“E9/”呢?这是因为任务执行的时候必 须允许中断,所以不仅需要将栈中的返回地址弹回 @3A同时还需自动对 ’/# 的中断屏蔽位清零,即允许 中断,因此必须选择“E9/9”返回。 PQP &’RS4345’6,- 与 &’345’6,-相比较,&’RS4345’6,-也是执行任 务切换的,但它执行中断级的任务切换。为什么不使用 现成的 &’345’6,-进行切换呢?主要基于这样的考 虑:(#)它是在中断处理程序中调用的,类似于 &’3L 45’6,-中保存寄存器的工作在进入中断时就做过了; (!)它是中断子程序通过 &’RS495M4,-调用的,两级调 用都存在对返回地址等参数的压栈操作,这就使得此 时的堆栈比起 &’345’6,-切换时在栈顶位置多了一 些压栈。而 !3 T&’URR要求被任何方式挂起的所有任 务都必须具有相同的堆栈结构,以便于系统能够及时 恢复任务的运行。为此,我们必须做相应的处理:首先, 无需再次保存寄存器;其次,必须改变堆栈指针 ’@,使 栈结构跟所有被挂起的任务栈结构一样。假定进入 &’RS4345’6,-之初,任务堆栈情形如下: :::: <调 &’RS4345’6,-时压栈的返回地址 :::: <调 &’RS495M4,-产生的返回地址 " ::::<以下是保存的相关寄存器内容 V ::::<中断返回地址 当然此堆栈就是即将要被切换出去得任务堆栈, 当所有比它更高优先级的就绪任务运行完毕后,我们 希望此任务能够从被中断的位置继续执行,因此该任 务堆栈需要保存中断返回地址以及任务中断时 3@W 的所有有关的寄存器内容。与一般正常挂起的任务堆 栈相比较,该堆栈只是在栈顶位置多了两个返回地址 的压栈,因此只要使用指令“XE0?9 I”将栈顶调整 至上图的箭头所指位置即可。至于保存当前任务堆栈 指针,以及给当前控制块赋值等工作则跟 &’345’6,- 中一样。值得注意的是,调整前的堆栈结构事实上还跟 用户使用的汇编器有关,因此一定要先弄清函数调用 时是否还有其它可能的压栈操作再做调整。 PQY &’/M(IR’E,- &’/M(IR’E,-也是 !3 T&’URR 操作系统中要求用 户提供的汇编程序,它是时钟中断服务程序,实现时间 的延迟和期满功能,其具体流程如下: 保存寄存器"调 &’RS49S4*D,-或使 &’RS48*H4MSN 加 #"调 &’/MZ*/M(I,-"调 &’RS495M4,-"恢复寄存 器"执行中断返回 其中 &’/MZ*/M(I,-函数定时对所有的任务控制 块中的 &’/3B>[O减一,当某任务的 &’/3B>[O 减为 零时,就将其转到就绪态,以备运行,但这程序跟具体 的处理器无关,这里就不多加描述。而 &’RS495M4,-主 要用于判别中断地执行是否使得更高优先级的任务进 入就绪态,如有,则进行任务切换,否则返回。至于时钟 中断可由 >’@的定时器周期计数器 @E>产生。 另外 KH.(\NQ) 中有关参数的定义以及 MS([C+*Q) 头文件也要根据实际情况有所添减。 ! 结束语 当所移植的操作系统在目标系统上正常运行,需 要处理器处理的各项工作,用户只要分别建立一些任 务,并设定其优先级就行了。在 !3 T&’URR系统中每个 任务都是一个无限循环的函数,当正在运行的任务进 入延时程序或在等待消息时会自动挂起,3@W 运行其 它的就绪任务。当某任务运行条件满足时,就进入就绪 (下转第 P]页) PP 《工业控制计算机》!""!年 #$卷第 %期 (上接第 &&页) 状态,操作系统会根据其优先级进行调度,如果它比当 前任务优先级更高,就进行任务切换,系统保证永远运 行优先级最高的就绪任务。对时间要求严格的任务则 可以设定为高优先级,保证及时占有 ’()。只要充分 利用该实时嵌入式内核的任务调度,消息传送,邮箱传 递,延时等功能,就能将各种运行条件及时的传送到目 的任务,保证各种用户任务能在第一时间得到处理。 参考文献 # *+,- *./,01233+,著.邵贝贝,译.!’ 423566———源码公 开的实时嵌入式操作系统.中国电力出版社,!""#(7) ! 893&!"’$:; <3( ’() (=>?@A=>BCD.8+E,3 6-381)5 9+-83 & 893&!"’$:; <3( 9F=GHF?I 6FDJ>KIJ?HF 3=J.8+E,3 6-381)9+-83 : 893&!"’$:; 2@J?G?L?FM ’ ’HG@?C=>.8+E,3 6-381)5 9+-83 [收稿日期:!""!.#.&#] 一环境,并且有能力对环境作为灵活和自治的反应,以 满足设计目标。进一步讲,软件代理是:"清晰的问题 解决实体,有定义良好的边界和接口;#位于(嵌入在) 一个特定的环境,并对环境可作出反应;$被定义去完 成特定的目标;%自治的,控制自已的内部状态和行 为;&对于设计目标,具有灵活的问题解决能力。 类似于 ,M=FJ 概念的一些尝试在计算机科学的 先驱 ,.8K>?FM有关密码破译的工作中可以看到NOP。 %.!基于软件代理的软件工程 将面向代理的技术应用于软件开发会带来的一些 益处。通常,认为处理软件复杂性的方法可以归结为以 下三种N!P:分解:处理一个大问题的最基本技术是将其 分解为一些小问题,更加容易管理并相对孤立的。抽 象:这一过程将定义系统的一个简化模型,只是强调系 统中某属性细节,而忽略其它的属性。组织:这一过程 标识和管理各个问题解决要素之间的关系。 而面向代理的分解方法是划分复杂系统的问题空 间更有效的技术;面向代理的抽象机制提供了为复杂 的软件系统建模更为自然的方法;面向代理的组织方 法更加适应用于复杂的软件系统。 Q 面向 !"#$%&的程序设计方法 目前,在软件工业界流行的程序设计方法是面向 对象程序设计R22(S,其后提出的一些程序设计方法被 称为后面向对象程序设计方法 R(HDJ52TU=IJ (>HV M>BGG?FMW(2(SW 其中一个主要的方法是面向 ,D@=IJ 程序设计方法R,D@=IJ52>?=FJ=X (>HM>BG?FMSN##P。 ,2( 技术是一种改进软件设计和实现中有名的 关联分离R3=@B>BJ?HF HY IHFI=>FDS问题 N#"P的有力手 段W,2( 方法提供一种显式的机制来处理程序结构中 的横向的关联R’>HDDIKJJ?FM IHFI=>FDS。使用传统的 程序设计技术处理关联一般采用异常处理、多对象协 议、同步化、资源共享等方法,这些方法的不足是对关 联处理的模块性,以致程序不易开发和维护。所谓的 ,D@=IJ 是一段代码用来描述在程序中重复出现的一 个特性。比如,我们的一个面向对象的图形系统中我们 会实现直线类和圆类,在其中均有关于显示更新的有 关类方法,我们认为是一种横向的关联,在 ,2( 技术 中可以在一 ,D@=IJ 中实现一个模块化的有关显示更 新行为,由于是一个单一的模块单元中实现的,使用我 们可以将其作为一个设计单位来考虑。 ,2(技术可以看是 22(技术本身局限性的一个 补充,它主要从处理程序结构中关联分离问题入手,为 我们把握软件开发的复杂性提供另一个有力的机制。 参考文献 # Z. (. 0>HH[D.8A= G\JA?IBC GBF5GHFJA.,XX?DHF ]=D5 C=\W#OO$ ! (>=DDGBF.软件工程5实践者的研究之路(第五版).清华大 学出版社,!""# & +. ^BGGBW 1. _=CGW 1. *HAFDHF BFX *. ‘C?DD?X=D <=D?MF (BJJ=>FD.,XX?DHF ]=DC=\W#OO$ : -. 1. *=FF?FMD BFX 9. ]HHCX>?XM= R=XD.S.,M=FJ J=IA5 FHCHM\a YHKFXBJ?HFDW B@@C?IBJ?HFD BFX GB>[=JD.3@>?FM=> ‘=>CBMW#OO7 $ 0. 9=\=>.2TU=IJ5H>?=FJ=X DHYJbB>= IHFDJ>KIJ?HF.(>=F5 J?I= _BCCW#O77 % _. ,. 3?GHF.8A= DI?=FI=D HY JA= B>J?Y?I?BC.968 (>=DDW #OO% Q ’. 3L\@=>D[?.’HG@HF=FJ 3HYJbB>=.,XX?DHF ]=DC=\W #OO7 7 ’H@C?=FW*.2.,XcBFI=X ’dd 3J\C=D BFX 6X?HDG,XX?5 DHF5]=DC=\W1=BX?FMW9,W#OO! O ?D -.’AH>BYBDW,M=FJ 8=IAHCHM\ _BFXTHH[.9I ^>Bb5_?CC,#OOO #" (B>FBDW <..2F JA= I>?J=>?B JH T= KD=X ?F X=IHG@HD5 ?FM D\DJ=GD ?FJH GHXKC=D. ’HGGKF. ,’9 #$W #!W #OQ! ## 3BFX>B eB\ 9?CC=>.,D@=IJ52>?=FJ=X (>HM>BGG?FM 8B[=D ,?G BJ 3HYJbB>= ’HG@C=;?J\W 6+++ IHG@KJ=> W cHCKG= &:W FKGT=> :W !""# #! 田捷,顾明.软件工程环境的集成模型与应用.计算机研究 与发展,#OO"(#) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! &Q
本文档为【实时嵌入式内核在DSP上的移植实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_418881
暂无简介~
格式:pdf
大小:92KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2012-12-01
浏览量:10