(计算机应用技术专业论文)基于arm的μcosⅡ的移植研究.pdf_第1页
(计算机应用技术专业论文)基于arm的μcosⅡ的移植研究.pdf_第2页
(计算机应用技术专业论文)基于arm的μcosⅡ的移植研究.pdf_第3页
(计算机应用技术专业论文)基于arm的μcosⅡ的移植研究.pdf_第4页
(计算机应用技术专业论文)基于arm的μcosⅡ的移植研究.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机应用技术专业论文)基于arm的μcosⅡ的移植研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 随着计算机技术的发展,嵌入式系统己成为计算机领域的一个重 要组成部分,并成为近年来新兴的研究热点。而采用a r m 微处理器作 为硬件基础和i - t c o s i i 作为嵌入式操作系统被广泛的应在各种嵌入 式应用系统中。 本文首先对a r m 微处理器和u c o s i i 进行了介绍;另外研究和 探讨了l a c o s i i 在a r m 架构上的移植方案,并就其关键技术部分, 结合实现代码进行了阐述并提出了移植过程中要注意的问题。本文对 p c o s 1 1 的任务堆栈处理进行了详细的分析,并提出了3 种改进方式 以减小内存的使用量。i _ t c o s i i 要实现网络功能,就必须支持t c p i p 协议。本文通过对l w i p 的移植实现了t c p i p 协议栈;通过编写8 0 1 9 网络驱动最终实现了网络功能。仿真工作是通过s k y e y e 进行完成的。 关键词:a r m 微处理器;l a c o s l i ;l w i pt c p i p 协议栈;s k y e y e a b s t r a c t w i t ht h ed e v e l o p m e n to fc o m p u t e rt e c h n o l o g y ,t h ee m b e d d e d s y s t e mh a sb e c o m eai m p o r t a n tc o n s t i t u e n ti nc o m p u t e rd o m a i n ,a n d b e c a m et h er e c e n t y e a r se m e r g i n g r e s e a r c hh o t s p o t t h e a r m m i c r o p r o c e s s o ru s e d a sh a r d w a r ef o u n d a t i o na n dg c o s i iu s e da s e m b e d d e d o p e r a t i n gs y s t e m i sb e e n w i d e s p r e a d i nal o tk i n d so f e m b e d d e da p p l i c a t i o ns y s t e m t h i sp a p e ri n t r o d u c e sa r mm i c r o p r o c e s s o ra n dg c o s - i i f i r s t l y , a n dd is c us s e sa n dr e s e a r c h e st h ep r o j e c tf o r t h el a c o s i i p o r tf o ra r m m i c r o p r o c e s s o r ,w h i c h e s s e n t i a l t e c h n o l o g y w a se l a b o r a t e d b y r e a l i z a t i o nc o d e ;a n dp r o p os e di nt r a n s p l a n tp r o c e s sh a dt op a ya t t e n t i o n q u e s t i o n t h i sp a p e rt op c o s i it a s ks t a c kp r o c e s s i n gc a r r i e do nt h e d e t a i l e d a n a l y s is ,a n dp r o p o s e d 3 i m p r o v e m e n t sw a y s r e d u c e dt h e m e m o r yt h ea m o u n to f u s ei fg c o s 1 1w a n tt or e a l i z en e t w o r k f u n c t i o n ,m u s ts u p p o r t t h et c p i pa g r e e m e n tt h is p a p e rt h r o u g h r e a l i z e dt h et c p i pa g r e e m e n ts t a c kt ot h el w l pt r a n s p l a n t ;t h r o u 曲 c o m p i l e d 8 019n e t w o r k sa c t u a t i o n s f i n a l l y r e a l i z e st h en e t w o r k f u n c t i o nt h es i m u l a t i o nw o r ki sc a r r i e so nt h r o u g hs k y e y ec o m p l e t e s k e y w o r d s :a r mm i c r o p r o c e s s o r ;g c o s i i ;l w i p t c p i ps t a c k ; s k y e y e 辽宁工程技术大学硕士学位论文i l 绪论 1 1 引言 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件足可 裁剪的,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用 计算机系统【1 1 。随着计算机技术的发展,嵌入式系统己成为计算机领域的 一个重要组成部分,并成为近年来新兴的研究热点。嵌入式系统j 。业关联 度大,市场前景好,发展嵌入式将有利于增强劳动生产率。 1 1 1 基于a r m 和uc o s i i 的嵌入式系统 随着国内外各种嵌入式产品的进一步开发和推广,嵌入式技术越来 越和人们的生活紧密结合。嵌入式系统作为一类特殊的计算机系统,自底 向上包含有3 个部分”,如图i l 所示。 1 器蒜口 操作系统 卜前黼曰 图1 1 嵌入式系统的基本结构 ( 1 ) 硬件环境 硬件环境是整个嵌入式操作系统和应用程序运行的硬件平台,4 i 同的 应用通常有不同的硬件环境。硬件平台的多样性是嵌入式系统的一个主要 特点。 我们对一个嵌入式系统的选型往往是从其c p u 弄h 操作系统( o s ) 开始 的,一旦这两者选定,整个大的系统框架便选定了。我们在选择一个c p l 的时候,一般更注意其性能的优劣( 比如时钟频率等) 及所提供的接口和 功能的多少,及其功耗特性等。a r m 公司自1 9 9 0 年正式成立以来i ”, 在3 2 位r i s c ( r e d u c e di n s t r t l c t i o r ls e tc o m p u t e r ) c p u 歼发领域,_ j f i 断取得突 破,其结构已经从v 3 发展到v 6 。由于a r m 公司自成立以来,一直以 i p ( fn t e l l i g e n c ep r o p e r t y ) 提供者的身份向各大半导体制造商 n 售知识 产权,而自己从不介入芯片的生产销售,加上其设计的芯核具有功耗低、 成本低等显著优点,因此获得众多的半导体厂家和整机厂商的大力支持, 辽宁工程技术人学硕士学位论文2 在3 2 位嵌入式应用领域获得了巨大的成功。目前已经占有7 5 以卜| 的3 2 位 r i s c 嵌入式产品市场。在低功耗、低成本的嵌入式应用领域确立了市场领 导地位。a t m e la t 9 1 x 4 0 微处理器是使用a r m 公司的1 6 位3 2 位r i s c 结构, 内核是a r m 7 t d m i ,工作在6 6 m h z ,片e 集成了以下部件:8 kc a c h e 、外部 存储器控制器、片内s r a m 年n r o m ,具有3 2 宽的数据总线、可编程的扩展总 线接口e b i ( e x t e r n a lb u si n t e r f a c e ) 、8 个优先级的向量中断控制器、 3 - c h a n n e l 计时计数器等等,能够与常用的外围设备实现无缝连接,功能 强大。目前国内应用较为广泛。 ( 2 ) 嵌入式操作系统 嵌入式操作系统被定义为一种支持嵌入式系统应用的操作系统软件。 嵌入式操作系统为多样的嵌入式系统提供统的基本操作系统特性和软 件资源支持,同时又满足目标系统的特定的运行性能要求,而且达到隔离 与系统结构无关的应用层软件的目的。嵌入式操作系统能完成嵌入式应用 的任务调度和控制等核心功能。具有内核较精简、可配置、与高层应用紧 密关联等特点,并且嵌入式操作系统具有相对不变性。 在嵌入式系统的前期设计过程中,必须决定所采用的嵌入式操作系统 的类型。这是一个很重要的决定,因为这会影响到工程后期的发布以及软 件的维护。l ac o s i i 功能强大【,支持5 6 个用户任务,其内核为占先式, 支持信号量、邮箱、消息队列等多种常用的进程问通信机制,现已成功应 用到众多商业嵌入式系统中,是个成熟稳定的实时内核。与大多商用 r t o s i 同的是,uc o s i i 公开所有的源代码,9 0 的代码使用标准的a n s i c 语言书写,程序可读性强、移植性好,同时它可免费获得,即使商业应 用也只收取少量的许可费用。因此,对uc o s i i 实时操作系统的学习研 究、开发、应 j 具有重要意义。 ( 3 ) 嵌入式应用程序 嵌入式应用程序是运行于操作系统之上,利用操作系统提供的机制完 成特定功能的嵌入式应用。不同的系统需要设计不同的嵌入式应用程序。 1 1 2 目前发展情况 uc o s i i 是一个简单、高效的嵌入式实时操作系统内核,其性能得 辽宁工程技术大学硕士学位论文3 到的众多业内人士的肯定,可用性经过实践得到验证。但是它仅仅是一个 内核,只提供 r 任务管理以及任务间的通信等基本的功能,没有用户接口 以及刚络功能等,特别是没有网络功能,这在互联网发达的今天是不能接 受的,因此只有内核离具体应用还有一定的距离;同时uc o s 1 1 日前的 堆栈方式是可能造成空间的浪费或可能造成任务执行不了:另外uc o s i i 不是针对特定的硬件,即它与硬件无关的,要实现在特定的硬件上运行 还必须实现相应的移植程序。 1 1 3 本文的意义 本文在设计开发基于uc o s i i 的嵌入式实时应用系统的意义有以下 几点: ( 1 ) 开发基于“c o s 1 1 的实时应用系统在实时领域具有一定的应用 前景,同时对于以后利用开源代码开发嵌入式实时操作系统具有参考价 值。因为相对于l i n u x 具有良好的实时性能,“c o s f f 的商业价值得到 了认可,一些基于uc o si i 的商业软件也可以买到,如t c p i p 协议栈、 蓝牙通信软件、红外通信软件等。 ( 2 ) 不受无内核源代码的困扰,可在现有代码的基础上进行二次甚至 多次开发应用于特定环境,并且可以借助网上免费的内核演进版本,且永 远不受知识产权的困扰。 ( 3 ) 同时可用于教学和实践。虽然现在商用的嵌入式实时系统软件已 经十分成熟,并为用户提供了强有力的开发工具和调试工具,但是商用嵌 入式实时操作系统价格昂贵,对于国内中小型系统的开发并不划算,冈此 采用免费软件和开发代码不失为一种选择。 1 2 本文的主要工作 构建一个完整的实时应用系统,没有必要从零开始,这样做工作量太 大、效率低而且实现的功能电由于没有经过严格的验证而缺乏稳定性。目 前有众多的开源代码可供选择,其性能经过很多人的使用检验是值得信赖 的。其不足之处还可通过修改其源代码来完善或修改以满足特殊应用的要 求。因此本文采取的设计路线是利用网络上的开放代码资源并做必要的修 改增加到l ac o s 一1 1 内核而形成一个完整的嵌入式实时操心系统,为了实 i 7 宁t i 呈技术大学硕十学位论文 3 到的众多业内人士的肯定,可用性经过实践得到验证。但是它仪仪是个 内核,只提供r 任务管理以及任务问的通信等基本的功能,没有用户接口 以及刚络功能等,特别是没有网络功能,这在互联网发达的今天是不能接 受的,阁此只有内核离具体应用还有一定的距离;同时“c o s1 1 日前的 堆栈力式是可能造成空间的浪费或可能造成任务执行不了;另9 【、uc o s 1 1 不是针对特定的硬件,即它与硬什无关的,要实现在特定的硬件上运行 还必须实现相应的移植程序。 1 1 3 本文的意义 本文在设计开发基于uc o s i 1 的嵌入式实时应用系统的意义有以下 几点: ( 1 ) 丌发基于uc o sl i 的实时应用系统在实时领域具有一定的应用 前晟,同时对于以后利用开源代码升发嵌入式实时操作系统具有参考价 值。因为相对于l i f l u x 具有良好的实时性能,l ic o s l i 的商业价值得到 了认可,一些基于uc o si i 的商业软件也可以买到,如t c p i p 协议栈、 蓝牙通信软件、红外通信软件等。 ( 2 ) 不受无内核源代码的例扰,司在现有代码的基础 + 进行一次甚至 多次丌发应用于特定环境,并且硎以借助网上免费的内核演进版本,且永 远不受知识产权的困扰。 ( 3 ) 同时可爿j 于教学和实践。虽然现在商用的嵌入式实时系统软件已 经十分成熟,并为用户提供了强有力的升发工具和调试工具,但是商用嵌 入式实时操作系统价格昂贵,对十国内中小型系统的开发并不划算,因此 采用免费软件和开发代码不失为一种选择。 1 2 本文的主要工作 构建一个完整的实时应用系统,没有必要从零开始,这样做工作量太 大、效率低而且实现的功能也由于没有经过严格的验汪而缺乏稳定件。目 前有众多的开源代码可供选择,其性能经过很多人的使用检验是值得佶赖 的。其不足之处还可通过修改其源代码来完善或修改以满足特殊应用的要 求。因此本文采取的设计路线是利h 刚络上的开放代码资源并做必要的修 改增加到b tc o s 【i 内核而形成一个完整的嵌入式实时操心系统,为了实 改增加到“c o s 一内拨而形成一个完整的嵌入式实时操一t l , 系统,为了实 辽宁工程技术大学硕士学位论文 现“c o s i i 的网络功能,我在分析了几种嵌入式t c p i p 协议栈的基础 上,选择嵌入式协议栈l w i p 作为l ac o s i i 的网络模块并将它嵌入到u c o s i i 内核上。 因此本论文土要工作有以下几方面: ( 1 ) 对a r m 处理器和1 2c o s i i 内核移植 以简介a r m 处理器和t lc o s i i 实时操作系统进行展开,然后介绍基 于a r m 微处理器的uc o s i i 实时操作系统内核移植,并提出了一些注意 事项。 ( 2 ) uc o s i i 实时操作系统内存管理的改进 对目前uc o s 一1 1 的任务栈及任务处理方式进行分析,并提出了3 种 改进方式。 ( 3 ) 网络功能的实现 将l w i p 移植入uc o s l i 中,实现网络功能。 ( 4 ) 通过s k y e y e 进行仿真 通过s k y e y e 对基 a r m 微处理器的uc o s i i 移植和网络功能的实现 进行仿真。 辽宁工程技术大学硕士学位论文 5 2 基于a r m 的l ic o s - i i 内核移植 2 1 a r m 微处理器概述 a r m 公司白19 9 0 年正式成立以来,在3 2 位r i s c ( r e d u c e di n s t r u c t i o i l s e tc o m p u t e l - ) c p u 开发领域不断取得突破,其结构已经从v 3 发展到v 6 。 由于a r m 5 1 公司自成立以来,一直以i p ( 1 1 1 t e l l i g e n c ep r o p e r t y ) 提供者 的身份向各大半导体制造商出售知识产权,而自己从不介入芯片的生产销 售,加上其设计的芯核具有功耗低、成本低等显著优点,因此获得众多的 半导体厂家和整机厂商的大力支持,在3 2 位嵌入式应用领域获得了巨大 的成功,目前已经占有7 5 以上的3 2 位r i s c 嵌入式产品市场。在低功耗、 低成本的嵌入式应用领域确立了市场领导地位。现在设计、生产a r m 芯片 的国际火公司已经超过5 0 多家,国内中兴通讯和华为通讯等公司也已经 购买a r m 公司的芯核用于通讯专用芯片的设计。目前非常流行的a r m 芯核 有a r m t l l d m i ,s t r o n g a r ma r m 7 2 0 t ,a r m 9 t d m l ,a r m 9 2 2 t ,a r m 9 4 0 t ,a r _ v 1 9 4 6 f , a r m 9 6 6 t ,a r m l 0 t d m l 等。自v 5 以后,a r m 公司提供p ic c 0 1 0d s p 的芯核 给芯片设计者,用于设计a r m + d s p 的s o c ( s y s t e mo nc h i p ) 结构的芯片。 此外,a r m 芯片还获得了许多实时操作系统( r e a lt i m eo p e r a t i n gs y s t e m ) 供应商的支持,比较知名的有w in d o w sc e 、l i n u x 、p s o s 、v x w o r k sm u c le u s 、 e p o c 、uc o s i i 、b e o s 等。随着国内嵌入式应用领域的发展,a r m 芯片 必然会获得广泛的重视和应用。 2 1 1a r m 微处理器产品介绍 a r m 提供。系列内核、体系扩展、微处理器和系统芯片方案。由于所 有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行 ( 理论上如此) 。典型的产品如下: ( 1 ) c p l 内核 a r m 7 :小型、快速、低能耗、集成式r i s c 内核,用于移动通信。 a r m 7 t d m i ( t h u m b ) :这是公司授权用户最多的一项产品,将a r m 7 指令 集同t h u m b 扩展组合在一起,以减少内存容量和系统成本。同时,它还利 用嵌入式i c e 调试技术来简化系统设计,并用一个d s p 增强扩展来改进性 能。该产品的典型用途是数字蜂窝电话和硬盘驱动器。 辽宁工程技术大学硕士学位论文 a r m 9 f d m i :采用5 阶段管道化a r m 9 内核,同时配备t h u m b 扩展、调试 和h a r v a r d 总线。在生产工艺相同的情况下,性能可达a r m 72 1 d m l 的两倍 之多,常用于连网和顶置盒。 ( 2 ) 体系扩展 t h u m b :以1 6 位系统的成本,提供3 2 位r i s c 性能,特别注意的是它 所需的内存容量非常小。 ( 3 ) 嵌入式i c e 调试 由于集成了类似于i c e 的c p u 内核调试技术,所以原型设计和系统芯 片的调试得到了极大的简化。 ( 4 ) 微处理器 a r m 7 1 0 系列( 包括a r m 7 l0 、a r m 7 1 0 t 、a r m 7 2 0 t 和a r m 7 4 0 t ) :低价、 低能耗、封装式常规系统微型处理器,配有高速缓存( c a c h e ) 、内存管理、 写缓冲和j t a g 。广泛应用于手持式计算、数据通信和消费类多媒体。 a r m 9 4 0 t 、9 2 0 q 1 系列:低价、低能耗、高性能系统微处理器,配有c a c h e 、 内存管理和写缓冲。应用于高级引擎管理、保安系统、顶置盒、便携计算 机和高档打印机。 s t r o n g a r m :性能很高、同时满足常规应用需要的一种微处理器技术, 与d e c 联合研制,后来授权给i n t e l 。s a l l0 处理器、s a l l 0 0p d a 系统芯 片和s a l 5 0 0 多媒体处理器芯片均采用了这一技术。 a r m 7 5 0 0 和a r m 7 5 0 0 f e :高度集成的单芯片r i s c 计算机,基于一个缓 存式a r m 7 的3 2 位内核,拥有内存和i 7 0 控制器、3 个d m a 通道、片上视 频控制器和调色板以及立体声端口,a r m 7 5 0 0 f e 则增加了一个浮点运算单 元以及对e d od r a m 的支持。特别适合电视顶置盒和网络计算机( n c ) 。 2 1 2 基干a r m 7 1 d m l 的a t 9 l x 4 0 芯片 我针对c o s i i 的移植研究主要采用的a r m 内核是a r m 7 t d mt ,在基于 a r m 7 t d m 工的芯片中我选择了a t m e l 公司的a t 9 lx 4 0 芯片。 a t 9 1 x 4 0 的主要特点: ( 1 ) 基于a r m 7 t d m i l 6 3 2 位a r m 7 t d m i 精简指令结构的处理器。 ( 2 ) 片内s r a m 和r o m ,具有3 2 宽的数据总线。 辽宁工程技术大学硕士学位论文 ( 3 ) 可编程的扩展总线接口e b i ( e x t e r n a l ( 4 ) 8 个优先级的向量中断控制器。 ( 5 ) 3 - c h a n n e l 计时计数器等等。 该芯片是采用1 6 3 2 位a r m 7 t d m i 精简指令结构的处理器它的性价比很 高,同时具有非常低的功耗。如上所述,a t 9 1 x 4 0 由于具有大量的内部寄 存器因而中断处理非常快完成( 上下文直接保存在寄存器中,而不需要保 存在内存中) 是实时控制应用的理想选择。a t 9 l x 4 0 通过可编程的 e b i ( e x t e r n a lb u sin t e r f a c e ) 与片外存储器直接相连使得具有较快的访 问速度;同时它还具有8 个优先级向量中断控制器与外部数据控制器连接, 能够与常用的外围设备实现无缝连接,功能强大。这些使得a t 9 1 x 4 0 非常 适用于实时控制领域的应用。该芯片除了微处理器内核外,而且在芯片中 还集成了许多外围设备,这样i j 以使设计者可以快速开发产品。是嵌入式 系统中处理器的最佳选择之一。目前国内应用较为广泛。 2 2 l lc o s - i i 概述 在嵌入式系统的前期设计过程中,必须决定所采用的嵌入式操作系统 的类型。这是一个很重要的决定,因为这会影响到工程后期的发布以及软 件的维护。1 1c o s i i1 6 1 功能强大,支持5 6 个用户任务,其内核为占先式, 支持信号量、邮箱、消息队列等多种常用的进程间通信机制,现已成功应 用到众多商业嵌入式系统中,是个成熟稳定的实时内核。与大多商用 r t o s 不同的是,uc o s i i 公开所有的源代码,9 0 的代码使用标准的a n s i c 语言书写,程序可读性强、移植性好;同时它可免费获得,即使商业应 用也只收取少量的许可费用。凶此,对uc o s i i 实时操作系统的学习研 究、开发、应用具有重要意义。1 1c o s l i 特点如下: ( 1 ) 公开源代码 uc o s 一1 i 对学校和教育的使用完全免费,商业应用的费用相对也很 低。只要买一本书就可获得其源代码,且代码清晰易读、注释详尽,组织 有序。 ( 2 ) 可移植性( p e r t a b le ) 辽宁工程技术大学硕士学位论文 绝大部分i xc o s i i 的源码是用移植性很强的a n s ic 写的,和微处 理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最 低限度,使得uc o si t 便于移植到其他微处理器上。如同“c 7 0 s 样, l ac o s i i 可以移植到许许多多微处理器上。条件是,只要该微处理器有 堆栈指针,由c p u 内部寄存器入栈、出栈指令。另外,使用的c 编译器必 须支持内嵌汇编( i n l i n ea s s e m b ly ) 或者该c 语言可扩展、可连接汇编模 块,使得关中断、开中断能在c 语言程序中实现。uc o s i i 可以在绝大 多数8 位、1 6 位、3 2 位以至6 4 位微处理器、微控制器、数字信号处理器 ( d s p ) i :运行。从移植了的uc o s 升级到uc o s i i ,全部工作一个小 时左右就可完成。因为uc o s i i 和l zc o s 是向下兼容的,应用程序从 uc o s 升级到pc o s - i i 几乎不需要改动或根本不需要改动。移植的范例 可以很容易的从互联网上找到。 ( 3 ) 可固化( r o m a b le ) l ac o s i i 是为嵌入式应用而设计的,这就意味着,只要有固化手段( c 编译、连接、下载和固化) ,“c o s i i 就可以嵌入到产品中成为产品的 一部分。 ( 4 ) 可裁剪( s c a l a b le ) 可以只使用uc o s i i 中应用程序需要的那些系统服务,也就是说某 产品可以只使用很少几个l ac o s 一【i 调用,而另一个产品则使用了几乎所 有uc o s l i 的功能。这样可以减少产品中的uc o s i i 所需的存储空间 ( r a m 和r o m ) ,这种可裁剪性足靠条件编译实现的。只要在用户的应用 程序中( 用# d e f i r i oc o n s t a n t s 语句) 定义那些l ac o s i i 中的功能是应 用程序需要的就可以了。程序和数据两部分的存储用量已被最大努力的压 低了。 ( 5 ) 占先式( p r e e m p t i v e ) uc o s i i 完全是占先式的实时内核。这意味着i jc o s i i 总是运行就 绪条件下优先级最高的任务。大多数商业内核也是占先式的,l ac o s i i 在性能上和它们类似。 ( 6 ) 多任务 辽宁工程技术大学硕士学位论文 9 uc o s i i 可以管理6 4 个任务,但是保留8 个任务给系统,应用程序 最多可以有5 6 个任务,赋予每个任务的优先级必须是不同的,这意味着 uc o s i i 不支持时间片轮转调度法( r o u n d r o b i ns c h e d u l in g ) 。该调度 法适用于调度优先级平等的任务。 ( 7 ) 可确定性 仝部uc o s i i 的函数调用与服务的执行时问具有其可确定性。也就 是说,全部uc o s i i 的函数调用与服务的执行时间是可知的。进而言之, uc o s 1 1 系统服务的执行时间不依赖于应用程序任务的多少。 ( 8 ) 任务栈 每个任务有自己单独的栈,uc o $ 一i i 允许每个任务有不同的栈空间, 以便压低应用程序对r a m 的需求。使用uc o s i i 的栈空间校验函数,可 以确定每个任务到底需要多少栈空间。 ( 9 ) 系统服务 uc o s i i 提供很多系统服务,例如邮箱、消息队列、信号疑、块大 小固定的内存的申请与释放、时间相关函数等。 ( 1 0 ) 中断管理 中断可以使正在执行的任务暂时挂起。如果优先级更高的任务被该中 断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层 数可达2 5 5 层。 ( 1 1 ) 稳定性与n j 靠性 uc o s i i 是基于1 1c o s 的,uc o s 自1 9 9 2 年以来已经有好几百个 商业应用。uc o s i i 与uc o s 的内核是一样的,只不过提供了更多的功 能。 2 3 基于a r m 7 t d m i 的l ic o s - i i 实时操作系统内核移植 如t z 所述,uc o s i i 并不是针对特定的硬件进行设计,因此移植 uc o s i i 到a t 9 i x 4 0 ( 基于a r m 7 t d m i ) 需要对与a r m 7 t d m i 处理器相关部 分代码的设计与实现。因此本文所做的工作有: ( 1 ) 实现与a r m 体系结构相关的三个文件:o s c p u h 、o s c p u c c 、 o sc p ua a s m 。 辽宁工程技术大学硕士学位论文 ( 2 ) 根据应用的要求对与应用相关的代码进行修改。 为了方便移植,大部分的uc o s i i 代码是用c 语言写的,但仍需要 汇编语言写+ 些与处理器相关的代码,这是因为uc o s i i 在读写处理器 寄存器时只能通过汇编语言来实现。 2 3 1 设置o s c p u h 中与处理器和编译器相关的代码 o s c p u h 文件中包括使用的数据类型的定义,以及与硬件系统结构相 关的定义包括堆栈、中断等。具体需要做的修改如f 面所述。 ( 1 ) 数据类型的定义: 具体定义代码如下: l y p e d e fu n s i g n e dc h a rb o o l e a n : t y p e d e fu n s ig n e dc h a ri n t 8 l :* 8 位无符号整数十 t y p e d e fs ig n e dc h a ri n t 8 s :* 8 位有符号整数$ t y p e d e fu n s i g n e ds h o r ti n t l 6 u :$ 1 6 位有符号整数 t y p e d e fs i g n e ds h o r ti n t l 6 s :$ l6 位无符号整数 t y p e d e ft i l l s ig n e d1 0 1 1 9i n t 3 2 u :* 3 2 位无符号整数 t y p e d e fs i g n e dl o n gi n t 3 2 s : * 3 2 位有符号整数 t y p e d e ff 1 0 a tf p 3 2 : 单精度浮点数$ t y p e d e fd o u b l ef p 6 4 : 双精度浮点数 ( 2 ) 堆栈的单位及增长方向 根据相应的硬件系统结构定义堆栈的单位。本文采用的是基于 a r m 7 t d m i 的处理器,因为寄存器在任务切换时都将会保存在当前运行任 务的堆栈中,所以堆栈单位( 即数据类型o s s t k ) 应该是和处理器的寄存 器长度一致的。而堆栈l 乜是和编译器有关的,当进行函数调用时,入口参 数和返回地址都会保存在当前任务的堆栈中,编译器的编译选项和由此生 成的堆栈指令决定堆栈的增长方向。 t y p e d e fu n s i g n e di n to s s t k 十堆栈的单位,堆栈入口宽度为1 6 镪。| # d e f in eo ss t kg r o w t h1 定义堆栈的增长方向,1 示高地址向低 地址增长 辽宁工程技术大学硕士学位论文 1 ( 3 ) 相关宏定义 # d e f in e o s t a s k s w0 o s c t x s w0 任务切换 # d e f in e o s n t e r c r i w i c a l 0a r m d is a b ie in t 0 关闭中断 # d e f l i 3 e o s e n t e r c r i t i c a l 0 a r m e n a b le i n t ( ) 开启中断 “c o s - i i 需要先禁止中断再访问代码的临界段,并且在访问完毕后 重新允许中断。所以定义了两个宏来禁止和允许中断: o s e n t e r c rt t i c a l ( ) 和o s e x i t c rt t i c a l 0 。并采用汇编来实现禁止和 允许中断,具体实现为a r m d is a b le i n t ( ) 和a r m e n a b le i n t 0 。具体实现在 o s c p ua s 中。 o s t a s k s w 0 函数用来实现任务切换。uc o s i i 会调用o s c t x s w 0 函数实现任务切换。o s c t x s w ( ) 需要对寄存器进行操作,加上考虑到效率 的因素,o s c t x s w ( ) 用a r m 汇编来实现,具体实现在o s c p u a a s m 中。 2 3 2 用c 语言编写6 个操作系统相关的函数( o s c p u c c ) o s c p u c c 中共定义了6 个函数。但是最重要的是任务堆栈的初始化 函数o s t a s k s t kt n i t 0 ,其他都是对系统内核的扩展时用的。 o s t a s k s t k ir l i t ( ) 函数由任务创建函数o s t a s k c r e a t e 0 调用,功能是 初始化任务堆栈,使得从效果上看好像该任务在执行第一条指令之前被剥 夺了运行一样。而任务被调度进行切换调用o s t a s k s w 0 时,进而从堆 栈中恢复保存的寄存器。具体代码如f : v o i do s t a s k s t kt 1 3 jt ( v o i d ( t a s k ) ( v o d4 p d ) ,v o i d4 p d a t a ,v o i d 4 pt o s ,i n t l 6 0o p t ) f u n s jg n e di n t s t k : o p t = o p t $ 因“o p t ”变量没有用到,防止编译器产生警告$ s t k = ( u n s i g n e di n t ) p t o s ; 装载堆栈指针 为新任务创建上下文 一s t k = ( u n s i g n e di n t ) t a s k :$ l r 十一一s t k = ( u n s i g n e di 1 3 t ) t a s k :* p c * 一一s t k = o : r 12 辽宁工程技术大学硕士学位论文 术r 术r 丰r 丰r 半r 丰r 半r 术r 丰r 半r 丰r 一一s t k = ( u n sig n e di n t ) p d a t a :* r o * $ 一s t k = ( s v c 3 2 m o d eo x o ) :* c p s ri r o , # - - s t k = ( s v c 3 2 m o d eo x o ) :* s p s ri r q ,关闭f i q r e t u r n ( ( v o id ) s t k ) : 后5 个函数是钩子函数,本文中由j 二没有特殊需求,只是简单地将它 们都实现为空函数。以后州+ 再根据需要再加以实现 v o i do s t a s k c r e a t e h o o k ( o s t c b4 p t c b ) v o ido s t a k s d e l i t 0 0 l ( o s t c b4 p t c b ) v oido s t a s k s w h o o k ( v o i d ) v o i do s t a s k s t a t h o o k ( v o i d ) 2 3 3 用汇编语言编写6 个与处理器相关的函数( o s c p u a a s m ) 为_ :方便移植,大部分的uc o s i i 代码是用c 语言写的,但仍需要 用c 和汇编语言写一些与处理器相关的代码,这是因为uc o s i i 在读写 处理器寄存器时只能通过汇编语言来实现。这部分代码都放在了 o s c p u a s 文件中。它包括四个予函数:o s s t a r t h i g h r d y 0 ,o s c t x s w 0 , o s i n t c t x s w 0 ,o s t ic kt s r ( ) 以及我们实现的开关中断的汇编代码: a r m d is a b le i n t 0 和a r m e n a b le i n t 0 。下面详细介绍这些函数的实现: o o o o 0 0 0 o 0 0 o = = = | | = = = = = = = k k k k k k k k k k k lo十+l+l十l t 十l t t t s s s s s s s s s s s 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 术 术 术 术 术 丰 水 半 半 丰 术 辽宁工程技术大学硕士学位论文t , ( 1 ) o s s t a r t ig h r d y ( ) 将就绪表中最高优先级任务的栈指针。加载到s p 中,并强制中断返回使得最高优先级任务开始运行,并设置系统运行标志 位o s r u n n i n g 为t r u e 。具体代码: l d rr 4 ,a d d r o s t c b c u r : 得到当前任务的t c b 地址 l d rr 5 ,a d d r o s t c b h i g h r d y ;$ 得到高优先级任务的t c b 地址术 l d rr 5 ,a d d r o s7 f c b h i g h r d y : 得到高优先级任务的l 、c b 地址十 i ,d rr 5 l d rs p s t rr 5 r b 一 1 - 0 r 4 得到堆栈指针 切换到新的堆栈$ $ 设置新的当前任务的t c b 地址十 l d m f ds p ! , r 4 ) : m s rc p s rc x s f ,r 4 ; l d m f ds p ! , r o r 1 2 ,l r ,p c 】:开始新的任务 e n d ( 2 ) o s c t x s w 是任务级的任务切换函数,具体代码如下: s t m f ds p ! ,( 1 r ) :$ 保存p c 指针 s t m f ds p ! , 1 r ) :$ 保存l r 指针 s t m f ds p ! ,( r o r l2 ) : 保存寄存器文件和返回地址$ m r sr 4 ,c p s r : s t m f ds p ! ,( r 4 ) : 保存当前p s r * m r sr 4 ,s p s r : s t m f ds p ! ,( r 4 : o s p r io c u r = o s p r i o h i g h r d y : l d rr 4 ,a d d r o s p r i o c u r l d rr 5 ,a d d r o s p r i o h ig h r d y : l d r br 6 , r 5 : s t r br 6 , r 4 : 得到当前任务的t c b 地址 l d rr 4 ,a d d r o s t c b c u l - : l d rr 5 , r 4 : 辽宁工程技术大学硕士学位论文 s ,i rs p , r 5 ; 保存栈指针在占先任务的t c b 上 取得高优先级任务的t c b 地址 l d rr 6 ,a d d r o s t c b h i f f h r d y ; i d rr 6 , r 6 : l d rs p , r 6 :$ 得到新任务的堆栈指针母 o s t c b c u r - o s t c b i i g h r d y : s t rr 6 , r 4 : $ 得到当前新任务的t c b 地址$ l d m f ds p ! , r 4 ) ; m s rs p s r c x s f ,r 4 l d m f ds p ! , r 4 ) : m s rs p s r _ c x s f ,r 4 : l d m f ds p ! ,( r o r l2 ,l rp c ; ( 3 ) o s i n t c t x s w ( ) 的功能是实现中断级的任务切换。具体代码如下: l d m l as p ! ,( a l v l ,l r j : s u b sp c ,1 r ,# 4 : s u b1 r ,l r ,# 4 : m o vrl2 1 r : m r sl r ,s p s r : a n d1r ,1r ,# o x f f f f f e 0 ; o r rl r ,l r ,# o x d 3 : m s rc p s r c x s f ,l r : ( 4 ) 0 s i 、ic k is r ( ) 是系统时钟节拍中断服务函数。它是一个周期性中 断,为内核提供时钟节拍,频率越高系统负荷越重。其周期的大小决定了 内核所能给应用系统提供的最小时间间隔服务,一般只限于毫秒级( 跟处 理器有关) ,对于要求更加苛刻的任务需要用户自己建立中断来解决。具 体代码如下: s t m d bs p ! , t o f 儿,l r : m r sr o ,c p s r 塑蔓:兰墨堇查查望婴主堂垡堡塞 ! ! o r rr o ,r o ,# o x 8 0 :$ 设景中断禁止标志 m s rc p s r c x s f ,r o : 中断结束$ l d rr 0 ,i j s p c :

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论