(机械制造及其自动化专业论文)网络化控制嵌入式终端系统研究.pdf_第1页
(机械制造及其自动化专业论文)网络化控制嵌入式终端系统研究.pdf_第2页
(机械制造及其自动化专业论文)网络化控制嵌入式终端系统研究.pdf_第3页
(机械制造及其自动化专业论文)网络化控制嵌入式终端系统研究.pdf_第4页
全文预览已结束

下载本文档

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

文档简介

湖北工业大学硕士学位论文 摘要 2 1 世纪的控制系统将是网络与控制结合的系统。随着计算机、通信、自动控 制、微电子等技术的发展,人们对工业生产的智能化提出越来越高的要求,远程 监控工业设备势必将成为发展趋势。随着制造工艺的进步,嵌入式控制芯片的成 本越来越低,功能却越来越强大,不仅解决了嵌入式微控制器与h l t e m e t 连接的技 术问题,同时也使得这种连接费用降低到工业控制完全可以接受的程度,这促使 了嵌入式网络控制技术的出现。 本课题的研究工作是设计和实现网络化嵌入式控制系统终端平台。通过分析 现有的网络化控制系统中的两大架构c s 模式和b s 模式,结合各自的优缺点, 本文采用了嵌入式哪服务器甜a v aa p p l e t 相结合的系统架构,既可以发挥b s 模式的灵活便捷性,又可以达到c s 模式的专业性;在操作系统的选取上,考虑 到控制系统满足实时性的要求,本文选取了u c o s 作为系统支撑,并移植到了 u p t e c hs 3 c 2 4 1 0 开发板上;为了实现终端平台的网络化功能,移植了u c 厂r c p 口 协议栈,开发了针对网络控制器d m 9 0 0 0 a 的驱动程序,构建了e a 2 文件系统 以及h 耵p 服务器。 本文以工业洗衣机为控制对象,分析了其功能模块。并将工业洗衣机作为网 络化嵌入式控制的实验对象,以常用的变频通讯、i o 控制以及模拟量的采集为客 户端远程监控的目标。在嵌入式控制器上设计了相应的网络s o c k e t 监控以及洗衣 机控制的应用程序,利用j a v a a p p l e t 开发了客户端友好的用户界面以及控制网页, 对工业洗衣机实现了基于i l l t e m e t 的远程实时监控,实现了在线的变频调速、阀门 开关量的控制和洗涤仓温度的监控。 最后,对网络化控制系统进行了总结展望。分析了网络化控制系统作为控制 系统的一种所具有的传统控制系统的特点,以及处于网络环境中,所具有的新特 性,提出了进一步研究的问题及主要研究工作。 本系统为网络化嵌入式控制系统的进一步研究提供了软硬件上的支持。 关键词:网络控制系统,a r m 9 ,u c o s 1 i ,u c 厂r c p i p ,工业洗衣机 湖北工业大学硕士学位论文 a b s t r a c t c o n t r o ls v s t e mi n2 1 c e n t m r yw o u l db ec o m b i n a t i o n0 fn e t 柚dc o n t r 0 1 a st h e d e v e l o p m e n to fc o m p u t e r c o m m u n i c a t i o n ,a u t o c o n t r o lm e t h o d ,a n dm i c r 0 e l e c t r o n i c , m o r ea n dm o r ei n t e l l i g e n tp e 渤硼a n c eh a sb e e nr e q u i r e di nt h ei n d u s t n rm a i l u f a c t u r e , a st h er e s u l tr e m o t em o n i t o ra i l dc o n t r o li n d u s t r yt e m l i n a t o rw o u l db et h ed e v e l o p m e n t t i d e w h i l et h e 伊e a tp r o g r e s so fm a n u f a c t u r et e c h l l j c s ,c o s to fe m b e d d e dc o n t r 0 1c h j p h a sb e e nl o w e ra u l dl o w e ra sw e na sg e tm o r ea n dm o f ep o w e r f u lf i l n c t i o n ,t h ep r o b l e m 0 fe m b e d d e dm i c r o c o n t r o l l e ra c c e s s i n gi n t e m e th a sb e e ns o l v e de a s i l y c o n s e q u e n t l y e m b e d d e dn e tc o n t i d lt e c m ch a se m e r g e d r e s e a r c ha n dd e s i g no fe m b e d d e dn e tc o n t r o ls y s t e mp l a t f 0 衄h a sb e e nt h ek e v w o r ki nm yp r o j e c t b ya i l a l y z i n gp r 0a n dc o no ft w oi m p o n a n tn e ta r c h i t e c t u r e ,n 锄e l y c sm o d e l & i v sm o d e l ,i n t e 黟a t e ds y s t e ms t n l c t u r eo fe m b e d d e dh 1 1 甲w e bs e r y e r 强dj a v aa p p l e th a v eb e e na d o p t e d ,s ot h en e x i b i l i t ya n dc o n v e n i e n c ei nb sm o d e la s w e ua st h ep r o f e s s i o n a li n ( 、sm o d e lh a v eb e e nm a i n t a i l l e ds i m u l t a n e o u s l v a st h e a p p l i c a t i o nb a s e m e n t ,t h er e a l t i m es y s t e m ,n a m e l yu ( 、o s i i ,h a sb e e nt r a n s p l a n t e di n t o t h eu p t e c hs 3 c 2 4 1 0d e v e l o p m e n tb o a r do u to ft h er e a s o ni nr e a lt i m ep e 埔d m a n c e o fn e tc o n t r o ls v s t e m f o rt h er e a l 娩a t i o no fn e tw o r kf n n c t i o ni ne m b e d d e dc o n t r o n e r p l a t f 0 姗,u c ,r c p i pa n di sa p p e n d i xu ( 1 i ? w e bs e r v e rh a v eb e e nt r a i l s p 】a n t e di n o u c o s i i ,a n dt h es p e c i a ld r i v eo fn e tc o n t r o l l e rd m 9 0 0 0 ah a sb e e nd e s i g i l e dw h i l et h e i l es v s t e m 衄2h a sb e e nb u i l d t i a k i n gt h ei n d u s t r yw a s h i n gm a c h i n ea sm ec o n t r o lo 饼e c t ,w ea n 羽y z e di 担 f i l n c t i o nm o d e l s a st h et r i a lo b j e c ti nn e t w o r ke m b e d d e dc o n t m ls y s t e m ,i t st l l r e e t y p i c a le i g e nv a l u e :i i l v e r t e rc o m m u n i c a t i o n ,i oc o n t r o la n da d cm o n i t o fh a v eb e e n t a k e na s t h ef e m o 把c o n t r 0 it a r 譬e ti nt 王l ec i i e n t h lt h ee m b e d d e dc o n t r o l i e l c o r r e s p o n d i n gp r o g i a mf o rn e ts o c k e tm o n i t o ra n dw a s h i n gm a c h i n ec o n t r o lh a sb e e n d e s i g n e d ,w h i l et h ec l i e n tf i e n d l yg u ia n dc o n t r o lw e bp a g eh a v eb e e nd e v e l o p e di i l j a v aa p p l e tt or c a l i z et h ew a s h i n gm a c h i n er e m o t er c a i t i m em o n i t o ra n dc o n t r o l ,s ot h e o nl i n ef r e q u e n c yc o n v e r s i o ns p e e dr e g u l a t i o n ,v a l v es w i t c h觚dw a s h i n gr o o m t e n l d e r a t u r es u e i l l a n c eh a v eb e e ne x e c u t e d a tl a s t ,c o n c l u s i o na n dp e r s p e c t i v eh a v eb e e nd e d u c e d a sak i n do fc o n t r o ls y s t e m , n e tc o n t r o ls y s t e mi n h e r i tt h ee n t i r et r a d i t i o n a lc h a r a c t e “s t i c ,h o w e v e r ,i ta l s o 擘曩i n e d n e ws p e c i a l i t vd u et oi t sn e we n v i r 6 n m e n t s o m ep r o b l e ma n dt h ek e yr e s e a r c hw o r k a l s oh a v eb e e ni n t r o d u c e d m yp r o i e c th a sb u i l tas o f t & h a r ds u p p o r tf o rf h r t h e rs t u d yo nt h en e t - w o r k e m b e d d e dc o n t r o ls v s t e m k e y w o r d s :n e tc o n t r 0 1s y s t e m ,a r m 9 ,u c 0 s - i l ,u c 厂r c p l p ,i n d u s t r yw a s h i n g m a c h i n e 湖咖二堂大謦 学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:所里交的学位论文,是本人在导师指导下,独立进行研究工作所取 得的研究成果。除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经 发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方 式标明。本声明的法律结果由本人承担。 ,学位论文作者签名:莎磁,日期:髫年 气 ,r 帅山t 二 v ,一 xi可选配置2 mn o rn a s ha m 2 9 i 1 6 0 或4 mn o rf i a s ha m 2 9 l v 3 2 0 。 在从n o rf l 峪h 引导配置下,n a n df l 峪h 可选1 2 8 m 以上容量。 u p 1 e c h2 4 1 0 开发板设计了双重引导配置,即可从n 柚df l a s h 引导也可以从 n o rf la s h 引导,只需改变跳线电阻的焊接位置。 2 由d m 9 0 0 岖构成的1 0 0 me t h e rn e t 网卡,i u 4 5 接口,支持双绞线对翻转; 3 1 个u s bh o s t 接口和1 个u s bd e c e 接口: 4 2 个r s 2 3 2d b 9 串口接口; 5 1 个3 2 脚l c d 薄膜线插座和1 个8 脚触摸屏插座。薄膜线插座可以直接连接博创 2 4 1 0 s 开发平台配套的液晶屏和触摸屏。另外提供一个4 0 脚的插座可以连接其 他型号的液晶屏和触摸屏。 6 音频采用u d a l 3 4 1 芯片,具有放音、录音等功能。提供耳机、线路接口和板载 m i c : 7 2 5 寸i d e 硬盘接口和c f 卡( i d e 模式) 接口; 8 s d m m c 卡接口; 9 采用m c p 2 5 1 0 和t j a l 0 5 0 芯片构成的c a n 总线接口; 1 0 板载2 个分压精密电位器供a d c 实验; 1 1 提供2 路p w m 输出和d a 电路; 1 2 2 片i i c 存储| 器a ,r 2 4 c 0 1 : 1 3 提供3 个4 0 脚扩展插座,引出所有总线信号和未占用资源。扩展插座上包括 地址、数据、控制等l d c a lb u s 全部信号外,还有t i m e r 、u a r t 2 、c 、s p i 、i i s 、 g p i o 、a d c 等空闲或可复用资源。用户可以自行设计合适尺寸的p c b 插在2 4 1 0 开 发板上实现各种扩展功能。 1 4 开发板为d c 5 v 电源输入,具备u ) o 产生3 3 v 和1 8 v 的电压。板载纽扣电池 为r t c 供电。另具备r e s e t 、j t a g 、r t c 电路。 开发板的硬件构成如图3 3 所示。 1 9 湖北工业大学硕士学位论文 a d ( r s 2 3 2 磅;i j0卜 i “a r 工o 一0 a r 工l l ( d s 3 c 二4 l i : c p u c :力 ? 戳毫 嚣 譬霉 :0 l 要d 笈毙游? - 睦t 卜i 锈羧;建 g p i o p u m k 多f l g 潞嗲遣j f l a s hd i s k 蔓兰! 型坠! 愁线溺鬻鹈动 i i ( s p i h l s b u s bh o s t :奠 d m 9 o a e i o o 瓢鹈誓4 s 攘t l ie 毒括播缝 国蔓疆铉赫壤 图3 3u p t e c hs 3 c 2 4 1of 睫件构成 3 1 2u p t e c hs 3 c 2 4 10 软件平台 软件系统是硬件平台的灵魂。作为网络化嵌入式控制器运行的核心,嵌入式 软件采用何种方式对控制器性能的发挥起到了至关重要的作用。过去由于受存储 技术和微处理器处理速度等凶素的限制,控制器的嵌入式程序一般郁是一个人循 环加上若干个中断服务程j 乎组成。这种编程方式在处理一般的j 通用中能够胜任, 但是在面对多任务、多叻、议、复杂应用时显然已经不能满足要求。随着内存容量 的迅速扩大以及价格的f 降和嵌入式微处理器的处理速度的提升,操作系统进入 到嵌入式系统中已经成为可能并已经得到了广泛的应用。根据控制器的需求在控 制器上移植操作系统是必须的也是可行的。基于操作系统的控制器软件整体设计 如图3 4 所示。 2 0 湖北工业大学硕士学位论文 , 图3 4 嵌入式软件整体架构 系统设计中由嵌入式实时操作系统统一管理和调度各个任务,在底层编写好 硬件驱动程序如n a n dr a s h 驱动程序、网络芯片驱动程序、串口驱动程序、d 驱动程序、s d 卡驱动程序等。对于文件操作和h l t e m e t 接入,事先编写好文件系 统和t c p 】 p 协议栈,各个与文件相关的任务通过写好的a p i 函数访问n a j l dh a s h , 与网络相关的任务通过写好的。a p i 函数访问t c p p 协议栈操作以太网接入 i n t e m e t 。对于一些简单的任务可以通过写好的a p i 函数直接访问硬件完成操作, 而一些对时间要求严格的任务或者简单的任务可以直接对硬件操作,完成操作。 1 系统引导程序设计 对于p c 的体系结构,人们熟悉的是p c 中的引导加载程序b i o s ( b a s i ch l p u t o u t p u ts y s t e m ,基本输入输出系统,其本质就是一段固件程序) 和位于硬盘的m b r ( m a s t e rb o o tr e c o r d ,主引导记录) 中系统引导程序( 如u l 0 和g r u b 等) 一 起组成。b i o s 在完成硬件检测和资源分配后,将硬盘m b r 中的引导程序读到系 统的内存中,然后将控制权交给引导程序。引导程序的主要任务就是将内核映象 从硬盘读到内存中,然后跳转到内核的入口点去运行,即开始启动操作系统。 在嵌入式系统中,主要使用凡a s h 作为系统的存储媒介,而很少使用磁盘,因 此整个系统的加载启动任务就完全由引导程序( 也称作b 0 0 t l o a d e r ) 来完成。例 如在一个基于a r m 核的嵌入式处理器中,系统在复位时从o x 0 处开始执行,而在 这个地址处安排的通常就是系统的引导程序。通常+ ,在嵌入式系统中,引导用f l a s h 会被按顺序分为如图3 5 所示的几个区域。 2 1 湖北工业大学硕士学位论文 从低地址到高地址方向 图3 5 嵌入式系统的f l a s h 分区 一般来说,b o o tl d a d e r 就是在操作系统内核运行之前运行的一段小程序,它 在系统复位时被运行。从字面上的意义理解,它主要包括两个功能:装载( 1 0 a d ) 和启动( b o o t ) 。每种不同的c p u 体系结构都有不同的b o o t l 0 a d e r l 3 8 】。有些 b o o t l o a d e r 也支持多种体系结构的c p u ,例如u b 0 0 t 就同时支持a r m 体系结 构和m i p s 体系结构。除了依赖于c p u 的体系结构外,b o o t l o a d e r 也实际上也依 赖于具体的嵌入式板级设备的配置。这也就说对于两块不同的嵌入式板而言,即 使它们是基于同一c p u 而构建的,要想让运行在一块班子上的b o o tl 0 a d e r 程序 也能运行在另一块板子上,通常也都要修改b 0 0 t l 0 a d e r 的源程序。 大多数b o o t l 0 a d e r 都分为第一阶段( s t a g e l ) 和第二阶段( s t a g e 2 ) 两大部分。 依赖于处理器体系结构和板级初始化的代码,通常都放在s t a g e l 中,用汇编语言 实现。它包括以下步骤: 1 1 硬件设备初始化; 2 )为加载b 0 0 t l 0 a d e r 的s t a g e 2 准备内存( 主要是s d r a m ) 空间; 3 ) 复制b 0 0 t l o a d e r 的s t a g e 2 到内存空间中; 4 ) 设置好堆栈,跳转到s t a g e 2 的入口电。 而s t a g e 2 则主要用c 语言来实现,这样可以实现更复杂的功能,而且代码会 具有很好的可读性和可移植性。 在u c 0 s 实时操作系统下,由于开发模式的不同,b 0 0 t l d a d e r 的功能也有些 差异,所以在u p t e c hs 3 c 2 4 1 0 1 下的b o o t l 0 a d e r 的设计是操作系统移植前必须 完成的工作。对于系统的引导程序,其设计流程如图3 6 : 湖北工业大学硕士学位论文 系统程序入口 l 上 设置中断向量表 上 设置时钟控制寄存器 上 初始化s d r a m 上 系统堆栈初始化 上 初始化运行时域 上 跳转到操作系统入口 图3 6 系统引导流程 1 ) 系统程序入口 s 3 c 2 4 1 0 的o m 0 和o m l 两个引脚用来配置启动方式和b a i l k 0 的总线宽度。当 o m 【1 :0 】- o o 时从n a n d f l a s h 启动,此时b a n l 【0 不能使用;当o m 【l :0 】- 0 l 时从b a n k o 启动,并配置为1 6 b i t 宽度,也就是从n o r f l a s h 启动。博创2 4 1 0 开发板上通过电 阻跳线来选择启动方式,在u p t e c hs 3 c 2 4 1 0 中只能够从n 柚df l a s h 启动。当 s 3 c 2 4 1 0 上电时,c p u 内部的4 k b v t e s 的s r a m 映射到了n g c s o ,即o 】【o o 0 0 0 0 0 0 开 始的地址范围内。然后n a i l df l a s h 中前4 k b v t e s 的内容自动拷贝到了s 删中,c p u 从0 x 0 0 0 0 0 0 0 0 中取指时,实际上是从s 删中取指令。由此可以看出,b o o t l o a d e r 的s t a g e l 编译后的大小不能超过4 k b y t e s 。 劲设置中断向量表 中断向量表中指定了各异常中断及其处理程序的对应关系。它通常存放在存 储地址的低端。在a r m 体系中,异常中断向量表的大小为3 2 字节。其中,每个 异常中断占据4 个字节大小,保留了4 个字节空间。每个异常中断对应的中断向 量表中的4 个字节的空间中存放了一个跳转指令或者一个向p c 寄存器中赋值的数 据访问指令。通过这两种指令,程序将跳转到相应的异常中断处理程序执行处。 各异常中断同时发生,则按照一定的优先级来执行。a r m 要求中断向量表必须放 湖北工业大学硕士学位论文 置在从0 开始,连续8 4 字节的空间内。 3 ) 设置时钟控制寄存器 s 3 c 2 4 1 0 所需要的时钟信号包括c p u 的f c u 【、外设总线a h b 的f c l k 以及外设 总线a p b 的p c u 【,均由时钟控制逻辑进行设置。在s 3 c 2 4 1 0 中有两个锁相环( p h a s e l o c k e dl o o p s ) ,一个负责f c l k 、h c l k 和p c u ( ,另一个负责u s b 模块( 4 8 m i z ) 。 f c l k 时钟信号主要用于内核a r m 9 2 0 t ;h c k l 除了给内核提供比f c u 王低的 时钟信号外,还给存储控制器、中断控制器、l c d 控制器、d m a 以及u s b 主机模 块提供时钟频率;p c u 厂贝0 主要用于外设总线,如:w d t 、s 、p w m 定时器、m m c 接口、a d c 、u a i 汀、g p i o 、r t c 以及s p i 。 s 3 c 2 4 1 0 所需要的三大时钟信号由m p l lc o n t r o lr e 酉s t e r 和c 1 0 c kd i v i d e d c o n t r o lr e 酉s t e r 设置,前者决定了s 3 c 2 4 1 0 的稳定时钟周期,而后者则对f c l k 、 h c 螂p c l k 所占稳定时钟周期的比例进行设置。 尽管时钟控制寄存器的设置比较复杂,但是对于u c o s 来说,只需要进行两个 简单的操作即可,代码也非常简单,其代码如下: l d rr 0 ,= m p l 【c o n l d fr 1 ,= 0 x 0 0 0 a 1 0 3 l s t rr 1 ,】 l d rr u = c l k1 ) j v n l d rr 1 ,= 0 x 0 0 0 0 0 0 0 3 s t f f l ,呷】 钔初始化s d 黜蝴 嵌入式系统中片内存储资源一般不能满足系统开发的需求,构建一个高效的 存储系统是嵌入式开发的基本工作。片外s d r 址直的控制由s 3 c 2 4 1 0 内的存储控 制器进行设置,其所实现的功能主要是通过对其特殊功能寄存器的读写来进行的, 包括: 曲总线宽度等待控制寄存器( b w s c o n ) ,它的设置决定了b a i l l 【宰上的s 删 是否使用了u b l b ( 写高f 氐字节使能) 、b a l l l 【7 上的s 洲存储器的等待 状态、b 蛆k 7 的数据总线宽度、b a n k o 的数据总线宽度以及存储模式; 坊b a i l l 【控制寄存器( b a n k c o n n :n g c s o 硼g c s 5 ) + ,它的设置决定了n g c s 有效之前地址建立时间和在n o e 上芯片选择建立时间; 曲d r a m s d r a m 刷新控制寄存器( r e f r e s h ) ; d ) b a n k 大小寄存器( b a n k s i z e ) ; 曲b a n k 6 和b a n k 7 模式设置寄存器( m r s r ) ,它的设置主要决定b 觚k 6 和 b a n k 7 的存储模式; 湖北工业大学硕士学位论文 总体上讲,s d 蝴的初始化是比较复杂的,但是对于u c o s 来说,可以大 部分使用默认值,只是根据自己的需要更改部分设置即可。 5 ) 系统堆栈初始化 a r m 处理器具有7 种处理器模:用户模式、f i q 模式、瓜q 模式、管理模式、 中止模式、未定义模式和系统模式。除用户模式外的其他模式称为特权模式。特 权模式是为了响应中断或异常,或访问系统保护的资源。特权模式可以自由地访 问系统资源和改变模式。每一种模式的堆栈指针寄存器( s p ) 都是独立的( s y s t e m 和u s e r 使用相同s p 寄存器) 。因此,对程序中需要用到的每一种模式都要给s p 寄存器定义一个堆栈地址。方法是改变状态寄存器( c p s r ) 内的状态位,使处理 器切换到不同的状态,然后给s 主 赋值。 一般堆栈的大小要根据需要而定,但是要尽可能给堆栈分配快速和高带宽的 存储器。堆栈性能的提高对系统性能的影响是非常明显的。对于引导阶段的堆栈 大小分配,一定要注意不能过大,否着可能会使b o o t l 0 a d e r 的编译大小超出 4 k b y t e 。至于其对系统运行性能的影响,可以在s t a g e 2 阶段从重分配大小。 们初始化系统运行时域 在嵌入式编程中,有一个很重要的概念:加载时域和运行时域。当映像文件 编译后位于存储器中时的地址称为加载时地址,当映像文件运行时,其应当所处 的地址称为运行时地址。之所以有这两种地址,是因为映像文件在运行时,其中 的有些域是可以移动到新的存储区域。比如,已经初始化的r w 属性的数据所在 的段在运行前可能保存在系统的r o m 中,在运行时,它被移动到删中。 a r m 映像文件的入口点有两种类型:一种是映像文件运行是的入口点,称为 初始入口点( i n i t i a le n 仃yp o i n t ) ,另一种是普通的入口点( e n t r yp o i n t ) 。每个映 像文件只有一个唯一的初始入口点,它保存在e 头文件中。普通的入口点是在 汇编程序中用e n t r y 伪操作定义。 初始入口点必须位于映像文件的运行时域内,并且包含初始入口点的运行时域 和其加载时域的地址必须是相同的( 这种域称为固定域r o o tr e 西o n ) 。 u c o s 的b o o t l d a d e r 必须位于固定域内,即b o o t l 0 a d e r 必须位于0 x 0 0 0 0 0 0 0 0 开始的地址空间内,但是b o o t l o a d e r 的关键的任务之一就是把u c o s 内核以及其 上的应用程序从r a s h 中的加载时域拷贝到s d r a m 中的运行时域中去,同时拷贝 的还有一些全局变量,以及把s d 洲中应当初始化为o 的存储区进行设置。 7 l 跳转到操作系统入口 当所有的系统初始化工作完成之后,就需要把程序流程转入主应用程序: 珈p o r tm a i n 湖北工业大学硕士学位论文 b l j n a m 程序在此处使用b lm a i n ,而不是直接用b lm a j n ,其内部是大有缘故的。 当使用前者时,实际上此时是调用了c c + + 运行时库中的皿a i l l ( ) 函数。该函 数完成以下工作: 将非固定域( n o n r o o t ) 的执行代码域( r e 西o n ) 从装载地址空间复制到运 行地址空间,此步骤实际上就是完成上述6 ) 中的将u c o s 内核、其上应 用程序以及其他相关量从加载时域拷贝到相应的运行时域中; 将z i 域置零; 黟b 转到ne n t r y o 运行 如果应用程序不想按这种模式运行,可以定义自己的皿a i n o 函数,如直接跳 到r l e n t r y o 运行。所用的汇编代码如下所示: i m p o r t r l = e n t r y e x p o r t m a i l l e n t r y m a i n b f te n t r y e n d 或者是用户可以在整个u c o s 以及应用程序中都不使用c c + + 运行时库,则用户 可以直接跳到应用程序入口,如下: i m p o r t m a i n b li m i n 一 , 此时,应用程序入口其实也可以取其他的名字,如i m p o r t a p p ,b l a p p , 但是此两种方式都需要用户自己实现加载时域到运行时域的转变以及z i 域的清 零。由此,建议开发者使用c c + + 运行时库,即使用b l m a i l l 的模式,本文即 采用此方式。但是使用此方式有一个难点就是需要用户自己实现一些c c + + 运行 时库中的一些底层接口,以供c 运行时域使用。比如,如果应用程序用到了p 血t f 类的函数,用户就必须重新实现f p u t c o 函数,以反映目标环境的特性。如果应用 程序中没有用到p r i n t f 类的函数,用户就不必重新实现印u t c o 函数。通常,用户可 能需要重新实现的函数包括: 静态数据的访问 关于地域特性和c t y p e 应用程序运行的错误捕捉、处理以及程序退出 应用程序运行时的存储系统模型 2 b s p 的设计 湖北工业大学硕士学位论文 作为板级支持软件包b s p 处在一个软硬件交界的中心位置,其结构与功能随 系统应用范围而表现较大的差异,可认为它属于操作系统的一部分,主要目的是 为了支持操作系统,使之能够更好的运行于硬件主板。借用通用操作系统的逻辑 上分层的概念,由于嵌入式系统中采用微处理器、微控制器的多样性,要求嵌入 式操作系统的内核明确分成两层,其上层一般称为内核;而底层则称为硬件 抽象层或硬件适配层,都缩写成m 虬,实际上就是板级支持层。采用这种分 层虚拟的方式,可以完成由底层向上层提供服务而隐去其细节。 i 应用程序 害 l嵌入式操作系统 li os y s t e m l i b r a r i e s弋c p 嗯 霉 i b s p 善 。 今 各种接口 b o o t l o a d e r 害, , 害 硬件层 图3 7 嵌入式系统结构 从图3 7 所表明的嵌入式系统结构中,在硬件层之上,建立最底层的板级支持 软件包b s p 可以直接与底层的硬件设备建立联系。 狭义的b s p 是一些汇编语言程序和c 语言程序相结合的函数库,为上层软件 提供访问硬件的手段。对u c o s 这种微内核的操作系统来说,b s p 可以狭义的理 解为为底层硬件驱动程序。 1 ) u a r t 驱动开发 u 触玎( u n i v e r s a l 舡v n c h r o n o u sr e c e i v e 佃a n s m i t t e r ) 通用异步收发器是用于 控制计算机与串行设备的接口。它提供了r s 2 3 2 c 数据终端设备接口,这样计算 机就可以和调制解调器或其他使用r s 2 3 2 c 几口的串行设备通信了。 串口驱动开发在嵌入式软件开发中可以说是最基础的,它是其它软件开发的 前提。通常在嵌入式软件开发过程中,需要大量的调试信息,而这些信息都可以 通过串口和h o s t 上的串口终端或是串口调试助手进行信息的交互,从而大大调高 了开发的进度。 在s 3 c 2 4 1 0 中,u 砧玎提供了三个独立的异步串行加端口,均可以操作在中 断模式或者d m a 模式,具有可编程的波特率、红外收发、可选的1 2 位停止位、 5 8 位的数据宽度以及奇偶校验。 湖北工业大学硕士学位论文 在u a r t 操作中,主要是通过对u 舢玎特殊功能寄存器进行设置来对u 触汀 进行控制的。u a r t 的特殊功能寄存器包括u a r t 的控制寄存器、状态寄存器、 保持寄存器及波特率分频寄存器等等。 在u a r t 的控制中,主要是通过波特率分频寄存器对波特率u b r d n 的设置, 其值可以通过下式来决定: u b r d n = ( r l d u n d _ 0 f f ) ( m c u 叭波特率宰1 6 ) ) - 1 式中:约数因子u b r d n 的范围为1 2 1 6 1 。 使用串口发送数据时,将待发送的数据写入1 7 t ) ( h o 寄存器,然后通过读取 u t r s 咖寄存器的值判断数据是否发送完成。进行串口数据接受时,也是通过 读取u i r s l = a t 0 寄存器的值判断是否接受到数据,如果收到数据,则可以从 u 砌娜0 寄存器中读出数据。 2 ) n a i l df l a s h 驱动开发 n a n d 是目前时市场上主要的非易失性闪存技术之一。n a n d f l a s h 存储器结 构则提供极高的单元密度,可以达到很大的存储容量,并且写入和擦除的速度也 很快,使其在嵌入式系统中得到了广泛的应用,但n 觚d f l a s h 存储器需要特殊的 接口来操作,因此对它的读写与n o r - f l a s h ( 线性f l a s h ) 存储器有较大的区别。如 果在c p u 中没有提供直接与n a n d f l a s h 存储器的接口,读写过程要靠软件编程来 控制f 1 a s h 的时序来说实现。 在s 3 c 2 4 1 0 中提供了n 锄d f l a s h 的控制模块,如图3 8 所示,只需要要对其 特殊寄存器进行设置即可以完成f l a s h 的读写、擦除等操作; c u 皇 a l e n c 毫 n 兄 n w r ,n g i 啪q ,0 7 在u p - c hs 3 c 2 4 1 0 中采用了韩国三星公司的l s u p p o r t f i l e s a a s c i ic o n v e 瑙i o n s ( n e l a s c i i 宰) , b b u 骶rm a n a g e m e n t ( n e t - b u 毒) , c t c p 舢d pc o 皿e c t i o nm

温馨提示

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

评论

0/150

提交评论