基于Linux的嵌入式监控系统软件平台研究与设计_图文

硕士论文

基于Ln 的嵌入式监控系统软件平台研究与设计 iu x





随着计算机、      通信等技术的快速发展, 计算机系统的微型化和专业化已经成为信 息技术发展的新趋势。 其中, 嵌入式系统技术作为这一趋势的支撑力量, 其产品己 经 广泛渗透到社会生活的各个层面,在信息处理中发挥着重要的作用。 本论文内容来源于实际的开发项目,      以构建基于嵌入式平台的电力设备监控系统 为背景, 具体研究了嵌入式系统技术在传统监控系统领域的应用, 主要内容可以分为
以下三部分:

第一部分是嵌入式监控系统基础应用平台的研究。      本课题在基于E 91 的硬件 P 3 5 平台上,利用最新的L u . 内核搭建了完善的嵌入式系统平台。搭建过程中结合 i x2 n 6 具体应用,对通用内核改造进行了研究。 第二部分是图形界面系统的开发。      友好的用户界面是衡量嵌入式系统效率的重要

指标,本课题将基于 Q b ed 的界面框架移植到监控系统中, 此m d e d 使用面向对象的 t Q 语言编写了良 好的图 形用户界面(U 系统. GD
第三部分是电力设备监控系统的设计。      从系统的工作流、 数据流出发,构建了基

于模块架构的监控系统. 整体采用 Q 编程保证了系统的可扩展性。 t 本论文在详细分析嵌入式 L 及嵌入式 G I      i x u n U 系统的基础上,探讨了将嵌入式 L 及G I x u m U 系统应用于监控系统的可行性和优越性, 并结合所构建系统的实际情况, 给出了建立嵌入式L u 系统平台及构建监控系统的具体内容和方法。 ix n 本论文设计的      监控系统中, 嵌入式 L u 的引入降低了系统的开发难度, n ix 增强了 系统的稳定性;模块化的系统实现使系统具有更好的通用性和兼容性;良 好的 G I U
支持增强了系统的可操作性。

关键词:嵌入式L u 系统, ix n 监控系统,图形用户界面, 龙m e e q bdd

硕士论文

墓于 Lnx iu 的嵌入式监控系统软件平台研究与设计

Ao 初th a d ee p et o u r c      t r idvf m n oc pt ad 】 g n he P o f m en o w u n c os c o g t i t eo o e an t hl y h , 而c mh r l的川乙 l 助dse i t o cm u r Sm b b o anwtn. oi 双 n o Pc Z i f o Pt St l a n ia o ey e a e m e rd s ce e A og e b d ssm tho g a t up o 面sr d i P dc hs m n 几 m e e y t se 1 s h Po f dd e c 0 o y es r t tn, r t a e t o s u i lad t t sc l aa 1 e, p s iP到nr it l rao n t e iO o i i tl e I 即d l a m O刁t ln b 刘 mtn 6r n h t a ie af vs y a n o e e f i o
p 0 eS ? r C Smg

h面s a , 。 t t      二 也 cn n c s ℃ h at l e f m P e w i m e pp o e o e m i e o v Pn o f mt c ad o e r 饯 h t j h k c as 由e ud go a u rl r ss 眠 di e c c eu m n a t bcg ud A b ln f spV sy y e i i e o t m n l t a qi et h akrn . e ri i P s e o seic uyo t e eddss mt ho g w ‘ ae nt t di a fl o Pc s d f 址 mbde y t e n l 五t e c o a t ni h r i n id f y k e at l e o s s e l rss .h m icn nc b d dd tt ff l t epr: u rs y e Te a o t ta e ie io e 1wn h e 翻s pV o t y m n e n v n h oo gr t 丁e r p sh e a ho h m d u V sy yt      a it r e c n t e bde sprl r ss b daPc o 七 fs r i t’ t e sr e e d e o m s e a Plan e it i l b力 Un e a s i x2 m l P dn . i h le L u . e e 而ss e bi as n l tn o a s gt t t n 6k , u c u j b t i o dP f nf t u a o r e b 山dssm o t P35b d花eP l r . 山 r e o t ud g me d yt n h 91 a ,甘 lf 玩 ep c s f ebii , e eE r a m o o s h l n 坛 s nao t a sh g ec e ew s d dn g t t se f apctn 劝 f 刀 1 0 r t er km a t i ie a dh P c c la0‘ o tn w d e ni ls o e t e e i P i i r i

Te n a sh e P e f r h n rc s t F ny      p it dv om ot g Pl ie兔e y e . e l ̄ b 卿。d r t e e l t e n h a c l l a i sm r d i i rc ia am a o t e c ny f bde s e . yr P n g n i es g t e 峨 f e 伍 i c o e ed y m B t l t t 把兔 e r s h e n z d s t S n a ai h ne
丘 e o b e n Q m ed t t ue i r ssm 面s r e cnt c a 翻 w r a do 泥 b e o h P sy yt , P C os t k s dd es r o v e j o t U rs

阳l i g P c uei r c(U) smui Q a o etdn dagae t勿n r h a s n i eG Is t s n t n b c et l U g. s g ai i rt 触 e ye g , j - en O Te d P O msh u V o y e t l t a q1 e .r h      a cne t s r s s t f e c c eu m n F mt 七 面r r c t e p ir e y mo h er l P t o e e i ssmw r n ad h dt且 w a ue i r ss mb e o t m dl s c r y e o k o n t a 。 sPrsy y t ad n e ua t t e t w e a , Vo e s h o r r o u s a 。 。c d p g 比L u n t v r1 u dh x ni i f e e w c拙 ”t ad r r比口 g 1 Q oe 1 s e t et s i ot s t . en o 别 n s g aax e e bt h y m s l y nh a O t b s f ae n 1 s m ee Ln n e bde G 1y e ,     iodt1 aa s o e b dd i ad m edd U ssm 面5 e s s i d y f i d x u t p edc s t f i i adueotoap i btot mtt s rs P iu d e a i a r s e h e bt n s r r fp】n o h f e oh u V o s s l y P i i y yg h e p Jr e y y t . e ni n h c ft sm 出 p i o e n e o o ssm D ed go t a to h y e , es c ccn n adm t f e P n ef es t e f ii i h r d o s tg em dd i x 1f n t ur s yy e ssb h cn 代1 t ebde L u p tr ad s e i rs t ae l s . t nh e n am o e h P o smw O l e v id n h u lr sl e tdi I t s V o y e h no t no e b ddL u p an sm      rs s t t ir co f m de i o ri ye e p y e , n u e n e tgs x t r c 俪 d c i i ee 9阳de e t s t .sbi; 五 m d a 曰ue i ut ndvl d i f ly 叩加 曲即c h ye s t i Te u r d e sm a l y t ol

就 C 正 gts t t ee e a1 adcm abi;〔e G IS pr 川 加 0 ye h trv t i n o t i sm eb s r it y P i 】 仕a U L ot y t t P I seg e d oeb tot s t ? rt 刀h tn h et p r i f y e e a h h sm y e

K y W6 s m e e Lnx ss ,S e i 汀 Ss m U, e d r :E bd d i u ye t m P v o y ,G u rs e t I

声 明                     
本学位论文是我在导师的指导下取得的研究成果,尽我所知,在      本学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发 表或公布过的研究成果,也不包含我为获得任何教育机构的学位或学
历而使用过的材料。与我一同工作的同事对本学位论文做出的贡献均 已在论文中作了明确的说明。

研究生 名: 王 明 签

冲7 7月 功 日 年

学位论文使用授权声明

南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅     
或上网公布本学位论文的部分或全部内容,可以向有关部门或机构送

交并授权其保存、借阅或上网公布本学位论文的部分或全部内容。对
于保密论文,按保密的有关规定和程序处理。

研究生签名:

, 年 7月 阳日 问

硕士论文

基于Lnx iu 的嵌入式监控系统软件平台研究与设计

1绪论
L l课题背景 随      着科学技术的快速发展及工业技术的日 益成熟, 计算机系统的专业化和微型化 已成大势所趋,这一趋势的最终归结点将是对嵌入式系统的极大需求.进入上世纪 0 9 年代以来,以计算机和软件为核心的数字化技术取得了迅猛的发展,这一技术不 仅广泛渗透到社会、经济、军事、交通、通信等相关行业,而且深入到家电、娱乐、 艺术、社会文化等各个领域,掀起了一场数字化技术革命。多媒体与Ie e的迅速 nm t t 普及,消费电子、计算机、通信 (C 3 )一体化趋势日趋明朗,使嵌入式技术再度成

为前 究 点. 当研 热 1 ]
L I嵌入式系统的应用现状 L 嵌入式系统具有软件代码少、      高度自 动化、 低成本、 低耗费、 轻型、高可靠性及

可配置性等优点, 能很好地完成实时 和多任务的系统需求。 据统计1 每年世界上生 1 3 , 产的计算机芯片中只有 1 2% 是为台式或便携式通用计算机设计的, 0 0 一 这也意味着每 年为嵌入式系统设计制造的计算机芯片达数十亿之多, 此外每年还有 1 万多个新的嵌 入式系统计划产生, 越来越多复杂的系统将要引入嵌入式操作系统。 显然, 嵌入式系
统已成为计算机应用领域一个很重要的组成部分。

目      前嵌入式系统技术主要有以 个应用领域1 下四 ] 2 :
) 1 消费类电子产品      消费类电子产品是指能够提供信息服务,      或通过网络系统交互信息, 同时又简单 易用、价格低廉、维护方便的一些电子设备。

后P      C时代,家用电器将向 数字化和网 络化发展,电视机、微波炉、电话等都 将嵌入计算机,并通过家庭控制中心与 b m t 忱 e 连接,转变为智能网络家电。届时, 人们用手机就可以 远程控制家里的电 还可以实现远程医疗, 器, 远程教育等。 嵌入式 系统为信息家电 ( 数字机顶盒、网络冰箱、 家庭网关等) 的实现提供了 技术上的保障
和广阔的市场前景。 2 移动计算设备      )

包括手机、 D 、      P A 掌上电脑等各种移动设备。 中国拥有最大的手机用户群, 而掌

上电脑 ( P A 或 D )由于易于使用、 携带方便、 价格便宜,未来几年也将在我国得到 快速应用。 从市场反映来看, D P A与Ie e 己 t n m t 呈现融合趋势, 用掌上电脑( P A) 或 D
上网,人们可以随时随地获取信息。
) 3 工业仿真     

绪论

硕 士论文

在工控和仿真领域,      嵌入式设备能够充分满足工控对系统整体稳定、 高效以 及实 时性的需求, 因此早已 得到广泛应用。 我国的工业生产需要完成智能化、 数字化改造, 智能控制设备、 智能仪表、自 动控制等为嵌入式系统提供了 很大的市场。 嵌入式设备 进入传统工业行业,对传统企业的信息化改造有着非常重要的意义。
4      )网络设备

随着 Iel     e的快速发展,设计和制造嵌入式瘦服务器、嵌入式网 t n nt 关和嵌入式路 由器己 成为嵌入式 he e时代的核心技术。 t t im 基于L u 等的网 lx n 络设备提供了 更好的 网络解决方案,网络设备领域己成为嵌入式应用新的发展方向。 据调查显示【      1,目 2 前嵌入式开发系统涉及到的领域中, D 到了3 , P A占 % 0 手机 占 到了1 , 8 信息家电2%, % 1 工业控制5 , % 服务行业 2 , % 交通系统2 其他2%。 %, 2
L Z嵌入式系统的应用趋势 L

从2 世纪8      0 年代初到9 年代初的 1 年里, 子领域的很多研究工作都集中 0 0 0 微电 到了数字系统速度的提高上, 前此领域技术所拥有的计算能力使实现强大的个人工 目 作站、 复杂实时语音和图像识别的多媒体计算机成为可能。 强大的计算能力对普通民 众来说己是触手可及,不像早些年代那样只为特殊群体服务。 以      信息家电为代表的互联网时代嵌入式产品, 不仅为嵌入式市场展现了 美好的前 景, 注入了新的生命; 同时也对嵌入式系统技术, 特别是软件技术提出新的挑战, 这 主要包括日 趋增长的功能要求、 灵活的网络联接、 轻便的移动应用和多媒体的信息处
理等。总体来看,嵌入式技术的应用 目 前有以下趋势:

) 1 嵌入式应用软件的开发需要强大的开发工具和操作系统的支持:      ) 2 联网成为必然趋势:     

3 支持小型电子设备实现小尺寸、微功耗和低成本;      ) 4 提供精巧的多媒体人机界面。      ) 后P      C时代,嵌入式系统将拥有最大的市场。 我国的市场也将为嵌入式系统的 发展铺平道路。 国内目 前有规模难以 估量的手机通讯市场及迅速发展的汽车市场, 它 们都是潜在的嵌入式系统应用平台。 面对如此之大的电子产品市场和潜在的 用户群, 嵌入式系统面临的将是前景光明的春天。 目 嵌入式计算机在应用数量上已      前, 远远超过了各种通用计算机, 甚至在一台通 用计算机的 外部设备中就包含了 一 0 5 1个嵌入式微处理器。制造工业、过程控制、网 络通讯、 仪器仪表、 汽车船舶、 航空航天、 军事装备、 消费类产品等几乎所有方面均 已是嵌入式计算机的应用领域。 嵌入式系统工业是专用的计算机工业, 的 把 其目 就是 通用计算机发展成为功能计算机, 把一切变得更简单、更方便、 更普遍、 更适用, 使 更专业化的 计算机系统大量进入社会。 从这个角度讲, 嵌入式微处理器可以 称为是构

硕士论文

基于Lnx iu 的嵌入式监控系统软件平台研究与设计

成未来数字化时代的 基石。 资深嵌入式系统专家一沈绪榜院士曾 3 未来 我国 预言1 ) :“
十年将会产生针头大小、具有超过一亿次运算能力的嵌入式智能芯片”, 这将为我们

提供极大的创造空间。总之 “ 嵌入式微控制器或者说单片机好像是一个黑洞, 会把当 今很多技术和成果吸引进来。中国 应当注意发展这一智力密集型产业”。
L J 用户接 口的发展历程 I

用户接口      是联系计算机系统与用户的桥梁和纽带, 早期的 计算机是通过面板上的

指 灯 示 来显示二 数据 指 1 人们则通过面板 开 、 及穿 进制 和 令 , 4 上的 关 扳键 孔纸带 输入
各种数 据和指令。 年代中 后 又产生了繁琐的 0 5 、 期, 作业控制 ( L 语言 c 及控制台打 J)
字机等,使计算机批处理成为可能,从而提高了计算机的使用效率。 9 1 年,      3 6 美国麻省理工学院开发出第一个分时系统C s, T 多用户分时终端成为 S 0 7 年代乃至 8 年代用户界面的主流。 年代后, 0 0 8 图形技术有了迅速的发展, 新的图 形技术的出现将传统用户界面推向了图形用户界面的新阶段。 此阶段的用户界面己经 由 菜单窗口 和对话框等元素构成, 它为用户提供了一个与系统进行交互的环境, 提高 了软件的使用效率, 使用户可以以 简单自 然的方式与软件系统交流信息, 尽可能地减 少用户需要记忆的信息。 形用户界面的普及和流行, 图 被认为是八十年代计算机领域 最伟大的成就。 随之而来的用户界面管理系统和智能界面的研究均推动了用户界面的 发展, 用户接口已 经从过去的人去适应笨拙的计算机, 发展到今天的计算机不断地适 应人的需求。 用户接口的重要性在于它极大地影响了最终用户的使用,      影响到计算机的推广应 用, 甚至影响到人们的工作和生活。当前, t c 玩e t m 的发展异常迅猛, 虚拟现实、 科学 计算可视化及多媒体技术等对用户界面提出了更高的要求。

I 课题意义 J 综上所述,      嵌入式系统在各个领域均已 得到了 广阔和深入的 应用, 应用的场合也 日 趋复杂。 尤其在工业生产中的远程监控领域, 如果还依赖于传统的嵌入式控制器来 实现对设备的监控,将不能满足市场的最新需求,这样的产品也将很快被市场淘汰。 所以 我们考虑在本课题的嵌入式监控系统中引入嵌入式操作系统, 虽然这将增大整个
系统的规模,但其应用前景仍会得到极大的拓展。

嵌入式操作系统作为嵌入式系统中的核心,      是系统功能的内 在体现, 它控制着整 个系统的所有资源, 并构成应用程序开发的基础, 因此在嵌入式系统中嵌入式操作系 统占有重要的地位。 在当前市场上众多的嵌入式操作系统中,嵌入式 Ln 以      l x u 其自 身的特点受到用 户的广泛青睐。嵌入式 L u n i x有着作为嵌入式操作系统所需要的很多特色:开放源
代码、适用于多种 C U 及多种硬件平台、性能稳定、裁剪性好、开发与伸用都较为 P

绪论

硕士论文

简便。因此,在本嵌入式监控系统的实现中我们选择 L u n i x操作系统作为嵌入式操
作系统。

本课题实现的嵌入式 L      i x u n 监控系统不仅可以 用作电力系统的嵌入式控制器, 还可以用于其它类型设备的监控。 事实上, 本系统模块化的架构充分满足了 通用性的 要求,所构建的监控系统稍加改造即可成为一个通用的嵌入式系统开发平台。此外, 在嵌入式 L u i x移植过程中运用的方法和一些关键问 n 题,对其他类型平台上的嵌入 式L i x u n 的移植也具有借鉴意义。
L 3本课题完成的工作

本课题的目      标是构建一个嵌入式的监控系统, 实现对远程电力设备的监控。 本人 在课题中主要负责在基于 E 91 的目 P3 5 标板上构建嵌入式监控系统,并根据应用要求 对嵌入式 Lnx i u 进行了改造。所完成的工作主要有: ) 1 监控应用软件系统的分析和设计;      ) 2 嵌入式开发环境的配置 (      交叉编译、N S ; F 等)
) 3 使用 UB 配置嵌入式系统的 B 。L ae;      一ot 。to r d

) 4 嵌入式Lu      in 系统内核的剪裁、修改和编译,改变了L 系统的启动方式: x x u m ) 5 配置和构建了Ca f格式的根文件系统 ( o S;      r s m o F R t ); ) 6 移植 Q E bde 到嵌入式 L 系统平台。     灯 m edd x u m L 4论文章节安排 第1      章:绪论,首先介绍本嵌入式系统的开发背景和意义,本课题所作的工作, 以及论文的各章节安排等; 第 2 嵌入式系统概述,      章: 重点介绍了嵌入式系统的体系结构及其一般的开发流 程, 并对嵌入式 L 系统进行了详细的阐述; x u m 最后分析了嵌入式系统平台上的用户 接口,对目 前主流的图形用户界面进行了比 较; 第 3 全面描述监控系统应用软件的开发工作,      章: 从系统的硬件架构和软件架构 入手,重点分析了 应用程序的工作流、数据流、操作过程等: 第4      章:详解在E 9巧平台上为应用程序构建嵌入式L 系统的过程,指出 P3 i x u n 了其中的难点及关键之处。 具体内容包括构建交叉编译环境、 建立 B t0dr 编译 o Lae 、 内核、构建根文件系统、配置图形用户界面系统等;

第 5 系统分析了      章: 嵌入式 L 系统的内核、 x u m 应用程序的调试方法和过程, 并
给出本系统主要的调试结果; 第6      章:总结和展望。

硕士论文

荃于Lnx的嵌入式监控系统软件平台研究与设计 iu

