




已阅读5页,还剩60页未读, 继续免费阅读
(模式识别与智能系统专业论文)基于at91rm9200的嵌入式系统的设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重庆大学硕士学位论文中文摘要 摘要 随着计算机技术和通信技术的迅速发展以及i n t e r n e t 的不断扩展,嵌入式系统 得到了越来越广泛的应用,成为当前i t 产业的焦点之一,呈现出巨大的市场需求。 但同时大量的嵌入式应用也对嵌入式设备的性能和功能提出了更高的要求。 a r m ( a d v a n c c dr i s cm a c h i n e s ) 公司的3 2 位r i s c 处理器,以其高速度、低功耗、 低成本、功能强、1 6 3 2 位双指令集等诸多优异的性能,已成为移动通信、手持计 算、多媒体数字消费等嵌入式解决方案中的首选处理器。随着国内嵌入式应用领 域的发展,a r m 芯片也必然会获得广泛的重视和应用。在各种嵌入式操作系统中, l a c o s i i 凭借其在实时性、源代码开放等方面的优势,成为了嵌入式实时系统领 域应用中的技术热点。本文研究目的是创建一个完整的基于a r m 9 核心处理器和 嵌入式o , c o s i i 操作系统的嵌入式开发通用平台,为嵌入式系统的应用开发提供 一个比较完备的软硬件环境。 本课题设计的硬件系统以a t m e l 公司的3 2 位微处理器a t 9 1 r m 9 2 0 0 为核心, 软件平台则基于性能出众的小型嵌入式操作系统i _ t c o s i i ,设计的软、硬件系统 经现场调试,初步运行效果表明,该设计是成功的。课题研究有以下几个创新点: 采用先进的a t 9 1 r m 9 2 0 0 为核心建立的软件开发通用平台,接口丰富。 完整地探讨了从硬件到软件平台的嵌入式系统构建过程。 建立了可以与i n t e r n e * 连接的嵌入式系统。 本文完成了基于a t 9 1 r m 9 2 0 0 嵌入式系统的硬件接口电路( 核心板电路以及 底板扩展电路) 的设计,其中核心板电路包括f l a s h 与s d r a m 等高频电路,扩展 电路包括串行接口、c a n 总线和网络部分等接口电路。按照a t 9 l r m 9 2 0 0 的特殊 机制设计了嵌入式系统的引导程序,设置了系统时钟以及中断处理向量。实现了 o c o s i i 操作系统在a t 9 1 r m 9 2 0 0 上的移植,设计了相应的驱动程序。实现了l w l p 协议栈在i t c o s i i 操作系统上的移植。 关键词:嵌入式系统,a t 9 1 r m 9 2 0 0 ,v c o s i i ,开发平台,驱动程序 重庆大学硕士学位论文 英文摘要 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 , c o m m u n i c a t i o nt e c h n o l o g ya n dt h e i n d e p t ha p p l i c a t i o no ft h ei n t e r n e t ,m o r ea n dm o r ee m b e d d e ds y s t e m sa r er u n n i n g a r o n n du s t h ee m b e d d e ds y s t e m sh a v eb e c o m et h ec e n t e ro fi n t e r e s ti nt h ei ti n d u s t r y a n de x h i b i t e db r o a dp o t e n t i a lm a r k e t m e a n w h i l e ,al o to fe m b e d d e da p p l i c a t i o n sa r e c a l l i n gf o rb e t t e rp e r f o r m a n c ea n df u n c t i o n a l i t yo fe m b e d d e ds y s t e m s a r mi st h e l e a d i n gp r o v i d e ro f3 2 - b i te m b e d d e dr i s em i c r o p r o c e s s o r s a r mo f f e r saw i d er a n g e o f p r o c e s s o r c o r e sa n dd e l i v e r sh i g l lp e r f o r m a n c et o g e t h e rw i t hl o wp o w e rc o n s u m p t i o n a n ds y s t e mc o s t , h i 曲p e r f o r m a n c ea n ds p e c i f i ct h u m bi n s t r u m e n ts e t w i t ht h e d e v e l o p m e n to ft h ed o m e s t i ce m b e d d e da p p l i c a t i o n , a r mm u s tb ew i d e l yr e c o g n i z e d a n da p p l i e d a m o n ga l lk i n d so fe m b e d d e do p e r a t i n gs y s t e m s ,i t c o s i ih a st h e a d v a n t a g eo fr e a l t i m ep e r f o r m a n c ea n do p e ns o u r c e ,s o i th a sb e e nw i d e l yu s e di n e m b e d d e ds y s t e m t h i st h e s i si n t e n d st ob u i l da ne m b e d d e dh a r d w a r ea n ds o r w a r e d e v e l o p i n gp l a t f o r mb a s e do na r m 9p r o c e s s o ra n d c o s h ,a n do f f e r st h eo v e r a l l s o l u t i o nt ot h eu s e r t h eh a r d w a r es y s t e ma d o p t s3 2b i tm i c r o p r o c e s s o ra t 9 1 r m 9 2 0 0p r o d u c e db y a t m e lc o m p a n ya n dt h es o f t w a r ep l a t f o r mi sb a s e do nc o s t - f l e ea n ds t r o n g l y f u n c t i o n a le m b e d d e do p e r a t i n gs y s t e mg c o s i i t h ep r e l i m i n a r yr u n n i n ge f f e c to ft h e s y s t e ms h o w st h a ti ti ss u c c e s s f u li nd e s i g n t h ep r o j e c th a ss u c hi n n o v a t i v ep o i n t sa s f o l l o w i n g : e m b e d d e ds y s t e ma d o p t sn e wh a r d w a r ep l a t f o r m ,w h i c hi s b a s e do n a t 9 1 r m 9 2 0 0 ,a n d i ti sr i c hi ni n t e r f a c e s ; t h et h e s i si n t r o d u c e st h ew h o l ep r o c e s st h a tb u i l d se m b e d d e ds y s t e m ,w h i c h i n c l u d e db o t hh a r d w a r ea n ds o f t w a r e ; e m b e d d e ds y s t e mi sd e s i g n e dt ol i n kt ot h ei n t e m e t ; t h et h e s i sd e s i g n st h ep r i n c i p l ed i a g r a mo fh a r d w a r ei n t e r f a c ec i r c u i tb a s e do n a t 9 1 r m 9 2 0 0 w h i c hi n c l u d e dt h ec o r eb o a r da n dt h em o t h e r b o a r d t h ec i r c u i to f f l a s h a n ds d r a mb e l o n gt ot h ec o r eb o a r da r eh i g hf r e q u e n c y t h em o t h e r b o a r dh a st h r e e p a r t so fi n t e r f a c ec i r c u i tw h i c ha r eu s a r t , c a n b u sa n dn e t w o r k t h et h e s i sd e s i g n s b o o t l o a d e r , s y s t e mc l o c ka n di n t e r r u p th a n d l e rv e c t o r sa c c o r d i n gt ot h ep a r t i c u l a r i i 重庆大学硕士学位论文 英文摘要 c o n f i g u r a t i o n so fa t 9 1 r m 9 2 0 0 t h et h e s i sa l s od i s c u s s e sh o w t op o r tt t c o s i ia n d l w l pp r o t o c o lt ot h ep l a t f o r ma n dh o wt od e s i g nt h ed r i v e r k e y w o r d s :e m b e d d e ds y s t e m ,a t 9 1 r m 9 2 0 0 ,t t c o s i i ,d e v e l o p i n gp l a t f o r m ,d r i v e r i i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作 及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方 外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为 获得重庞太堂或其他教育机构的学位或证书而使用过的材料。与我 一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说 明并表示谢意。 学位论文作者签名: d a t a f l a s h 页数= 2 1 3 = 8 1 9 2 d a t a f l a s h ; 页大d 、( 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 b ) = 1 0 5 6 字节。 对e e p r o m 或8 位外部存储器下载,仅需标明下载代码的大小,即只用 位0 至7 。本系统采用的是8 位的n o r f l 解h ,需下载的引导代码大小为3 3 4 8 字节, 所以向量6 为:0 x 0 0 0 0 0 0 0 7 。 4 3b o o t l o a d e r 的设计 4 3 1b o o t l o a d e r 的构成 引导程序由汇编与c 语句两部分组成,其中大部分为汇编语句,其主要部分 如下2 3 2 4 1 : 定义入口地址,初始化程序中必须指明入口地址,一般采用a r m 汇编语 言中的e n t r y 语句,本系统交叉编译软件为a d s ,故还需在其d e b u g r ds e t t i n g s 中设置i m a g ee n t r y p o i n t 选项为e n t r y ; 建立异常中断处理向量,a r m 9 2 0 t 要求中断向量表必须设置在从0 地址 开始,连续8 x 4 字节的空间,分别是复位、未定义指令错误、软件中断、预取指 令错误、数据存取错误、一个保留的中断向量( 向量6 ) 、m q 和f i q ; 系统基本初始化,包括初始化存储器系统与系统时钟,对存储系统的初始 化,必须在中断使能、程序在r a m 空间上进行读写或使用堆栈的操作之前完成; 重庆大学硕士学位论文4 软件开发平台构建 初始化堆栈,即对堆栈指针寄存器进行初始化,根据系统中采用了那些中 断异常来决定需要对那些堆栈指针初始化; 开放中断,如有必要可改变处理器模式和状态; 初始化c 程序所要求的存储空间,为正确运行应用程序,在初始化期间应 将系统需要读写的数据和变量从r o m 拷贝到r a m 里,一些要求快速响应的程序, 如中断处理程序,也可在r a m 中运行; 进入c 语言程序运行,即进入m a i n ( ) 函数,完成:包括调用一些需要的库 函数,将操作系统镜像复制到指定区域,跳转到操作系统并运行等步骤。 引导基本流程框图如图4 3 所示。 图4 3 引导流程图 f i g 4 3s t a r t - u ph o w c h a r t 4 3 2 代码的实现 启动代码分为e n t r y s 、i n i t b o o t c 、m a i n c 、j u m p s 以及一个头文件。 定义入口地址与设置向量 因为还未开始后期的开发,有些中断处理程序还没有建立,所以部分中断向 量采用的是虚假跳转,即自身循环跳转。 e n t r y r e s e t bi n i t r e s e t u n d e f v bu n d e f v e c 1 9 重庆大学硕士学位论文4 软件开发平台构建 s w l v t ;c b p a b t v e c b d a b t v e c b d c do x 0 0 0 0 0 0 0 7 l r q v e 虻 l d r s w l v e c p a b t v e c d a b t v e c ;向量6 提示下载代码大小 p e ,【p c , 私0 x f 2 0 】;跳转到相应m q ,下文将详 :细介绍 f i q v e e b f i q v e e 系统的基本初始化语句 跳转到初始化函数a t 9 1 fl o w l e v e l i n i t ,该函数在i n i t b o o t 文件中,主要完成 时钟初始化、初始化s d r a m 、初始化f l a s h 和配置d b g u 端口。 b la t 9 1 f l o w l e v e l l n i t 操作a r m 的协处理器c p l 5 的控制寄存器 值得注意的是:m c r 指令和m r c 指令只能在处理器模式是系统模式时执行, 下面的语句完成的功能是设置系统为小端( l i t t l e e n d i a n ) 模式和异步时钟模式。 m r c p 1 5 ,0 ,r o ,c l ,c o ,0 l d r r 3 ,= 0 x c 0 0 0 0 0 8 0 l d r r 4 ,= o x c 0 0 0 0 0 0 0 b i e r 0 ,r 0 ,r 3 0 1 t r 0 ,r 0 ,r 4 m c r p 1 5 ,0 ,r 0 ,e l ,c o ,0 建立与初始化堆栈 这里只列举建立f i q 与m q 堆栈的代码: l d r1 0 ,= s t a c k ;s t a c t 是堆栈的起始地址 建立堆栈时,要屏蔽相关中断,以免出错。 m s r c p s r _ c ,# ( a r m _ m o d e _ f i ql b i tf _ _ b i t ) m o v r 1 3 ,r 0 s u b r 0 ,r 0 ,# f i q - s t a c ks i z e 设置中断模式和建立m q 模式堆栈。 m s r c p s r ,# ( a r mm o d e _ i r ql b i tif _ b i t ) 重庆大学硕士学位论文4 软件开发平台构建 m o v r 1 3 ,r o s u b r 0 ,r o ,# 1 r q s t a c k _ s i z e 初始化c 环境 进入m a i n 0 函数要用到几个引入变量( a d s 提供) ,以进行分布装载。 i m p o r t i i m a g e $ $ r o $ $ l i m i t i;r o m 代码段结束地址,也是数 :据段开始地址 i m p o r t l i m a g e $ $ r w $ $ b a s e i;r a m 起始地址,即r w 区域的 :起始地址 i m p o r t l i m a g e $ $ z i $ $ b a s e l;0 初始化( z i ) 区域起始地址 i m p o r t i i m a g e $ $ z i $ $ l i r n i t i;z i 区域结束地址 进入c 语句 l d r r 0 ,- - m a i n m o v l r , p c b xr 0 :跳转 考虑到跳转涉及到寄存器p c ,从m a i n 0 函数跳转到操作系统部分用汇编文件 j u m p s 完成,并提供接口供m a i n o 调用,该步骤也可考虑在m a i n 0 中直接嵌入汇编。 4 4a t 9 1 r m 9 2 0 0 的中断设计 4 4 1 高级中断管理器 a t 9 1 r m 9 2 0 0 芯片专门设计了高级中断管理器( a d v a n c e di n t e r r u p tc o n n d l l e f , a i c ) 来管理中断向量。高级中断控制器( a i c ) 是一个有8 个优先级,独立可屏蔽 的向量中断控制器,最高可处理3 2 个中断源。它的设计充分降低了软件与实时开 销内部与外部中断处理。a i c 驱动a r m 处理器n f i q ( 快速中断请求) 与n m q ( 标 准中断请求) 输入。a i c 输入可以是内部外设中断或来自器件引脚的外部中断。8 级优先级控制器允许用户对每个中断源优先级进行定义,允许高优先级中断打断 低优先级中断先行处理。 内部中断源可编程为电平敏感或边沿触发。外部中断源可编程为正沿或负沿 触发或高电平或低电平敏感。其中,相应的a i cs m r ( 源模式寄存器r ) s r c t y p e 域中选择每个源的中断条件。 a i c 特性如下【1 7 】: 控制a r m 处理器与中断管理器( a i c ) 只有两条线连接:n l r q 与n f i q ; 3 2 个独立可屏蔽向量中断源 1 ) 源0 为快速中断输入( f i q ) ; 2 ) 源1 为系统外设( s t 、r t c 、p m c 、d b g u ) ; 2 l 重庆大学硕士学位论文 4 软件开发平台构建 3 ) 源2 到源3 l 控制多达3 0 个内置外设中断或外部中断; 4 ) 可编程边沿触发或电平敏感内部源; 5 ) 可编程正负边沿触发或高,低电平敏感外部源: f i q 独享一个中断源( 源0 ,可以复用) ,各种系统外设( 存储控制器、调 试单元、系统定时器、实时时钟以及电源管理控制器这5 个) 通过复用只占用了 3 1 个i r q 源中的一个源1 ,其他用户外设按i d 表各自独占一个中断源。即中 断源2 到3 l 可与内置的用户外设或外部中断线连接。外部中断线可直接连接或通 过p i o 控制器连接; 优先级:源0 ( f i q ) 不存在优先级,因为它只有一个源,m q 有3 1 个中 断源,所以需要一定的优先级来方便响应它们,每个中断源通过对响应的 a i cs m r ( 源模式寄存器) 的p r i o r 域写定义其优先级。等级7 优先级最高,等级 0 优先级最低。 4 4 2 中断i r q 的处理过程 当发生一个i r q 时,若c p s r 中的位i 为0 ,a i c 与c p u 相连的n m q 线出 现,则处理器自动保存p c 4 ( 注意不是p c 8 ,故此后才需再减4 ) 到目标模式下 的l r ( r 1 4 ) ,然后跳转到异常向量表的第7 条指令( 地址为0 x 4 * 7 = 0 x 1 8 ) 处取 指令,这里的指令如下: l d r p c , p c ,# - o x f 2 0 】 执行这条指令时,由于流水线的原因,p c 的值并不是0 x 1 8 ,而是o x l 8 + o x 8 。 这条指令的最直接的作用是让p c 指向o x l 8 + o x 8 0 x f 2 唧x f f f f f l o o 处, 0 x f f f f f l 0 0 这个地址是a i c r ( 中断向量寄存器) ,相当于读a i ci v r ,将 a i ci v r 的返回值给p c 。读a i ci v r 有以下效果: 将当前中断挂起并使能最高优先级中断。当前级为当前中断优先级。 将处理器上的n i r q 线失效。即使向量未用,必须对a i ci v r 读以使n i r q 失效。 若编程为边沿触发则自动清除中断。 将当前等级及当前中断序号推入堆栈。 返回相应于当前中断写入a i cs v r 的值。 其中最后一点的实现过程是:a i c 会检测其输入线( 中断源) ,看哪个引脚被 触发了,然后决定a i ci v r 的返回值。假设是一个计数器中断,则计数器计数到 设定值时触发一个中断,由于计数器属于中断源l ,所以a i c 检测到源1 上满足 触发条件,然后返回源1 对应的中断向量a i cs v r l 给p c ,即p c 得到了对 应的中断向量( 或中断服务子程序入口) 。 先前的步骤已使跳转到相应的中断服务程序。注意以下几点: 重庆大学硕士学位论文4 软件开发平台构建 必须先保存链接寄存器( m 4 及 。若在中断后直接存于程序t r q ) s p s ri r q 计数器,链接寄存器值要以4 递减。例如,使用指令s u bp c ,l r ,槲。 后来的中断可通过清除c p s r 中的i ,位来不加以屏蔽,使得内核又可重新 考虑n l r q 。这在出现了一个高于当前中断优先级的中断时产生。 中断处理程序可按要求执行,开始时保存寄存器,结束时恢复它们的值。 在此过程中,高于当前中断优先级的中断将使序列返回步骤1 。 注:若中断编程为电平敏感,中断源必须在此过程中清除。 必须将c p s r 中“i ”位置位以使在退出前屏蔽中断,保证中断严格按照步骤 完成。 须写中断结束命令寄存器( a i ce o i c r ) ,以指示a i c 当前中断己完成。这 将使得当前优先级由堆栈中弹出,恢复先前优先级。若有其它中断挂起,等于或 低于原先优先级却高于当前新的优先级,n l r q 线出现出现,但由于i 由内核设 置,因此不会立即启动中断序列。恢复s p s ri r q ,最后存于链接寄存器中的值直 接写入p c 。这对下面情况有用:中断返回到中断执行前的状态,将存于s p s r 中 的值载入c p s r ,根据保存在s p s ri r q 中的状态决定是否屏蔽中断。 4 5 系统时钟设计 4 5 1 时钟概述 时钟对于整个嵌入式系统是很重要的,它是整个操作系统的动力,能防止防 止某个进程独占c p u 和其他资源、记录c p u 的使用情况以及处理用户进程发出的 系统调用。 4 5 2 时钟初始化 需要配置并行输3 , 输出管理器( p a r a l l e li n p u t o u t p u tc o n t r o l l e r , p x o ) ,配置电源 管理控制器( p o w e r m a n a g e m e n tc o n t r o l l e r , p m c ) 和高级中断管理器( a i c ) 。 本文选择计数器0 ( t c 0 ) 作为操作系统的时钟。由于a t 9 1 r m 9 2 0 0 芯片 外设引脚是复用的,故需对其进行设置,以使相应i o 脚分配给计数器功能。i o 设置需要对p i o 控制器进行相应的配置。 电源管理控制器( p m c ) 集成了两个振荡器和两个p l l ,产生系统所有的 时钟。t c 0 的频率也由p m c 产生,故需对p m c 进行相应配置。p m c 初始化在引 导程序中进行,主要对m c k 主频以及两个p l l 设置。 a t 9 1 r m 9 2 0 0 所有中断都要通过a i c 来管理,时钟中断也不例外。对a i c 相应寄存器进行配置,使得产生时钟中断后,系统能跳转到相应的中断处理程序 里。 时钟初始化流程如图4 4 。 重庆大学硕士学位论文4 软件开发平台构建 图4 4 时钟初始化流程 f i g 4 4c l o c ki n i t i a l i z a t i o nf l o w c h a r t 其中打开定时器需要进一步的设置,其流程图如图4 5 所示。 ( 开始 ) , 在p m c 中使能1 o l 关闭时钟和中断 + l 清除t c 的状态位 设置模式位 t cc m r 士 使能时钟 ( 结束 ) 图4 5 打开定时器流程图 f i g 4 5c l o c ko p e n i n gf l o w c h a r t 其中设置模式位t c _ c m r 使得时钟使用的1 6 位计数器的频率为3 0 m h z ,计 数器置零触发模式( 溢出、载入、r c 比较、外部) 为r c 比较触发模式。r c 比 重庆大学硕士学位论文4 软件开发平台构建 较触发如图4 6 所示。 f f f f r c r b r a 计数值 计数器与f f f f 比较产生溢出 中断,计数器 清零 与r c 比较产 = = = 二生溢出中断 图4 6 r c 比较触发 f i g 4 6c l e a n i n gc o m p a r i s o nf o rr co v e r f l o w 时间 1 6 位定时器计数器0 ( t c 0 ) 选用频率3 0 m h z ( 主频,2 ) ,也就是说计数器增加 1 所用时间为1 3 0 0 0 0 0 0 0 秒。t c 0 为1 6 位计数器,从0 x 0 0 0 0 增计数到o x f f f f 计 数器溢出中断,也可设置为从o x 0 0 0 0 增计数到设定值产生中断,此设定值为r c 中的值,即r c 比较触发中断来产生时钟中断( t i c k ) 。本文设计的平台需要1 2 0 0 h z 的时钟中断频率,即产生1 秒1 2 0 0 次时钟中断( 0 8 3 3 3 m s ) 。给r c 赋值大小计算 如下:r c 值( 1 3 0 0 0 0 0 0 0 ) = 1 1 2 0 0 :r c 值= 3 0 0 0 0 0 0 0 1 2 0 0 0 x 6 1 a 8 ;所以只 需要赋值r c 为0 x 6 1 a 8 即可。 4 5 3 时钟中断 计数器t c 0 达到r c 比较值时候产生中断,进入中断处理程序,流程如图4 7 所示。其中时钟中断服务函数示意代码如下: 入口参数:定时器指针( a t 9 1 c _ b a s e _ t c 0 1 ) v o i dt i m e re _ i r q _ h a n d l e r ( a t 9 1 p s j ct c _ p t ) t i m e r o 用于u c o s i i 的节拍服务 o s t i m e t i c k 0 ; ) o s t i m e t i c k 0 处理时钟t i c k ,主要进行t i c k 减1 处理。 重庆大学硕士学位论文4 软件开发平台构建 ( 开始 ) o s t i m e t i c k 0 处 理 0 上 l 定时嚣产,中 l 断进入中断旬柄o s i n t n e s t i r i g - 0 s t i c k l s r l 计算返回地址l 叫擎 i 保存任务环境l , 中断处理 o s i n t n e s t i n g + + 退出中断处理程 序 l 进入中断服务函数j r t i m e l o r q _ h a n d l e r r 结束 、 图4 7 时钟中断流程 f i g 4 7t i m e ri n t e r r u p tf l o w c h a r t 4 6p c o s i i 操作系统介绍 l l c o s i i 是著名的源代码公开的实时内核,是一个完整的、小巧的,可移植、 固化、裁剪的占先式实时多任务内核。t t c o s i i 是用a n s ic 编写的,包含- - d , 部 分与微处理器类型相关的汇编语言代码,使它可供不同架构的微处理器使用。虽 然i _ t c o s i i 是在p c 机上开发和测试的,但t t c o s i i 的实际对象是嵌入式系统, 并且很容易移植到不同架构的微处理器上。至今,从8 位到6 4 位,i _ t c o s i i 已在 超过4 0 种不同架构的微处理器上运行【2 5 1 。 4 6 1p c o s i i 的主要特点 与其他商业内核比较,j _ t c o s i i 的内核结构较简单,但算法简单、结构紧凑、 实时性较好【2 6 】。其主要特点如下: 公开源代码 事实上有不少的嵌入式操作系统是公开源代码的,甚至一些商用嵌入式操作 系统也会提供核心的源代码,但是很少会有c o s i i 这样结构清晰,注解详细、 组织条理有序的嵌入式操作系统;加上良好的实时性能,t t c o s i i 无疑是真正适 合学习和入门的嵌入式操作系统。 可移植性( p o r t a b l e ) 绝大部分p c o s 的源码是用移植性很强的a n s ic 写的。和微处理器硬件 重庆大学硕士学位论文4 软件开发平台构建 相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低限度,使得 i _ t c o s i i 便于移植到其它微处理器上。i | t c o s i i 可以在绝大多数8 位、1 6 位、3 2 位以至6 4 位微处理器、微控制器、数字信号处理器( d s p ) 上运行。 可固化( r o m a b l e ) g c o s i i 是为嵌入式应用而设计的,这就意味着,只要用户有固化手段( c 编 译、连接、下载和固化) ,i l c o s i i 可以嵌入到用户的产品中成为产品的一部分。 可裁剪( s c a l a b l e ) 由于t t c o s i i 完全采用模块化设计,用户可以只使用p c o s i i 中应用程序需 要的那些系统服务。也就是说某产品可以只使用很少几个i t c o s i i 调用,而另一 个产品则使用了几乎所有i t c o s i i 的功能。这样可以减少产品中的p c o s i i 所需 的存储空间( r a m 和r o m ) ,这种可裁剪性是依靠条件编译实现的。 占先式( p r e e m p t i v e ) p c o s i i 完全是占先式的实时内核。这意味着每个任务都有一个固定的优先 级,而i t c o s i i 总是运行就绪条件下优先级最高的任务。大多数商业内核也是占 先式的,i _ t c o s i i 在性能上和它们类似。 多任务( m u l f i t a s k ) g c o s i i 可以管理6 4 个任务,然而,目前这一版本保留8 个给系统用。应用 程序最多可以有5 6 个任务。赋予每个任务的优先级必须是不同的,这意味着 i _ t c o s i i 不支持时间片轮转调度法( r o u n d r o b i ns c h e d u l i n b ) ,该调度法适用于调度 优先级平等的任务。 可确定性 全部g c o s i i 的函数调用与服务的执行时间具有其可确定性。也就是说,全 部i j t c o s i i 的函数调用与服务的执行时间是可知的。总而言之,p c o s i i 系统服 务的执行时间不依赖于应用程序任务的多少。 任务栈 每个任务有自己单独的栈,i j t c o s i i 允许每个任务有不同的栈空间。以便压 低应用程序对r a m 的需求。使用p c o s i i 的栈空间校验函数,可以确定每个任 务到底需要多少栈空间。 稳定性与可靠性 i _ t c o s i i 是基于工业应用的,c o s 自1 9 9 2 年以来已经有好几百个商业应用, i | t c o s i i 与p c o s 的内核是一样的,只不过提供了更多的功能。 4 6 2i _ t c o s i i 的主要功能 g c o s i i 的功能主要有如下几点1 2 7 1 : 任务管理:管理任务的状态,睡眠态、就绪态、运行态、等待状态( 等待 重庆大学硕士学位论文4 软件开发平台构建 某一事件发生) 及中断服务态。 同步管理:可以利用信号量使任务与中断服务( 或另一任务) 同步。 任务间通信:任务间或中断服务与任务间的信息传递,称为任务间通信。 任务间通信有三种机制:信号量、消息邮箱和消息队列。 中断管理:需要初始化中断句柄,编写中断服务程序对外部中断做出响应。 允许中断嵌套,中断嵌套层数可达2 5 5 层。 内存管理:分配和释放内存,并避免出现内存碎片。 时间管理:管理与时问有关的信息,包括系统时间、任务延时和恢复延时 的任务。 4 7p c o s i i 操作系统在a t 9 1 r m 9 2 0 0 处理器上的移植 4 7 1p c o s i i 操作系统移植概念及条件 所谓操作系统移植,就是使一个实时内核能在某个微处理器或微控制器上运 行。为了方便移植,大部分的p c o s i i 代码是用c 语言写的;但仍需要用c 和汇 编语言写一些与处理器相关的代码【2 8 】,这是因为p c o s i i 在读写处理器寄存器时 只能通过汇编语言来实现。由于i _ t c o s i i 在设计时就已经充分考虑了可移植性, 所以p c o s i i 的移植相对来说是比较容易的。要使p c o s i i 正常运行,处理器必 须满足以下要求【2 9 】【3 0 】: 处理器的c 编译器能产生可重入代码。 用c 语言就可以打开和关闭中断。 处理器支持中断,并且能产生定时中断( 通常在1 0 至1 0 0 h z 之间) 。 处理器支持能够容纳一定量数据( 可能是几千字节) 的硬件堆栈。 处理器有将堆栈指针和其它c p u 寄存器读出和存储到堆栈或内存中的指 令。 a t 9 2 r m 9 2 0 0 处理器完全满足以上条件,所以可以移植p c o s i i 。p c o s i i 的结构以及它与硬件的关系如图4 8 所示。 移植p c o s 。l i 的工作实际上是非常简单的,移植工作涉及到3 个文件 ( o s、c p ua 和 c ) ,包括以下几个内容:c p u ho s8 s l n o sc p u 用# d e f i n e 设置一个常量的值( o sc p u 1 - i ) 声明1 0 个数据类型( o sc p u i ) 用# d e f i n e 声明三个宏( o sc p u h 1 用c 语言编写六个简单的函数( o sc p uc c ) 编写四个汇编语言函数( o sc p ua a s m ) 重庆大学硕士学位论文4 软件开发平台构建 软件部分 硬件部分 图4 8i t c o s - i i 软件,硬件结构 f i g 4 8a r c h i t e c “i f eo f s o f t w a r ea n dh a r d w a r ef o rp c o s i i 4 7 2o sc p u h 文件 与编译器相关的数据类型定义 数据类型的修改与所用的编译器相关,不同的编译器使用不同的字节长度表 示同一数据类型。 t y p e d c f u n s i g n e dc h a rb o o l e a n ; t y p e d e f u n s i g n e dc h a ri n t 8 u ; 丰无符号8 位数+ t y p e d e f s i g n e d c h a r i n t 8 s ; 产有符号8 位数+ t y p e d e f u n s i g a e ds h o r t i n t l 6 u ;产无符号1 6 位数+ t y p e d e f s i g n e d s h o r ti n t l 6 s ;,有符号1 6 位数 t y p e d e f u n s i g n e d h a t i n t 3 2 u ; 严无符号3 2 位数。 t y p e d e f s i g n e d i n t i n t 3 2 s ;严有符号3 2 位数+ t y p e d e f f l o a t f p 3 2 ;严单精度浮点数+ t y p e d e f d o u b l e f p 6 4 ;严双精度浮点数+ t y p e d e f u n s i g n e d i n t o s _ s t k ; 栈宽度为3 2 位 t y p e d e f u n s i g n e dh a to s _ c p u _ _ s r ;严定义c p u 状态寄存器( p s r = 3 2b i t s ) + # d e f i n eb y t ei n t 8 s 产兼容以前版本的数据类型+ 重庆大学硕士学位论文 4 软件开发平台构建 # d e t i n eu b y i ei n i 。8 u # d e f i n ew o r di n t l 6 s 捍d e f i n eu w o r di n t l 6 u 榭e f i n el o n gi n t 3 2 s # d e f i n eu l o n gi n t 3 2 u 因为不同的处理器有不同的字长,所以肛c o s i i 的移植包括了一系列的类型 定义以确保其可移植性。p c o s ,i i 代码不使用c 语言的s h o r t 、i n t 和l o n g 等数据 类型,因为它们是与编译器相关的,不可移植。在任务切换时,c p u 现场的寄存 器将保存在当前运行任务的堆栈中,所以o ss t k 数据类型应该与c p u 的寄存器 长度一致。在这里我们通过为o ss t k 声明正确的c 语言数据类型将任务堆栈的 数据类型告诉给p c o s i i 。 处理器相关代码 # d e f i n eo sc r i t i c a lm e t h o d2p 选择开、关中断的方式+ s w i ( o x 0 0 ) v o i do st a s k严任务级任务切换函数_sw(void); _ _ s w i ( 0 x 0 1 1v o i d _ o s s t a r t h i g h r d y ( v o i d ) ;严运行优先级最高的任务+ s w i ( 0 x 0 2 ) v o i do se n t e r严关中断+ _ c r i t i c a l ( v o i d ) ; 严开中断+ _ s w i ( 0 x 0 3 ) v o i d o se x i tc r i t i c a l ( v o i d ) ; p c o s i i 和其它所有的实时内核一样,在访问操作系统的临界区之前必须关 闭中断,访问之后开中断。这可以保证i _ t c o s i i 的临界区代码不会被多个任务或 中断服务程序同时访问,避免造成共享数据( 肛c o s i i 的全局变量) 的不一致性。 从而保护核心数据不被多任务坏境下的其他任务或中断破坏。 本次移植开关中断方式选择第二种方式,即执行o se n t e rc r i t i c a l ( ) 的 时候先将中断禁止状态保存到堆栈中,然后禁止中断。而执行 o se x i tc r i t i c a l ( ) 的时候只是从堆栈中恢复中断状态。如果用该方法,不管用 户是在中断禁止还是允许的情况下调用p c o s i i 服务,在整个调用过程中都不会 改变中断状态。采用软中断,定义宏o se n t e rc r i t i c a l 0 为软中断量 s w i ( o x 0 2 ) 、o se x i tc r i t i c a u ) 为软中断量s w i ( 0 x 0 3 ) 。绝大多数微处理器 和微控制器的堆栈是从上往下递减的,但是也有某些处理器使用的是相反的方式。 微处理器a t 9 1 r m 9 2 0 0 的堆栈增长方向
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经络美容考试题及答案
- 软件采购合同订金协议
- 矿山机械安装合同范本
- 电脑年度服务合同范本
- 沿街商铺租赁合同协议
- 长期合同补充协议范本
- 网络销售主播合同范本
- 车辆委托代卖合同范本
- 服装现货贴牌合同范本
- 电脑服装采购合同范本
- (2024年)发生输液反应时应急预案及处理流程
- 水域救援知识课件
- GB 31604.60-2024食品安全国家标准食品接触材料及制品溶剂残留量的测定
- 新国际政治学概论(第三版)-教学课件-陈岳-109503国际政治学概论(第三版)
- XX医院DRG绩效分配方案
- 《研究生英语》(第二版)练习答案及译文
- 加油船租赁油船租赁合同
- 《茶叶审评技术》课程考试复习题库(含答案)
- 专题四“挺膺担当”主题团课
- 智能高速铁路概论-课件-第一章-世界智能铁路发展-
- 部编人教版五年级上册语文 第三单元单元分析
评论
0/150
提交评论