嵌入式操作系统上的移植与应用.pdf
嵌入式操作系统!#$%&在()*上的移植与应用赵宁+陈明+何鹏举,西北工业大学自动化学院+陕西 西安-./-0 1摘要2以34 56 7公司的38 9.:;?#A BC C移植到3;D微处理器上的主要过程+并实现了一个嵌入式C E 4 6 F E 6 4的多任务系统G实践证明+该系统具有成本低H便于移植和扩展性强等特点+有良好的应用前景G关键词2嵌入式操作系统I?#A B C C I 3;DI移植I嵌入式C E 4 6 F E 6 4中图分类号2 8 J 0-K文献标识码2 L文章偏号2./0 B=/=.,0/1/B/0 9 B/?#A B C C4 f3;D r F f i 6 l l f Fa lt 6 l i F a s 6 t u3E6 v h 5r 7 6f g 6 5s 6 t t 6 ta E 4 6 F E 6 4 5e 7 4 a B 4 h l w lF e El m l 4 6 5 a lb a o 6 E uC 4l j f k l5h E mh t o h E 4 h b 6 ll e i jh l7 f ki f l 4+r f F 4 h s a 7 a 4 mh E t6 v r h E l a s a 7 a 4 m+h E ta 4 i h Es 6k a t 6 7 me l 6 t ux yz V N W Q 2 6 5s 6 t t 6 t A I?#A B C C I3;DI4 F h E l r 7 h E 4 h 4 a f E I6 5s 6 t t 6 ta E 4 6 F E 6 4收稿日期2 0/B/0 B 0?#A B C C移植到34 56 7公司的处理器389.:;?#A B C C和8?J#C J协议栈三者的结合+应用到了嵌入式C E 4 6 F BE 6 4系统中G!#$%&的概述目前市场上的商用嵌入式操作系统产品很多+如v kf F w l H J A A H e i 7 6 e l和!a E?c等+它们已经十分成熟+为研究和开发提供了有力的开发和调试工具+但开发成本昂贵+并不适用于一些小型系统的开发G而?#A B C C是一个免费的H源码公开的H基于优先级的H占先式的H可裁剪的多任务实时内核G其绝大部分源码是用3A C?编写的+代码可读性强+可移植性好+对处理器及资源要求不高G目前+它支持v =H 3;DHJ f k6 F J?H DC J A等众多体系结构+并有很多商业应用实例G?#A B C C是优秀的轻量级实时操作系统+适用于本文嵌入式系统G?#A B C C的主要特点如下2是优先级可剥夺的实时多任务操作系统G可处理和调度#=个用户任务+任务的优先级可以动态调整G提供任务间通信H同步使用的信号量H邮箱和消息队列G具有良好的可裁剪性+可尽量减小系统的;D和;3D大小G?#A B C C的软件体系结构如图.所示+它包括应90航 空 计 测 技 术计算机技术与应用万方数据用程序软件!与应用相关的代码!与处理器无关的代码和与处理器相关的代码应用程序软件是用户根据需求来编写的代码本文的嵌入式#$%&$&%设计就是编写这部分代码用户根据自己的应用系统通过编写与应用相关的代码来定制合适的内核服务功能(通过这部分代码可以实现对)*+,-.#的裁剪与处理器无关的代码就是通常所说的操作系统的内核()*+,-.#所有系统服务均由内核提供这部分代码是完全公开的(这里采用的是)*+,-.#/0 1 2 3 1 4版本内核将应用系统和底层硬件有机的结合成一个实时系统要使同一个内核能适用于不同硬件体系(就需要在内核和硬件之间有一个中间层(这就是与处理器相关的代码处理器不同(这部分代码也不同这部分代码可以由用户来编写(也可以直接使用已经成功移植的范例所谓移植(就是编写与处理器相关的代码图5)*+,-.#软件体系结构6 7 8+9:;?上的移植A B是目前嵌入式领域应用最广泛的A#-*微处理器结构(以其低成本!低功耗!高性能等优点占据了嵌入式系统应用领域的领先地位A B系列的处理 器 当 前 有A BC(A BD(A BD E(A B5 F(A B5 5等 多 个 产 品(所 有 的A B处 理 器 都 共 享A B通用的基础体系结构本文采用的是大容量G H I J K型LD 5系列微处理器MM LD 5 G A N F 5 O 1(它是%P&H公司最新推出的基于A BC L Q B#核的微控制器这种微控制器的特点是高性能R 1位A#-*体系结构!高密度5 O位指令集!低功耗以及实时性(扩充的G H I J K存储器还增加了开发者使用的灵活性一般来说(能移植)*+,-.#的*S T必须满足以下条件U V处理器的*编译器能产生可重入代码W X用*语言就可以打开和关闭中断W Y处理器支持中断(并且能产生定时中断W Z处理器支持能够容纳一定量数据的硬件堆栈W 处理器有将堆栈指针和其他*S T寄存器读出和存储到堆栈或内存中的指令 5 对于LD 5 G A N F 5 O 1来说(上面的这些条件都是可以满足的开发工具采用的是0 5 2 1的Q-/A BQ&0&H _&-a%&4(可以生成可重入代码W开关中断可以通过设置相应寄存器来实现W)*+,-.#通过处理器产 生 的 定 时 器 中 断 来 实 现 多 任 务 之 间 的 调 度W在A BC L Q B#的处理器上可以产生定时器中断另外(A BC L Q B#核的处理器具有硬件堆栈和有关的堆栈指令实际上()*+,-.#可以简单地看作是一个多任务调度器(在这个任务调度器上添加了与多任务操作系统相关的一些系统服务(如信号量!邮箱等其D F b的代码是用*语言写的(可以直接移植到有*语言编译器的处理器上移植工作主要集中在多任务切换的实现上(因为这部分代码用来保存和恢复*S T现场/即写+读相关寄存器4(所以不能用*语言实现(只能用汇编语言完成 N)*+,-.#/0 1 2 3 1 4的全部源代码量大约是O F F F cC F F F行(共5 O个文件(将)*+,-.#移植到A B处理器上(需要修改R个与A B体系结构相关的文件U,-*S T2 d(,-*S T2-B(,-*S T*2*代码量大约是3 F F行以下分别介绍这R个文件的移植工作6 2 e 9:8 f g2 h包括数据类型定义!堆栈单位定义!堆栈增长方向定义!关中断和开中断的宏定义以及进行任务切换的宏定义等其中堆栈的单位与*S T的寄存器长度一致(堆栈是由高地址向低地址增长6 2 6 9:8 f g=2=:?这部分需要对处理器的寄存器进行操作(所以必须用汇编语言来编写(包括N个子函数U,-%I%da i K.A j k/4(,-*%l-m/4(,-#$%*%J-m/4(,-L a n o.#-A/4,-%I%da i K A j k/4在多任务系统启动函数,-.-%I%/4中调用完成的功能是U设置系统运行标志位,-A$a$i pL A TE(将就绪表中最高优先级任务的栈指针装载到-S中(并强制中断返回这样就绪的最高优先级任务就如同从中断返回到运行态一样(使得整个系统得以运转,-*%l-m/4在任务级任务切换函数中调用任务级切换是通过-q#或者L A S人为制造的中断来实现的#-A的向量地址必须指向,-*%l-m/4 这一中断完成的功能U保存任务的环境变量/主要是寄存器的值(通过入栈来实现4 W将当前-S存入任务L*r中W载入就绪最高优先级任务的-S W恢复就绪最高优sFRs计算机技术与应用1 F F N年第1 N卷第N期万方数据先级任务的环境变量!中断返回#$%&()$*+,在退出中断服务函数#$%&-).+,中调用/实现中断级任务切换在时钟中断%$0+中断服务程序,中/当发现有高优先级任务等待的时钟信号到来时/在中断退出后并不返回被中断任务/而是直接调度就绪的最高优先级任务执行/从而能够尽快地让高优先级的任务得到响应/保证系统的实时性能其原理基本上与任务级的切换相同但是由于进入中断时已经保存了被中断任务的(1 2现场/因此不用再进行类似的操作了/只需对堆栈指针做相应的调整#$3.4 5%$0+,系统时钟节拍中断服务函数/是一个周期性中断/为内核提供时钟节拍频率越高/系统负荷越重其周期的大小决定了内核所能给应用系统提供的最小时间间隔服务对于要求更加苛刻的任务/需要用户自己建立中断来解决该函数的具体内容6保存寄存器+如果硬件自动完成就可以省略,!调用#$%&-&7 8+,!调用#$3.97 3.4 5+,!调用#$%&:-).+,!恢复寄存器!中断返回;?A B C(D#$:%中共定义了E个函数在该文件中其中#$3 F G 5$5%&.+,是任务堆栈初始化函数/其他H个函数都是IJ J 5函数/是对系统内核扩展时用的#$3 F G 5$5%&.+,是在用户建立任务时系统内部 自己调用的/对用户任务的堆栈进行初始化在K0 LM 3 N L%体系结构下/任务堆栈空间由高至低依次保存着1(/O 0/0 P Q/0 P P/RR/0 P/0 S/(1$0/如图Q所示当任务堆栈初始化完成后/#$3 F G 5$5%&.+,返回新的堆栈指针$3 T在#$3 F G 5(8 7 F 7+,执行时/会调用#$3 F G 5$5%&.+,的初始化过程/然后通过#$3(U%&.+,函数调用/将返回的$1指针保存到该任务的3(U块中初始状态的堆栈是模拟了一次中断后的堆栈结构/使建立好的进入就绪任务的堆栈与系统发生中断/并且将环境变量保存完毕时的堆栈结构一致因为任务创建后并不是直接就获得执行/而是通过#$4 V 7 W+,函数进行调度分配/当满足执行条件后才能获得执行为了使调度简单一致/就预先将该任务的1(指针和返回地址O 0都指向函数入口/以便被调度时从堆栈中恢复到刚开始运行时的(1 2现场在该文件中需要实现H个操作系统规定的IJ J 5函 数6#$3 F G 5(8 7 F 7 IJ J 5+,/#$3 F G 5 N 7 X IJ J 5+,/#$3 F G 5$*IJ J 5+,/#$3 F G 5$F IJ J 5+,/#$3.97 3.4 5 IJ J 5+,必须声明/这H个函数若无特殊需求/可以将它们都设成空函数图Q K0 LM 3 N L%体系结构的寄存器位置=嵌入式Y Z Z 的设计将C(D#$:%移植到K0 L上只是构造了一个应用平台/而要实现真正的应用/还必须设计用户的应用程序嵌入式%&7 8&7 系统它包括0$Q _ Q 以太网等多种接口/实现内部低速接口和以太网之间的数据转发功能/可以为多种嵌入式设备网络服务系统以移植的C(D#$:%为软件平台/在此基础上开发了各种设备的驱动程序/人机交互界面$V 7 X X/3(1 D%1协议栈 C(D#$:%作为操作系统/对这些程序任务进行调度并且由于有了C(D#$:%所提供的任务调度和通信机制/使3(1 D%1协议栈在K0 L上的实现容易了很多因为C(D#$:%把包括3(1 D%1协议栈在内的应用程序部分都封装成统一模式的任务函数形式/C(D#$:%只对每个任务函数进行操作/并不关心每个任务函数内部的调用情况在C(D#$:%中使用任务创建函数#$3 F G 5(8 7 F 7定义了E个主要任务根据任务的执行顺序来设定任务的优先级本系统采用静态优先级/即运行过程中优先级不变各任务的名称功能和优先级见表P 优先级的数值越低说明优先级越高除了这E个任务外/还有串行接口以太网接口的设备驱动部分/各任务间使用C(D#$:%提供的消息邮箱进行同步和通信典型的消息邮箱是用一个指针型变量/通过内核服务/一个任务或一个中断服务程序可以把一则消息+即一个指针,放到邮箱里去+下转第_ a页,bP_b航 空 计 测 技 术计算机技术与应用万方数据作的设备!如串行口设备等子设备是本身具有处理数据输入输出的功能!但只有和对应的父设备一起才构成完整工作系统的设备#在消防供水监测系统中!建立了两个串口父设备#一个用来管理工控机柜中所有的$%&$()数据采集 模 块!它 的 属 性 设 置 为*通 讯 口+,-.!波 特 率(/)!数据0位!停止.位!偶校验!采集周期.1 另一个用来管理现场所有的%2 3条屏显示器!它的属性设置为*通讯口+,-4!波特率(/)!数据0位!停止.位!无校验!采集周期)#系统运行过程中!设备构件由设备窗口统一调度管理!通过通道连接!向实时数据库提供从外部设备采集到的数据!从实时数据库查询控制参数!发送给系统其他部分!进行控制运算和流程调度!实现对设备工作状态的实时监测和过程的自动控制#这种结构形式使其成为一个与设备无关的系统!对于不同的硬件设备!只需定制相应的设备构件!放置到设备窗口中!并设置相关的属性!系统就可对这一设备进行操作!而不需要对整个系统结构作任何改动#5 6 7建立安全机制为了确保系统安全可靠地运行!本系统建立了一套完善的安全机制!严格限制各类操作的权限!使不具备操作资格的人员无法进行操作!从而避免了现场操作的任意性和无序状态!防止因误操作干扰系统的正常运行#用户在进行操作之前首先要登录!登录成功后该用户才能进行所需的操作!完成操作后退出登录!使操作权限失效#8结束语本系统已在中央电视台经过近三年的应用!实践证明!该系统简便实用!已为中央电视台消防供水提供了安全可靠的保障9999999999999999999999999999999999999999999999999999#:上接第;.页?A=B 1 C:为=+&服务的软件定时器4D E F F=B 1 C:I=J K K=B 1 C:K=B 1 C:=+&L G&协议栈的主任务NOP K 2 J E Q=B 1 C:符合O3&2+,协议的O3&应用程序/=J K 2 J E Q=B 1 C:H:P?B H:S Q P I:L U初始化操作系统UL创建消息邮箱创建各个任务,D D I B A I:L U多任务调度开始ULV5结束语W+L,D X G G作为一个优秀的实时操作系统已经被移植到各种体系结构的微处理器上#由于$Y-体系结构在嵌入式领域获得了广泛的应用和支持!所以将W+L,D X G G移植到$Y-平台上!能够使我们更深入地了解实时操作系统的构造!加快$Y-微处理器的应用 和开发#论文实现了实时操作系统W+L,D X G G在$=(.Z Y M)./4上的成功移植!并运用到嵌入式G H I A XH I系统中#本系统与传感器技术结合!实现了对远程信号的检测和故障诊断功能#随着$Y-体系结构和嵌入式系统发展的越来越快!W+L,D X G G的应用一定也会随之越来越广泛#参 考 文 献.2$%$_ Y,D D 嵌入式实时操作系统W+L,D X G G:第4版-邵贝贝!等译北京*北京航空航天大学出版社!4);4 马忠梅!等$=(.系列$Y-核微控制器结构与开发-北京*北京航空航天大学出版社!4);A?a_ H I E B?嵌入式系统b c服务器=+&L G&%B H -陈向群!等译北京*机械工业出版社!4);M 李明 W+L,D X G G在$Y-上的移植 电子设计应用!4);:M dM;d计算机技术与应用4)M年第4 M卷第M期万方数据