2 嵌入式系统概述
对于嵌入式系统, 气工程师协会征E ) 权威定义为:      电 E的 嵌入式系统是用来控制 或者监视机器、 装置、 工厂等大规模系统的 设备 (ec u d c tl no o D e s t or , i r i v s e o no m t r o , s sh pa o fql et a n y rl s a i t o ri oeU m n m ci rop t 。 s e et n t p , he n a ) 此外,      式系统 还有如下定义 : 以 用为中 对嵌入 业内 ] 0 2 [ “应 心,以 计算机技术为基 础, 软硬件可裁剪, 适用于应用系统对功能、 可靠性、 成本、 体积、 功耗有严格要求
的专用计算机系统气

. 2 1嵌入式系统体系结构
一般而言,      一个完整的嵌入式系统由四部分组成: 嵌入式微处理器、 嵌入式外围
设备、嵌入式操作系统和嵌入式应用软件。

应序 用 ,一 程
B 程序 加t

应用程序2
0 号进程

应用程序3

嵌入式操作系统内核             

一一一门 (物 度 进 管 人调 、程 理

硬件

网络

B序时断“’ 。 {器、管 ‘ 定中内理

驱动

协议 栈

文件
系统

图2                                . 1嵌入式系统结构图

. 2 i微处理器的发展状况及其分类 L 自顶e在 9     1 年推出了 t l 7 1 第一款微处理器 be40 以来,各厂家陆续推出了 t 04 1 许 多8 6 位乃至3 位的 位、1 2 微处理器。 世纪 8 年代,微电子技术工艺水平的 0 2 0 提高 使得嵌入式应用中所需要的微处理器和一些外围设备可以集成到一块芯片上, 从而制 造出面向 F 设计的微控制器,也就是俗称的单片机。其后, S O D P的出现进一步提 升了嵌入式计算机系统的技术水平。 进入 2 世纪 9 年代后, 0 0 在分布控制、 柔性制 造、 数字化通信和信息家电等巨大需求的带动下, 嵌入式微处理器得到了进一步的加 速发展。目 前嵌入式微处理器除了部分为 3 位处理器外, 2 大量存在的是 8 位和 1 位 6 的嵌入式微控制器伽C ) U。 嵌入式系统作为计算机应用的另一种形态,      它与通用计算机应用的不同 在于: 嵌 入式计算机是以 嵌入式系统的形式隐藏在各种装置、 产品和系统之中的一种软硬件高

嵌入式系统概述

硕 士论文

度专业化的 特定计算机系统。 按照当前处理器性能及功能 应用领域的不同, 将嵌 可以

入式处 器分为以 几类 : 理 下 1 ] 0 2
) 1 嵌入式微处理 E b d Mc P c oI i El      器( e e io e r Jt 卜 U m d d rr s h , p o )

) 入式 2 嵌 微控制 ( c O印I Ui M U      器 Mr n ! n , C io t e t ) r 3嵌      s ) 入式D p处理器 E b d Dg滋5 力lr o, s (me e i 1 a o r E P dd i 9 p 馏s D ) t
4 嵌 片上系统 5 t n h , o      ) 入式 ( e C p sC 邓 mo i ) 其中 S C是追求产品      O 系统最大包容的集成器件,它最大的 特定是实现了软硬件 的无缝结合,可以 直接在芯片内 嵌入操作系统的代码模块。S C可以 O 使用 V D 等 HL
硬件描述语言进行系统设计, 不像传统的硬件系统设计那样要先绘制庞大、 繁杂的电 路板, 然后再一点点焊接。 而是使用精确的编程语言, 综合时序设计, 直接在器件库 中调用各种通用处理器的标准, 然后通过仿真就可以 直接交付芯片厂商进行生产。 . 2 2外围设备 L

在嵌入式硬件系统中,除了中心控制部件 ( C 、 S、E P 、S C 外,      M U D P M U O )以 用于完成存储、 通信、 调试、 显示等辅助功能的其它部件都可以 算作嵌入式外围设备。 目前, 常用的嵌入式外围设备按功能可以分为存储设备、 通信设备、 显示设备等三类。 存储设备主要用于存储各类数据,常用的有静态易失型存储器 (A R M、SA 、动 R M) 态存储器 ( R M) D A 和非易失型存储器 (O ER M、 ER M、 L S ) R M、 P O E PO F A H 三种, 其中F S A L H凭借其可擦写次数多、存储速度快、存储容量大、价格低廉等优点, 在 嵌入式领域内 得到了广泛的应用。 前存在的大多数通信设备都可直接在嵌入式系统 目 中 应用,包括 R 一22( S 3 串口) R 一 8 C N口) 孙一 5( 、 S 45(A 、 4 网口) s 通用 、U B( 串行总线接口)等。由于嵌入式应用场合的特殊性, 通常使用液晶显示屏 (C 、 L D) 触摸板 〔 c P D 等外围U 肠uh a e n O设备。

23嵌 . 1 入式操作系统 (m odd pr . s . , o ) E bdoo e “g y . E s a s t
嵌入式系统的覆盖面很广,      从很简单的到复杂度很高的系统都有, 这主要是由具 体的应用需求决定的。 简单的嵌入式系统要处理的任务一般比较单一, 开发人员在应 用程序开发中自己即可管理微处理器的工作流程, 很少需要用到嵌入式操作系统。 但 是, 当系统变得复杂时, 对系统中断的处理以及多个功能模块之间的协调如果仍由 开 发人员自己 来控制和解决, 其结果将是随着程序内 部逻辑关系的 复杂化, 程序开发人 员对多种功能模块的驾驭将逐渐无能为力。为了保证中断相关处理的正确性和完整 性, 及不同 模块之间对硬件资 共享和互斥, 源的 就需要使用一 个操作系统来提供支持, 否则应用软件就会变得过于复杂,使开发和维护难度过大。 与P      C操作系统类似, 嵌入式操作系统也可以分为如下几个最基本的部分: 与硬 件相关的底层接口、 操作系统核心、 用户界面、 通信协议以及应用软件。 当然, 对具


硕士论文

基于Lnx i 的嵌入式监控系统软件平台研究与设计 u

体的某个嵌入式系统而言, 这些部分并不都是必须的, 通常还需要根据具体的应用需

求进行裁减。 O E S是相对于通用操作系统而言的,它除具备了一般操作系统最基本 的功能外,还有以下特点1: ] 4 2 ① 可装卸性: O 具有开放性、可伸缩性的体系结构:      ES ② 强实时性:实时性一般较强,可用于各种设备控制中;      ③ 统一的接口:以统一的方式提供各种设备驱动接口;      ④ 操作方便、简单、提供友好的用户接口,追求易学易用;      ⑤ 提供强大的网络功能,支持T PP及其它多种协议;      C月 ⑥ 强稳定性,弱交互性:嵌入式系统一旦开始运行就不需要用户过多地千预,     
这就需要负责系统管理的 E S      O 具有较强的稳定性:

⑦ 固化代码:在嵌入式系统中,      嵌入式操作系统和应用软件被固 化在嵌入式系 统计算机的R M      O 中。辅助存储器在嵌入式系统中很少使用,因 嵌入式操作 此,
系统的文件管理功能应该能够很容易地拆卸,从而可以使用多种文件系统;      ⑧ 更好的硬件适应性,也即良      好的可移植性。

到目      国际上已经出现的嵌入式操作系统达上百种之多, 前为止, 从市场占 有率来

看,目 前常用的 嵌入式操作系统有以 下几种1 = ] 5
) 1 嵌入式 i x      L u n

嵌入式 L x      u 是近年来国际市场上的一个开发热点,由于 L u 开放源代码,且 n i n i x 是真正的3 位操作系统, 2 再加上其核心较小等优点, 正逐渐成为嵌入式开发的首选, 也是各家嵌入式厂商极力发展的对象。 前应用在嵌入式领域的L U 系统主要有两 目 l n x

类:一类是专为嵌入式设计的已 被裁减过的 L u 系统, l n x 最常用的是 u l ( c i 不带 x u n MM U功能) 前占 ,目 较大市场份额;另一类是应用在A M 上, i 的内 R g 将L u n x 核移 植在其上, 可使用更多的L 功能。目 妙 前正在开发的嵌入式系统中, 超过 5%的项 0 目 选择 L 作为嵌入式操作系统,i 己 i x u n L 欧 成为嵌入式操作系统的最理想选择之一。 l n 但 L u 系统也存在着一般开发人员不太熟悉, n ix 开发难度较大的缺点, 本文将在后篇
对嵌入式 Lnx i 进行详细介绍。 u
2 a      0 )P l S m

Pl s      cm公司的pl opi 部开发的3位的 放 嵌 操作 a mo 是由3o a mu g mc t n 2 开 式 入式
系统, 任何人都可以自 行开发基于此操作系统之上的应用软件。 现在P】 S a mO 上的应 用软件已 超过五千多种。同时此系统还获得了3 O BM和 S N C M、I O Y等跨国公司的 支持,拥有全球 P A产品7 %的市场占有率。 D 0
3     七rs )Vx k M

V W r 是 西d e      V n死v 公司专门为实时嵌入式系统设计的操作系统, 目 x匕 s k r 也是 前最

稳定和实时性最好的嵌入式操作系统之一。 它为程序员提供高效的实时 任务调度、 中

嵌入式系统概述

硕 士论文

断管理、实时的系统资源管理和任务间通信。但 v 从 r 的价格很高, x b s k 所以一般应 用中很少采用这种操作系统。
4        )WiC nE

Wi o s 是微软公司的产品,     E n wC d 它是从整体上为有限资源的 设计的多 平台 线程、 完整优先权、 多任务的操作系统。 它的模块化设计允许为从掌上电脑到专用的工业控 制器的大多 数电子设备进行定制。 但其对硬件要求较高、 资源消耗大、 速度慢, 并且 价格过高, 增加了产品成本。
5 N      )Q X

也是一款实时操作系统,由      加拿大Q X软件系统有限公司开发。 N 广泛应用于自 动化、控制、 机器人科学、电信、航空航天等领域. N 有非常好的伸缩性,用户 Qx 可以把应用程 序代码和 Q X内 N 核直接编译在一起, 生成单一的多线程映像, 使之成 为一个简单的 嵌入式应用。 N Q X也是第一个遵循P S 10 标准, O I03 X 从零设计的微系
统内核,因此具有非常好的可移植性。

在一个完整的嵌入式系统中,嵌入式操作系统介于底层硬件和上层应用程序之      间, 是整个系统中 最重要组成部分。 总体来说采用嵌入式操作系统的原因是: 解决多 任务所带来的 复杂性, 提高应用程序的可移植性,降低系统开发和维护成本。 . 2 4应用软件 L 嵌入式应用软件是针对特定的应用领域,      基于固定的硬件平台, 用来达到 用户预 期目 标的计算机软件。 由于用户任务通常有时间 和精度上的要求, 此有些嵌入式应 因 用软件需要特定嵌入式操作系统的支持。 嵌入式应用软件和通用 P 机应用软件有一 C 定区别, 它不仅要求其准确性、 安全性和稳定性等方面能够满足实际应用的需求, 而 且还要尽可能 地进行优化,以减少对系统资源的消耗,降 低硬件成本。
. 2 2嵌入式系统的开发过程

与通常的      工程设计相似, 嵌入式系统的开发可以 分成三个阶段: 分析、 设计和实

现1。 2 所谓的 求分析就是在分析阶段 成的, 刀 需 完 这一阶段的 主要任务是 确定我 们所开
发的系统最终需要完成的工作目 预期需要解决的问题及这些问题可能的解决途径 标、 等; 设计阶段则主要解决如何在给定的约束条件下完成系统的工作任务, 确定整个系 统的实现方案: 最后的实现阶段就要根据前面的实现方案, 在系统给定的硬件和软件 平台上进行整个软、硬件系统的协调实现。

. 2 1硬件平台的 . 2 选择
1 处理器的选择      )

嵌入式系统的核心部件是各种类型的嵌入式处理器。 于嵌入式系统设计的差异      由


硕 士论文

塞于L训x的嵌入式监控系统软件平台研究与设计 i

性极大, 从而使用户的需求产生多样化, 这也导致了市场上有众多类型的微处理器存

在。目 前常见的的微处理器供应商中,以 M to 、 血1 A D最为知名。此外还 or L 、 M ol a 有一些公司, R M P , 如A M、 I 只设计而不生产c U 他们通过授予世界各地的半导 S P , 体制造商以生产权来发布其产品。其中,A M 是近年来在嵌入式系统领域深具影响 R

力的 微处理器开发商, 计非常适用于小型的 其设 嵌入式设 备网。
设计者在选择处理器时要考虑的主要因素有:     

① 处理能力:一个处理器的运算速度取决于很多方面,如内部数据 C ce      ah、指 令C h,时钟频率等。 朗 e 不过对于许多需要使用微处理器的嵌入式系统设计来说, 速 度最快的处理器未必是最好的选择, 通常情况下我们只需选取能够恰好完成任务的微 处理器和 F O子系统即可; ② 外围配套硬件:      一些生产厂家为了增强嵌入式处理器的通用性, 有意识地减 少了集成到芯片中的外围设备数量, 尤其是一些使用较少的外围设备。 这种处理器的 架构相对简单,价格也更为低廉,可以有效降低系统的成本。但选用此种处理器时, 开发人员必须考虑系统所要求的一些硬件能否很方便地连接到处理器上。 还要考虑该 处理器的一些支持芯片, D 如 MA控制器、内存管理器、中断控制器、串行设备和时
钟等的配套;

③ 选择专用的集成化处理器:      嵌入式微处理器与通用的微处理器最大的不同就 是嵌入式微处理器多数工作在用户自己设计的系统中。 为了满足日 益高速增长的各类 嵌入式系统设计的需求, P C U厂商设计了许多兼有 1 2 3 / 6 位微处理器并集成了许多外 围功能的 C U; P ④ 功耗:嵌入式微处理器最大并且增长最快的市场是手持设备、电子记事本、      P A 手机、 P 导航器、 D 、 GS 智能家电等消费类电子产品, 这些产品中选购的微处理器, 典型的特点是要求高性能、低功耗; ⑤ 软件支持工具:      仅有一个处理器, 没有较好的软件开发工具的支持也是不行 的,因此选择合适的软件开发工具对系统的实现会起到很好的作用: ⑥ 是否内置调试工具:      处理器如果内置调试工具可以大大缩小调试周期, 降低
调试的难度。

对于嵌入式系统的开发者而言,      更多更好的嵌入式微处理器总是在不断出现。在 这种情况下,嵌入式处理器的选择就不能是一成不变的, 要综合考虑系统的性能、功 耗、 价格、 供货保证、 开发工具的配备以及开发人员过去对这种处理器的经验和软件 的支持等因素,才能决定在系统中使用哪一款处理器。伴随着技术的发展,性能强、
价格低、配套完善的处理器永远是系统最好的选择。

嵌入式系统概述

硕 士论文

2 硬件部件选择的要素      ) ① 生产规模:如果生产规模比较大,可以自己      设计和制备硬件,这样可以降 低成本。反之,最好从第三方购买主板和 F O板卡; ② 开发的市场目      标:如果想使产品尽快发售,以 获得竞争力,此时要尽可能 购买成熟的硬件产品;反之,可以自己设计硬件,降低成本; ③ 软件对硬件的依赖性:软件是否可以在硬件没有到位的时候并行设计或先     
行开发:

④ 尽可能选用普通的硬件:在 C U 及架构的      P 选择上,一个原则是:只要有 可替代的方案,尽量不要选择 Lnx i 尚不支持的硬件平台。 u
2 软件平台的选择 2 : 嵌入式软件的开发流程主要涉及到代码编程、      交叉编译、 交叉连接、 下载到目 标 板和调试等儿个步骤, 因此软件平台的选择也主要根据这些方面做出。 软件平台的选 择多考虑嵌入式操作系统、 编程语言、集成开发环境、软件组件等方面。 ) 1 嵌入式操作系统 (O )的选择      ES 前面已      经介绍过, 硬件平台会影响到嵌入式操作系统的选择。 硬件设计方案一旦 确定之后, 操作系统的选择就需根据此设计方案做出。 当然, 嵌入式操作系统的选择 也不是一件简单的事情。 对特定的应用而言, 选择的关键是寻找一个最适合所开发系 统的操作系统,通常我们可以从以下几个方面进行考虑:

① 操作系统提供的开发工具:      有些实时操作系统《 5 叮0 只支持该系统供应商的 ) 开发工具, 因此还必须向 操作系统供应商获取编译器、 调试器等; 而有些操作系统使
用广泛,且有第三方工具可用,从而选择的余地就比较大;

② 操作系统向      硬件平台 移植的 难度: 操作系统到硬件平台的移植是一个重要的 问题,是关系到整个工程能否顺利完成的一个关键因素。因 要选择那些可移植化 此, 程度高的 操作系统, 从而避免操作系统难以向 硬件移植而带来的 种种困 加速系统 难,
的开发工作:

③ 操作系统的可配置性:      尽量选择具有很高可配置性的操作系统, 如嵌入式 i L 等, x u n 从而可根据具体任务的 要求,配置出既满足系统应用,又能充分发挥系统 硬件平台性能的E S O。 ④ 操作系统的内      存要求: 均衡考虑是否需要额外花钱去购买R M或E P O A ER M 来满足操作系 统对大内 存的要求: ⑥ 开发      对操作系 人员 统及其 提供的 应用程序接口好D 熟悉 ( 的 程度; 2 集成开发环境的      ) 选择 目      前,能够应用于嵌入式系统开发的集成开发环境Otre e l m n ngt vO e e adDe p i

硕士论文

基于Ln 的嵌入式监控系统软件平台 iu x 研究与设计

EvOmn IE ni. e , ) r t D 有很多 如Cg m K e 1 等。 种, yw 、 Dv O ep 总体而言, E D I 的选择应考
虑以下因素:

① 集成开发环境的方便程度,系统开发人员对集成开发环境是否熟悉;      ② 系统调试器的功能:提供系统调试特别是远程调试是IE一个重要的功能;      D ⑧ 服务:      集成开发环境是否有发行者或某一组织提供持续的维护和升级, 是否
有获取充分资料的渠道;

④ 支持库函数:      许多开发系统提供大量使用的 库函数和模板代码, 如大家比 较 熟悉的C+ + 编译器就带有标准的模板库, 它提供了 一套用于定义各种有用的集装、 存 储、 搜寻、排序对象。 与选择硬件和操作系统的原则一样, 除非必要, 尽量采用标准 的 目b; l C 2 嵌入式Lnl 3 iu 系统
在笔者的开发过程中,      根据嵌入式操作系统选择的原则, 选用嵌入式 Lnx i 作为 u 系统的操作系统。i x L u 诞生于 19 年的 1 月5日( n 9 1 0 第一次正式向外发布的时间) ,

9 1% 年6 月发布了2 版, 0 . 在长期的开发过程中, 大量的开发工作极大地扩充了内核 的基本功能, 增加了 设备支持, 最重要的是扩大了可以 使用的应用程序的范围。 事实 上, i xZ Lu . n O版内 经可以支持几乎所有的 核已 任务, 只是用户界面尚 有待改进。目 前,L u 已经很是稳定、成熟、实用和完善, n i x 是世界上使用最多的一种 U I 类操 NX
作系统。 通用的L 系统经改造后运行于嵌入式硬件设备之上, x u n i 就成为嵌入式 Lnx l u

系统。 i x操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱1 : Lu n 5 月
U N仄 操作系统、 Ni 操作系统、G U计划、P S 标准和 It e网络。 MIx N O仄 n rt e n L 内核开发的速度相当快,以几乎每月一次的速度进行内核的升级。截至写      x u m

稿时,内 核的最新稳定版本是 2 2. L u 6 。 n .1 1 i x本身的 种种特性使其成为嵌入式开发 的首选。 据业内 人士预测, 在未来的几年里, 基于L u 的软件市场将以不低于4% ix n 0 的速度增长。 i x L u 发展如此之快的主要原因 n 是产品的 成本控制。在激烈的市场竞争 中, 只拥有先进的 技术远远不够, 如何减少产品的投入也是需要重点考虑的问题。 免 费的LQx U 无疑为厂商节省了一笔很大的开支, u 特别是对广泛的嵌入式应用而言。 . 2 1嵌入式L 肛 系统的一般架构 1 加
尽管嵌入式L u      i 系统与工作站或服务器系统有着不小的差别, n x 但在高度抽象后 却基本相同。图2 展示了Lnx . 2 l 系统的架构及其包含的 u 主要组件。

最底层是硬件层,      嵌入式系统的 硬件必须符合以 下要求才能运行L u 系统: n ix 至 少 1位的c 、 6 u P 足够容量的R M、 A 基本的拍 能力、 内核能够通过某种形式的 永久
性或网络存储装置来加载和存取根文件系统。

硬件的上面是内 它是操作系统的核心部分。      核, 内核为硬件管理提供一致的方式,

1                l

嵌入式系统概述

硕士论文

为应用程序提供统一的接口,为此内 核被分为两个部分:底层接口 层和高层抽象层。 其中底层接口层专属于硬件配置,内核运行在底层接口 层之上,并以与硬件无关的 A 1 高层抽象层)提供对硬件资源的直接控制。 卫 (

「               一〕 一一— 一 应用 遥 魂序 -- 一 - -

尸  ̄  ̄ 一  ̄ ̄ 一  ̄ ̄  ̄ ̄ 臼 , . 一  ̄  ̄一  ̄ . 户  ̄ 一  ̄  ̄ 娜  ̄  ̄  ̄  ̄  ̄  ̄ . we 言
巨 ‘‘ . . . .. . 众 份 奋 . 妞 苍 甘 , . .. .. , . . . . ‘. . 百 呼 . 饭 百 .

, l l l …

儿1布 1 内核 1 .

高」抽象层                  豁 垂
1 1 1 1

“ 一州赞 ,」蘸 ‘ 系 日‘ } 协
文件系统
: 1 1 刁

雇层接 口层                 
 }                                    』

  图2 L 系统架构图                               .i 2 n x u  

