《μC_OS-Ⅱ操作系统在各种处理器上的移植.pdf》由会员分享,可在线阅读,更多相关《μC_OS-Ⅱ操作系统在各种处理器上的移植.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、腚p ClO S II 操作系统在各种处理器上的移植长江大学杨青胜徐爱钧p C O S I I 操作系统是一种抢占式多任务、单内存空间、微小内核的嵌入式操作系统,具有高效紧凑的特点。它执行效率高,占用空间小,可移植性强,实时性能良好且可扩展性强。采用p C O S I I 实时操作系统,可以有效地对任务进行调度;对各任务赋予不同的优先级可以保证任务及时响应;采用实时操作系统,降低了程序的复杂度,方便程序的开发和维护。p C O S I I 非常适合应用在一些小型的嵌入式产品应用场合,在家用电器、机器人、工业控制、航空航天、军事科技等领域有着广泛的应用。单片机、A R M、F P G A 与弘C
2、 O S I I 操作系统相结合,实现一些具体功能,是目前嵌入式应用中比较常见的。在这些应用中,基础性的上作就是操作系统的移植。本文选取使用较多的5 1 单片机、L P C 2 2 1 0、N i o s l l 三种处理器进行介绍。1c o s l l 操作系统移植条件p C O S I I 操作系统的大部分源代码都是用C 语言书写的,但仍需使用汇编语言来完成一些和处理器相关的操作,例如读写处理器、寄存器时只能使用汇编语言来实现。因此,将t t C O S I I 操作系统移植到目标处理器上,需要从硬件和软件两方面来考虑。硬件方面,目标处理器需满足以下条件:处理器的C 编译器能产生可重入代码
3、;用C 语言可以开关中断;处理器支持中断,并且能够产生定时中断(通常在1 0 10 0 0H z 之间);处理器能够支持容纳一定量数据的硬件堆栈;处理器有将堆栈指针和其他寄存器读出和存储到堆栈或内存中的指令。软件方面,主要关注的是一些与处理器相关的代码移植,其分布在O S-C P U H、O&C P U C C 和o S-C P U A A S M 这3 个不问的文件中。2目标处理器硬件支持5 1 单片机、L P C 2 2 1 0、N i o s l I 三种处理器在硬件方面均能满足u c o s I i 操作系统的移植要求。5 1 单片机:选择K e i l 公司的集成开发环境作为开发工具
4、,因为该集成开发环境的C 5 1 编译器能产生可重入内同步偏差在士2 01 2 8,。X 轴表示测量时间,y 轴表示主从时钟同步偏差。图4(c)为同步后两个从时钟偏差测量结果,共测量10 0 0 次,其1 0m s 内同步偏差在4 0U S。X轴表示测量时间,y 轴表示从时钟之间同步偏差。结语基于时钟频率调整的时间同步方法,实现简单,而且没有复杂的软件同步协议,占用较小的网络带宽就町以实现高精度的时钟同步,在硬件上只需要低成本的F P G A支持。蠢参考文献 1 王宝仁网络化运动控制系统多轴协同关键技术研究 D 。济南:山东大学,2 0 0 8 2 遇彬基于F P G A 的精确时钟同步方法研
5、究 D 杭州:浙江大学,2 0 0 7 3 王刚,黄飞,乔纯捷,等分布式网络时钟同步研究 J 仪器仪表学报,2 0 0 8(1 1)4 S i v a r a mB a l a s u b r a m a n i a n,H a r r i sK e n d a lR,A n a t o l yM o l d o v a n s k y AF r e q u e n c yC o m p e n s a t e dC l o c kf o rP r e c i s i o nS y n c h r o n i z a t i o nu s i n gI E E E l5 8 8P r o t
6、o c o la n di t sA p p l i c a t i o nt oE t h e r n e t J R o e k w e l lA u t o m a t i o n,2 0 0 3 5 陈冰基于时钟同步的网络化运动控制方法与实现 D 武汉:华中科技大学,2 0 0 6 孛英(硕士研究生)。研究方向为基于以太网的运动控制实时通信和多轴同步技术;游有鹏(教授、博士生导师),研究方向为数控技术,机电控制及自动化。(牧稿日期:2 0 0 9-0 6-2 9)p a p e r m e s n e t c o r n c n(投稿专用)M i c r。c。n t r 0 I I e
7、 r s8 LE m b e d d e dS y s t e I m69 万方数据型代码,且用C 语言就可以开关中断。同时具有一定数量的堆栈和操作相关寄存器的指令。L P C 2 2 1 0:采用A R M 7 微控制器可以满足上述、,而A D S l 2 的C 编译器可以满足、的要求。N i o s l I 处理器:N i o s 处理器可以配置成最多支持6 4个中断,包括外部硬件中断、内部中断以及T R A P(调试中断)。N i o sI I 处理器可以配置使用3 2 位内部定时器。通过用软件控制写入几个控制寄存器的内容来获得定时工作,与一般的定时器工作原理相同,可以产生定时中断。N
8、i o s处理器可以外接存储器。以使用的D E 2 开发板为例,外接5 1 2K BS R A M 资源,可提供足够的数据硬件堆栈。N i o s l I8 0I D E 采用G N U 编译器,支持C C+的编译、链接产生重入代码,允许在C 语言中嵌入汇编语言。3 软件移植过程3。1o SC P U。H 的实现O s-C P U H 文件包括了用#d e f i n e 语言定义的与处理器相关的常数、宏以及数据类型。在上述三种处理器采用的不同编译器中,数据类型的定义是相F d 的,在此不做具体介绍。在o sC P U H 中定义与处理器相关的宏,主要是进入临界区的O S E N T E R
9、C R I T I C A L()和退出l 临界区的o S-E X I T C R I T I C A L()。在K e i l 编译器中,E A 是总中断。#d e f i n eO S E N T E R C R I T I C A L()E A=0;关中断#d e f i n eO S-E X I T C R I T I C A L()E A=1;开中断在A D S 编译器中定义为软件中断函数,并编写软件中断处理代码实现开关中断。s w i(0 x 0 0)v i o dO ST A S K S W(v i o d);任务级任务切换函数一s w i(0 x 0 0)v i o dO S-
10、E N T E R C R I T I C A L(v i o d);关中断一s w i(O x 0 0)v i o dO S E X I T C R I T I C A L(v i o d);开中断在N i o s l I8 0I D E 编译器中:#d e f i n eO S E N T E R C R I T I C A L()a s m(“P F X8 nw R C T L g O;”)关中断#d e f i n eO s-E X I T C R I T I C A L()a s m(“P F X9 nW R CTL g0;”)开中断堆栈的增长方向通过设置O S S T K G R
11、O W T H 为0或者1 来确定。5 1 单片机中只能设置为0,表示堆栈是从下往上增长的。L P C 2 2 1 0 中则可以设置成0 或者1。N i o s l I 中则只能设置成1,表示堆栈足从上往下增长的。3 2O S C P U C C 的实现0 S-C P U C C 中,主要应改写堆栈初始化函数O S T a s k S t k l i n t()。必须根据移植时统一定义的任务堆栈结构进行初始化,其他9 个钩子甬数只需说明即可。也可根据移植时用户自己的需要,编写相应的操作代码。以L P C 2 2 1 0 为例,堆栈空间从高到低依次存放着P C,L R,R 1 2,R 1 1,R
12、 1,R 0,C P S R,0 s E n t e r S u m。每个任务都有独立的O s E n t e r S u m,在任务切换时保存和恢复各自的O s E n t e r S u m 值。各个任务开关中断的状态可以不同,这样实现了开关中断的嵌套。O S S T K*O S T a s k S t k l n i t(v o i d(*t a s k)(v o i d p d),v o i d*p d a t a,O s-S T K p t o s,I N T l 6 Uo p t)O S S T K*s t k;o p t 2 0 p t ls t k=s t k;*s t k=(
13、o 曼S T K)t a s k,*一s t k=(O S S T K)t a s k;*一一s t k=0;*一s t k-0:*一s t k=0:*一一s t k=0*一s t k=0 l*一s t k=0:*一s t k 一0:*一一s t k=0:*一一s t k=0 l*一s t k=0:*一s t k=0:*一s t k=0:*一一s t k=(u n s i g n e di n t)p d a t a l*一一s t k=(U S E R U S I N G-M O D E O x 0 0);*一s t k=0:r e t u r n(s t k);关于5 1 单片机和N i
14、o s l I 处理器的这部分移植,请参看参考文献。3 3O S C P U A S 的实现这部分需要对处理器的寄存器进行操作,所以必须用汇编语言编写。v C O S I I 移植要求用户编写4 个简单的汇编语言函数:O S S t a r t H i g h R d y()、O S C t x S w()、O s-I n t C t x S w()、O S T i c k l S R()。O S S t a r t H i g h R d y()的任务是进行任务调度和切换;O S C t x S w()的任务是强制C P U 进行寄存器和程序计数器的切换;O S I n t C t x S
15、w()的任务是在中断返回时进行任务切换;O S T i c k l S R()是时钟节拍中断服务程序,用来实现时间的延迟和超时功能。以O S S t a r t H i g h R d y()任务调度和切换函数为例,介绍3 种处理器移植代码。f1)5 1 单片机O S S t a r t H i g h R d y:7 0平方杠乌嵌入式系优应用I 盈霍l 盈豳I 嘞a d v m e s n e t c o n Lc n(广告专用)万方数据:一一一一一一一一一4;O S R u n n i n g T U R El 一一一一一一一一一一一一一一一一一;由于此时总中断允许E A 并未打开,因而函
16、数中何处设置任务;运行并不重要M O VD P H,#H I G H(0 S R u n n i n g)M O VD P L,#L O W(O S R u n n i n g)M o VA,#1M O V X D P T R,Al 一一一一一一一一一一一一一一一一一:T R 0 1:一一一一一一一一一一一一一一一一一S E T BT R 0(2)L P C 2 2 1 0O S S t a r t H i g h R d yM S RC P S Rc,#(N o I n tS Y$3 2 M o d e),告诉弘C O S I I 自身已经运行L D RR 4,=O S R u n n i
17、n gM O VR 5,#1S T R BR 5,J R 4 B LO S T a s k S w H o o k;调用钩子函数L D RR 6,=O S T C B H i g h R d yL D RR 6,J R 6 BO S I n t C t x S w 一1E N D1 3)N i o s l l 处理器O S S t a r t H i g h R d y:lCf u n c t i o ns t a r t sw i t h”s a v e s p,X X”;C a l lO S T a s k S w H o o k()i f(O S C P U H O O K S E N
18、一21)M O V l 3 2 g O,O S T a s k S w H o o k hC A L Lg ON O Pe n d i fO S R u n n i n g=T R U E;i n c 8O S R u n n i n gP P IH A LJ V MC L D CK V MC D CM l D PE P E R|E N c EE c H A N G E经验交流;S w i t c ht ot h eh i g h e s tp r i o r i t yt a s k;s p O S T C B H i g h R d y-O S T C B S t k P t rM O V
19、 l 3 2g O,O S T C B H i g h R d yL D9 1,g o L Ds p,9 1 L O A D _ C O N T E X TT R E T 0 7;I S T A T U SN O P;g O 一&O S T C B H i g h R d y;9 1 一&o s T C B;s t a c ki st h ef i r s te l e m e n t一 S T A T U S(n oc h a n g ei nf a c t)结语5 1 单片机、L P C 2 2 1 0,N i o s l I 三种处理器在目前的嵌入式应用方面有着广阔的市场前景。将o C
20、O S I I 操作系统移植到这三种以及其他处理器上,能够更好地保证系统运行时的稳定性和实时性,而且该操作系统代码少,易于掌握和移植。本文所介绍的“C O S I I 操作系统在3 种处理器上的移植是笔者在实际学习过程中,进行的梳理和小结,对初学者有一定的参考价值。_ l参考文献 1 L a b r o s s eJ e a nJ 嵌入式实时操作系统F,c o s I I M 邵贝贝,译2 版北京:北京航空航天大学出版社,2 0 0 3 2 周立功,等A R M 嵌入式系统基础教程 M 北京:北京航空航天大学出版社,2 0 0 5 3 胡大可,李培弘,方路平基于单片机8 0 5 1 的嵌入式开
21、发指南 M 北京:电子工业出版社,2 0 0 3 4 张志刚F P G A 与S O P C 设计教程:D E 2 实践 M 西安:西安电子科技大学出版社,2 0 0 7 5 徐爱钧,彭秀华K e i lC x 5 1V 7 0 单片机高级语言编程与“V i s i o n 2 应用实践 M 北京:电子工业出版社,2 0 0 4 杨青胜(硕士),主要研究方向为自动检测与控制、嵌入式系统等;徐爱钧(教授),主要研究方向为嵌入式系统、单片机智能化仪器仅表等。(收稿日期:2 0 0 9-0 7-2 7)缩略语P o i n t-t o-P o i n tI n t e r f a e eH a r
22、d w a r eA b s t r a c t i o nL a y e rJ a v aV i r t u a lM a c h i n eC o n n e c t e dL i m i t e dD e v i c eC o n f i g u r a t i o nV i r t u a lM a c h i n eK i l o b y t eV i r t u a lM a c h i n eC o n n e c t e dD e v i c eC o n f i g u r a t i o nM o b i l eI n f o r m a t i o nD e v i c
23、eP r o f i l e点对点接1 2硬件抽象层J a v a 虚拟机连接受限设备配置虚拟机千字节虚拟机巳连接设备配置移动信息设备简表p a p e r(孕m e s n e t c o r n c n(投稿专用)圄圜暖譬噩团团M i c r o c o n t r o l l。8 LE m b。d d e dS y。71 万方数据C/OS-操作系统在各种处理器上的移植C/OS-操作系统在各种处理器上的移植作者:杨青胜,徐爱钧,Yang Qingsheng,Xu Aijun作者单位:长江大学刊名:单片机与嵌入式系统应用英文刊名:MICROCONTROLLERS&EMBEDDED SYSTEMS年,卷(期):2009(12)参考文献(5条)参考文献(5条)1.徐爱钧;彭秀华 Keil Cx51 V7.0单片机高级语言编程与Vision2应用实践 20042.张志刚 FPGA与SOPC设计教程:DE2实践 20073.胡大可;李培弘;方路平 基于单片机8051的嵌入式开发指南 20034.周立功 ARM嵌入式系统基础教程 20055.Labrosse Jean J;邵贝贝 嵌入式实时操作系统C/OS-2003 本文链接:http:/
限制150内