(信号与信息处理专业论文)基于嵌入式linux的网络摄像系统研究和实现.pdf_第1页
(信号与信息处理专业论文)基于嵌入式linux的网络摄像系统研究和实现.pdf_第2页
(信号与信息处理专业论文)基于嵌入式linux的网络摄像系统研究和实现.pdf_第3页
(信号与信息处理专业论文)基于嵌入式linux的网络摄像系统研究和实现.pdf_第4页
(信号与信息处理专业论文)基于嵌入式linux的网络摄像系统研究和实现.pdf_第5页
已阅读5页,还剩69页未读 继续免费阅读

(信号与信息处理专业论文)基于嵌入式linux的网络摄像系统研究和实现.pdf.pdf 免费下载

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

文档简介

中文摘要 随着二十一世纪数字时代的来临,个人数字助理( p d a ) 以其携带方便、界 面友好、操作灵活,以及无线上网等优点,已经广泛应用于人们的生活中。尤其 随着嵌入式操作系统以及i n t e m e t 技术的高速发展,采用基于网络的图像采集、 传输、显示系统就成为一种实际的需求。本论文就是基于这种需求,实现了一套 基于嵌入式l i n u x 操作系统和以太网传输技术的网络摄像系统。 本论文主要实现了基于嵌入式l i n u x 操作系统网络摄像系统的设计和调试, 硬件部分采用了u s b 接口的摄像头和i n t e l 公司x s c a l e 架构开发平台p x a 2 5 5 , 软件部分包括了嵌入式l i n u x 操作系统的移植,摄像设备驱动程序,q t 用户界 面上图像显示程序、网络传输程序的实现,从而完成了一个完整的具有图像采集、 显示、存储、保存图片再现、网络传输功能的摄像系统。 论文共分为七章。第一章是绪论,对网络视频传输系统、i n t e l 个人数字助理、 及嵌入式操作系统作了简要的介绍。第二章讲述了嵌入式l i n u x 操作系统下软件 开发的过程,包括g e e 编译器的使用和m a k e f i l e 文件的生成。第三章介绍了q t 编程的核心机制和元对象系统。第四章对摄像系统的硬件作了简要说明,包括摄 像头的功能和参数,与摄像系统有关的p x a 2 5 5 平台上的硬件以及相关寄存器介 绍。在第五章中则实现了p d a 上基于加速度传感器的鼠标智能控制方法,包括 传感器芯片的驱动程序和软件按钮的驱动程序设计。第六章中实现了q t 界面下 f t p 服务器的架设和客户端程序的编写。第七章详细介绍了整个摄像系统的整合 和测试,包括对p x a 2 5 5 平台进行嵌入式l i n u x 操作系统移植的方法,重新编译 内核映像文件,定制文件系统,用户接口界面的升级,添加了u s b 鼠标_ 和 a d x l 2 0 2 e 加速度鼠标智能控制功能,以及o t 用户接口界面下的显示程序和f t p 网络传输程序,分析了实验的结果。最后还提出了今后的研究方向和目标。 关键词:网络摄像机、p x a 2 5 5 、嵌入式l i n u x 操作系统、q t a b s t r a c t n o w a d a y s , p d ah a sb e e nw i d e l yu s e di nd i f f e r e n ta r e a s ,b e c a u s eo fm a n y a d v a n t a g e s ,i n c l u d i n gc a r r y i n ge a s i l y , f r i e n d l yg u i ,u s i n gc o n v e n i e n t l y , a n dw i r e l e s s n e t w o r kt r a n s f e r r i n g e s p e c i a l l y , w i t ht h er a p i dd e v e l o p m e n to ft h eo u t s t a n d i n g t e c h n o l o g yb a s e do ne m b e d d e do p e r a t i n gs y s t e ma n di n t e r n e t , w e bc a m e r ab a s e d o np d aa n dn e t w o r kt e c h n o l o g ym u s tb eag o o da p p l i c a t i o ni nt h ef u t u r e i nt h i sc a s e , aw e bc a m e r as y s t e mb a s e do ne m b e d d e dl i n u xo p e r a t i n gs y s t e ma n de t h e r n e th a s b e e n p u tf o r w a r d i nt h i st h e s i s t h i sp r o j e c th a sb a s i c a l l yi m p l e m e n t e daw e bc a m e r as y s t e mb a s e do n e m b e d d e dl i n u xo p e r a t m gs y s t e m ( o s ) t h em a i nf u n c t i o no ft h es y s t e mi st o c a p t u r ep i c t u r e sw i t hac a m e r aa n dd i s p l a yt h e mo nt h el c d o fp x a 2 5 5p l a t f o r m , w h i c hw a sa f f o r d e db yi n t e lw i t ht h ex s c a l ea r c h i t e c t u r et e c h n o l o g y , a n dt h ep i e m r e s a l s oc f l nb et r a n s f e r r e dt ot h er e m o t eh o s tt h r o u g ht h ei n t e m e ta n d d i s p l a y e do ni t t h e r ea l es e v e nc h a p t e r si nt h i st h e s i s t h ef i r s t c h a p t e r i sa b o u tt h e i n 灯o d u c f i o n so fw e bc a m e r as y s t e m , i n t e lp e r s o n a li n t e m e tc l i e n ta r c h i t e c t u r ea n d e m b e d d e do s t h es e c o n dc h a p t e ri sa b o u tt h ep r o c e s so fs o f t w a r ed e v e l o p m e n to n e m b e d d e dl i n u xo s ,i n c l u d i n gh o wt ou s e g e ec o m p i l e ra n d b u i l dm a k e f i l e t h e n , w e i n t r o d u c et h ee s s e n t i a lm e c h a n i s mo fq tp r o g r a m m i n ga n dm e t ao b j e c tc o m p i l e r t h eh a r d w a r ei n c l u d i n gu s bc a m e r aa n ds i t s a n g p l a t f o r mr e l a t e dw i t h t h ep r o j e c t a r ea n a l y z e db d e f l yi nt h ef o u r t hc h a p t e r i nt h ef o l l o w i n gt w oc h a p t e r s ,t h em o u s e c o n t r o lo f p d a b a s e d o i l a d x l 2 0 2 ea n d f r p t r a n s f e r r i n g a p p l i c a t i o n p r o g r a m o n q t g u ia r ed e s i g n e d i nt h el a s tc h a p t e r , t h ew h o l ew e bc a m e r as y s t e mh a sb e e n i n t e g r a t e da n dt e s t e d w ea l s oe x p l a i nh o w t ot r a n s p l a n tt h ee m b e d d e dl i n u xo st o t h ep x a 2 5 5p l a t f o r m , r e b u i l dt h ek e r n e lf i l e ,c u s t o mt h ef i l es y s t e m , u p d a t eq ta n d q t o p i ag u i ,a d dt h ef u n c t i o no fu s bm o u s e ,a d x l 2 0 2 em o u s e ,t h ed i s p l a y i n g a p p l i c a t i o na n df t p c l i c n tt 0t h ep x a 2 5 5p l a t f o r m f i n a l l yt h ee x p e r i m e n tr e s u l t s h a v eb e e na n a l y z e da n dt h er e s e a r c ht r e n dh a sb e e nm e n t i o n e d k e yw o r d s :w e bc a m e r a , p x a 2 5 5 ,e m b e d d e dl i n u x0 s ,q t 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得天津大学或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名:签字日期:) 鲫,年j 月3e l 学位论文版权使用授权书 本学位论文作者完全了解天津大学有关保留、使用学位论文的规定。 特授权天津大学可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名: 痞颤 。童卜司1 锚 i 【j l 导师签名: 签字日期:仞侔1 月8 日签字日期:扣 年、月各e l 第一章绪论 第一章绪论 1 1 网络视频传输系统综述 1 1 1 基于p d a 的网络视频传输系统 随着多媒体应用技术的飞速发展,人们越来越倾向于在日常生活、工作和学 习中使用多媒体手段来享受其带来的便利性,各种新奇的数字化消费电子产品也 一下子充斥到人们的日常生活中,更多地吸引着消费者的眼球。2 0 0 5 年国际消 费电子展( 2 0 0 5c e s ) 在美国拉斯韦加斯开幕,在为期四天的展会期间,各大电子 厂商都将亮出自己的“独门武器”,各种个人消费电子产品争奇斗艳。以个人数 字助理( p d a ) 为代表的便携式娱乐、办公设备作为个人消费电子中的一个亮点更 多地受到人们的青睐。个人数字助理( p d a ) 以其独具的携带方便、操作快捷、无 线上网、界面友好、容量越来越大等优点,已经在市场上占有了一席之地。 目前日本夏普株式会社( s h a r p ) 与中国电子信息产业集团公司( c e c ) 联手在 国内最新推出的采用i n t e lx s e a l e t mc p ij 一s h a r pc e cs l 7 5 0 0 c 掌上笔记 本电脑,就是一款支持嵌入式l i n u x 操作系统和j a v a 应用环境的掌上笔记本电 脑。在功能上整合了无线上网、在线上网、w o r d 、e x c e l 文件处理、幻灯演示、 数码照相、录音等多种移动商务功能,同时具备手机通话功能。 而我国在嵌入式系统的开发上自主知识产权性差,而且数码相机、3 g 手机、 以及p d a 的应用研究技术相对落后【l 】。所以本文设想开发一种基于个人数字助 理( p d a ) 的嵌入式l i n u x 操作系统上的网络摄像系统,充分发挥个人数字助理 ( p d a ) 的便携性和嵌入式l i n u x 操作系统的网络优势,实现数字图像在互联网上 的远程传输。 目前,网络视频传输系统的具体实现为:先对图像信号数字化,并进行数据 压缩,再将压缩后的数据传送给个人数字助理( p d a ) ,然后把数据按t c p i p 协 议在有线网络上或者无线网络上传送给远程的主机,远程主机可以将图像进行显 示、保存和再现。为了实现这个目标,可以使用d s p 芯片来做图像的压缩处理, 选择a r m 芯片实现网络传输,但是两个芯片实现的系统毕竟显得臃肿,鉴于目 前芯片技术的快速发展,采用主频达4 0 0 m h z 的p x a 2 5 5 处理器来进行图像的压 缩编码以及实现网络传输的工作是可能的【”。 第一章绪论 1 1 2 网络视频传输系统的构成 整个网络视频传输系统可以分为图像采集模块、图像数据压缩和网络传输模 块、图像再现模块1 1 1 。其中图像压缩模块负责对采集的数据作压缩处理,p x a 2 5 5 平台则运行嵌入式l i n u x 操作系统,作为系统控制的一个中间控制单元,并将压 缩后的图像数据通过互联网络进行传输。另外在客户端需要运行解码程序,做图 像的再现。图1 1 为整个系统实际应用的示意图。 古式机 图像采集及压缩图像传送监控终端 图1 1 网络视频传输系统构成框图 1 2 个人互联网用户架构 i n t e l 公司在2 0 0 0 年9 月推出了基于s t r o n g a r m 或x s c a l e 处理器的面向无 线互联网的嵌入式系统架构抽t e l 个人互联网用户架构p c a ( p e r s o n a li n t e m e t c l i e n ta r c h i t e c t u r e ) 1 2 。 1 2 1p c a 结构 i n t e l 个人互联用户架构p c a 是一个开放式平台架构,它可以分为应用子系 统、通信子系统和内存子系统。每个子系统都由开放式接口相互隔离,这样,每 个子系统都可以以模块方式集成、扩充和接口【2 】。 p c a 应用子系统是基于s t r o n g a r m 或x s c a l e 处理器的可编程的计算环境。 它在嵌入式操作系统支持下,能够管理用户输入输出设备,扩充设备内存管理 与接口、电源管理以及与通信子系统的交互通信资源。 p c a 通信子系统由一个或多个处理器构成,主要完成通信协议的处理任务。 内存子系统可以提供具有i n t e l 特色的低电压、低功耗和高集成度的闪存 f l a s h 、s r a m 和d r a m 。内存子系统支持分级存储体系,支持高速缓存,嵌 入式( 片上) 内存、系统内存和拆卸内存。 2 第一章绪论 1 2 2x s c a l e 微架构处理器 x s c a l e 架构处理器是新一代为无线手持式应用产品开发的嵌入式处理器, 是p c a 开发式平台架构中的应用子系统与通信子系统中的嵌入式处理器嘲。 x s c a l e 核与s t r o n g a r m - - 样,仍采用删v 5 1 e 架构,是i n t e l 公司的s 仃o n g a r m 的升级换代产品。它具有高性能、低功耗等特点,图1 - 2 是x s c a l e 系统结构图。 图1 - 2x s c a l e 系统结构图 1 3 嵌入式操作系统的介绍 嵌入式系统是把计算机直接嵌入到应用系统之中,它融合了计算机软硬件 技术、通信技术和半导体微电子技术,是信息技术i t ( i n f o r m a t i o nt e h n o l o g y ) 的 最终产品【1 4 1 。 1 3 1 嵌入式操作系统的分类 二十世纪七、八十年代,各种嵌入式操作系统得到了蓬勃的发展,随着 i n t e r n e t 的飞速发展,面向i n t e m e t 的嵌入式操作系统已作为操作系统主流产品 b s 。特别随着系统级芯片s o c 的发展,嵌入式操作系统已开始能像硬件口模块 那样,作为m 嵌入至芯片中。嵌入式操作系统按其应用对象不同,有以下几类: 基于或与w i n d o w s 兼容: - w i n 面wc e 、嵌入式l i n u x 、e p o c 工业与通信( 传统) 类: 量疖砌b ,p s o s ,q n x ,n e c u l e u s ,p 欠7 x 单片机类: i r m x 、c m x 、i lc o s 3 第一章绪论 面向i n t e m e t 类: - - p a l mo s 、v i s o r 、h o p e n 、p p s m 嵌入式系统是由嵌入式处理器、嵌入式系统软件和嵌入式应用软件所组成 i t s 。i n t e l 公司推出的个人互联用户架构p c a 就是嵌入式系统的开发应用平台。 在p c a 的应用与通信子系统中的嵌入式处理器是基于s t m n g a r m 或x s c a l e 的 处理器,由于其功能比较强,p c a 可以配备w m d o w c e 、嵌入式l i n u x 和v x w o r k s 等各种嵌入式操作系统。 1 3 2 嵌入式l i n u x 操作系统 。 从二十世纪八十年代开始,出现了一些嵌入式操作系统,其中比较著名的有 v x w o r k 、p s o s 、l y n u x 、n e c u l e u s 和w i n d o w sc e 等,但这些商业产品都价格昂 贵,并不适合中低端的嵌入式系统和规模较小的公司使用,嵌入式l i n u x 正是在 这样一种市场环境下诞生的【”。 l i n u x 内核提供对多种处理器的支持,目前的内核支持i n t e lx 8 6 、a r m 、 m i p s 、m 6 8 k 、p o w e r p c 、a l p h a 、i a 6 4 、s 3 9 0 、s u p e r h 等处理器体系结构【嘲。 l i n u x 可以支持实时扩展,还具有网络功能,满足嵌入式系统对网络越来越多的 需求。同时,嵌入式l i n u x 也可以使用在桌面系统中广泛应用的图形界面,具有 更好的交互性。 l i n u x 应用于嵌入式系统另外一个显著的优势是可以使用主机模拟的环境进 行开发。因为在嵌入式设备上运行的l i n u x 系统和普通的桌面l i n u x 系统几乎完 全相同,这对应用程序的开发提供了很大的便利。开发者可以在桌面环境下编写 和调试程序,测试完成后直接放到嵌入式设备中就可以使用,提高了开发效率。 同时在桌面应用环境下的大多数应用程序都可以移植到嵌入式系统中,这样嵌入 式系统的开发就有大量的资源可以利用【1 9 j 。 再者,使用l i n u x 操作系统能节省成本、降低系统的维护成本。而且众多来 自开源社区的技术专家也会帮助用户解决所遇到的各种问题。从长远角度看,选 用l i n u x 所带来的成本节省将是巨大的。 基于上述优点,本文设计的网络摄像系统也是基于嵌入式l i n u x 系统进行开 发的。 1 4 论文的背景和完成的主要工作 由于本论文是在前人工作的基础上进行的,所以有必要首先对该摄像系统己 4 第一章绪论 有的成果进行介绍。前期的工作主要包括: 为o v 5 1 1 摄像头添加驱动程序 为i s p l l 6 1 主控制器添加驱动程序 图像显示程序的实现 前期工作实现的摄像系统的功能为:可以在平台的q tg u i 上实现图像的采 集、保存以及保存图片的再现功能,而并没有涉及图像的网络传输等功能。 一、0 v 5 1 1 驱动程序 o v 5 1 1 驱动程序完成的主要工作是:在l i n u xu s b 子系统里注册,并提供 一些相关信息,例如这个驱动程序所支持的设备名称,当被支持的设备从系统插 入或拔出时,会有哪些动作,所有这些信息都被传送到u s b 子系统中。 将源程序编译后生成了目标文件o v 5 1 1 o 。这里,o v 5 1 1 驱动程序使用模块 ( m o d u l o 方式加载,这种加载方式非常方便,当用户需要使用该驱动程序时可以 随时通过命令加载该模块,同样当不再需要该驱动程序时也可以方便的卸载,大 大提高了灵活性。当需要时,通过命令i n s m o do r 5 1 1 o 实现模块的加载,加载后 可以使用l s m o d 进行查看,如果要卸载模块,使用命令r m m o do v 5 1 1 进行卸载。 如果需要了解o v 5 1 1 驱动程序更多的信息,请参考设备的驱动程序文件 o v 5 1 1 e ,o v 5 1 1 _ d e e o m p c 等。 二、i s p l l 6 1 驱动程序 该驱动程序为u s b 主控制器芯片i s p l l 6 1 提供了驱动。作为u s b 的控制器, 关于该驱动在内核中的配置方法将在本文7 3 定制嵌入式l i n u x 内核映像中进行 描述。 将源程序编译后生成了目标文件h c _ _ i s p l l 6 x o 。i s p l l 6 1 驱动程序在编译内 核时采用的是内置( b u i l t i n ) 方式,即把驱动程序直接编译到内核里了,所以在 系统启动的时候,就能够自动加载。 如果需要了解i s p l l 6 1 驱动程序更多的信息,请参考设备的驱动程序文件 h c _ i s p l l 6 x c ,h e _ i s p l l 6 x _ r h e ,h e _ s i m p l e c 等。 三、图像的显示程序 关于图像在q t 用户接1 3 界面上的显示程序,主要实现了图像的采集功能、 图像的存储功能,以及存储在f l a s h 上的图像再现功能。所以在q t 图形界面上, 也实现了图像的采集、存储、打开以及应用程序的退出的文件按钮【1 1 。最后设计 的显示程序的界面窗口如图1 3 所示。图中间一个较大的圆形按钮是“拍摄”按 钮,实现图像的采集。左边两个小按钮分别是“打开”和“保存”按钮,分别实 5 第一章绪论 现从f l a s h 中对已保存的图片进行打开的操作,以及对采集的图片在f l a s h 上的 保存操作。 图1 - 3 显示程序界面窗口 将源程序编译后生成了可执行文件g u i 。将g u i 拷9 q n u s r q p e b i n 目录下, 同时将图像显示所需的p n g 图片也拷贝至u s r q p e p i c s 下,重新启动系统或者 q t o o i a 应用程序后运行g u i 即可实现图像界面的显示,通过点击界面上的按钮即 可进行图像的拍摄、打开、保存的工作【”。 具体的源代码参见显示程序m a i n e p p ,g u i e p p ,g u i u i h 等。 四、本论文完成的主要工作 本论文是在前人工作的基础上,对前期工作进行了整合和测试,并添加了新 的功能,基本完成了整个网络摄像系统。包括:前端的数据采集,摄像头的硬件 压缩的数据解压缩,设备的驱动程序,以及图像的显示,网络传输等功能。硬件 使用了w e b e y e v 2 0 0 0 摄像头和i m e l 公司提供x s c a l e 架构平台p x a 2 5 5 ,在论文 中分析了与摄像系统相关的p x a 2 5 5 平台上的芯片的功能和作用,并介绍了这些 芯片间的电路设计。软件方面完成了对嵌入式l i n u x 操作系统的移植,对文件系 统用户接1 :3 界面q t 和q t o p i a 版本的升级,增加了在q t 界面上的u s b 鼠标功能、 a d x l 2 0 2 e 鼠标智能控制功能,实现了u s b 摄像头设备驱动程序,液晶显示器 上的显示程序,f t p 网络传输程序,远程主机上的图像再现等工作。最后,在目 前工作的基础上,提出了今后我们研究的目标和方向。 6 第二章嵌入式系统的软件开发过程 第二章嵌入式系统的软件开发过程 2 1 使用g c c 编译c c + + 程序 2 1 1g c e 编译器 嵌入式l i n u x 操作系统下,最常用的c 编译器是g e e 和g + + 刚。g c c 是g n u c c o m p i l e r 的缩写,g 抖与g e e 有许多相似之处。其使用命令如下: # g c c 【o p t i o n 】f i l e n a m e # g + + 【o p t i o n 】f i l e n a m e 其中o p t i o n 为g e e 使用时的选项,而f f l e n a m e 为欲以g e e 处理的文件名。 说明:g e e 和g + + 编译器己将编译产生新的可执行程序的相关程序整合起来 t 2 “。产生一个新的可执行程序需要经过四个阶段;预处理、编译、汇编、链 接,而这两个编译器都能将输入的文件做不同阶段的处理。 源程序码的扩展名指出编写程序所用的语言,以及相对应的处理方法,如表 2 1 所示: 表2 1 源程序扩展名及其对应处理方法 文件扩展名文件类型处理方法 c c 源程序预处理、编译、汇编 cc cc x xc + + 源程序预处理、编译、汇编 m o b j e c t i v e - c 源程序 预处理、编译、汇编 1 已经过预处理的c 源程序 编译、汇编 n已经过预处理的c + + 源程序 编译、汇编 s 汇编语言源程序 汇编 s 汇编语言源程序预处理、汇编 h 预处理文件( 头文件)( 不常出现在指令行) 其它扩展名的文件是由链接程序来处理,如表2 2 所示: 表2 - 2 其它扩展名文件的处理方法 l 文件扩展名文件类型处理方法 o 目标文件( o b j e c tf i l e ) 链接 a 归档文件( a r c h i v ef i l e )链接 7 第二章嵌入式系统的软件开发过程 除非编译过程出现错误,否则“链接”一定是产生一个新程序的最后阶段。 然而你也可以以- c 、s 或- e 等选项,将整个过程自四个阶段中的其中一个停 止。在链接阶段,所有与源代码相对应的o 文件、程序库和其它无法从文件名辨 明属性的文件( 包括不以o 为扩展名的o b j e c tf i l e 以及扩展名为a 的a r c h i v e f i l e ) 都会交由链接程序来处理【2 “。 2 1 2g c c 编译器选项 g e e 编译器的选项众多,这里只介绍常用的几种选项,如表2 3 所示。 选项 功能 - c 只激活预处理,编译,和汇编,即它只把程序生成o b j 文件,不 链接。 s 只激活预处理和编译,就是指把文件编译成为s 的汇编代码。 0 制定目标文件的名称,缺省的时候,g e e 编译出来的文件是& o u t , 如果想自己定义生成的目标文件名,则使用该选项指定。 i d i r 在你是用# i n c l u d e ”f i l e ”的时候,g c c 卅会先在当前目录查找你所 指定的头文件,如果没有找到,它会到缺省的头文件目录找,如 果使用一i 指定了目录,它会先在你所指定的目录查找,然后再按 常规的顺序去找。 对于# i n e l u d e ,g e c 儋+ + 会到i 制定的目录查找,查找不到, 然后将到系统的缺省的头文件目录查找。 1 l i b r a r y 指定编译的时候使用的库。 - i a i r指定编译的时候,搜索库的路径。比如使用你自己的库,可以用 它指定目录,不然编译器将只在标准库的目录找。这个d i r 就是目 录的名称。 喀 指示编译器,在编译的时候,产生调试信息。 o o - 0 1 编译器的优化选项的4 个级别,- 0 0 表示没有优化,- o l 为缺省值, 0 2 - 0 3 优化级别最高。 一0 3 - s t a t i c 此选项将禁止使用动态库,所以,编译出来的东西,一般都很大, 也不需要什么动态连接库,就可以运行。 s h a r e 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统 有动态库。 8 第二章嵌入式系统的软件开发过程 2 1 3 运行g e e g e e 是g n u 的c 和c + + 编译器。实际上,g e e 能够编译三种语言:c 、c + + 和 o b j e e t - c ( c 语言的一种面向对象扩展) 。利用g e e 命令可同时编译并链接c 和 c + + 源程序。 如果你有两个或少数几个c 源文件,也可以方便地利用g e e 编译、链接并生 成可执行文件。例如,假设你有两个源文件f i l e l c 和丘l e 2 c 两个源文件,现在 要编译生成一个名为e x e c u t i v e 的可执行程序。 利用如下的命令可编译生成可执行文件,并执行程序: $ g e e o e x e c u t i v ef i l e l c 搦e 2 c $ e x e c u t i v e5 上面的第一条命令表示:使用g e e 编译器由文件f i l e l c 和f i l e 2 c 编译生成 可执行文件e x e c u t i v e ;第二条命令表示:运行可执行文件e x e c u t i v e 。 g e e 可同时用来编译c 程序和c + 斗程序。一般来说,c 编译器通过源文件的 后缀名来判断是c 程序还是c + + 程序。在l i n u x 中,c 源文件的后缀名为c , 而c + + 源文件的后缀名为c 或e p p 。但是,g e e 命令只能编译c + + 源文件,而 不能自动和c + + 程序使用的库链接。因此,通常使用旷命令来完成c + + 程序的 编译和链接,该程序会自动调用g e e 实现编译 2 2 1 。 本论文中使用的是i n t e l 公司提供的交叉编译工具,如锄1 i n u x - g c e , a r m - l i n u x - 驴+ ,a r m - l i n u x - s t r i p 等。a r m l i n u x g e e 和a r m - l i n u x g 抖的使用方法与 g e e 比较类似,具体的编译参数请参阅帮助文件。 2 2m a k e f i l e 文件 如果我们的源程序有几百个文件的时候,在修改某些程序后是否需要编译器 重新一个一个的去编译呢? 答案是否定的,因为有一个很好的工具可以做这件 事情,它就是m a k e 。我们只要执行一下m a k e ,就可以把上面的问题全部解决掉。 g n um a k e 是一个用来控制软件构建过程的自动工具,程序员通过定义构建 规则来控制代码的创建过程。这些规则通常定义在一个名为m a k e f i l e 的文件中, m a k e f i l e 文件被用来告诉m a k c 编译哪些文件、怎样编译和何时编译。而在我们 执行i n f l k e 之前,我们需要先编写一个非常重要的文件m a k e f i l e ,下面就对 m a k e f i l e 文件进行简单的介绍。 首先,程序员通过定义构建规则来控制代码的创建过程,那么在m a k e f i l e 中的规则又包含哪些内容呢? 一般情况下,包含目标( t a r g e t ) 、依赖( d e p e n d e n c y ) o 第二章嵌入式系统的软件开发过程 关系和命令列表。目标是i i l a k e 最终需要创建的对象;依赖关系通常是一个列表, 指明编译目标时需要用到的其它文件;命令列表则指明从依赖文件创建出目标对 象所需要执行的命令。 m a k e f i l e 中最重要的是描述文件的依赖关系的说明。一般的格式是: t a r g e t :c o m p o n e n t s ( 啪) r u l e 第一行表示的是依赖关系,第二行是规则。注意规则一行中的t a b 表示那 里是一个t a b 键。在m a k e f i l e 文件中,有一个目标名为c l e a n 的目标是一个伪 目标。当m a k e 处理到目标c l e a n 时,会先查看其对应的依赖对象。由于c l e a n 没 有任何依赖对象,所以m a k e 会认为该目标是最新的,因而不会执行任何操作。 为了编译这个目标体,必须手工执行如下命令m a k ec l e a n 。 为了简化m a k e f i l e 的编写,m a k e 引入了变量。变量实际上是为文本串在 m a k e f i l e 中定义一个便于记忆的名称。变量的定义和应用与l i n u x 的环境变量一 样,变量名大写,变量一旦定义之后,就可以通过将变量名用圆括号包起来,并 在前面加上“$ ”符号来进行引用。变量一般都在m a k e f i l e 的头部定义,如果变量 的值一旦发生了改变,很显然只需在变量定义的地方进行修改就可以了,从而大 大简化了m a k e f i l e 的维护【1 1 。 在构建大型的软件项目时,i n a k e 是一个优秀的持续集成工具。它对于软件 开发过程来讲非常重要。上面简单地介绍了m a k e f i l e 文件的重要构成,对于 m a k e f i l e 文件的实现,本文将在后续的章节中介绍如何使用t m a k e 工具通过项目 文件p r o 来生成m a k e f i l e 文件,当然你也可以手写,不过比较麻烦。 2 3 使用t m a k e 生成m a k e f i l e 文件 t m a k e 是一个很好用的生成和管理m a k e f i l e 的工具,它是由t r o l l ( e c h 公司开 发的,用p e r l 写成的。 使用l m a k e 只要很简单的步骤就可以生成m a k e f i l e 了,缸i l :血e 将我们完全从 繁琐的生成m a k e f i l e 的过程中解脱出来。由于劬a k e 是基于p e r l 的,所以首先要 确认主机上安装了p e r l 。 2 3 1t m a k e 的安装 首先,下面介绍恤k 妇的安装。下载源码t n l a k e - 1 8 t a r g z : 1 确认你有p e r k s 以后的版本并安装了。 l o 第二章嵌入式系统的软件开发过程 2 在l i n u x 上解压( m a k e - 1 8 t a r g z 到“”目录下。 3 设置好t m a k e 路径参数。由于要交叉编译,使生成的可执行文件运行在 s i t s a n g 平台上,所以采用的平台支持文件为t m a k e - 1 8 l i b q w s l i n u x - a r m - g + + 。 4 加入$ 弧噍a 羽取b i n 去你的执行路径。 下面是使用的命令: t m a k e d i r = t m a k e - 1 8 t m a k e p a t h = $ t m a k e d i r l i b q w s l i n u x - a r m - 酽斗 p :r h - $ p 舢:$ t m a k e d u b 缸 e x p o r tt a 哇a k e d i rt m a k e p a n ip a t h 在上面设置的路径里面有各种平台支持文件和t m a k e 执行文件。t m a k e 支持 的平台有:a i x , d a t ag e n e r a l ,f r e e b s d ,h p u x , s g ii r i x , l i n u x , n 衄s d , o p e n b s d ,o s f l d e c ,s c o ,s o l a r i s ,s u n o s ,u l t r i x ,u n i x w a r e 和w m 3 2 。 2 3 2t m a k e 的使用 下面我们开始学习t m a k e 的使用。假设我有一个q t 程序,它由一个c + + h e a d e r 和两个s o u r o :e 文件组成。首先,我要创建一个u n a k et 程文件,如:h e l l o p r o h e a d e r s = h e l l o h s o u r c e s = h e l l o c p pm a i n c p p 1 :f 螂e t = h e i i o 下面我们是用t m a k e 来产生m a k e f i l e : t m a k eh e l l o p r o om a k e f i l e 最后我们执行m a k e 命令编译h e l l o 这个程序: m a k e 一、m a k e f i l e 模板 t m a k e 发行版本中有以下三个模板: 应用程序模板( a p p t ) :用来创建生成发布版本程序的m a k e m e 。 库模板( l i b t ) :用来创建生成库的m a k e f i l e 。该模板让你编译创建一个 动态或静态库。l i b t 支持和a p p t 相同的选项,同时还支持一个a p p t 不支持的 选项:v e r s i o n 。v e r s i o n 是一个版本号。例如:1 4 0 ,版本号对于动态库是 十分重要的。 s u b d i r s 模板( s u b d i r s t ) :用来创建目标文档在目录中的m a k e f i l e 。当你 的程序文件太多时,你可以使用它。它将你所列出的文件夹全部包括进去,并进 行编译。 第二章嵌入式系统的软件开发过程 二、m a k e f i l e 配置选项 配置选项可以用在a p p t 和l i b t 中,它们用来指示使用什么编译选项和链 接什么库文件 2 1 1 。有以下几个选项: 1 控制编译选项的: r e l e a s e 用来生成最优化编译,生成发布的软件。如果选了 d e b u g ,此选项 忽略 d e b u g 调试时使用该选项,打开d e b u g 功能 w a m 伽打开警告选项,产生比正常情况下多的警告。如果选了 w a r n _ o f f , 此选项忽略 w a l l lo f f 关闭警告选项 2 控制程序,库文件类型的: q t 如果是生成q t 程序,打开它( 该选项是默认支持的) t h r e a d 用来支持线程 d l l 生成动态链接库时使用 s t a t i e l i b 生成静态链接库时使用 三、工程文件的语法 工程文件十分好写,你可以随意添加或删减各个选项。设置一个选项如下: h e a d e r s = g u i hx m l hu r l h 如果你的选项不能在一行内写完的话,你可以使用,来分割它 2 ”。 当然了,你还可以在命令行下赋值( 运行t m a k e 时) 。例如,如果你想要打 开d e b u g 选项的话,可以这样: t m a k e ”c o n f i g + - - d e b u g ”h e l l o p r o 当你想对不同平台进行编译时使用u n i x :或者w i n 3 2 :标志符: s o u r c e s = c o m m o n c p p 群c o m i l l o n c l a p 是所有平台的公用文件 u n i x :s o u r c e s + = u n i x c p p群u n i x c p p 是在u n i x 系统下的附加文件 w i n 3 2 :s o u r c e s + = w i n 3 2 c l a p群w i n 3 2 c p p 是在w i n _ 3 2 系统下的附加文 件 u n i x :l i b s + = 1 m撑在u n i x 系统下时需要添加m a t h 库 而且,你可以设置平台编译器相关选项,方法如下: l i n u x - g 抖:t m a k e _ c f l a g s = - f n o - r t t i 四、运行t m a k e t m a k e 的使用方法:t m a k e 【o p t i o n p r o j c c tf i l e so rp r o j e c ts e t t i n g s 1 2 第二章嵌入式系统的软件开发过程 常用选项: o f i l e :指定输出文件 - tf i l e :指定模板文件,覆盖工程文件中的模板变量 默认的工程文件后缀名为“p r o ,默认的模板文件后缀为“t 。如果你不指定 它们的话,t m a k e 会自动为你加上。 这是一个基本的使用方式:( 工程文件是h e l l o p r o ) t m a k eh e l l o p r o _ om a k e f i l e 下面是打开d e b u g 的使用方式: t m a k eh e l l o p r o ”c o n f i c r + = d e b u g ”_ om a k e f i l e 这是指定t m a k e p a t h 的用法: t m a k e ”t m a k e p t h ,劬a k e - 1 8 1 i b q w s l i n u x a r f l l - g 斗”h e l l o p r o o m a k e f i l e 请注意:所有的命令行变量设置请放到

温馨提示

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

评论

0/150

提交评论