在内核提供的底层服务之上,较高层的组件可以对所有 U 议类系统提供通用的          n     抽象概念, 如文件、 沉k 和信号等。 5 e t 在底层接口 层和高层抽象层之间主要是文件系       统类型和网络协议,它们构成 “ 解释组件” ,以让内核了解如何与特定设备进行结构  
 

化数据交互。
     

 

内         核之上是应用程序和工具程序。 应用程序依靠函数库提供的普通好1 及可代 以     替应用程序, 跟内核交互来获得所需功能的抽象服务。 大多数 L 应用程序使用的 x u n i       主要函数库就是 G UC链接库。除了 C链接库外,还有其他用途的  N 链接库,例如     t X L D  等。 Q、 M 或M S 链接库一般会跟应用程序动态链接在一起. 当然在嵌入式系统       中, 有些时候希望链接库成为应用程序二进制文件的一部分, 这时就要使用静态链接   库,这要根据具体情况来决定。
1 2嵌入式 Ln x . 3 i u 的特点

在嵌入式系统中使用的L扣 就是嵌入式Lnx      hx i ,是在对标准 L u 进行相应改 u ix n 造后, 再用作嵌入式计算机的 操作系统, 为嵌入式应用程序提供操作系统服务。 为规 范嵌入式L u 标准,嵌入式L u 协会 ( C ix n Ix O L E )在 20 年底发布了E C产品规范 02 L 版本 1 E C S 。 . L P ) 它给我们提供了以 0( 下便利:

) 入 l 布 很 楚 示自 功能 1 嵌 式L     i 发 可以 清 地显 身的 特性: x u ) 2 第三方类库和中 程序在很少      间 或没有额外接口 件下 的条 就可以 运行不同的 嵌
入式 Lnx i u 配置;

3 软件开发人员可以将程序段写入一个现成的A I      ) P 中,并确信这一代码段可为

硕士论文

荃于L u 的嵌入式监控系统软件平台研究与设计 n ix

其它的嵌入式 LQx 扣 环境提供接口。 u 嵌入式L x     u 具有相当多的优点, 核稳定、 l n 它内 功能强大, 可裁减和低成本的特 性非常适合嵌入式应用。 但是,L u 最初并非为嵌入式系统设计的, i n x 其内核本身不 具备强实时特性, 且内核体积相对较大。因此, 如要把 Ln 用于嵌入式系统, i x u 有时 还需根据需要对 Lnx l 进行改造,这是当前嵌入式开发的新热点. u 一般而言,嵌入式 L u 0      l x S具有如下特点: n

) 1 精简的内      核,性能高、稳定: i x L u 是一个类U i操作系统,内 n n x 核功能强大,
实现简洁。        并且由于其源代码的开放性, 使得其代码得到众多网络黑客的审查 和修改,        有着非常好的安全性和稳定性。 实验表明L U 的稳定性仅次于U 吮 n i x 刘;

) 2 多用户、      多任务: n 支持多用户, i L x u 各个用户对于自 己的文件设备有自 己特
殊的权限,        保证了各用户间互不影响。 多任务则是现在电脑最主要的一个特点, Lnx        l 可以使多个程序同时并独立地运行; u

) 3 适用于不同的 Cu      P ,支持多种体系结构,包括目前流行的 be x6 t8 、 l
Mo raB        o e C A M 、 o P APa S S A C MI 、 8 t lIMPw r 、 R o / o P C m aI h、 u P R 、 P M6K q n S 等微处理器体系结构。目 众多的将 L u 移植到其他硬件平台的计划也都        前, l n x 正在实施之中;       

叼应用软      多, 性 易 件 兼容 好, 移植: ix 全兼容正 E oi1 标准, L u完 n E 的P s 0 x 为
用户程序提供了规范的应用编程接口A I这使得 L u 平台上的应用软件和        P。 n i x 硬件驱动程序不断地得到扩充,可支持大量的周边硬件设备,驱动丰富;       

) 5 强大的网      络功能: i x L u 是一个通过网 n 络发展起来的操作系统, 支持广泛的通
信协议, l x内核在处理网络协议设置方面比标准的U L 更具执行效率,        Ln u N尺 具有更高的吞吐量;       

) 6 完善的      入式G I 方便的 发工具和sK 嵌 U、 开 D; ) 对嵌 7 针 入 存储 案, 供实 版 完      式的 方 提 时 本和 善的嵌 式 方案: 入 解决 ) 8 开放源码,      支持广泛:L 是开源的操作系统,只要遵循G U通用许可证  ̄ N
(P )          G ,就可以免费获得,因此大大降低了成本。并且由于其开源特点,使 L 其得到社群的        广泛支持, 众多的邮 件论坛可以 解决绝大多数的开发者遇到的问
题。       

在应用领域目      前有多种嵌入式 L U 操作系统,其中国内 i n x 研究较多的是 u lu c ix n 和 R Lnx 很多基于它们的产品已经面世,比如华恒公司就已经将 u 】u 成功移 - u Ti , ci n x 植,并投放到市场,获得了 很好的经济效益。 2 3 与其它主流 E S比 J O 较
国际上比较流行的嵌入式操作系统有 4 种左右。现在市场上主流的E S      0 O 产品,

嵌入式系统概述

硕士论文

包括 3 o 公司下属子公司的 Pl O ,全球占有份额达 5%,M r f 公司的 C m a m S 0 c o i st o

Wi o s E约2%。 n w C 9 在美国 d 市场, l o 更以8% 有率远超 Wn w C an Pi s 0 的占 i ds E o o 而开放源代码的 L 作为 E S x u m O 领域的新兴力量,其市场份额也在迅速扩大。下面

将把L 与pl s i E x u m a 、wn 作一比 mo c 较队
) 1 嵌入式 Ln O        x S与 Pl S iu a mO 、W访 E相比的优点: C

Lu      n i x是开放源代码的,不在存黑箱技术,遍布全球的众多 L x u m 爱好者都是 iu Ln 开发者的强大技术支持者; W no C x 而 i dw E是非开放性0 , s 5 使第三方很难实现
产 品定制;

L u 的源代码随处可得,      l n x 注释丰富,文档齐全,易于解决各种问题; Lnx      i 的内核小、 u 效率高; W no C 而 i dw E在这方面是笨拙的, s 占用过多的R M, A 应用程序庞大: Lnx      i 是开放源代码的 0 ,在价格上极具竞争力,适合中国国情。Wi o s E u 5 nw C d
的版权费用是厂家不得不考虑的因素;

Ln 不仅支持 x6      i x u 8 芯片, 还是一个跨平台的系统。 到目前为止, 它可以支持 2一 0

0 3 种C , U P 很多C U ( P 包括家电 业的芯片) 厂商都开始做L x 平台移植工作, u n i 的 而且移植的 速度远远超过 J a v a 的开发环境。如果今天采用 L 环境开发产品,那 x u m
么将来更换 C U时就不会遇到更换平台的困扰; P

Lnx 核的结构在网络方面是非常完整的,它提供了对包括十兆位、百兆位及      i 内 u 千兆位的以 太网络, 还有无线网络、 kn n ( o T e形 g 令牌环)和光纤甚至卫星的支持; Lu      i x在内核结构的设计中充分考虑了适应系统的可裁减性要求,Wi o C n n w E ds
等在内核结构的设计中却未考虑这种要求。

) 2 嵌入式 l O      Lnx S与 P】 S n E相比的弱点: u a mO 、Wi C 开发难度较高,需要很高的技术水平;     

核心调试工具不全,调试不太方便:      与某些商业 5      0 一样,嵌入式 L u 占 n i x 用较大的内 存。当然, 人们可以去掉部分 无用的功能来减少使用的内存,但是如果不够仔细,将带来新的问题: 有些 L      的应用程序需要虚拟内 x u m 存,而嵌入式系统中并没有或不需要虚拟内 存,所以并非所有的L 应用程序都可以 i 吟 在嵌入式系统中运行。

P mO 、 劝 o E L u 这三种嵌入式操作系统各有不同的     W dw C 、 i x i a S s n 特点、 不同的 用途: m 可以比Pl S Wl o s E更小、更稳定,而且L u 是开放的 但L x u a mO 和 n w C d ix n E S 在价格上极具竞争力。 O, 通常而言,与专用的嵌入式系统相比,      嵌入式 L u 系统具有很多普遍的优势, ix n
如下表:

硕士论文

基于L呱 的嵌入式监控系统软件平台研究与设计 i

表2 . 1嵌入式 Lnx i 与专用 E S u O 的比较 专用嵌入式操作系统 嵌入式 Lnx i ” 系统 版权费
l eC c i ne

每件产品都需要交纳费用 数十万人民币 只能依赖于销售商提供 需要另外支付一定费用 系统为封闭系统,非常难
时间长 强 好

完全免费
遵守 6 L协议 P

技术支持 网络功能 软件移植 软件开发周期 实时性 稳定性

整个 L u 和 U i开发社区 i x n n x 免费且非常强健 代码开放,容易 周期短,很多代码可直接使用 较差,有待改进


如前所述,      在嵌入式系统的前期设计过程中, 首先必须决定采用哪种嵌入式操作 系统,这是一个很重要的决定,其成败将直接影响工程后期的开发和维护。在 E S O 的选择上, 我们通常着重考虑进入市场时间、 可移植性、 可利用资源、 系统定制能力、 成本、中文内核支持等六个因素. . 2 4用户界面

计算机与其使用者之间的      对话接口即是计算机用户界面, 它是计算机系统的一个 重要组成部分I 计算机的 l ’ 。 发展史不仅是一个计算机本身处理 速度和存储容量飞 速提
高的历史,而且是一个用户界面不断改进的历史。

2. .1图形用户界面 ( rpiUe玩妞 阮e 班)系统的结构模型 4 G b s a c r 州 c,G
随着计算机硬件设计水平的提高,      越来越多的软件开发工作集中在图形用户接口 上,人们对友好的图形用户界面 ( U )提出了更高的要求。所谓 G I GI U ,即由窗口

(功 o s 标O n 、 伽e s 指示器口 加i D i) 位一体 ( IP, w dw) 、图 c ) 菜单 n ) o s u、 。tg ec 四 n ve wM ) 形成桌面田e o)这种方式能同时 s p t k , 显示不同 种类的 信息, 使用户可在几个工作环境
中切换而不丢失几个工作之间的联系。 用户可通过下拉式菜单方便地执行控制型或对 话型任务, 引入图 按钮和滚动杆技术, 标、 大大减少了 键盘输入, 无疑使不熟悉打字 的用户提高了交互效率。 一个图形用户界面系统通常由三个基本层次组成。 它们是显 示模型, 窗口模型和用户模型。 用户模型包含了显示和交互的主要特征, 因此图形用 户界面这一术语有时也仅指用户模型。

图2 给出了图      . 3 形用户界面系统的层次结构, 底层是计算机硬件平台, 其中 其上 是计算机操作系统。 大多数图形用户界面系统都只能在一两种操作系统上运行, 只有
少数的产品例外。

操作系统之上是图形用户界面的显示模型,      它决定了图形在屏幕上的基本显示方 式。不同的图形用户界面系统所采用的显示模型各不相同。

嵌入式系统概述

硕 士论 文

显示模型之上是图形用户界面系统的窗口      模型。 模型确定窗口如何在屏幕上 窗口 显示、 如何改变大小、 如何移动及窗口的层次关系等。 它通常包括两个部分: 一是编 程工具;二是对如何移动,如何输出和读取屏幕显示信息的说明。
桌面管理系统
用户模型

窗口模型
显示模型

操作系统
硬 件平台

图 Z 图形用户界面系统的层次结构                            J

窗口      模型之上是用户模型,图形用户界面的用户模型又称为图形用户界面的视 感。 它也包括两个部分: 一是构造用户界面的工具; 二是对如何在屏幕上组织各种图
形对象,以及这些对象之间如何交互的说明。

图形用户界面系统的应用程序接口由其显示模型、 模型和用户模型的应用程      窗口
序接口共同组成。

. 2 2嵌入式系统中的图形用户界面 . 4 . 1 U 在嵌入式系统中的地位 2 .C I 2 . 4 图形用户界面 G      ( U)的广泛流行, 今计算机技术的 I 是当 重大成就之一。 它极大 地方便了 非专业用户的使用,因此嵌入式系统对 G 的需求越来越多,而这一切均 I U
要求有一个高性能、高可靠的G 系统的支持。 I ’ U

嵌入式系统对性能的要求非常高,包括对 G 的要求也很高。这些系统一般不      I U 希望建立在庞大累赘、 消耗过多系统资源的 操作系统和 G I U 之上。另外嵌入式系统 往往是一种定制设备,因此,其中的G I U 也应该是可定制的。嵌入式系统对C I U的 基本要求包括轻型、占用资源少、高性能、高可靠性及可配置。

嵌入式 O 为      I 嵌入式系统提供了一种应用子特殊场合的人机交互接口。 U 嵌入式 GI U 要求简单、 直观、 可靠、占 用资源小且反应快速, 适应系统硬件资源有限的条 以 件。另外,由 于嵌入式系统硬件本身的特殊性,嵌入式 G I U 应具备高度可移植性与
可裁减性,以适应不同的硬件条件和使用需求。

22 目 42 . . 前嵌入式系统中G 的实现 班 目      前嵌入式技术领域中常用的 G 系统有很多种, 切 其中比 较稳定可靠的有:

M G 、 i wn w、 即 U 及Q 佗 b d 等, 介 a’ r d P h u Mc io o G I 工 me I o s d e 分别 绍如下1 【 伙
l 6

硕 士论文

墓于Lnx i u 的嵌入式监控系统软件平台研究与设计

1 M面 GUI        )

MiG 几      苗 L 是一个面向嵌入式系统或实时系统的轻量级图形用户界面支持系统, 早

期由原清华大学教师魏永明先生和众多志愿者开发, 北京飞漫软件技术有限公司 现由 进行维护和商业运作。 它主要运行于 Lnx i 控制台, u 实际上可以运行在任何一种具有
P S 线程支持的 P S 兼容系统上。 Or x Oi x

几乎所有的涌垃 U 代码都采用 c语言开发,提供了完备的多窗口      GI 机制和消息 传递机制,以及众多控件和其他 G I U 元素,支持各种流行的图像文件和 Wi o 的 n w ds

资源文件。比 较其他G I U 系统, 其主要的 特性和技术创新有1 5 2 气 ① 提供图     形抽象层 ( A ) G L 和输入抽象层 ( L ,以 I ) 适应嵌入式系统各种显示 A
及输入设备;

② 提供 诵n I e 、MlG I t M 五 U一 d      i U.恤 as n U.i、 lG I 现 o 等三种不同架构的 G 了 d i Le i 劝 n e
版本,以满足不同的嵌入式操作系统; ③ 完善了对中日韩文字、输入法的多字体和多字符集的支持;      ④ 提供了丰富的应用软件,其商业版本提供了手机、 D      P A类产品、机顶盒类产 品及工业控制方面的诸多程序; ⑤ 是一个轻量级的图形系统。     
2 MirWid ws        n o ) co

Mc w nw     o (t办 l wno se f m 是一个开放源码的项目 i is o r d hp mc i w n t ) o r d . s c c o o . ,目 前由美国 cn rsf a e t ot Z u y w e公司主持开发。 其主要特色在于提供了比 较完善的图形功
能,支持多种外部设备,包括液晶屏、鼠标、键盘等。诵e wi o s o r n w 是一个典型的 d 基于客户/ 服务器体系结构 ( l 灯 e e)的 G I系统,这一点与 X 非常相似。 l n r ce S r v U i r i dw 的设计是分层的,它具有三层的体系结构,这样的设计便于用户按自 M c w no s o
已的需要对系统进行修改、删减和增加等操作。 3 Pn I      U )O eG

oe U 采用L p 条款发布,在L u 系统上存在已      pGI n GL i n x 经很长时间了. 它提供
了对二维绘图原语、 消息驱动的A I B P P 及 M 文件格式的支持, 还支持鼠标和键盘等

设备事件。 在多 可以 种显示模式和多种操作系统平台下运行, 比如Q X M 一o N、s s D
和 Ln 等,不过目 i x u 前只支持 x6 8 硬件平台。

Pn 庄 Oe L架 可 三层: 层 汇编 编写的 速图 擎;      构也 分为 G 最底 是由 语言 快 形引 中
间层提供了图形绘制 人 1包括线条、 卫, 矩形、 圆弧等, 并且兼容 B ad G J ; l r on 的B U I 第三层用C 十 + 编写,提供了完整的G 庄 L 对象库。

饰e L 内      核是基于汇编实现的, 利用M x指令进行了 n 几 G 并 M 优化, 运行 所以
速度非常快。由 于历史悠久, eG I P O n U 得到了很好的完善,非常稳定。 但也正由

嵌入式系统概述

硕士论文

于其内核用汇编语言实现,内部使用的是私有的妙 1 ,所以 其跨平台的可移植性 较差,可配置性也较差。
4 T 川 ed      bde )Q / E d

Q bd      d是一个专门为嵌入式系统设计图形用户界面的工具包,是著名的 泥m ee d t Q 库开发商1 1 c 公司的标志性产品,它针对嵌入式系统 士 1h 。 e t 应用做了 很多出 色的调 整。 因为Q E bde 与Q X l 灯 川 edd 以 l有相同的A I 许多基于Q X l P, 杖 l的程序可以非常方 便地移植到Q 三bde 上。 I x 叭m ed d 在L川 系统下, 此m edd l n有如图2 所 I Q bde 与Qf X . 4

示架【 的 构1 : 1 0
应用程序源代码
t P Q AI Q 叹1 乞 1 Q mbde 此 edd Q Li 的( b
X W id w s r份 no e V

帧缓冲 (r ou飞) Fa b们 r m L口x L 内核 u

图2 Q m edd t l 的L 版本的比                      . t bde 与QZ 4/ E X i x u n 较

Q bd      同样是ci 灯 ̄ 结构,它通过 Q A I 吟 沁 设备直接交 迩m e山d lc 5 n t - 与L P 互。 那些熟悉并已适应了面向对象编程的人员将发现它是一个理想的G I U 开发环境。 而且, 对象的体系结构使代码结构化、 面向 可重用并且运行快速。 与其它 G 相比, I U

t U 非常快, QG I 并且它没有分层, 这使得 Q bde 泥m edd成为运行基于 守 的 程序的
最紧凑环境。

与其它G 系统相比, 泥m edd      】 U Q b d e 具有如下优点: ① 类库完全采用 C      升封装,面向 对象的编程语言为开发者提供了清晰的程序框 架,使开发者能够很快上手; ② 模块化和可裁剪,开发者可以      选取所需要的一些特性,去除不需要的 特性。

通过 剪裁, 的映像可以 很小, 切E 变得 最小只 0K 左右。 有7 B ③ 类库接口      完全兼容于同版本的Q一n,使用XWno 下的开发工具可以直 t idw
接开发基于Q bde 的 泥m edd 应用程序 C I U 界面。丰富的控件资源和良 可移植性 好的 是Q E e d 叮m d 最为优秀的一方面。 b d e 与前面几种G I      U 系统不同, 此m ed 在底层全面摒弃Xl, Q b e dd b i 但仍然延续了 t Q 在 XWno i w上的强大功能, d 其底层图形引擎完全基于 丘m bfr a ol 。同时, l e 将外 部输入设备抽象为kyo 和m u 输入事件, e a br d oe s 底层接口 支持键盘、 M鼠 触 P G 标、 摸屏及用户自 定义的设备等, 这就注定了它是针对高端嵌入式图形领域的应用而设计
l 8

硕士论文

蓦于Lnx的嵌入式监控系统软件平台研究与设计 iu

的一套图形界面系统。

. 2 5本章小结 本章首先给出了      嵌入式系统的准确定义, 然后重点分析嵌入式L u 系统的体系 ix n 结构, 并与目 前主流的其他嵌入式操作系统进行了比 从系统选型方面阐述了 较。 嵌入 式系统的开发过程。 最后对嵌入式系统的用户界面进行了 介绍, 分析了目 前主流的图
形用户界面,为监控系统中G 的构建奠定了初步的技术基础. I U

硕 士论文

荃于L u 的嵌入式监控系统软件平台研究与设计 n ix

3 监控系统设计
. 3 1任务来源和设计依据 随着电力系统复杂度的不断提高,      传统的电 力设备监控系统在很多方面已经不能 胜任目 前监控保护的工作, 迫切需要利用最新的计算机控制技术对其进行改造。 此外, 当前电 力设备的自 动化监控系统有多种类型可供选择, 此种情况固然有利于各种技术 相互促进、共同发展, 但也带来了标准繁杂、兼容性差等问题。为了解决这些问题, 业内 提出了构建通用监控系统平台的思想, 希望统一监控领域众多的系统标准, 提高
不同设备监控系统之间的兼容能力。

在吸收目      气领域主流监控系统技术的基础上, 前电 我们从提高电 力设备监控保护
系统的产品技术水平和进一步完善其功能的目的出发, 提出了一种使用嵌入式平台对

传统电力设备监控系统进行更新的设计方案。 此方案着眼于提高嵌入式监控系统平台 的通用性和人机交互界面的可操作性, 在系统开发之前就进行严格的统一性、 通用性 设计, 采用模块化的设计理念, 固定产品的设计风格和操作流程, 既保证系统工作的 独立性,又保证不同系统间的兼容性。 传统的电力设备监控系统通常由后台管理系统、现场数据终端系统及前端 D P      S 测量传送设备构成, 它们之间通过以太网或者 C N总线互相连接。 A 从系统结构上看, 各类产品具有很大的相似性。一般都是由下位机 ( D 为核心的测量传送设备) 以 s P 负责采集电力设备的 运行参数及控制电力设备的工作状态, 采集到的数据会被统一集 中到 “ 上位机” ( 现场数据终端系统)。 然后现场数据终端系统会对数据进行必要的 处理, 一方面进行实时的状态显示, 另一方面有选择地将数据传输给后台管理系统( 通 过 C N总线或者E e e通讯方式)。后台管理系统则执行管理功能,主要是接收 A h tm t 现场数据终端系统传送的信号, 并返回控制命令。 中间的嵌入式监控平台 运行现场数 据终端系统 ( 本次开发),负责中间接力的工作,可以和后台管理系统通讯,也可以 给下位机 D P S 数据采集设备下达指令。 在本方案系统设计中,      为了保证系统的通用性、 各子系统工作的独立性和用户操 作上的统一性, 没有更改传统电力设备监控系统各组件间的工作关系和习惯的操作流

程,只是使用符合C 一规范的Q 编程语言对系统设计进行了 t 模块化的重构。模块化 的框架结构保证了 系统在开发、 使用、 和维护等方面的效率。 此外, 从用户界面来看, 传统的监控系统大多是文字式的显示终端, 不具备图形化显示功能。 设备的运行状态 数据不能直观地显现给现场工作人员, 甚至一些动态采集的数据只能通过以 传送 太网 给后台管理系统进行处理、 显示, 然后再把信息告知现场工作人员, 这就造成设备部 分状态数据的滞后, 延误控制时机, 给整体的控制效果造成不利影响。 为此本系统将

监控系统设计

硕士论文

移植Q m ed 图形用户界面 ( U) E / t bde d G I 系统到嵌入式L 系统平台,以解决被控 i x u n
系统状态实时、图形化显示问题。

3 系统分析 2
. 3 1系统硬件架构 . 2

通用监控保护平台的硬件构架为保护板加监控板的形式:      保护板采用 D P82 S 1 2 处理器完成全部保护功能;监控板采用 E 9巧 ( 90)处理器,运行 L u 操作 P3 a 2t m r lx n 系统,负责管理 L D显示、与保护处理器通讯、对外通讯、 C 接受定值操作 ( 定值转 换与校验) 、打印、录波分析等。 整个装置的硬件架构如下图      所示, 监控板是系统的信息中 心接点, 负责接收、 显 示D P S 的信息,并负责远程通信任务。

图 31系统硬件架构图 .

. 3 2系统软件架构 . 2

传统的      监控系统在现场只能采集数据, 调试人员、 用户不能在现场看到相关数据 和图形显示, 给工作带来极大的不便。 为了使用户能够在现场实时查看、 设置、 修改 相关数据, 有必要为 监控系统现场数据终端开发数据管理和显示软件, 这同时也能 给 开脚 调试人员带来很大的方便。 经过全面分析、      归纳, 得到软件需要完成的主要功能 有:

) 1通过液晶      屏和触 摸屏为用 户提供现场人一 机交互的 友好图 界面 ( M , 形 M D 实
现包括参数设置和显示、测量数据的动态图 形式显示等在内的各项功能;        康

) 2 系统通过 故总线响应D P      C S 采集到的电 力系统各种运行状态数据, 并通过以

硕 士论文

基于Lnx iu 的嵌入式监控系统软件平台研究与设计

太网络将这些实时数据传输给后台管理计算机;   

) 3 系统 通过以 接收后台 太网 管理计算机的控 制指令, 经处理后再通过 c 总线 n a
将相应的控制指令传输给前端 D P    S 设备, 通过下位 D P S 设备完成对电力系统
的控制操作;   

) 4 实现接入第三方控制系统的功能, 能够让第三方系统接收、 输出数据, 并且接
收和输出数据时不能影响用户操作界面的正常工作;   

) 5 实现传输数 加密功能: 据 对录波数据可以 采用一 加密方式进行保护, 定的 这里 主要采用成熟的A s(da e 习 po ye )    E A vl dEc tns m 加密算法对录波数据进 l c 口 i s t
行分组加密。 E    A S是美国国际标准与技术局 ( I )发布的新一代分组数据 N T S 加密标准,它支持 1 位密钥、12    8 2 9 位密钥和 2 位密钥三种模式,是 D S 6 5 E 的替代品,大大提高了加密的安全性和速度;   

句 数据压缩功能,实现数据的压缩传送。
系统软件架构图如下:

疑 (遍 呸 )
绝 ( 还乡 1 还吵( 巫)
被控对象,如发电 机组


液 晶 显




图3 . 2系统软件架构图

. 3 3 系统工作流 2
概括而言,通用监控系统的工作流主要就是通过以      太网通讯、C N 总线通讯、 A 串口 通讯等通讯方式分别与下位机 ( S 数据采集设备) DP 通信, 与后端管理计算机通 信, 与第三方系统通信。 发送和接收电力系统各种工作状态数据和控制指令, 并且通 过图形用户界面实时显示被控系统的工作状态, 实现用户可以 现场查看、 设置、 更改 系统参数的功能。 系统具体的工作流程可描述如下:     

监控 系统设计

硕士论文

图3 系统工作流程图                                J

) 1 启动嵌入式监控系统,      读取预设数据,启动系统环境变量,将常用参数读入
到嵌入式系统R M; 人

) 2 启动初始画面和主菜单,同时将网      络通讯和 C N总线通讯作为副线程启动, A
同步完成通讯功能的启动:

) 3 判断用户输入 (      是设置参数还是显示参数) : 如果是显示参数则通过C N总线接收前端D P      A S 或通过以 太网络接收后台管理计 算机传送过来的数据, 按照指定的窗口 算法找出用以显示数据的相应窗口, 按照一定
的格式显示;

如果是设置参数则通过C N总线传输给D 数据采集设备。      A P s 一旦通讯功能启动, 嵌入式系统将一直运行一个接收故障数据的程序,接收 D P数据采集设备报告的错 s 误数据和实时数据;

) 4 主进程启动后即      进入一 个大的 死循环, 直到用户选择退出 为止, 否则一直循
环执行。

硕士论文

墓于 L x 的嵌入式监控系统软件平台研究与设计 如u

. 3 4系统数据流 . 2
以测量数据和设置参数为例的系统数据流图如下:     

图3                              泌系统数据流图

) 1 测量数据经过D P      S 采集设备收集后发 往嵌入式系统设备; ) 入式系统设备中的软 2嵌      件系统使用C N通讯模块接收D P 送过来的 A s发 数据, 经过P e        s r a 模块的解析后将数据送给存储模块。 存储模块对数据进行一定的格
式化处理,然后存放到嵌入式系统存储器中:       

) 3 需要设置的      参数由 现场用户或者 管理计算机进行设置, 后台 这些设置的 数据被
网络通讯模块接收,        并通过 P e s r a 模块进行解析, 然后传递给 C N通讯模块, A 发送到D P        S 设备对系统进行控制。

) 络通信模块还可同 4网      步将暂存在嵌 入式系统存储器中的参数传送到后台管理
计算机的处理模块中,进行进一步的分析、处理、存储。       

3 么5数据压缩与数据加密 监控系统的通信数据、      录波数据的数据量是比较大的, 例如录波数据可以简单计 算如下:如果对于 5H 的正弦波按每周期 6 个采样点 ( 0Z 4 每个采样点用 4 个字节的 单精度浮点数表示) 计算,对于 1 路波形数据,则 1 2 分钟产生的数据量为:
4 6 x 0 6 x 2 92600B e)                        x 4 5 x 0 l = 1,0(y s , t

即      大约g M字节的数据。 如果不对这么大的数据量进行压缩, 将会占 用大量的带 宽和存储空间。 既使目 前广泛使用的宽带网, 当数据路数增多时, 也可能无法承受这 么大的数据量,更不要说电话线路之类的窄带线路了。 由      于所录制数据大部分是较为规则的5U 正弦波及其谐波数据, 0吃 因此压缩余地 很大, 采用 “ 可以 傅立叶变换+ 算术编码”方式进行有损压缩,压缩的 损失率是可控 的。 对录波数据还可以 采用一定的加密方式进行保护, 这里主要采用当前成熟的A S E ( d朋 e E 甲 t ssm 对称加密算法对录波数据进行分组加密。 A y c n po y e ) dc i t n 整个录波数 据的压缩、加密流程框图如图3 所示 ( 5 . 解密、解压缩流程是图 3 流程的逆过程, . 5
这里不再赘述) 。

监 控系统设计

硕士论文
r一 一一一 -一 一一一 一一 户一 一 ̄- 一一 ̄ ̄ ̄一一一一一  ̄-一一-一 ̄ 份一  ̄ 一一

数据压缩
… , 七

傅立叶 变换

量化

算术
编码

人E S 加密

加密后数据

压缩比控制

密钥

图3 录波数据压缩、加密流程图                                乃

一般数据加密的过程分为三步:变换、量化、嫡编码。由于所要压缩的数据为      5H 0 z正弦数据及其各次谐波,因此采用离散傅立叶变换 ( F )是比 DT 较好的选择。 另外, 叮 有快速算法 F 飞 对于压缩算法实现的快速性也有帮助。 D F, , 因为输入的原始 数据为浮点数,而 D T运算也是浮点运算,因而数据精度损失不可避免。但由于运 F 算中的 数据可以采用高精度数据类型表示 ( ou拍型) 因 如db , 此这种数据精度的损失 可以很小, 甚至可以忽略。 为了获得更高的压缩比, 有时我们需要牺牲一定的数据精 度, 在这种情况下, 可以通过量化过程来使变换后的数据的符号减少, 利于最后的 以 嫡编码。 因为量化系数可以根据需要调整, 所以整个压缩算法所能获得的 压缩比可以

通过调整量 化系数来控制。 量化后的数据采用压缩率比 较高的 算术编码进行压缩, 获
得压缩后的数据码流。

. 3 ‘系统关键技术 . 2

) 入式 1 嵌 平台下图形开发技术,      采用 Q b d 图 用户 呢m e e 形 界面 (U) 突破 dd G , I
了嵌入式下传统的文字开发模式,        使得用户界面更加友好。 传统监控系统不能 绘制的一些系统状态图,如波形图,现在可以很好地绘制:       

) 2 采用      通用性的 组件开发用户界面 和通讯协议使得多 共享: 平台 ) 3 多种协议集成平台,      实现现有的多种电 力行业协议, 例如: 2 协议, o u 0 3 1. m ds b
协议等。        这些协议的引入增加了 通讯稳定性, 而且可以 接入第三方平台, 增强 了系统的通用性和兼容性;       

) 4 直接调      用操作系 统下驱动程 技 这种技术可直接利用 序的 术, 硬件厂商 供的 提 驱
动程序;       

) 入高 5 引 效率的数据压缩算法      和采用 A s 加密算法, E 的 提高了 统的 系 数据存储
效率和通讯传输速度。       

3 3系统软件设计 本系      统软件开发中运用了面向 对象的设计技术,即每个任务由 一个对象来完成, 这样用对象既 可以管理相应的函 可以 数也 管理相应的 数据。 系统中 使用 no 对象 t j e b ( 络控 网 制对象) 行网 来进 络通讯, 0 对象(S 数据采集设 P s j d b DP 备控制对象 用来与 )

监 控系统 设计

硕 士论文

图3 对象模块的结构和关系图                            1

主要功能对象介绍如下:     

1 显示      对象(il bc) ) 控制 Ds叮o e p jt
可以在A      M计算机上完成所有保护数据的显示工作, R 这个对象是系统中最核心 的对象, 它负责与存储对象合作, 将得到的数据存储到介质上, 查询通信对象的数据 并显示。它还负责对用户的输入, 例如鼠标和键盘数据, 做统一的处理。 如果用户点

击的是菜单区的按钮, 它须负责窗口 切换; 如果输入的是键盘数据, 它则负责显示和
存储这些数据。

) 2 通讯对象(O 幻 a皿 b c      C ̄ uit O e ci j t ) 此对象有 个子对象组成: A     3 C N总线通信对象、 网络通信对象、串口通信对象, 3 个对象中共同的部分放入到通信对象中。例如,实现 m du 通讯部分代码和存储 Obs 对象协作存储的代码都在父对象中完成,只是将 T P 通信的具体代码和串口 C仰 通信 的代码以及 C N总线具体的实行代码放在三个子对象中; A ) 3 核心调度对象 c d拓 句 C      s e ( h u 0 e) t 此对象主要负责生成子线程,它分别为串口      通信、网络通信、界面控制、C N A 总线通信生成线程, 并负责管理各个线程之间、 各个对象之间的通讯和数据交换。 这 个对象要对各个线程之间的通讯方式进行控制: ) 4 数据解析      对象伊 e bc s r jt a oe ) 在对接收到的数据进行解析和分类,      不同大小、 不同方式封装的 报文按照包协议
规定的方式进行解析; ) 5 压缩和保密对象     

与数据分析对象交互,      对需要转发的数据进行压缩和加密, 对需要保存的数据进 行压缩存储:

) 6 打包      对 (c转o e 保存 象 h b t Ai j ) c
3 0

硕 士论文

基于Ln 的嵌入式监控系统软件j台研究与设计 i叮 砰

系统在接收到 S      D P数据采集设备以及后台 管理机的数据后,将把所有的 参数存 放到一个级冲区中, 这样实现了 整个数据存储的可扩展性要求。 在这个对象中有一些 全局的数据, 供通讯时 以 进行数据交换。 这个对象要与显示控制对象合作完成数据的
存储;

乃 打印对象:根据用户需求,打印      测量分析结果。 3 污软件操作设计 3 软件操作总的规则是便捷和直观,      操作步骤大体如下: ) 1 启动接收A 五 计算机,      R度 嵌入式系统程序自 动启动。 确认网络连接正常, A CN
总线连接正常。

) 2 启动主菜单,提供用户选择,选择显示子菜单,可以看到各种参数的      显示。 ) 3 进入设置菜单,      允许用户软键盘输入,用户可以设置和改变系统参数; ) 4 用户在嵌入式系统上向前台D P      S 设备请求故障数据、实时数据; ) 5 中间可以进行停止、暂停、查看测试结果等操作。      进入主菜单:      1 、功能区正常显示; 2 、子菜单正常显示; 3 、键盘、鼠 标正常。
查询测量显示参数 查看录波数据
运行参数 开关状态 历史记录

开始操作

运行参数设置
定值设置

系统上电    启动D P S设备 确认串口 通讯正常 确认网络通讯正常 确认D P S工作正常
启动h 讨系统 公1

查看系统帮助

查看操作记录

议参? 置 数、声
乒   
出厂设置

操作结束

图3 2系统具体操作流程图 . 1

监控系统设计

硕 士论 文

. 3 4软件开发环境和开发工具

D 采用宿主机+ 标板的开发模式,使用N S      目 F 连接P 机和嵌入式系统,此模 C 式具有强大的功能操作支持:

) 2 宿主机L u 下      i 笼 直接开发, n 使用K ee 等 Dv 吻 进行源代 码编辑: ) 3 采用可视化Q 系列开发工具 ( i e 垃 u 等) 所见即      t s en 、 d g r 唱i , t s 所得的开发界
面大大节省了系统开发时间,提高了 开发效率。
. 3 5系统性能

) 1 通用性:      提供通用性强的程序组件。 系统尽可能采用与平台无关的组件, 最 终的结果数据可以进行打印,并能输出成文本格式: ) 2 平台优越性:嵌入式 A M 平台开发技术。当前嵌入式平台因为其廉价和      R 良 好的性能,运用该项技术可以较好地改善系统成本;

) 现后台管理计算机、 R 3实      A M机及D P S 数据采集设备稳定通讯, 实现E e e hn 、 trt

C N总 串口 A 线、 通讯; 通讯速度达到1 2OpC N通讯达到50bs trt 串口 5 1 bs A 0 , 0 Kp E ee ,hn
能够接入 I 1 以太网络. O0 / O M 具有7 路串口 通讯能力, 路网络通讯能力, 2 而且实现 多种数据通讯协议平台,可接入第三方通用平台; ) 4 数据存储容量达到内存 3 兆,文件存储达到6 兆。      2 4 ) 5 加密安全性不低于 1 位密钥密码安全性;      8 2 ) 6 加密速度不低于 I bs      M p; ) 7 在信噪比不低于4d 条件下,压缩比达到 1      0B 派 幻 压缩算法压缩速率 二 o B e      >5 K y 珑 0 t . 3 ‘本章小结
本章首先分析了本课题监控系统的硬件和软件构成,      重点对软件系统的整体结构 和工作流程进行了 研究, 对其工作流、 数据流和关键技术进行了分析。 通过本章的描 述, 可以深入认识嵌入式监控系统的工作方式和设计方法, 了解其对所在嵌入式L i x u n 平台的要求,并为下一步构建嵌入式Lnx i 系统确定目 u 标。

硕士论文

基于L 以 的嵌入式监控系统软件平台 n i 研究与设计

4 嵌入式 Lnx i u 平台构建
目 在专用的嵌入式开发板上运行 C U 1 系统已      前, N /吟 L 经变得越来越流行。 一

个嵌 入式L u 系 软件的 度看 可以 l n i x 统从 角 通常 分为四 层次11: 个 14 5) 】 引导加载程序:包括固化在固件伍 m a 中的 bo 代码(        rw e r ) ot 可选) ,和
B t ae 两部分;        o L dr o

L        目 妙 内核:针对 标板定制的内核及内核的启动参数等; 文件系统:包括根文件系统和建立于 F h内存设备之上的文件系统;        l s a 用户应用程序:完成特定任务的应用程序,有时在应用程序和内核层之间还        会包括一个嵌入式图形用户界面层。       
通常而言,嵌入式系统的开发流程要遵循下面的步骤:     

) 1 针对目      标平台建立交叉编译环境; 2 建立B o o r      ot ae ) Ld ;

3 L u 核选择、剪裁、      内 ) lx n 编译; ) 4 建立根文件系统;      ) 5 应用程序开发、编译:      ) 6 系统调试、优化、移植。      这是一个相互衔接的过程,前面的工作通常是后续开发的基础。在具体的开发      流程中我们需要很好地协调各部分的工作, 以达到整体的最优。 下面就根据这一流程
予以介绍。

. 4 1建立交叉编译环境

. 4 I交叉编译环境简述 L
一般嵌入式硬件系统的资源都很有限,      不能在其上进行直接的开发工作。 所以在 开发嵌入式系统时, 通常需要在功能相对强大的开发主机上建立一个针对 目 标平台的 交叉编译环境。 所谓交叉编译, 简单地说, 就是在一个平台 上生成另一个平台 上的可

执行代码I .需要注意的是, ) 4 这里所谓的平台实际上包含两个概念:体系结构 ( r the 操作系统 ( e i tm Ac e 双)、 i hC P a g匀s O r n e )。同 t 一个体系结构可以 运行不同的 操作系统; 同样, 一个操作系统也可以 同 在不同的体系结构上运行。 譬如, 我们常说
的x6 i 平台实际上是功ex6 8L u n x t 8 体系结构和Lnx x6 l l f 8 操作系统的统称; 86 uo r 而x Wi T n 平台实际上是bex6 N t 8 体系结构和W dw N f x 操作系统的简称。 l n i o s T r8 o 6 交 叉编译工具是一个由 编译器、 连接器和解释器组成的综合开发系统, 其建立是一个相
当复杂的过程 。

嵌入式 L u 平台构建 i x n

硕 士 论文

选择交叉编译通常有两种原因:1 目      ) 标平台还没有建立,此时连操作系统都不 存在, 更谈不上编译程序: 目 ) 2 标平台上不允许或不能够安装我们所需要的编译器, 而我们又必须使用这个编译器。 显然, 在嵌入式系统开发中, 主要是第二条原因导致

我们只能建立交叉编译环境。 通过交叉编译工具, 我们就可以 C U性能更强、 在 P 存 储容量足够大的宿主机平台上 ( 如 P ) 比 C 编译出 针对其他平台的可执行程序了。 其
硬件连接模式可图示如下: 开发主机

目标平 台

图4                              . 1交叉编译的硬件连接模式图

交叉编译技术的引入为软件在不同平台间的移植创造了条件,      在交叉编译技术中 一般有如下两种比较典型的实现:

) a l J 模式:即 aa的字节码 (y c e 编译技术,通过引 aa      v J v B o) e t d 入J 虚拟机 v
(    Vr aMah ,J M)来实现: J v t a i l cn V u i e ) 2 G UG C      C 模式:即通常所讲的C sG C技术.G C 模式通过C sG C N o r C C o r C

直接生成目 标平台的可执行程序,从而能够直接在目 标平台上运行。 这两种方式主要的区别在于G C直接生成目      C 标平台的目 标代码,而J a v a 模式的 编译过程则分两步:首先编译生成字节码,然后通过J 解释器或月 v a T编译器进一步 生成目 标平台的目 标代码。在嵌入式系统开发中, 一般使用的都是C sG C o r C 方式, 这种方式的关键是C sG C o r C 的选择和生成。我们需要根据 目 标平台的不同,配置针 对这个平台的Cos C 。 r GC s 在本系统的开发中,      我们首先在 P C机平台上安装了与目 标平台对应的交叉编译

工具链 ( sc i o t lb n , c o l n o c l 然后用这 交 译工具链编译 们的 o P t r m a i a) 个 叉编 我 源代
码,最终生成可在目 标平台上运行的可执行文件。 . 血u 下交叉编译环境的建立过程 42 x L

建立基本的G Uo C工具链通常需要以 N c 下几个部分1 : 5 3 ] ① 针对目 标系统的 编译器 gc 杆; cl g

②目 标系统的 标准c lb; 库ge i
③ 针对目 标系统的二进制工具b ul lt ni : s

硕士论文

基于Ln 的嵌入式监控系统软件平台研究与设计 iu x

④ 目      标系统的l 内核头文件。 l x u n 本课题中我们在开发主机上建立了针对 a      r m的交叉编译环境, 其他的体系结构与 此类似, 只需做一些很小的改动。系统开发环境为:开发主机 诊 6 da9 ,目 8一 h . e r t . 标 0

主机E 9 5( 90 平台。 P 3 a 2t 1 l m ) 建立编译环境的具体过程如下:
) 1 下载源文件及其补丁;     

) 2 建立编译目 输出环境变量:编译目      录, 录通常建立在用户目 录下,然后 输
出相应的环境变量,以方便后续的编译工作;           

) 3 设置内      核头文件(e eH d s u) K m 1 e e e p; ar t s ) 4 设置二进制工具 (I 了 lest )      B. U i eI ; 时t t i s L P 5 设置初始编      ) 译器 (ot a c哪 i s p; B ot o l e ) sP r r U e t ) 6 设置c Gb ep:      库( i st ) 用上步建立的bO拍 g 编译g ; l o u o s pc t l e b i ) 7 设置完全编译器 (u Cm i st )      Fl o pe ep:在建立初始编译器时我们只支持了 l l U r C          ,此步将建立全套编译器,以全面支持 C和C 什。 由于所需组件是完全独立发布的,      有些版本之间可能存在潜在的冲突。 在下 所以 载源文 件时要选择恰当的 版本组合, 其中b ul g 及gb 版本的 i t 、 c hc ni c s 选择至关重要, 这可以 在一些网站上找到相关的信息。如果在建立过程中总是出现一些未知的问题, 我们可以尝试某个组件的其它版本, 一般情况下兼容的版本组合还是不难找到的。 当 然我们也可以借鉴别人已 经通过测试并且运行良 好的版本组合, 并结合具体的应用配
置出最适宜的交叉编译环境。 这一过程中,本系统选用的主要软件版本为:     
. l u,.1 1 ,      2 . , 趁 ix 6 4 上 9 n 2

. b ul . Z     s 6 g i t 一1t ni . r a
. gc3 .t 叹      .4 ab c 一 4 .r .

. gb一3 t Z     2 5ag he . . r . .

. 目 。 u h a 一3 aZ     访 x e s .t g 化 1t d 5 r r
. “。 一. . r z        4 a b 5 3 l. Z 4

? 补丁: 0 n d      i n. i n c 瓜 t L .f e P c 乐 o. . i w d - u do 1x 让 i 这是一个嵌入式开发人员推荐的      版本组合, 用到L u 内 原因 i n 核的 是在编译9 x 1 枷 时将用到 L u 的内 加 x 核头文件。为了保持系统的兼容性, 嵌入式系统的内核我们也 选择了 l以一64 . g。 然,如果编译过程中出 “ 未定义” n . . i 2 11 z 当 . r a t 现 变量 而导致编译 失败, 也可尝试使用相近版本的LQ 内核。 刃x u 此处需要注意, i 口 版本的内 L山 . n 6 核编

译需要g 3 上版本编译器的 c 2以 支持, 我们此处选择了g 3 4 这是一 所以 c ., 4 个相对
稳定的版本, 也是内 核开发人员较为推崇的选择。 如果选择其它版本, 可能还需要安
装一些相应的补丁。

嵌入式 L u 平台构建 n i x

硕 士论 文

为方便操作, 我们可以 设定独立的工作空间, b h 中定义相应的环境变量: 并在. r s a c
脚 1 .ahc /  ̄bsr

xotR JC =I e m r e eprP OE T月 m 八 / o O Pj t c

e r R F ={R JC } .4 却o p I ¥p O T/4 tE X E 3.
x o A G T a力1 u eprT R E = n ,nx t 1

ePrS S 0 T ¥P E L) s o xo Y R 0 ={R F / r t t Xs o y
eP rA C = n x o R H an t

epr R S一O P E ¥T R E } xo C O S M I ={A G t L T
e o P T = {R FX / : A H p t X r A H 5P I } i ¥ T E b P n

其中 。 e m      / 是笔者的用户目 小m x 录,其下的所有目 录均为自 建,只需保持前后统 一,对最终构建结果没有任何影响。T R E 变量用来定义目 AG T 标平台类型,并据此 建立工具链。 R F 变量为组件的配置命令脚本提供指针, PEI X 指向目 标板工具程序将
要被安装到的目录。

本系统安装G IG c 叉编译工具链的 程如下 具      NJ c 交 过 ( 体细节不再详述) :
1 编译 G 加1s      Ub 1l ) N t; i ) 2 准备内      核头文件:首先使用当前平台的 g 编译内 c 核头文件,然后将编译后
的头文件复制到相应的位置;     

) 3 编译g 的头文件,      c l b i 编译前要安装1 r一d 补丁; 叩e 。 f m i ) 4 编译g      第一阶段, c 此步进行前需安装剩余的两个补丁; ) 5 编译完整的gb;      i le 6 编译完整的g ;      ) c c ) 6 解压缩c s3 . z 到 e / c      r 一 4 bZ 肠m 加九 re 中。 o .t 4a . r P t j o
至此我们已      经在宿主机上建立起针对 a 平台的交叉编译环境。 n l r 由于是跨平台构

建开 发工具, 在配 需要指定目 所以 置时 标平台 类型和安装目 我们在执 o u 录, 行c r 曲g e 命令时都加入了. r 和一r x选项。在配置gb 工具包前, .g 切 e p f= = t e i he 还要加入编译器选
项 C= C ,为其指定编译器。在工具链编译期间可能会显示一些警告信息,如果没有 报告错误, 不会影响编译结果。 跨平台工具链设置好后, 编译一些小的程序来检 可以
查工具链的建立是否正确。

另外,      在每个软件的 安装包内都会有一些F Q和安装说明 A 文档,内含设定和安
装的各项说明,在编译过程中可供参考。

硕士论文

墓于 L吟 的嵌入式监控系统软件平台研究与设计 i

4ZBo t a e . oLo d r

在嵌入式系统中,系统在复位或上电时通常都从存储器地址: x000 (      o 000 由 0 o C U决定) P 开始执行, 此地址处一般存储的就是系统的B 。 odr 它与通用 P 。t ae, L C机 中的BO 一样 ( IS 嵌入式系统中 通常没有BO ),完成系统的引导加载任务。简单 I S 来讲, otod 就是在操作系统内 Bo ae L r 核开始工作之前运行的一段小程序,其任务是 完成初始化硬件设备、 建立内 存空间映射等操作, 从而将系统的软硬件环境启动到一 个合适的状态,为后续加载 L u 内核准备环境。 lx n
B 。 od      与底层硬件密切相关,即不同配置的目 。t ae L r 标板使用的 B o odr ot ae基本 L

上都是不同的。 此B oo e往往更依据量体裁衣、 因 o ar l t d 定身制作的原则,以最优化的 代码完成引导系统的任务。

4 ?Bo odr 操作模式 ?I ot ae的 2 L
从用户的角度看, 。t0d 只有一种工作模式,      B 。 ae L r 即系统复位或上电时引导装载 内核,启动系统。 而从开发角度看, 。t ae却有两种工作模式: B 。 0d L r ) 1 启动加载模式:又称 “ 主”( u 加m )      自 A t o 模式。即B oLae从目 O u s o o dr 标板 t 的某个固态存储设备上将 E S O 加载到 R M 中运行,整个过程并没有用户的介入。 A 这种模式是 B 帕d 的普通工作模式, 加止 e r 在嵌入式系统产品发布时, 。t ae 就 B。 习 r Ld
工作在这种模式下。

) 2 下载模式:      此种模式下,目 标板上的 B o Odr o Lae 将通过 R Z 或 F4 从宿 t S 犯 J5 主机下载文件,如内核映像和根文件系统映像等,然后将其烧写到 目 标板的 F A H LS 类固态存储设备中。 。to e 的这种模式通常在开发调试过程中被使用,当然, B 。 ar Ld 后续的系统更新也会用到这种模式。 工作于这种模式下的 B 以 Od 。 Lae r通常都会通过 终端向用户提供一个简单的命令行接口。 4 2本系统 B o odr 2 : ot ae 选择 L 在桌面 L x      u 系统中, n i 我们常用的B 0 ae是 L 、 几 等。 0止Odr i G b 而在嵌入式 L u o f ix n 系统中, 我们常用的是UB o v iebo等。 一o ,l , dot 当然我们也可以自 t vr 行编写B 。 o e 。t ar Ld , 但从可利用的资源和实际项 目 开发考虑,采用移植己 B t 目e 源码的方法更符 有 oL r 。 合大多数项目的开发要求。就常用的嵌入式 B 。 刀 dr 。任 ae来看,UB o能支持大多数 .o t 的嵌入式处理器和嵌入式操作系统, 对L x 支持最为完善。 本系统中我 其中 i 的 u n 所以 们选用 UB o 一o ,这是一个开放源代码的自由 t 软件,其源码目 录、编译方式与 L u n ix
内核很相似。

U o 代码采用了一种高度模块化的编程方式,下载解压缩后可以看到其主要      一。 t
包含下面一些目 录:

嵌入式Ln 平台构建 iu x

硕士论文

. ba 一      or d

目 标板相关文件,主要包含 S R M、F h D A l 驱动; s a

. c o-      n 一独立于处理器体系结构的通用代码,如内 u n o 存大小探测与故障检
测;         

?c      与处理 p 一 器相关的 件, p 。子目 就 有串 、 文 如m c s 录下 含 口 网口、 D c L
驱动及中断初始化等文件:         

. 如v      - r e

通用设备驱动, 如吓I a 驱动( 前对1eF h l F h s 目 川 lI 支持较幼 ; 韶

. d一      UB t o 一o 的说明文档;

? eal 一      s 可在U o 下运行的示例程序,如Ml od t 仇 xn p k 一o t O r 仇m wl i . r e ? i l e - o 头文件,     一 UB t c d nu 其中。 9子目 皿65 录下与目 标板相关的配置头文 件是移植过程中经常要修改的文件;       

?l     - i b双%

处理 器体系 相关的 文件, 1一 p,i解 目 如 卜 pC l‘m 录分别包含与 b

Pw r 、A M体系结构相关的文件;        oe C R P

? n 一  ̄与网      c一 卜 络功能相关的文件目 录,如bo 、 t ; ot 硫、且 P P ? Pse .     一 上电自 o 卜. 检文件目 录,尚有待于进一步完善;
。 de R C驱动程序;      ̄ T c
. t1 .      - 。 , 一用于创建 UB 以 一E O D和 B 镜像文件的工具。 。s e 州O 、5R C R 取

开发过程中我们选择了多个版本的 UB o 进行编译,经测试后最终选用      一o t u o 1 .作为本系统的B 。 “ 一 t .2 o b- 1 。止皿d 。
4 .U B o 移植 .3 .ot 2

本系统所用目      标板是基于E 91 (r宜 0 P 35 a 9t n )的,UB o并没有提供直接的支 2 - o f 持,通过查阅目 标板厂商提供的信息,我们发现可以 通过给UB o打补丁的途径解 .ot 决这一问题。移植的过程如下: ) 1 下载 u 。 1 2 四,解压缩源文件到目       .1 l b 七以 . . r a 录用.o Bo ; t

) 2 下载补丁0_ 2 一 o .2 3 a 让 . z 解压缩后复制到        1 68曲。 l. 91 ah g, 1 32 t 1记b 5 P t . r a 用一o 。补丁可从加p 加 ws l o           w . k c 上下钧: Bo ( t 刃 i om nw .
) 3 在川.o       下安装补丁: Bo t

和ahP < 一 o l .e 91a a                c 加 ? u t l 一 3 5. h I o b- 2 d b P t        ) 4 根据目 标板情况修改ba 七b 1 目 o d d95 录下配置文件, r / 3 本开发中修改了

C〕 t 中           地址为。c 00, 还需修改s R M 仍6 n 的住x A E . g k 几B s x3 幻 一般 DA
的配置;             

) 5 编译UB O 需指定使用前面配置的交叉编译器)        ( .Ot : # aed91                m e 35 k b 少加五 9
弃 k ea                    ma l

硕士论文

基于L u 的嵌入式监控系统软件平台研究与设计 n ix

编译结束后将会生成四个文件,分别是 E 格式的映像文件 u o      F L . t o b 、二进制文

件u o .n u o r 及符号文件5 l .叩。 b ti b . - ob 、 . t o s c e 卿e m 这里我们主要使用的是u oti n b b - .n 文件, bob 下载到加r 韶 中o000 0 然后就可以 把企 t i o. n 且 h x 000 处, 使用uot b 命令启
动开发板 了。

4 恤x 3L u 内核的剪裁、编译、安装 L u 内核是所有 L u 系统的中心软件组件,      lx n n ix 也是嵌入式系统的核心所在, 它 向系统提供全部的硬件支持, 是应用程序和硬件系统沟通的桥梁和纽带。 在一定程度 上, l x内核功能的强弱直接决定了 Lu n 整个系统的功效, 是嵌入式系统构建成败的关
键。

4 蕊I L 肛 内核选择的策略 n i 选择一个适合目      标平台的 L x内核版本并不是一件容易的事情。首先,有些 i u n 版本本身存在潜在的缺陷, 即使老版本也可能存在这样的问题, 选择这样的内核将对 我们后面的工作产生潜在的危险。因此我们要经常关注与内核代码维护相关的新闻 组, 这样才能及时发现这些可能的缺陷, 从而保证系统的整体稳定性。 其次, 我们还

可以 根据网 上提供的 一些使用推荐和 B 报告, g u 来评估不同 版本的 性能。 另外, 在
开发过程中, 如果目 标板对内核的要求不是只局限于一两个特定版本, 我们可以 选取 多个内 核进行尝试,从中选择最适合的版本。 本系统中我们为嵌入式系统选用的是基于x6      8 架构的2 . 1 . 1 版本内核, .系 64 2 6

列内 核为嵌入式系统应用做了 一定的 优化, 前嵌入式开发的 1 本内 是目 热点 . 核可由 ] 6 b刃 P t 朴 km l习上得到。 e e。 .
. 42 L 皿 . 3 n i x内核的模块结构

Lu内      i x 核是基于模块结构的, 核配置时有两种配置形式可供选择,一种是 n 在内 配置m nl五 类型的内 即内 oo i c i t 核, 核被编译为一个单一的大程序, 核心中所有的功能 组件都可以对其全部的内部数据结构和例程进行访问, 这种形式通常被称为组件的静 态加载; 另外一种形式是微内 核结构, 此时内 核所有的非核心功能部件都被拆解成独 立模块,核心在启动时通过请求核心后台进程 k 刀l 。e d来加载系统需要的模块, 这种 形式称为组件的动态加载. m 还为手动的动态加载提供了两个命令: L x u 使用 m d o s 来显式加载核心模块, 使用 爪皿。 来卸载模块。 d 第二种模式的加载过程将非常耗时。 动态可加载模块的好处在于可以让内核保持很小的尺寸和较高的效率,      同时还可 以 让我们无需通过重构核心和频繁重新启动就可以尝试运行新核心代码。 尽管使用模 块很自由, 但是也有可能同时带来与核心模块相关的性能与内存损失。 可加载模块的

嵌入式L u 平台构建 加x

硕士论文

代码一般有些长并且额外的数据结构可能会占 据一些内 同时对核心资源的间接使 存,
用可能带来一些效率问题。

i L 模块一旦被加载,就和普通核心代码一样成为核心的一部分,具有与其它      x u n 核心代码相同的 权限与职责。换句话说,L 动态可加载模块具有象所有核心代码 x u n l
和设备驱动一样使操作系统崩溃的能力。 所以我们在添加模块时要时刻注意系统模块 之间的兼容性, 通过严格的 版本控制来对可加载模块进行检查, 以防止一些意外情况
的发生。

L l模块还可指设备驱动、      lx m 伪设备驱动, 络设备和文件系统等。 i x 核 如网 Lu内 n 的模块结构让我们可以随意动态的加载与卸载操作系统部件。 那些非核心模块可在系 统启动后的任何时候动态载入内核, 当我们不再需要它时又可以将它从内核中卸载或 永久删除。 在本嵌入式内 核上, 我们采用动态加载和静态加载相结合的模块加载方式, 把系统运行时一直要使用的模块静态加载入核心中, 而对系统只是偶尔会用到的模块 实行动态加载的方式。 这样一方面可以 避免常用模块每次都在在系统运行时加载, 影 响系统效率: 另一方面又不会因为始终要把系统所有的模块加载入内核中, 占用系统
资源。

. 4 3 配置、编译内核 . 3

在配 核 前需 做以 备 作 〕     之 要 下准 工 1: 置内 0 3
) 1 整理嵌入式系统需要支持的      硬件、 文件系统类型以 络协议等内 为后续 及网 容,
的内核配置做准备:       

) 2 用朴      才命令查看开发 机所用系统的内 本号, 主 核版 如果与将要编译的内
核版本完全一致,建议将系统瓜 八。 e        bn血l s下的内 容各份,否则后续的 m e k a

ou s拙 l mdeit 步 生的 件       骤产 文 会覆盖 个 下的内 l ea sl 这 路径 容:
) 3 下载并解压所下载的L u 内      i x 核。 n 配置内      核是为目 标平台 编译内 第一步工作。 毗 有多种配置方法供选择, 核的 i L 但不管我们采用什么样的配置方法, 在配置结束的时候都会在内核目 录下产生一 个 几 涌9文件,以 o c 及一些以 后要用到的 符号链接。 c 9文件中保存的就是我们的 执的6 配置信息, 核编译时的依据。 是内 为了得到稳定的内核和充分发挥硬件的性能, 配置 内核的时 候需要注意两个问 首先, 题: 需要对目 标板上的硬件配 置有完整彻底的了 解; 其次, 要足够熟 悉主要的内 核配置选项, 尤其是一些决定L u 系统运行的配置。 ix n 我们下载得到的内      核是一个通用内核, 其应用是面向通用P C机的, 功能多而全, 以致体积相当 庞大。 因而我们配置过程中必须对其进行裁剪, 仅保留嵌入式系统所需

的功能支持模块, 删除不需要的功能 模块。 例如, 对于本系统而言,Sss pr C u o菜 l pt
单和 5如d 。 菜单可以 直接屏蔽: 对于 C U (n ) P al 的支持、文件系统 (r f等) l C印 s 山 的

硕士论文

墓于 Ln 的嵌入式监控系统软件平台研究与设计 it x j

支持、 h a edv 、 S 等菜单中的相关选项支持则需要编译进内核。 cacrei U B rt s e c 此外,由 于 使用了l拌a包以 i P b 及网络 通信的 要求, 还要将Nto j otn菜单中的p k e rn po wk g i s c a t e l i 对g P 选项编译进内 fen 和P 等 t 核。由 核选项很多, 于内 在此就不详细列出。 如果目 标平台资源丰富,且模块选项不是很多的情况下,可以将模块直接编译进内核。 由      内 于对 L i x u n 核的了 解有限, 我们使用 L 自 所以 x u n i 身的配置工具来实现内核 剪裁。 然, 当 对于一些单纯依靠配置工具不能解决的问 我们也通过修改部分源代 题, 码得到很好的解决。 结果表明, 这种配置方式生成的L u 内核能够达到系统的设计 n i x
要求。

内核配置具体步骤如下:      首先确定所用的 se 是 b b      hl a ,用户身份为管理员 ( o) l s o r : t

该操作确保源代码 目      录下没有不正确的.文件及文件的互相依赖。 o 如果我们使用 刚下载的 完整的 源程序包进行编译, 那么本步可以 省略。 而如果你多次使用了这些源 程序编译内核,那么最好要先运行一下这个命令。 确保角 r l /     c e 录下的a 、i 和s i si u 目 l d n s lu c 等链接是指向 m n x s 要使用的内核源代码, 它们应该分别链接到源代码目 录下的该计算机体系结构所需要的真正的 i l e cd n u 子目 录。如:a 指向 ss/n 口6nl e m 日n m s 儿 rr 功 一 c / . 。若没有这些链接,就需要手工创 /c j l 方 n 比 目 d
建,按照下面的步骤进行 :

这是配置中非常重要的一环:首先删除掉/ 对n ue      此 i d 下的 留 、Iu 和 s 链 l c m lx c n i s 接, 然后创建新的链接, 指向新内 核源代码目 录下的同名目 这些头文件 目 录。 录包含 着保证内核在系统上正确编译所需要的重要头文件。

’    工作只 前面的 是为内 核配置做准备, 核心的配置工作需要通过命令来完成。i x Lu n
有四种配置命令供选择:

) a lo lm e uc 6 (      d ng 如果只想在原来内 k 核配置的 基础上修改 一些小的 地方, 会省
去不少麻烦。;        )

嵌入式 L加x i 平台构建

硕 士论文

) ac 2 m eo 有问     ng( 必答的方 k f i 式,界面很不 友好, 每个内 核选项它都会问 你要、
不要、        模块, 选错一个就必须从头再来. 不推荐使用。; )

) a u ng( 3 m k mn Oi     e c f 基于文本菜单的配置界面, e 键盘操作, 字符终端下 推荐使
用 。;          )

) l ec 4 n kx ng(     o6 基于图 a 形窗口 模式的 界面, wn w下推荐使用。。 配置 x io d )
这四个命令的目      的都是为了生成一心9 o c 文件,为编译工作提供依据。 其中功 e 欧

cni xof 的界面最为友 但它需要xwno y m的 g 好, i ws t 支持。 d s e 使用m x 顽9 e ko ac 时 使用鼠 标就可以 对应的 选择 选项, 较为简便。 不能 如果 或不想使用m kx 吐9 那 日 c , eo 么m k m o 9 ae c u n e l 就成为很 选择, 币 好的 其界面虽 然比m ec 6 差些, k a xo g n 但比m e k a
c幻9 o五 要好的多。 a m 加 币 中,对应每项配置有三种方案可供选择,它们分 mk e 印 9 e n
别代表的含义如下:

) 一将该功能编译进内 ( 1Y      核 静态加载) ; ) 一不将该功能编译进内 ( 2N      核 剪除) ; ) 3 M一将该功能编译成可以      在需要时动态插入到内核中的 模块 ( 动态加载) 。 使用m ke     m an e o c u 涵9 将不能 aec 9 那样使用鼠 作, 时 象m kx训石 中 标操 只能使 用 键盘进行选取。在它的每一个选项前都会有一个括号, 可能是中括号、尖括号或者圆 括号。用空格键选择时可以发现,中括号中要么为空,要么为气 而尖括号里可以是 空、* M。这表示前者对应的项要么不要,要么编译到内核里;后者则多一个选择 或 一可以编译成模块。圆括号的内容是让你在所提供的几个选项中选择一项。 这里我们采用m e eu ng 核进行配置,执行命令如下:      k a m nc 6 对内 o
弃 k leu 涵9      n o m日en c

系统会 自     动弹出内核配置界面,其中常用的配置选项功能如下:

① C北m ti e l tn 代码成熟 项      ar le po : o ut v o i y s 度选 ② La l u s r 可加载模块     b m deu o: od e l Pt a o

③ ssm e 统类型      Tp 系 y y : 加 ④ Cn a ep 通用配置      l 加 : e rs e
⑤ M m ye n l e 叨 ( T ) 存储技     rT ho g Dv 5 M D : eo c o i y 术设备 ⑥ Bok ec :      d is 块设备 l ve c ⑦ Nto i t     rn叩 o :网 议栈支持 . kg i w s n 络协

⑧ N细O d i u o:网     kecs pr 络设备 e r ve p t 支持
⑨ Ca t d is     cre c :字符设备 br e ve a ⑩ F s l s 文件系统      sl: i ye e l n 当用户在根据自 的      己 系统需求配置好内核后, 配置菜单时, 退出 需要保存修改后 的内 核配置。 保存后, 统会在当 录下生 系 前目 成一个c 文件, o 吐9 其后要 进行的内 核
2 4

硕士论文

基于Lnx iu 的嵌入式监控系统软件平台研究与设计

编译就是 根据这个.‘9 件来进行条件编译以 o c 文 生成相应的内 核文件的。 在裁剪内 核
的过程中, 最繁杂的 就是这步配置工作了。 实际上, 配置时大部分选项都可以 使用其 缺省值,只有小部分需要根据系统需求进行选择。 在完成对 L      i 内核的配置以 内核仍然以源代码形式存在的, x u n 后, 不能直接下载 到目 标板上工作。 因此, 还需要对内 核进行编译, 最终生成能够在嵌入式系统上运 以 行的可执行代码。 基于E 3 9 P 巧微处理器的内 核编译可以 按照下面的步骤进行, 其他 嵌入式系统的L 内 i x u n 核编译步骤也大致相似:
第一步,执行如下命令删除过时的文件:     
# k la        ma ece n

执行该命令后,      会删除掉原来的编译结果以 及一些旧的数据文件 ( 如果使用的不
是未经使用过的源代码的话) :

第二步,执行如下命令进行依赖性编译:     
弃 ke e      ma d P

第三步,执行如下命令生成可执行内核映像文件:     
弃 ae l g      ae m u k m

这一步是最后的      编译过程, lae -B。 u g是U 。t m 专用的内 核映像文件. . 2 内核树的 6 M kf 提供了 l ae ae e l i 创建u g 的方法,但需要我们提供相应的m lae m k g命令。 改m g m 欢 la e 在前面编译Bo a r 经生成,位于uBo t l 录下。首先复制在 ia 到 o Ld 时己 t e o - o中 s t o 目 正 g m e i u 可 然后就可以 核根目 /确1下, 在内 录下使用m elae k m a u g 来创建U ae lg 文件了, m 在没 有使用 “ = i 参数指定输出目 0 lr d, 录的情况下,该文件生成在/C 歇 叭 叫 目 七h 皿 为 / 录中。 事实上, la 只是在传统的 lae      n e ug i z g之前加上一个长度为04的“ , 说明 n i x0 头” 用以 这个映像文件的 类型、 加载位置、 生成时间、 大小等信息。 换句话说, 如果直接从u ae lg m 的。4位置开始执行, 加ae lae x0 u g和z g 没有任何区别。 m 此处需注意,L uZ 内 n 4 i x. 核不 支持u刀g,这是L l2 内 i lae n 6 i以 . 核为提供对嵌入式系统的 支持而加入的新特性。 . 44 内 . 3 核配置中的 几个重要问题
) 1 指定交叉编译器     

由 . 核对编译器版本的要求,      于2 内 6 我们需要指定交叉编译器为an n. 如以书. , . 4 ) 4
否则可能编译失败。办法如下:

① 修改内 录树根下的 a f 文 找到 R H R seo p E          M e e 件, A C 和C 0 sc M I , 核目 ki l s L 修改为: R H          r , R seo p E?anm 一 Ac 卜a C 0 sC M I =n. : n y s L l x u ② 修改 境 量,          调 . 的 rs ope 环 变 指定 用3 4 C scm且 ? . 4 o- l r
) 2 在内核中加入对 C扣 F 文件系统支持      r S 田

嵌入式L u 平台构建 访 x

硕士论文

由于我们后面的根文件系统将使用 Ca F ,所以L 内核需要提供对此文件      r S m x u n l 系统的支持, 因此我们在编辑 1 内 漱 核时要把支持Ca F 的 r S 选项加入。 m 尽管 L x u m 内核可以以模块的形式加载各种类型的设备驱动,但我们选择直接把设备驱动及 Ca F 文件系统静态地编译进内 r S m 核中。

在M m re h I ei (T )      Tc O g Dv sM D选项中进行配置: ey o o o y e c Me o e nf 〕 i ( I )u o Ym 刀      c o g l v eM D s p 【/ 岁 m 尽T h o e c y pr / t 1 选择 “ ”, 内      Y 存技术设备支持; M D ai 钊 gu Q Y耐川 I      o叮 s pr〔/ ?y 支持MT T pr t i t pt D分区 Dr ca ei c so l e e Yn ?      dv a e tM ld cs / 口 』 ic br c c s e t e 〕V [ 刃 i
选择 “ ”, M D字符设备直接访问;      Y T
Cc n b c dv e s t Ddv e Y 劝 ?      ok ei 毗 es MT ei 【角 岁1 a扮 g l c o c s 选择 “      Y”, MT D块设备缓冲访问;

在F y m 选项中进行配置:     忆 s i s 比s Cm r耐 O i y ms o Y      R Mf s 忱 upr【如加刀 o ps e e l s pt
选择 “ ”, 压缩 R M 文件系统支持;      Y O

完成上述修改并编译后,即完成 hn 内核对 Ca F 文件系统的支持。      u x r S m 3      F 文件系统的支持 )对于N S 网络文件系统 ( F )      N S 是一种将远程主机的上分区 ( 录) 目 经网络挂载到本地主 机的一种机制。 可以通过建立 N S 把Lnx r , i 服务器上的特定分区共享到待调试的嵌 u 入式目 标系统, 就可以直接在嵌入式目 标系统上操作 L 服务器, i x u n 同时可以 在线对 程序进行调试和修改,大大方便了软件的开发。嵌入式 L u i x的N S开发环境包括 n F 两个方面, 一是 L 服务器端的N S服务器端支持; x u m F 二是嵌入式目 标系统的N S F 客户端支持。 因此在对嵌入式目 标系统的内核进行配置时, 需要进行相应的配置, 具 体的配置步骤是:

① 进入Fe ye     lssn选项; i tl ② 进入Nt ri ssm子菜单;     e o Fe y e wkl t ③ 选中N Ssms o 和P v      S yl up找 r i 协 s cet p 。 F e p o d v l Os o e 3 i u r P t 然后保存退出,重新编译内 做到这里还只是使嵌入式系统能够提供 N S服      核。 F 务,后续还需对开发主机和嵌入式系统进行配置,      才能启动哪 5 。 4 针对帧缓冲设备的编译      ) 如果需要液晶屏显示,      就需要在内核中对帧缓冲 (r e u七) F b月r 进行配置编译。 m a F m bfr r eu 是出现在 L u2 及以 a e i x2以 后版本内 n 核当中的一种驱动程序数据接口, 这 种接口 将显示设备抽象为帧缓冲区。 用户可以 将其看成是显示内 存的一个映像, 将其 映 射到进程地址空间之后, 就可以 直接进行读写操作, 而写操作可以 直接反映到液晶


硕士论文

墓于 Lnx i 的嵌入式监控系统软件平台研究与设计 u

屏上。 具体配置方法是进入F eu触s pr 曲n b月ru o 选项, pt 根据实际情况对帧缓冲进行配
置。

) 5 显示设备 (      液晶屏,L D)的支持 C

在本系统的内      核配置中,由 于我们所使用的液晶屏大小为 60 4 ,而 L u 4 x8 0 i n x 内核默认的设置是支持 2 x 加 的 0 4 3 显示屏,且配置菜单中没有添加与大屏相应的可 选项, 因此为了能使液晶屏正常显示, 我们考虑修改内核的相关文件。 通过仔细查阅 有关资料,我们找到了有效的解决办法:直接修改内核胶m 此对e、d 中的 e vri l c o

P e 双伪 文件, 此文件的 5行 将Dsa 功 nv u st五 iVls 3 c 9 . 在 第3 处, iPy ‘g e t i mna u 口 3 lT a sac g e l
中的 “ 0 40 r s Sa P ls 04 0A o E B 32 o ,置为可选 4 6 X 8 p 脚 s c h i L 6 2 l D 9l B a o i ni p B V e V n d r
项 ,即:

T “ 阅 A U S(Pi s B 6V A 刀 刀GV L E ’ h印 L O 0 l l 4 2 ’
Pl sL 04 0A ,                        bi ‘B 6V 2 I l P

P lsC ,                          iP hi L D
6 , 0 0C 0, 01, , , 01,1 ) 8 0 0 17 4 , 4 9 4 , 3 , x 0 6 6868 1 2

当完成这些配置之后,      即完成对液晶屏的内核配置工作, 编译之后内核即可支持 4 x 8 大屏的显示。 6O 40 ) 6 配置启动选项     
B oot      一 D 丘 l e ecm ad t g o Pi > eLt m l m O si t o s n uk o r: n

o n dn u o 节 e/t o o o = S C , 50 nlt i = m r tl v刀 l 匕 cn l t A O 120     i月 i t x l c r o d 1 d c s ey b t 1 其中, t l k      b c 代表 目 m d oZ 标板上第 3 f h 个 l 分区, s a 此处是系统的根文件系统。 i 访t

则指定K m l e e被引导后将加载的第一个应用程序, 缺省为/ iit 此处我们指定为 s 川n , b i L ur 最后, c o = S C , 50” lx 。 n c “ n l 却 A o 1 0 表示以 o e s t 12 波特率 1 20 1 0 输出k e启动期 5 e l m 间的信息到串口0 上。2 内 6 . 核将串口。 的命名改为tS C , y t A 。 但这不影响用户空间 的串口 编程,用户空间的串口 编程针对的仍然是/ v 5 d/ 0 et y 在本系统内核的构建过程中,我们依据系统的实际需求定制了      合理的配置方案, 最终根据此方案裁剪、 编译得到的L u 内核大小为 9 K , n i x 7 3 B 很好地达到了精简内核 的目 的,系统功能也能够满足。
. 4 4配置图形界面系统

本系统中我们采用勿 bde作为嵌入式系统的图形界面系统,      沱m e d d 前面我们已 经 介绍了 有关切龙m de 的 e b d 情况, 此处不再赘述。

在 入式图 用 界 开 过 中 我 要 两 统 t 置1 一     形 户 面 发 程 , 们需 做 个系 上的Q配 1。 个 嵌 ] 6
是开发主机 (C 上的编译,另外一个是嵌入式开发板上的编译。前者是为了利用 P )

嵌入式 L u 平台构建 n i x

硕士论文

P 上丰富的系统资源,以方便嵌入式图形用户界面开发。后者则是交叉编译出 C

Q be d 此m d 的库,以 e d 移植到嵌入式开发板,为最终图形界面的 运行提供调用。 在台 式机上为了 运行嵌 入式设备的 应用程序, 需要使用虚拟帧缓冲qf来模拟嵌入式设 v b
备的图形环境。

. 4 1虚拟帧缓冲 甲伪介绍 . 4

虚拟帧缓冲允许 切 bde 程序在台式机 L x      沱m e d u n i 环境下运行,即 在开发过程 中, 先将Q bde 应用程序编译为x6 此m d e d 8 平台版本, 使其可以 在台式机L u 下的 n i x q 窗口 运行。 b f v 中 在应用程序开发调试完成后, 再将其交叉编译为A M平台的版本, R
然后下载到嵌入式设备中运行。 通过指定显示设备的宽度和颜色深度, 虚拟出来的缓 冲帧和物理的显示设备在每个像素上都保持一致, 这样我们在每次调试应用时不需要 总是刷新嵌入式设备的 F A H存储空间,从而加速了开发进程。 LS
使用虚拟帧缓冲的方法如下:     

) 1 确认¥T 助r 0勺 o 五中的Q 一 O Q e F 是没有被定义的,      I c o 5cng Q D / 1 f t i TN 一 wsv sB 并 且编译Q b e e 库。        dd 此m d ) 2 把q      作为一个普通x6 b f v 8 平台的Q n应用程序来编译并且运行它, 以 而不是 把它作为一个Q b e       此m ed 应用程序来编译。 dd 生成可执行程序后,以命令: v &        qb #f 来启动它。 ) 3 启动一个Q E b e 主程序,命令行中      灯m edd d 使用一 s q 参数,指定将此程序在虚 w 拟帧缓冲窗口       运行:#a 闪w & 中 .p s /p 虚拟帧缓冲qb      vf使用共享存储区 域来模拟一个丘 nbfr 帧缓冲) 并且在一 山 eu ( e , 个窗口中 (v 模拟一个应用来显示帧缓冲。 q伪) 虚拟帧缓冲只是一个开发工具, 在其
设计时没有考虑任何安全问题,所以应避免让它在产品环境中出现。

4 .Q m edd .Z 砚 bde 环境配置 4

面向P 机和开发板的图形界面系统配置在q源文件的选择上没有任何区别,      c t 只
是在编译时的设定上有所不同。 本系统选择的源文件组合列表如下, 此处要注意, 并 不是随意的软件版本都可以 搭配编译的1 1 气

? qeb d .3 一 z     d d .1tg 用于Q 的 装 tre e2. a 一 n 0r . 泥 安 ? qxl . z ql 一 2 用于      3 tg、 xl . - 2 a tl 一 2 . r . - t 3 3 产生一 要的 些必 工具 o ae 2 0 r t jr 一 .. g 提供开发 qp fe31 a - tz . 板的图 界 平台 形 面
mk 一 3t Z tae 1‘ g L a . r
赖 46

用于生成应用工程的M el文件 ki af e

其中, l 一.    qxl 3 只与编译一些t 有关, 如诚 、 c qf Q叩i并不依 - , t 22 o l o c m 、 v ; ta o b qxl tl3 x ll . l: 用来编译q P d k p(oi与桌面同 工具) 如果 . ;qx 一 3 o a so t ti e t q a p 步的 ,

嵌入式L u 平台构建 n i x

硕 士论文

中一个目 录入口的添加和删除对它的大小并没有太多影响,比如前面我们所说的 小 m ,它完全可以省略,因为这个目 。e 录即便出现在根文件系统中也是个空的目录。

. 4 3文件系统的选择 东 为根文件系统选择何种类型的文件系统是一个需要慎重考虑的问题,      在系统所用 的存储设备已 经确定的情况下, 我们通常要从文件系统本身的 性能和我们所开发系统 需要完成的工作等方面来综合分析。 由于嵌入式系统本身的约束,      在嵌入式硬件系统中通常使用F h l 存储器替代通 s a 用P C中的DE硬盘作为系统的存储单元。 在存储器的工作机理上, a 与IE硬 l h Fs D 盘有很大不同, 为充分发挥 F s 的性能, l h a 我们通常建立不同于P C机上的文件系统。

下面列出 嵌入式系统中常用的文件系统及其典型特性泌 : J
表4                              . 1常用嵌入式根文件系统典型特性 文件系统
Cr mF 田 S 」F FS

持久
N /A

写 否

掉电可靠
N /A

可压缩



存在于 R M A
否 否







是 是
否 否

万F Z s


否 否 否

否 否 是 否

E t v e NF L xZo r T
E t0 e R x 、 r AM ds 2 ik


是 是


否 是

E t o e 卜 TL x vr [ 3 F



注: A即N        APc 卜 与 体情 符, 此概念。 N/ t l曲 o pi , 主 况不 无 上表中各特性符号意义如下, 持久”指系统重启文件系统以      “ 后是否会保存对文 件的更改: 掉电可靠”指系统掉电后文件系统的更改可否恢复; 存在于 R 人 ” “ “ 人 复指 最初从存储设备中解压出来的文件系统的内容在被挂载以前,是否会复制到 R M: A 压缩可能是大多数文件系统想要的一个特性, 因为它可以降低嵌入式系统的成本, 增 加系统的 存储容量。 但是具有压缩能力的文件系统, 又需要系统花费时间和资 源去压

缩和解压文件。 从这些方面综合考虑可以 看出, 虽然通用L u 系 i x 统支持的文件系统 n 很多, 但在所有典型指标上都表现优秀、适合嵌入式 L u i x系统应用的文件系统却 n
很有限.

在本嵌入式系统环境下, 存和外存资源都相对有限,      内 需要节约使用。 如果使用

RM I A D K方式来使用文 统, s 件系 那么在系 统运行时 首先要把外存 lh 映 少a ) s上的 像文
件解压缩到R M中, A 构造起R M〕 K环境, A IS I 然后才能开始运行程序。 这种工作方 式有一个致命的弱点:正常情况下,同样的代码不仅在外存中占 据空间( 以压缩后的

硕士论文

基于Lnx i 的嵌入式监控系统软件平台研究与设计 u

形式存在) 而 , 且还在内 存中占 更大的空间 以 用了 ( 解压缩之后的 形式存在) 这违背了 ,
嵌入式环境下节省系统资源的要求。

使用 Ca      是解决上述问 方式之一。C 叮 5 r 正5 n 题的 拍 正 是一个压缩式的文件系统, 它并不需要一次性地将文件系统中的所有内容都解压缩到R M中, A 而只是在系统需 要访问 某个位置的数据的时侯, 马上计算出该数据在 ca F rm S中的位置, 并将其实时 地解压缩到 R M 中,然后通过对 R M的访问来获取文件系统中需要读取的数据。 A A Ca F r叮 S中的解压缩以及解压缩之后的 R M 中数据存放位置都是由CaL J A rF . S文件系 统本身进行维护的, 用户并不需要了解具体的实现过程, 因此这种方式增强了 访问的 透明度,对开发人员来说既方便又节省了存储空间。 对具体的应用来说,      选择一个最适合的文件系统或者联合最适合的文件系统是我 们的最大目 我们可以根据文件系统的特性来比较各个备选文件系统, 标。 以使我们得 到最佳的选择。 比如在本系统应用中, 系统不需要持久地保存数据, 此时选择具有持 久性数据存储能力的文件系统 ( JF2 就没有任何必要,对这样的系统而言, 如FS )
C 双F 文件系统将会是更好的选择. nn S 以上分析只是一个概要,      在实际的嵌入式应用中, 每一个系统都会有各 自的要求 和限制, 此时就要根据具体的需求选择最适宜的配置方案。 在我们构建本系统时, 上

述分析给了我们一个系统最终配置的基本思路。 最终, 我们根据目 标板上配备的存储

设 类 、 及 统 求 特 , 定 用C 叮s 建 们的 文 系 备 型 大小 系 需 等 点 决 选 r F 来构 我 根 件 统。 J a
. 4 月C m S 5 r F 创建的主要步骤 a

) 1 构造根文件系统目      录树 在对根文件系统和文件系统的结构有了一个大致的了解以后,根据项 目      的需求, 开始为我们的系统应用创建根文件系统目 录。 首先,进入我们设定好的工程 目      录:
弃 ¥P J 0 T/ t     R 0 } o 记 {R o s r f

在根目      录建立lur n C i 父 文件, 容如下: 其内
荆儿五 S 刀h

# 挂载阳c ”伪 并从厄 吮 c t为n” , 浏 t下拷贝文件到阳 录中; 忱目
e h f u teca r n ” c o’ n /t s 出 f mo s 儿1 可mo n 一 u tn一r n r n 山 f a 伪念t s j c

儿回七 一/叮 e l阳 p a切 灯t * 枕 c

e e s l 苗t x cZb川1

嵌入式 L l 平台构建 ml x

硕士论文

其中, . 部分是本系统初始化内容,      ” “ … 内核配置部分我们已 经对系统的启动方 式进行了改造, 此文件就是系统启动时将调用的初始化文件; 然后创建如下基本目录:      # 山 i i e e i n Q0 a r sn V      dv l 1 t t iP c iura 比db rn t b n P o b s r c

这些目 是系统运行必须的,      录 其中你 P 用来存放我们前 。 a i 面编译的Q b e d 在m d s d
文件。

现在,      经建立起来了 件系统的 我们已 根文 框架, 其结构如图4 所示。 . 3 剩下我们
的任务就是把各种软件组件放置在合适的目 录中。
/‘一一一下一一一 一 i        b n

赫 咖 etc 衅 Iib 姗 卿 耐 Qtol

bin sbin lib




h 脚本文件。* l / l u 了 / 此文件为启动脚本,是一s e l i 、c * n
bs C ah r

图4 J本系统的根文件系统目 录树

2 移植 uy o      丑 sB l )

根文件系统要实现基本的功能,      必须包含一个常用工具集 ( m d、 h o、 如: k仓 。 d m 5 e o等) 如果直接移植P 1 r ot , 、b C机L u 系统中的命令文件, 用大量存储空间。 i义 n 将占 经测试发现,即便全部使用静态编译 ( 用动态连接库方式将占 用更多空间) 大概也 , 达到 Z B 3 B大小,这对于存储空间极为珍贵的嵌入式系统而言显然不太现实. M  ̄M 为此在本系统开发中我们选用了 Bs o 工具, uB yx 这是一个能够以 一个体积很小的 应 用程序提供几乎整个命令集功能的工具包。当然这些命令的参数选项要少于 P C机 i x L u 中命令的参数选项,但也足以满足嵌入式系统的基本需求。 n

B 姆o 可以 其官方网 (t 叭切.s o刀灯 上下      从 s u x 站 h 刃 邝胃u b e) 载到, 统中 t P b yx 本系 我们 选用的 版本是bs o一2 。 u bx1 . 根据源码包中的说明, y 2 可以很方便地交叉编译后移植使
用,其编译与L u 内核编译比较相似。 访x

配置B yx      o 时需要注意下面一些功能 s u B 选项: ① Bi od     p姗 : ul d

硕士论文

墓于Lnx iu 的嵌入式监控系统软件平台研究与设计

1 B d u B a st m 丁( h e l幻          atib 田 n sa di * u B s o s ac ]i l yx o r b 说明:此选项必须选择,      只有这样才能把 b yo 编译成静态链接的可执行文件, s x ub

从而在运行时独立于其他函数库,否则必须得到其它库文件的支持才能运行, 在孤立
的 1u 1 x内核下将不能正常工作; n

② 1 D o wno ud u B i C sCm i     yu a tb 1B s o wta r s o pe * o 1 t l yx h o 1 r 说明:选择前面建立的交叉编译器 a 一nx;      n I ’ i x lu一 ③ h tl n Po      o 0 tn: 坦a l i t a l S

[ dn u /r        *o , su ] te s
说明:此选项如果不选中, aei tl bs o 将安装在宿主机系统的 s      m n a 后 u yx k sl b u / r 下, 这可能覆盖系统原有的 命令。 选择这个选项后, a itl m e拙 a 会在bs o 录下 k l u bx目 y 生成一个叫j a 的目 t s l n l 录,里面有bs o 和指向 ub yx 它的链接。 成功编译 B yx      u o 后,将编译好的bs o 复制到根文件系统的 i 录下, s B ub yx 儿n目
然后创建常用命令的符号链接即可。 ) 3 创建配置文件     

系统启动和运行过程中需要读取保存启动和设置参数、加载信息等的配置文件,      这些需要我们根据系统的实际需求, 通过建立、 修改配置文件进行手工设定。 本系统
创建的主要配置文件有:

, t o 在其中    r e Zc f e币 i l 设置动态库的 搜索路径 ( 极重要) 及系统环境变量; ,以
儿c t      为 功。n 提供各种文件系统的挂载信息; tfa / b s ut /c川t      描述系统引导和正常运行时启动的各种进程; e方 t t b a

儿cn . s      c 由面t tid 八 / t r 运行的启动脚本;

阳cn . 叨叨n 由访 运行的停止脚本,卸载文件系统;     皿 ti出 乃t t s f n 阳cnt n      o 经过修改的示例配置文件, t e .f 乃 d c 用于代理监听tnt的2 端口。 e ee 3 】d it nd

和此配置文件均可从B yo 中得到。 s u x B ) 4 在l      目 d v e 录下创建设备 包括字符设备 似勿0 s, s, no 刀 l n l 和块设备 r ,这是运行      , o tl csf u,s e y t y o e l o o c m a L u 所需的基本设备。创建这些设备的命令如下: n i x
弃      06 t c 0 创肋。 一 66 d y 5

创建一个字符设 t, 备号 5      备 y 主设 ,次设备号 0 访问 , 权限 6 “。
弃 止刀。 n 0 6 I bll      s 1 6 0介 l 。 de n

犷    创建一个块设备 r , m a 主设备号 1 次设备号 1 访问 , , 权限 60 剩余的设备均 。
可仿照这种方式建立。

弓 制作 C m S ) a r F

以 上步骤完成后, 再将系统运行需要的模块、 类库、 程序等复制到根文件系统中,

嵌入式L 以 平台构建 n i

硕士论文

并配置好相应的参数,即可制作Ca 几了。我们可以下载 C 幻 文件包,编译后将 r力 J rl af s 生成 幻 c m 和c n c 两个工具,其中m c l 工具用于创建Ca f文件系统 止r f r f as 出s k k af rl l s rO r s 的,而 c 云 k工具则用来进行 Ca 伪文件系统的释放及检查。下面是 欢 c f m a r c r m 山r s 翻 的命令格式:
伪n c mf r 1 /o t r ”        o伪 ro c别 f kr s o a . s f s

至此我们已      经建立起C翻伪 r 格式的根文件系统r t.翻 f 本系统最终得到的 o fc m 。 o rs s 根文件系统大小为2.兆。 29 . 4 ‘本章小结 本章结合系统的需求, 构建嵌入式L 系统为主线,      以 i x u n 依次对主机上交叉编译 环境的建立, 嵌入式B 。 e 。比帕dr 、内核、 图形用户界面系统及根文件系统的移植等方 面进行了 研究, 构建了 一个完整的嵌入式 L u 系统应用平台。 川x 此系统平台移植到嵌
入式开发板后能成功启动,其启动信息如下页图4 。 . 4

本章所述是本次开发的主要内容,与前人所做工作的主要区别有:      1 采用最新版本的L lZ      、 i l. nx 6内核进行系统构建, .的L xk川 l 2 6 i e e针对嵌入 u n

式应用做了一定的 优化, 比如系统实时性有很大改善。 虽然开发难度加大, 但嵌入式
系统的整体性能有很大提高; 2 不再局限于仅使用 L u kr l      、 m x e e默认的菜单式裁剪方法进行内核配置,例如 n

通过直接修改内 核源代码实现了 对大规格液晶屏( 0 3 的支持; 6 *0 44 ) 3 针对系统构建的实际情况,改变了传统的Ln 启动方式;      、 iu x 4      泥m e e 的图形用户界面系统移植到嵌入式系统中, 、把基于Q b d d d 为监控系统 的开发提供图形界面支持。此外, 面向对象的 Q 语言也为应用程序的模块化编程提 t
供了条件,进而为监控系统的通用性奠定了基础;

5 所有模块组件在保证系统稳定性的前提下,      、 均选用较新的软件版本构建, 从
而更好地发挥系统硬件的性能。 至此,嵌入式 L 系统已      i x u n 经构建完成,其中系统内核大小为 97 ,根文件系 3K 统为 2乃兆,具有完善的o 图形用户界面系统支持。 t

硕士论文

基于Lnx iu 的嵌入式监控系统软件平台研究与设计

5 系统调试与测试
当系统构建完成后,      还要对其进行功能、 稳定性等方面的调试, 这是开发过程中 必不可少的环节1 。 3 2 本系统开发过程中, 】 我们采用多种调试方法, 分别对L 内 x u m 核、 嵌入式系统平台及监控系统程序进行了 功能调试。如在内 核配置中, 使用 Pn o ik rt 函 数对内核进行了 调试; 应用程序开发时则使用 G B 结合传统的p t D, n i 方式进行调试。 rf 结果表明, 上述方法能够完成一般的系统调试任务。 下面对常用的嵌入式系统调试方 法加以 分析,并对本课题所用方法进行着重讨论。
. 5 1开发调试时系统间的连接模式

在嵌入式系统开发调试过程中, 方便加载开发主机上的文件到开发板上的嵌      为了 入式环境下,我们首先把开发主机和开发板直接连接起来。常用的连接模式有 F 、 作 NS F 、串口等,比 较这几种模式的优劣,我们在本系统的开发和调试过程中选择使用 N S( F 网络文件系统)的方式连接开发主机和嵌入式开发板。 F 允许开发主机将其 NS 任意的目 录或文件共享给嵌入式L u 系统。 ix n 通过 N S 嵌入式系统上的用户和应用 F, 程序可以 直接访问 宿主机系统中的文件,就象它们是本地文件一样[。 ] 4
通过 N S      模式进行调试的流程如下图所示: F
调试开始

在宿主机的 下 共享目 N5 录
下编辑、交叉编译应用程 序           

在嵌入式Ln 系统中挂 iu x 载宿主机的 F 共享目 NS 录

有错误?

在嵌入式Lnx l 系统的挂 u 载目录下执行应用程序

调试结束

图5 N S . F 方式下的 I 应用程序调试流程图

系统 调试 与测试

硕士论文

使用N S最显著的优点有:      F

) 入式平台的可执行文件仍然保留在开发主机上,方便后续的修改: 1嵌      ) 2 嵌入式开发板可以      使用更少的 磁盘空间, 因为常用数据可以 被保存在开发主机
上,并让网络上的其它系统可以访问它;       

) 3 不需      要为用户在嵌入式开发板 上设置 一个用户目 宿主机 ( 录, 丽5服务 器)
上的N S目        F 录可以直接挂载到目 标版上的任一目 录节点下。

NS      F 方式首先在L 服务器上编辑源文件, i x u n 然后交叉编译, 最后生成可执行文 件,生成的可执行文件通过 N S方式挂载到 L 服务器的共享分区,让应用程序 F x u m 可以直接运行在嵌入式目 标系统, 并进行调试 ( 调试的流程见图5 ) N S . 。 F 方式需要 1 iu Ln 服务器端和嵌入式目 x 标系统端均能支持N S F 文件系统。 L 内核的配置、 在 m x u 编译过程中,己经提供对 N S F 服务的支持,因此只需再在宿主机上对N S F 服务进行 相应的配置, 这里我们既可利用终端的命令操作进行配置, 也可利用 R 业aL 通 et l x u n
过菜单操作进行配置。

基于嵌入式L      l 的系统开发的调试工作通常可以分为两部分: x u n ①嵌入式 L      l 内核调试; x u n ②在第一步的      基础上调试嵌入式应用程序。 . 5 2调试L 肛 内核 加 在 Lu      核开发的过程中不可避免地会面对如何调试内核的问题。但是,由 n i 粥内 于 L 系统的开发者出于保证内核代码正确性的考虑,没有在 L i x u n i x u n 内核源代码 树中加入一个调试器。 他们认为内核中的调试器会误导开发者, 从而引入不良的修正。 所以如何对 L O m x内核进行调试一直是内核级系统开发中一个棘手的问题。调试工 作的艰苦性是内 核级的开发区别于用户级开发的一个显著特点。 尽管缺乏一种内置的 调试内 核的有效方法, 但是 L x u m 系统在内 核的发展过程中也逐渐形成了 一些监视 内 核代码和 错误跟踪的技术。 同时, 许多的补丁程序应运而生, 它们为标准内核附 加 了内核调试的 支持。 尽管这些补丁有些并不被 L u i x官方组织认可,但它们确实功 n 能完善、 强大。 调试内 核问题时, 利用这些工具与 方法跟踪内 核执行情况, 并查看其 内存和数据结构将是非常有用的。 当前在嵌入式开发领域有多种成熟的内核调试方法 可供选择,下面我们选取几种常见的方法予以 分析.

. 5 1输出 . 2 调试

最 见 调      术 监视, 在应 序 程中, 些 的 调用州袱 常 的 试技 就是 即 用程 编 在一 适当 地点
输出监视信息。 但在调试内核时, 系统还没有加载 C库, 所以就需要使用一个替代 函数: 巧l 来完成相同的工作。 n O pn o k i rk Pt 是调试内 核代码时最常用的一种技术, 通过 在内核代码中的 特定位置加入 pn o rt 调试调用, 直接把需要的调试信息输出 ik 可以 到
5 8

硕士论文

基于L x 的嵌入式监控系统软件平台研究与设计 如u

控制台上, 从而可以 观察程序的执行路径和所关心的变量、 指针等信息。 . l rt 5 L pn . 2 i k使用方法

虽 rt 完成pn 类似的     可以 然pn ik if rt 工作, 者之间 但两 还是存在着一些不同. 其中 一 个差别就是, tt通过给消息附 pn ik 加不同日 志级别 ( l e , l e l 或者说消息优先级, g o v) 可 pn 根据这些级别所标示的 让 rt ik 重要程度, 对消息 进行分类。 在默认的情况 下,
p t 将消息打印到当前控制台上,这个控制台可以是一个字符模式的终端或打印 ik m
机。

Lu内      l x 核采用宏来指示日 n 志级别, E 功 - R 就是一个可以使用的消息日 如K 陡 R , E 志级别。在 L u 内核头文件<nx e e卜中系统定义了8 n i x l u/ m l I k 个日志级别字符串,分
列如下:

) E 火E E G用于紧急事件消息, l K咫      M R 它们一般是系统崩溃之前提示的消息; ) 卫N 2 KRA E      - L R 用于需要立即采取动作的 T 情况: ) 卫N I 3 K R C T 界状态,      扁R 临 通常涉及严重的 硬件或软件 操作失 败: ) 4 卫 NE R   K R R 用于报告错误状态, 设备驱动程序会经常使用 K 又 - R E 叹R E
来报告来 自          硬件的问题;

) 5 KR      叭 N G 对可能出 E N认 R I N 现问 题的情况发出警告, 这类情况通常不会对
系统造成严重问题:     

e K R 一O C E NN T E有必要进行提示的 I 正常情 许多与 形。 安全相关的 状况用这
个级别进行汇报; K R IF 提示性信息。 卫 NN O 很多驱动程序在启动的时候, 以这个级别打印出
它们找到的硬件信息;

K R D B G 用于调试信息。 E N EU

以上字符串 以      ( 宏的形式展开) 分别代表一个尖括号中的整数。 整数值的范围从 0 7 到 ,数值越小,优先级就越高。 在编译时日      志级别宏将展开为一个字符串, 预处理器将其和消息文本拼接在一 由

起, 这也就是为什么Pn 语句中优先级和格式字串间没有逗号的原因。 ik rt 下面是一个 打印 调试信息的po 典型 丘 k 示例: t Pn (卫      tD B G’e i % , 一I J; ik rtK 田 E U . rs 细” He : _ L - E 在没有指      定 优 先 级 的 情 况 下 ,p t 语 句 将 使 用 默 认 级 别 : n i rk

D FU TM sA 几不 G E E , EA L E G O Lv L 这是一个在k epn .中 e lr c 定义的 n k ’ i I /t 整数值。 在
L u 内核的开发过程中,不同的内 n i戒 核版本中这个默认的级别并没有统一的级别值,
因此我们需要始终为其指定一个确定的整数值,从而更有效地输出调试信息。 调试过程中,内核将根据消息的日志级别,有选择地将其输出到当前控制台上。     

选择的策略是将消息与 。 ‘1 g e 进行级别比较,如果消息的数值低于 如。 l l 习。 e v

系 统调试 与测试

硕 士论 文

osl e 的 cno gl l 数值时, 其优先级较高, 习o v e 表明 那么该消息 将被输出到控制台上, 否 则将不予输出。 如果系统同时运行了k g 和s l 无论c o o ee为何值, l d yo o s 朗, s n 屯l v of g l l 内 核会默认将消息追加到/ O/e ae 中 ( v 9 s gs 具体处理方式依赖于对 ssg 的设 A t a m yo ld 置) 如果 k g 。 i d没有运行, o 这些消息就不会传递到用户空间, 这种情况下就只好查

看 加o mg了 r瓜 s 。 c
D F U Tc N O 几L G v L是变量 c l ole (      0 S L O E E E L A L s l n - v o e g e l 控制台日 志级别) 初始化值,必要时可以 通过调用k 朗,指定一选项来修改此变量。 l 。 c 但在修改之前, 必须先终止当前的k d 再用一选项重新启动k 朗。 l , c g o l 。 此外, 我们还可以编写程序来 改变控制台日 志级别。 修改时 c l I l e可以 e s a o e o e l 被指定为一个 ! 8之间的任 ‘ gv 到 一整数值,如果值被设为 1 ,则只有级别为 0( E NE E G 的消息才被输出 K R 一M R ) 到控制台;如果设为 8 则包括调试信息在内的所有消息都能 , 显示出来。

在本系统内      核版本下,我们可以 通过文本文件/os 瓜 e i 来读取和修 p cy e 峥r r/ r sn k t n
改控制台的日志级别。 此文件容纳了4 个整数值, 前面两个分别表示控制台的当前日

志级别和默认日 志级别。 通过简单地输入命令: 。 o >p cy e epn 可以 #c s /os 瓜 r lrt h r zs n /ik
来显示所有的内核消息。

此外,在发生内      核错误时, 错误处理代码会将 cn 习。le增为其最大值, os l o gvl e 从而导致之后所有的消息都被输出到控制台。因此在调试时如果经常遇到内 核错误,
就有必要降低日 志级别, 这在远程调试内核, 并且是交互式会话而未使用文本控制台 的情况下,是很有帮助的。

. . 山取的 记录 51p . 22 消息 如n 函数使用一个循环缓冲区来记录消息,这个循环缓冲区的长度为      k t o ‘t  ̄E 定义在 kn 峥rt 中) L G Bj L ( FN el ik 。 n. c 字节。使用循环缓冲区的好处是可以 可
以随时覆盖掉那些不会再去读的消息记录, 从而循环使用系统内 存区域, 使内存的浪

费减到最少。 dt函 pn 数首先将消息写入循环缓冲区 然后唤醒任何正在等待消息 k 后, 的进程,即那些睡眠在s l 系统调用上的进程, s g yo 或者读取币o m s r瓜 e c g的进程。 这

两个进程的访问 几乎 接口 是等价的,区别仅在于 7 o e 行读操作时日 缓 刘pc s r加n g进 志 冲区中被读取的数据就不再保留, yo 系统调用却能随意地返回日 而s l sg 志数据, 并保 留 这些数据以供其它进程使用。 一般而言, / c 读 r 文件要容易些, P o 这使它成为k g o l d
的默认方法。

手工读取内 息时, 止k g 之后, 发 p c 件很象一个R o      核消 在停 l d o 可以 现zo文 r F , 读进程会阻塞在里面以 等待更多的数据。显然,如果已 经有 k 醉 或其它的进程正 o l
在读取相同的数据, 就不能采用这种方法进行消息读取, 因为会与 这些进程发生竞争。

如果      循环缓冲区 满了 pl 就绕回缓冲区 起始处重新 填 , rt ik l 的 填写数据,新的 据 数
将覆盖掉陈旧的 数据, 于是记录进程就会丢失最早的数据。 但鉴于使用循环缓冲区 所


硕士论文

基于 Ln 的嵌入式监控系统软件平台研究与设计 it x j

带来的 好处, 题可以 此问 忽略不计。 i x Ln 消息处理方法的另一个特点是,可以 u 在任 何地方调用p t 甚至在中断处理函数中也可以 n i , rk 调用, 而且对数据量的大小没有限 制,这也导致系统可能丢失某些消息。
乐 1 关闭消息 . 23

在系统开发的初期阶段, 核源码中      在内 插入州n 语句是一种很好的调试和测试 k t
内核代码的方法。 但是在内核调试结束后,将不再需要如此详尽地了解内核消息,

pn 语句的 r i k t 执行也 就没有必要, 此时就应该 这些调试语句, 删除 或至少把它们注释
掉,然后重新编译内核。

. 5 2查询调试 . 2

使 rk 数     函 进行内 用pn i i 核调试时, 于s f 会一直保持对其输出 由 yo s g d 文件的同 步 刷新, 每输出一行都会引起一次存储操作, 因此大量使用pn 会严重降低系统性能。 ik rt
为避免此种情况, 我们可以只在需要的时候去查询信息, 而不是持续不断的生成消息

数据, 这可以 通过使用巾倪文件系统来实现。 r /o 文件系      统是一 pc r 个虚拟文件系统, 通过它 使用一 可以 种新的 方法在 L 以 内 i n 核空间 和用户空间之间 进行通信。 p c文件系统中, 在/ o r 我们可以 将对虚拟文件的 读
写作为与内核中实体进行通信的一种手段, 但是与普通文件不同的是, 这些虚拟文件
的内容都是动态创建的。

L 内      创建 p c x u m 核负责 /o 文件系统, 核利用它向 r 内 外界输出 信息。 作为一个虚拟
文件系统,不管是 r 录还是其子目 P j c目 o 录和文件都不真正地存在。 但是如果打开这 个 目 却会看到这些 “ 录, 文件” “ 录” 和 目 是存在的, 而且其中的内容会随时间改变。 系统启动时,p c文件系统象一个真正的文件系统一样向 /o r 虚拟文件系统注册。随后 当有对/o 文件中的文件和目 pc r 录的读写请求发生时, S F V 系统将从核心中的数据中 临时构造这些文件和目 录.内核会通过 p c文件系统提供系统的统计数值和进程信 r o 息。当你尝试存取/ c下文件时,内 P m 核会产生相应的 信息作为文件内 容。借助于这 一特性, 我们可以 方便地从巾o 中查询内 运行信息, r c 核的 进而达到调试的目 的。
. 5 3监视调试 . 2 除上边的两种调试方法外,      我们还可以通过监视用户空间中程序的运行状况, 来 比如使用调试 发现运行中出现的问题 监视用户空间程序的工作状况有很多种方法, 仕c 器一步步跟踪程序执行 插入打印语句、或者在 5ae状态下运行程序。在 内核代
tc 的方法最值得关注,下面我们对其进行说明。 r 码的调试过程中,利用 sae sa      r e命令是一个功能非常强大的工具, tc 它不仅可以显示程序所调用的所有系统 调用, 而且能够显示调用参数及用符号形式表示的返回值。 当系统调用失败时, 错误

的符号值 ( E o E 和对应的 如 N M M) 字符串 ( 以om m r) 如0 f e o 都能被显示出 y 来.

系统调试与测试

硕士论文

sae有许多命令行选项,最为有用的是 峨 用来显示调用发生的时间: tc r , 汀,显示调

用所花费的时间; 一 限定被跟踪的调用类型;。 将输出重定向到一个文件中。 e , 一 , 默
认情况下,5ae 打 c 将跟踪信息输出到s e 上。 tr d

sa 从内核中 信息,      接收 tc re 这意味 着一个程序无论是否 试方式 按调 编译( c 用g c的
一选项) 或是被去掉了 符号信息都可以 被跟踪。 r e甚至能 滋a c 够查找到系统调用运行

时的 细微错误,通常应 用或演示 程序中的pT 调用在用于 试时 都不 Oo r 调 信息 够详细,
而 sa tc r e能够确切查明系统调用的哪个参数引发了 错误, 这一点 对调试是大有帮助
的。

命令生成的跟踪信息通常进一步生成错误报告,      资深的内 核编程人员可以从这些 报告中发现很多有用的调试信息。 如果觉得 5ae 仕c 的输出中符号过于繁杂, 我们可以 只监视文件方法 ( 叩即, a 犯 d等) 是如何工作的。 . 5 4内 . 2 核调试器(D 调试 KB )
在最初构建  ̄      L 内 核时,由于L 不信任交互式的调试器,他担心这些调试 i s u n 器会导致一些不良的修改, 也就是说修补的仅是一些表面现象, 而没有发现问 题的真

正原因所在,因此就没有在内核中内建调试器。事实上我们完全可以 使用 L i x u n 内 核调试器 ( l ) K〕 来调试L u 内核, B lx n 这个恰如其名的工具实 质上是内 核代码的一个 补丁,它允许开发者访问内 核内 存和数据结构。K B 的主要优点之一就是它不需要 D
通过另一台机器进行调试,你可以调试正在运行的内核.

设置一台用于 K B的机器需要花费一些工作,      D 因为需要给内核打补丁并进行重
新编译,此处不再详述。

使用K B进行内      D 核调试时通常涉及这样一个问 题:是使用调试器 ( 或任何其它 工具) 找到问题的根源, 还是使用源代码来跟踪导致问题的 根源。 情况是, 实际 仅仅 使用源代码来跟踪导致问 题的根源是极其困难的, 只有熟练的内核开发者才有可能做 得到。 所以大多数的内核开发者往往依靠调试器来修正错误, 而这种方法有时只会修 正表面症状而不能解决真正的问 这种不正确的问题解决方案的典型示例是添加错 题。
误处理代码来处理 N I U L指针或错误的引用,却没有查出无效引用的真正原因。

综合上述情况,      将研究代码和使用调试工具相结合不失为 一种识别和修正问 题的 最佳方案。 首先使用调试器找到错误的位置, 确认症状 ( 在某些情况下还有起因) , 确定变量的值以及确定程序是如何出现这种情况的, 然后通过分析代码来找到问题的 根源并加以 修改。 此种方案可以 很好地发挥两种方法的长处, 提高内 核调试的效率。 ” 调试嵌入式应用程序 如前所述,      调试嵌入式应用程序时 通常需要在主机和目 标板之间建立嵌入式调试 环境 ( F ,以方便调试工作。 如N s )
2 6

硕士论文

墓于Ln 的嵌入式监控系统软件平台研究与设计 iu x

5 . 使用 G B调试 3 1 D

GB      N eug , 由软件联盟( e 。w e Onao, S 推出 D ,即G UDBge 是自 r F s丘 a Fud i FF e r r t n )
的主要软件工具之一。 在应用程序运行时, 它使用户能够观察到程序的内部结构和运

行情况以 及内存的使用情况1 。 ] 4 对嵌入式系统开发来说, b最重要的      d g 特性就是运行 g 的 b d 宿主机能 够通过串
口 或者网口 连接到目 标板上, 对运行状态下的应用软件进行远程调试, 允许开发者查 看源代码、以步进方式调试程序代码、设置断点、 检验内 存、设置观察点, 并同 嵌入 式开发板交换信息。 使用gb d 进行调试前需要在程序编译时使用一打开调试选项, 9 从

而在程序中加入调试信息。 d 利用调试信息 gb 在源代码和机器码之间建立关联. 下面是本系统的gb      d 调试过程: 嵌入式开发中, ds 在目      gb v r e 标板上运行, 宿主机上运行的是一个针对目 标板

的g 。 宿主 d 开发 机与目 板 b 标 通过以 连接, 太网 宿主机的P地址为14 . , 标 . 1 0 31 目 板 .
的I地址为14 . ,目 P . 1 标板上用来监听g 的端口 03 .2 b d 号是22 22 0 ) 1 首先通过m i 在目      访c m o 标板上启动 gb ds : v r e
#g s vro ? 1 22 yp     el?31: 2 m aP b r de 4. 2

说明: y p      p 为用户应用程序可执行文件名, ma 已置于目 标板几n目 I 录下; ) 2 通过另一终端在宿主机上使用a l g 命令连接至gb r :      - n b n i d - x u ds e e v
弃n 一n 一d m aP     xgb yP an1 u 1

然后将出现gb      d 提示符: d ; g ( ) b ) 3 在gb     提示符下运行命令: d
( b姗g r t o . : 2      te o l.3 2 22 g ) e m e 4 12 d 此时在 n c     垃 o 中将出现提示: 云 m
R m td ug 加 ot 0 31      bglg mhs1 4 . eo e e n . .
(d )      gb

连接成功,这时即可输入gb 命令来调试嵌入式应用程序了.      d的
5 入2使用硬件调试工具

使用硬件调试工具比软件工具更有效一些,      但是硬件调试工具的一个缺点就是它 们价格昂贵。目 前嵌入式软件一般采用JA B M 的调试工具,大部分的商业嵌 T G和 D 入式开发板上都提供了J G或B M接口。 A T D 使用硬件调试可以参看相关的硬件调试
手册盗

5 3使 rt 语句 人 用p f n i 打印
在认为没有把握的程序语句中, 插入p t n i 打印语句, rf 在执行应用程序代码时将

系统调试 与测试

硕 士论文

会很快发现代码执行错误的地方,这种方法的关键是要判断代码容易出错的位置。 . 5 4系统测试

系统测试是系统调试完成后要进入的一个很重要的开发阶段。      通常而言, 嵌入式 系统的系统测试就是将开发的软件系统 ( 包括嵌入式操作系统和嵌入式应用软件) 、 硬件系统和其它相关因素 ( 如人员的操作、 数据的获取等) 综合起来, 对整个产品进 行的全面测试的过程。 嵌入式系统软件的测试工作和通用P C机应用软件的测试工作 有不少共同 之处, 但也存在着许多重要的区别。 如嵌入式开发人员经常使用一些基 比 于硬件的测试工具,这些工具通常不会在通用计算机应用软件开发中出现。
在开始系统测试工作前,      开发人员就要对测试的目的有清晰的认识, 只有这样才

能知道应该对系统进行哪种测试和确定在什么时间开始测试。 一般来说测试的目的有 四个方面:寻找错误、减少风险、节约成本、提高性能,这四个方面是层层递进的。 在开发过程中, 为了减少不良的设计增加后续维护费用的可能, 应该在尽可能早的时 间开始测试, 如由 比 初始开发人员 进行的模块级单元测试。 如果直到系统集成时才开 始进行系统测试, 许多本可以在单元测试时就发现的错误可能就一直隐藏到最后, 给 系统开发造成巨大的损失。 本系统开发过程中,      我们依次进行了四种测试: 单元测试、 集成测试、 功能测试、 性能测试。 其中, 单元测试是指对软件设计中的最小模块进行错误排查; 集成测试则 是将部分或所有模块组装成 ( 系统进行综合测试; 子) 功能测试用于验证系统的功能 或其它特性与需求分析是否一致,能否满足用户的要求;性能测试则是将软件系统、 硬件系统、 操作人员等系统要素结合起来, 在实际 运行环境下, 对嵌入式系统进行一
系列的功能测试。

本系统重点对应用程序的工作流程、      可靠性、 性能等方面进行了 测试, 测试平台
如下:
平台 C U主频 PZ
P nl .4 Hz e t m42 G u

表5                                 . 1系统测试平台
内存 264 刃 s 5入B e
显示系统

F O设备
s P Z JB    八 S

宿主机平台

C T q几 模 拟 R+ V
F      f t 拍me u B e

C / 0MIR 4 /」5

嵌入式平台

E9 5 口 2 P3 ( 90 1 a x ) t
20      0 侧HZ

60 8 L D 4 X4 C O

创卜 e 助 s

U /y*      B st s

十F 田】 U fr r 1 丘 出 e

邝 4几C 口 5 D接口

系统测试结果如下:

( 上电 ) 1 后系统能在 1 ̄巧秒内启动到主界面, 0 有测量数据显示; 0 2 秒内 2 () 正常工作时C U负载率小于 5%,系统响应时间小于 1; P 0 5
3 ( ) 数据刷新频率超过 2 次渺 ,L D显示分辨率认到 6O 8 : 3 C 4 X4 。

系统调试 与测试

硕 士论文

. 5 5本章小结 本章分析了嵌入式L 系统的调试方法,      x u m 并对开发调试时宿主机与目 标板的连 接模式进行了补充。重点介绍了本课题所用的几种内核调试方式和应用程序调试方 式,然后对系统测试进行了一定的分析,并给出了 本系统的一些测试结果。

硕士论文

墓于 L u 的嵌入式监控系统软件平台研究与设计 n ix

6 总结与展望
作为一个遵循 O L 标准的 U 汰系统, l 的通用性是毋庸置疑的。其内      P SK 类 刊 Lu n x 核经过适当的剪裁、移植,即可用于如工业监控设备、网络通讯设备和 P A等嵌入 D 式系统中。 其基于嵌入式平台的文件系统也有很多类型可供选择, 用户可以 根据实际 需要进行自 配置。 由的 本课题所进行的嵌入式L l 监控系统的研究和实现充分利用 让x u 了L u 作为嵌入式操作系统的 n i x 诸多优势, 并结合 Q E bde 构建了具有图形界面 创m e d 支持的嵌入式系统平台,这种系统构建模式是目 前监控系统开发领域中的研究热点。
现将本论文的工作简要总结如下:     

首先,      本论文对嵌入式系统的总体情况做了概要性的阐述, L u 操作系统及 对 lx n 将其用于嵌入式系统的优势进行了一定的调查分析。 O E S被引入到嵌入式系统平台 的时间虽然不长,但 L 仍以 i x u n 其众多的优势成为嵌入式开发中的新兴力量。 其次,      P 9 5 对基于E 3 嵌入式平台的电 1 力设备监控系统进行了 分析和设计。 重点
讨论了监控系统的体系结构、工作流、数据流等,具有一定的普遍性。

第三,      解决了嵌入式监控系统平台搭建的问题, 为应用层监控程序的开发提供了 稳定的嵌入式L u 系统支持。 ix n 本文只对系统改造的关键环节进行了说明, i 如对L x u n Km l e e的改造、 L 默认启动机制的改进等。 对 m x u 对开发过程中技术己经成熟的部分,
本文不加赘述。 第四,      分析了在嵌入式 Lnx i 操作系统的移植过程中所遇到的问 u 题以及移植的关

键技术。 于是初次研究操作系统的 由 移植, 此在移植过程中遇到了 因 不少问 文中 题,
一并对其进行了总结。

第五,      最后介绍了 如何在嵌入式L u 平台 n i x 上构建图 形用户界面系统, 具体描述

了Q E b d 在L u 系统中的 灯m de i x e d n 移植过 程。
本课题只是对嵌入式 L u 做了      i x 初步的研究, n 并将其成功地移植到E 9巧嵌入 P 3 式平台 然后在其上构建了 上, 针对电力设备的 通用监控系统。 于笔者的水平及时间 由 所限, 工作中 还有许多方面可以继续加以 完善和深化. 譬如对图形用户界面系统的构 建而言, 然基于Q bde 的设计思想和体系结构已 虽 泥m d e d 经成熟, 但作为一个意图为 所有操作系统提供图形界面支持的 G I U 系统,其框架十分之大, 源代码即已 达百兆 之多。 本系统对其只是进行了 粗略的配置, 所以尚 包含较多冗余, 整个系统也就显得 比 较庞大, 核和文件系统的配置也存在同 内 样的问题。 在后续的工作中, 从减小系统 体积及提高系统效率的角度出发,可以在这些方面进行更深入的研究。

硕士论文

基于Lnx iu 的嵌入式监控系统软件平台研究与设计





“ 然后知不足” 硕士课题的      学, , 研究不是一件简单的事, 从最初选题时的自 信, 到研究过程中设计方案的修正、 系统功能的完善, 及至论文的最后完成, 一年的时间 里, 我得到了众多老师和同学的帮助。 在论文成稿之际, 对每一位关心和帮助过我的
老师、同学和朋友致以最诚挚的谢意。 感谢我的导师戴跃伟教授,      在学习中给我教诲和鼓励, 在生活中给我关心和帮助,

在人生经验上给我指点 和启发。 戴老师自己 还有繁忙的研究工作和教学任务, 但他在
课题研究期间总是寻找时间跟我交流,为我答疑解惑。 感谢钱玉文老师,      为我在茫然时拨云见日, 并鼓励我最终完成课题研究。 他敏锐 的思维、严谨的治学态度以及诲人不倦的教导,使我受益匪浅。 感谢我的同学和朋友,李孝、乔飞、彭宜涛、林金星、      牛绿原、蒋黎明等,在课 题研究期间,他们都给予了我无私的帮助。 感谢南京理工大学自      动化学院的所有老师, 两年的研究生生涯短暂而又充实, 老

师们的学识、风范和品格永远是我学习的楷模。 感谢我的父母,      你们用辛劳铺就了我今天的成长之路, 你们无私的爱是我此生奋
斗的不竭动力。 最后,对所有参与论文评审和答辩的老师及专家致以衷心的感谢!      谨以此,作为过去的终点,未来的起点。     

硕士论文

基于 L朋x 主 的嵌入式监控系统软件平台研究与设计

参考文献

] l [ 吴朝晖. “ ” 境 吴朝晖教 移动 嵌 入佳 — 授纵谈嵌入 术. 式技 信息世界一 技术趋势,
2 0 1 ):5 一5     7 0 0( 35

冈 钟锡昌 嵌 . 入式操作系 统在中国的 发展现状与前景 信息技术与标准化,02( 20 6 )
] 3 [ 沈绪榜 工业发展的面包一芯片. 北京: 清华大学出版社,0 20 2 ] 4 [ 董士海 用户界面的今天和明天. 计算机世界报,9 (3 1 2) 7 9

1 5 [ 程耕国 刘先勇, , 鲍考明 L u 核启动过程分 计算机工程与设计,06 7 。 i x内 n 析. 20, 2
( ):1 812      2 一6 1 9 5

] 6 [ 王丹 祝跃飞 李 , 金 . , , 勤 费 龙 基于L u2 核的 式v N网 n . ix 6内 嵌入 P 关实现 微电
子学与计算机,06 3() 3 4      20, 4:1不15 2 叨 丘允阳 孙世新. , 嵌入式多任务G I 通用解决方 单片 U的 案. 机与嵌入式系

相关文档

基于ARM Linux远程监控系统的设计与研究
基于嵌入式Linux的视频监控系统的设计
毕业设计(论文)-基于嵌入式linux的网络视频监控系统的研究与设计-
基于Linux的嵌入式监控系统软件平台研究与设计
基于ARM和嵌入式Linux的网络视频监控系统的设计与研究
基于嵌入式Linux的远程监控系统的设计
基于嵌入式linux的网络视频监控系统的研究与设计
基于嵌入式Linux的网络视频监控系统的设计
基于嵌入式LINUX远程图像监控系统的设计
基于嵌入式Linux的网络视频监控系统设计与实现
电脑版