当前位置:首页 >> 信息与通信 >>

基于嵌入式的远程图像采集传输系统的研究


湖北工业大学 硕士学位论文 基于嵌入式的远程图像采集传输系统的研究 姓名:周俊 申请学位级别:硕士 专业:电力电子与电力传动 指导教师:熊健民 20080501

湖北工业大学硕士学位论文





图像的采集和传输是实时监控、远程控制、智能小区等诸多领域的关键技术。 基于传统PC的图像采集已成

为现实。随着信息技术的迅速发展,嵌入式系统的研 究开发成为了后PC时代的一个热点,它被广泛应用于工业现场、信息家电等各行 各业。同时,图像的远程采集传输也朝着专业化、多样化和低成本的方向发展。 利用嵌入式技术来实现图像的远程采集传输正顺应了时代发展,有较大的实用价 值。 本文主要研究了基于嵌入式的远程图像采集传输系统。嵌入式终端采用 ¥3C2410为核心的目标板为硬件平台,采用嵌入式Linux为系统平台。系统通过 连接在嵌入式终端的USB摄像头完成静态图像数据采集,并进行图像压缩处理。 在图像传输方面,论文设计了两种模式:一种是通过Intemet传输的、基于B/S模 式的传输方式。在该模式下,远端客户机通过浏览器访问架设在终端里的嵌入式 服务器而获得图像信息。另一种是基于GPRS网络实现远程无线图像传输。终端 将采集到的图像数据通过GPRS网络发送到拥有固定口的监控服务器上来完成图 像远程传输。 本文首先介绍了图像采集传输和嵌入式方面的相关内容,并介绍了本论文所采 用的开发平台。为了顺利开发接着构建了开发环境,这里包括U.boot的移植、Linux 系统的内核编译和移植、设备驱动模块的加载以及交叉编译环境的建立。在此基 础上,利用Vide04Linux的接口函数,用C语言实现了图像原始数据的采集程序, 并利用JPEG算法了实现图像压缩。在基于B/S模式的传输方式中,首先利用Boa 架设了嵌入式服务器,然后用C语言完成CGI脚本,该脚本将图像嵌入网页并实 时更新以实现网页的动态输出。在基于GPRS实现远程无线图像传输方式中,论 文详细分析了系统通讯数据流的特征,提出了采用辨识特征字符、数据打包等策 略以实现GPRS的网络连接和数据通讯,并且在此基础上用C语言编程实现。同 时,在PC(Linux)上用Socket编程实现了监控服务器软件,该软件用以接收图像数 据和控制嵌入式终端的系统状态。最后,论文分析比较了两种传输方式的区别和 优缺点。试验证明,采用两种方式都能成功实现图像的远程采集传输,并且试验 效果较好。

关键词:

图像采集,远程传输,嵌入式,Linux操作系统,B/S模式,GPRS网络

湖北工业大学硕士学位论文

Abstract
The acquisition and transmission of image is applied in many fields such
as



kind of critical technology which is

real-time supervising,remote controlling and intelligent
on

communities.Image acquisition which iS based

traditional PC has been brought into

practical.With

the rapid development of information technology,the research and


development of embedded system has become

hot spot after the PC times,it was

widely used in industrial field,information industries.Meanwhile,image acquisition and remote

transmission

is rapidly developing in



way of specialized,variety and based
on

low-costing.It is more valuable to acquire and

transmit images
on

embedded

system,because this technology satisfies the need of the time.

The

image acquisition and transmission based
as

embedded system is mainly terminal manages
to

talked about in this paper.Using S3C2410

the

core

of target hardware.on the other

hand,embedded Linux is used

to be the

platform of

software.The
connecting

acquire the static image by the USB camera that is

with the

terminal,and

then finishes the image compression.In the image transmission,the paper designed two

models:the first is

one

this mode,client霉ets which is built in the

mode that transmits data by Internet and based on B/S mode.In image information through browsing the embedded web server
second
one

terminal.The
on

is the mode of remote wireless

transmission which based

GPRS.In this mode,the terminal sends the

image image to a

supervise server in order to realize the remote image transmission. Firstly,this paper introduces the technology of image acquisition and transmission, the embedded systern,and the development platform.In order to finish this project
smoothly,the development

environment(DE)is

built,including

porting U-boot,

compiling

and

porting

the kernel of Linux,mounting the module of device driver

and

building the

cross

compiling tools.Uncompressed images are acquired by C language
are

program application with the Vide04Linux’S API,and then those images with JPEG algorithm.In the transmission based
on

compressed

B/s mode.firstly,the embedded server is constructed by Boa,and then the CGI script.which embeds image into WebPages and ke印it refreshing,is finished by C language.In the mode based on
GPRS,the features of data stream in communication

are detailed analysised.The

method of GPRS net between terminal and connection supervise

connection

iS designed.as well弱the data

communlcation

server by and communication

the methods of special characters and data processes
are

packet.The image
and

realized by C

language.Meanwhile,the
to receive

server’s

software is realized by SOCKET,which used

control the

terminal

modes,including
acquisition

system state.Finally,the the advantage and disadvantage of both,are

differences between

the two

transmission

compared.The

experiments prove that,both methods

Can

successfully achieve the

long—range image

and transmission,as

well

as

excellent test results.

Keywords:Image acquisition,Remote transmission,Embedded system,Linux,B/S,GPRS


湖办j繁大謦
学位论文原创性声明和使用授权说明
原创性声明
本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进行研究工作所取 得的研究成果。除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经 发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方 式标明。本声明的法律结果由本人承担。

学位论文作者签名:闺彼

日期:州年r月形日

学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留 并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授 权湖北工业大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采 用影印、缩印或扫描等复制手段保存和汇编本学位论文。

学位论文作者签名:f虱使
日期:二勿,年r月二名日

指导教师签名:

日期剃年岁月.zg日

龟名乇钆

湖北工业大学硕士学位论文

第1章绪论
1.1课题来源及研究意义
本课题来源于湖北省教育厅优秀中青年科技创新团队项目“现役桥梁结构损 伤安全综合评定关键技术的研究"(编号:鄂教科[200417号)。 眼睛是人传递信息最丰富的器官,由视觉获得的信息量占全部的92.3%,但

长期以来,由于生理条件的限制,人们能获得视觉信息的距离和信息数量有刚¨。
随着通讯技术和半导体技术的发展,电子图像信息技术日趋成熟。利用电子设备 获取图像信息的“电子眼”越来越广泛的得到应用。“电子眼"能够代替人的眼睛获 取图像资料,图像的采集与传输显然是其中的关键技术。 “电子眼"代替人眼获取视觉信息有着十分重要的现实意义。通过远程传输 技术,视觉信息的获取就可以突破距离的限制,甚至达到人力不可及之地【2l,为人 类的生活生产带来极大的便利。比如,人们坐在办公室就能对遥远的现场进行观 测和监视以便实现远程控制,而同时用大量的人力对远端的现场进行周期的巡视、 检修的工作方式必将被淘汰。因为图像能提供给人们最直接最准确的信息,那么 采用远程图像采集技术来满足人们的需要将是大势所趋。应用现在的网络技术和 多媒体技术,基于PC已经能实现数字图像采集由本地扩展到异地,具备了一定的 远程监控能力。并且,随着技术的进一步发展,这一应用必将得到进一步加深。 在信息化高速发展的今天,图像的远程采集在金融、邮电、电力、交通、旅游、 商业等很多行业里有非常广泛的应用,远程图像采集的实现将大大优化人力资源, 消减不必要的开支,更能在某些人力不可及的领域发挥作用【3J。 嵌入式技术的出现和成熟,并将其应用于图像采集和传输中,必将带来监控 领域的技术变革。基于嵌入式技术的图像采集和传输将更适用于具体的领域、具 有更优良的稳定性和具有更大的低成本优势。

1.2国内外研究现状
1.2.1图像采集传输的发展现状
图像采集是伴随着监控系统发展而来的,并且在历史上很长一段时间图像采 集都是用在监控系统中。视频的监控系统经历了三个阶段【4J f5J:

湖北工业大学硕士学位论文
第一代是本地模拟视频监控。它采用全模拟方式的视频信号、磁带录像的保 存方式。模拟方式的显示设备,导致视频信号传输距离有限、图像质量差。而且 点对点的方式监控现场,布线工作量大耗费存储介质。这种模拟的视频信号,系 统的网络结构主要是一种单功能、单向、集总方式的信息采集网络,介质专用的 特点,因此尽管这种系统现在已发展到很高的水平,却无太多潜力可挖,其局限 性依然存在,要满足更高的要求,数字化是必由之路。 第二代基于PC的远程视频监控出现于90年代中后期。该系统是先将麦克风 和摄像头采集的模拟音、视频信号转化为数字信号,利用专用压缩卡对数字信号 进行压缩处理后,通过网络传输给作为监控终端的PC机,监控终端PC机利用专 用解压卡对数据进行解压后,就能够重现远端的图像和声音。它具有传送距离远、 图像质量好、数据的保存成本低等特点。但是基于PC的多媒体监控系统还存在体 积大、功耗高、实时性不高、稳定性较差、成本较高和可扩展性差等诸多问题。 近两年随着远程监控系统被越来越多的应用于各个领域,对多媒体监控系统 的要求也越来越高,操作简单、实时可靠、多功能、数字化、经济实用的多媒体 监控系统的开发和设计正越来越多地受到人们的瞩目。基于嵌入式技术的多媒体 远程监控系统应运而生。这就是第三代基于嵌入式技术的远程多媒体监控。 与基于PC的多媒体监控系统相比,基于嵌入式技术的多媒体远程监控系统具 有体积小、安装方便、现场无需专人值守、成本低、稳定性高、实时性好等特点。 因此基于嵌入式技术的多媒体远程监控系统必将有良好的应用与发展前景161,代替 当前普遍应用的基于PC的多媒体远程监控系统将成为必然趋势。 图像的传输同其他信息的传输有共同之处,都通过一定的介质媒体完成数据 传输。大致分为有线数据传输和无线数据传输两种形式。 由于布线的实际困难,通过有线的图像传输一般局限于短距离的范围应用。 通过USB传输图像的USB摄像头是当前最流行的PC配置。USB摄像头支持热拔 插、价格低廉、传输速度快。而长距离的图像传输有赖于网络技术的革新。随着 网络技术的发展,各国电信公司建立起了庞大的有线网络。Intemet也成为全球最 大的计算机网络。图像信息通过Internet传输是伴随网络的发展而发展的。随着网 络带宽的不断增长,使得图像传输将从原来静态图像传输发展到流媒体动态图像 传输。成本低,技术成熟,实时性也非常好,目前市场已有成熟的应用。 无线通讯技术种类非常多,从无线电技术到蓝牙技术、红外通讯,到GPRS 无线网络,再到即将推向市场的3G技术,都可以用来完成图像的传输。但是,由 于图像信息数据量庞大的特殊性,不同的技术用于传输图像所能达到的效果不同。 无线电一般用来传输灰度图像这样的小数据量图像。蓝牙技术受到传输距离的限



湖北工业大学硕士学位论文
制和传输速率的限制在图像传输领域应用比较受限。但是一些公司和团体仍在该 领域作了一定尝试和研究。2005年Sony Ericsson公司研制出了匹配蓝牙手机的无 线摄像头,上海大学通信与信息学院也研究了利用蓝牙技术进行无线图像传输。 GPRS无线网络是最近流行起来,被称为介于2G和3G中的2.5G,已被科研人员 用于各行各业的无线数据领域,由于GPRS传输速度的限制,通过GPRS进行图 像的传输只能传输静态图像信息,而不大可能传输动态视频数据l丌。3G网络的推 出,将为图像的无线传输带来革命性的变化,彻底解决在传输过程中的速度瓶颈18J。 2005年04月28日,深圳市宏电技术开发有限公司与北京大学深圳研究生院就开 始了基于3G移动通信网络图像通信终端协议的研究,相信随着相关3G协议的完 成,无线图像传输会达到有线图像传输一样的效果水平19J。

1.2.2嵌入式的发展及现状
进入20世纪90年代,嵌入式技术全面展开,目前己成为通信和消费类产品 的共同发展方向。在通信领域,数字技术正在全面取代模拟技术。在广播电视领 域,美国己经开始由模拟电视向数字电视的转变,欧洲DVB(数字电视广播)技术 己在全球大多数国家推广。数字音频广播(DA)也已经进入商品化试播阶段。而软 件、集成电路和新型元器件在产业发展中的作用日益重要。所有上述产品中,都 离不开嵌入式系统技术。在个人领域中,嵌入式产品将主要是作为个人移动的数 据处理和通信软件。由于嵌入式设备具有自然的人机交互界面,GUN屏幕为中心 的多媒体界面给人很大的亲和力。手写文字输入、语音拨号上网、收发电子邮件 以及彩色图形、图像己经取得初步成效。 今天嵌入式系统带来的工业产值己超过了1万亿美元。来自1997年美国嵌入 式系统大会(Embedded
System

Conference)的报告指出,未来5年仅基于嵌入式计

算机系统的全数字电视产品,就将在美国产生一个每年1500亿美元的新市场【10l。 1998年11月在美国加州举行的嵌入式系统大会上,基于RTOS的Embedded Interact 成为一个技术新热点。在国内,“维纳斯计划"和“女蜗计划"一度闹得沸沸扬扬, 机顶盒、信息家电这两年更成了rr热点,而实际上这些都是嵌入式系统在特定环 境下的一个特定应用【11】。据调查,目前国际上己有两百多种嵌入式操作系统,而 各种各样的开发工具、应用于嵌入式开发的仪器设备更是不可胜数。 嵌入式技术的迅速发展不仅使之成为当前微电子技术与计算机技术中的一个 重要分支,同时也使计算机的分类从以前的巨型机、大型机、小型机、微机之分 变为通用计算机与嵌入式系统之分。嵌入式的应用更是遍及金融、航天、电信、 网络、信息家电、医疗、工业控制、军事等各个领域,以致有些学者断言,嵌入



湖北工业大学硕士学位论文 式技术将成为后PC时代的主掣1引。

1.3本文主要工作及论文安排
本文着重分析基于嵌入式的远程图像采集和传输系统的研究和设计。论文分 为四大部分:基于ARM和Linux开发平台的构建;利用USB摄像头基于vide041inux 的图像采集并用JPEG算法进行图像压缩;利用Intemet网络,基于B/S模式的远 程图像采集传输系统;利用GPRS网络的无线远程图像采集系统。本文介绍了涉 及到各种技术,讨论了系统的体系结构、软件流程,并给出了部分关键代码。 本章分为七个章节: 第1章,提出本文研究的背景和意义,概述了嵌入式技术和远程图像采集等 方面的问题,主要是这两方面的发展情况和国内外发展现状。 第2章,主要介绍嵌入式系统的相关基础概念、分类以及开发嵌入式系统所 涉及到的关键技术。分别介绍项目中将采用的以ARM9的¥3C2410为核心的硬件 平台和以嵌入式Linux为核心的操作系统软件平台。 第3章,主要是关于嵌入式系统平台的构建,首先包括开发环境的搭建、启 动代码Bootloader的移植,然后是系统的裁剪、配置、编译移植和文件系统的构 建,最后是关于图像采集设备的驱动模块加载和串口驱动的移植。 第4章,主要是静态图像采集的实现,在实现过程中包括利用Vide041inux采 集原始图像数据和利用JpegLib静态库采用JPEG算法实现图像压缩两个部分。本 章实现图像的采集任务。 第5章,一种基于B/S模式实现图像的远程采集传输,实现过程中利用boa 架设嵌入式服务器,并用C语言编写CGI脚本程序以实现将第4章中采集到的图
像通过动态网页显示到远端客户机的浏览器上。

第6章,通过GPRS网络实现图像的无线传输。利用GPRS通讯模块完成数 据传输任务,实现过程中首先分析系统中各种数据特性,并提出了相应的辨识和 传输策略。开发出了本项目专用的监控服务器以接收图像数据和发送终端系统控 制命令。 第7章,对比两种传输方式、对全文的研究工作进行总结,并确定下一步的 研究方向。



湖北工业大学硕士学位论文

第2章嵌入式系统及其软硬件开发平台
2.1嵌入式系统
2.1.1嵌入式系统定义和分类
目前,对嵌入式系统的定义多种多样,但没有一种定义是全面和十分准确的。
下面给出两种比较合理定义113j:

从技术的角度定义:以定义为中心,以计算机技术为基础、软硬件可裁剪、 适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专业计算机系统; 从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使其 紧密耦合在一起计算机系统。术语嵌入式反映了这些系统通常是更大系统中的一 个完整的部分,称为嵌入的系统。嵌入的系统中可以共存多个嵌入式系统。 一般情况下,按照历史性、本质性、普遍性要求,嵌入式系统可以定义为:“嵌 入到对象体系中的专用计算机系统"。“嵌入性"、“专用性”与“计算机系统’’是 嵌入式系统的三个基本要素。对象系统则是指嵌入式系统所嵌入的宿主系统。嵌 入式系统作为一类特殊的计算机系统,自底向上包含有3个部分,如图2.1所示。

嵌入式斑硒

一蒯襄麓誉作系
嵌入斌揆作系统

一攮佟嘉篓苫硬件
,嫒件毕蠹

图2.1嵌入式系统的基本结构 嵌入式系统按表现形式及使用硬件种类可以分为114J: ●系统中使用含有程序或算法的处理器的嵌入式系统为芯片级嵌入; ●系统中使用某个核心模块的嵌入式系统为模块级嵌入。 嵌入式系统按软件实时性需求可分: ●非实时系统(如PDA);


湖北工业大学硕士学位论文
●软实时系统(如消费类产品); ●硬实时系统(工业实时控制系统)。

2.1.2嵌入式系统设计的关键技术
在嵌入式系统的设计过程中,所涉及到的很多技术和开发方法都不同于通常 的基于PC的软件开发方法。这些不同将最终影响项目方案的设定和最后产品的成 形。这些关键技术的不同主要表现在以下方面l”J: (1)嵌入式系统内核的制定。这里包括硬件和操作系统软件内核的选择。根 据嵌入式系统所要实现的功能合理的裁剪系统内核,保证最大限度发挥系统内核 的功能,又能做到减少冗余的配置,是整个嵌入式系统设计的关键所在。 (2)嵌入式系统的开发过程。由于嵌入式开发板的资源有限,不可能在开发 板上运行开发和调试工具。因此,通常在嵌入式开发过程中有宿主机和目标机的 角色之分:宿主机是执行编译、链接、定址过程的计算机;目标机指运行嵌入式 软件的硬件平台。首先须把应用程序转换成可以在目标机上运行的二进制代码。 这一过程包含三个步骤:编译、链接、定址。 (3)向嵌入式平台移植软件。大部分嵌入式开发人员选用的软件开发模式是 先在PC机上编写软件,再进行软件的移植工作。在PC机上编写软件时,要注意 软件的可移植性,选用具有较高移植性的编程语言(如C语言),尽量少调用操作系 统函数,注意屏蔽不同硬件平台带来的字节顺序、字节对齐等问题。

2.2系统硬件平台
2.2.1

ARM处理器
Machines),既可以认为是一个公司的名字,也可以认

ARM(Advanced RISC

为是对一类微处理器的通称,还可以认为是一种技术的名字。 1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,

采用ARM技术知识产权(口)核的微处理器,即我们通常所说的ARM微处理器,
已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品 市场,基于ARM技术的微处理器的应用约占据了32位RISC微处理器75%以上

的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。 目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得 ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,
使产品更容易进入市场被消费者所接受,更具有竞争力11倒。


湖北工业大学硕士学位论文
到目前为止,ARM微处理器及技术的应用几乎已经深入到工业控制领域、无 线通讯领域、网络应用、消费类电子产品、成像和安全产品,并会在将来取得更 加广泛的应用。

ARM微处理器目前包括下面几个系列,以及其它厂商基于ARM体系结构的 处理器,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器
都有各自的特点和应用领域。

●ARM7系列; ●ARM9系列;
●ARM9E系列;
●ARM 10E系列;

●SecurCore系列; ●hltel的Xscale; ●Intel的StrongARM。

其中,ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。

2.2.2¥3C2410芯片介绍

¥3C2410是Samsung公司推出的16/32位RISC处理器(ARM920T内核),具 有低价格、低功耗、高性能等特点【1刀。它由ARM9TDMI、存储管理单元MMU和
高速缓存三部分组成。其中,MMU可以管理虚拟内存,高速缓存由独立的16KB 地址和16KB数据高速Cache组成。
¥3C2410芯片集成了大量的功能单元:

(1)内部1.8V,存储器3.3V,外部I/o 3.3V,16KB数据CACHE,16KB指

令CACHE,MMU:
(2)内置外部存储器控制器(SDRAM控制和芯片逻辑选择); (3)三个通用异步串行端口,2通道SPI; (4)一个多主IIC总线,一个IIS总线控制器;
(5)两个USB HOST、一个USB
DEVICE;

(6)四个PWM定时器和一个内部定时器;
(7)117个通用I/o口; (8)24个外部中断;

(9)电源控制模式:标准、慢速、休眠、掉电。其结构图2.2所示。

湖北工业大学硕士学位论文

图2.2¥3C2410内部结构图

2.2.3嵌入式开发板介绍
本系统的硬件平台为MagicARM2410开发平台。Magi【cARM2410实验箱是由 广州致远电子有限公司开发的一款可使用#C/OS.II、Linux和Windows CE操作系 统,支持QT、MiniGUI图形界面的ARM9开发平台。该实验箱采用ARM920T内 核的¥3C210A微处理器,扩展由充足的存储资源,具有10/100M以太网接口、USB 接口等总线接口,带有8英寸640x480真彩,n丌液晶屏,可使用JTAG仿真调试, 非常适合实验的要求。其外观如图2.3所示。



湖北工业大学硕士学位论文

——夥一

一 一—-易r‘ 图2.3 MagicARM 2410实验箱外观图

MagicARM2410具有以下四大特点 1、众多接口提供便利; 2、主频够快; 3、存储够大; 4、对众多操作系统的支持; MagicARM2410具有平台资源有: (1)丰富的存储资源:2M字节NOR FLASH、64M字节SDRAM、64M字节
Nand

FLASH、256字节EZPROM。 (2)丰富的接口资源:具备10/100M自适应以太网接El、4个USB
HOST、1

个USB Device等。 (3)多样的人机接口:8英寸640x480真彩11丌液晶屏、4个独立LED、8 个7段数码管、16键小键盘、1个独立按键。 该开发板系统资源完全符合本项目要求。

2.3嵌入式操作系统及嵌入式Linux
2.3.1嵌入式操作系统
早期的许多嵌入式系统根本就没有操作系统,只不过有一个控制环而已。对



湖北工业大学硕士学位论文
很简单的嵌入式系统来说,这可能已经足够。不过,随着嵌入式系统在复杂性上 的增长,一个操作系统显得重要起来。没有操作系统的支持,将使软件复杂度大 幅增加且变得极不合理。 随着硬件的发展,嵌入式系统的应用领域日益扩大,提供的应用功能也越来 越复杂,当初的控制程序被随之逐步加入了许多功能,而这些功能有很多是可以 由操作系统来提供的。这很自然地会让人联想到应该为嵌入式系统做一个嵌入式 操作系统。由于应用的需要和硬件条件的限制,嵌入式操作系统一般都注重占用 空间小和效率高等特点。 其实,嵌入式系统并不是一个新生的事物,从八十年代起,国际上就有一些 rr组织、公司,开始进行商用嵌入式系统和专用操作系统的研发。这其中涌现了 一些著名的嵌入式系统f141:
Linux

Linux类似UNIX,是一种免费的、源码开放的、符合POSⅨ标准规范的操作
系统。嵌入式Linux版本众多,如RT-Linux、miniLinux、Blue VxWorks VxWorks是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。它 支持多种处理器,如x86、i960、Sun Spare、MotorolaMC68xxx、MIPS RX000、POWER PC等等。大多数的VxWorks API是专有的,并采用GNU的编译和调试器。
ItC/OS-Ⅱ
Cat

Linux等。

/tC/OS.II是一个可裁剪、源码开放、结构小巧、抢先式的实时多任务内核, 主要面对中小型嵌入式系统,具有执行效率高、占用空间小、可移植性强、实时 性能强等特点【18】。/zC/OS.II最大程度的使用ANSI C语音开发,现已经成功移植到 近40多种处理器体系上了。
f斩西dows CE

Microsoft Windows CE是从整体上为有限资源的平台设计的多线程、完整优先

权、多任务的操作系统。它的模块化设计允许它对于从掌上电脑到专用的工业控 制器的用户电子设备进行定制。
2.3.2

Linux在嵌入式中的应用

Linux代表了三个涵义【19l:一个内核、一个系统、一个发行套件。嵌入式系统 中使用的内核与工作站和服务器上使用的内核主要的不同还是在于建立内核的配 置。一个嵌入式Linux系统只是代表它是一个基于Linux内核的嵌入式系统。一个 嵌入式发行套件可能包括:用来开发嵌入式Linux系统的平台、各种为了在嵌入式

10

湖北工业大学硕士学位论文
系统使用而裁剪过的应用程序,或是二者。

嵌入式Linux系统早已应用于实际。SCADA(System

Control

and Data

Acquisition)、Sharp Zaurus(夏普电器销售的商品)等都是Linux成功应用与嵌入 式领域的例子。据2000年的一项调查发现,虽然在1998年和1999年设计嵌入式 系统的时候没有人会考虑到Linux,但是有38%的受调查者表示会考虑下一次设计 时会使用Linux。到2000年的时候,已经有12%的响应者在他们的嵌入式系统中 使用了Linux。经过2002年的调查发现,Linux在嵌入式系统目前可能用到的操作 系统清单中仍排第四位,而且Linux和Windows一样在未来成为设计嵌入式系统 时选用的操作系统。

2.4本章小结
本章首先概述了嵌入式系统相关概念和分类,然后介绍了本系统所用的开发平 台以及该平台的核心ARM芯片。罗列了嵌入式系统开发的相关关键技术。最后介 绍了嵌入式操作系统和本项目所要使用的系统一uIlux。

湖北工业大学硕士学位论文

第3章嵌入式Linux系统平台构建
在利用ARM和Linux为平台进行项目开发之前,需要搭建适于项目开发需要


的基础设施,即开发平台,以便为后继开发做好软硬件准备。这里主要指交叉编 译环境的建立、启动代码的实现、系统内核的移植、文件系统的构建和相关设备 驱动模块的加载。

3.1嵌入式kinux交叉编译环境的建立
如前所述,在嵌入式开发过程中有宿主机和目标机的角色之分。程序在宿主 机中完成编辑,并编译、连接、定位成能在目标机中运行的目标文件,将目标文 件下载到目标机中以完成特定任务。 本实验室由于条件所限,宿主机是从Windows PC中虚拟出来的。此时,共有 三个计算机系统作为开发平台:Linux
virtual

PC、Windows

PC、Linux

Target。这

三者需要用不同的工具连接起来以便交互数据,三者之间的连接方法如图3.1所
示。

图3.1开发平台的连接图
其中:
Linux Virtual Linux Virtual

PC和Windows PC之间通过软件winSCP共享数据;
PC和Linux Target之间通过nfs协议共享数据;

Windows PC和Linux Target之间则通过RS232串口相连。

在开发过程中,宿主机要运行两个窗口:宿主机本机操作窗口和串口终端窗
口。

湖北工业大学硕士学位论文
●在本项目中,宿主机操作窗口是运行于虚拟Linux系统下的本机的操作终 端。在开发过程中,笔者感受不到虚拟机跟实际PC之间的区别。宿主机只能编译、 连接程序,不能运行产生的fiat文件。 ●串口终端,本项目利用Windows的超级终端实现。目标机可以看成一台机 器,而这里的串口超级终端就相当于这台计算机的显示器,作为人机交互界面。 在宿主机编译、连接的可执行文件,下载到目标机上运行。 在开发调试过程中,通常的操作见面如图3.2所示I驯。


宿主机的运行界面

()

∥鬈零蜀
篱7’枣翻终壤,1。覆
貌,


宿主机 操作界面

以太网接口

。,瑗

雾,,,,:量…。-~,.臻

圈 ———\串口线~
IP:192.168.1.宰

褫么锄i渤荔巍锄。§缴麓渤※缀

~一

/吣飞攀矿

图3.2嵌入式Linux开发调试界面 交叉编译调试工具采用通用的Linux开发套件:GNU开发套件。它包括了一 系列的开发调试工具。主要组件有: ●GCC即编译器,做成交叉编译的形式,即在宿主机上开发编译目标板上可 运行的二进制文件。 ●Binutils即辅助工具,包括objdump(可以反编译二进制文件)、as(汇编编 译器)、ld(连接器)等等。 ●GDB即调试器,可使用多种交叉调试方式,包括使用串口和以太网调试。 编译一套完整的交叉编译器是一个非常复杂和困难的事情。不过开源组织为 常用的平台编译好了相关的交叉编译器。对于本项目的ARM9平台,下载到
cross

2.95.3.gz.tar,经过解压就可以安装使用。安装交叉编译器需要root权限,解

压安装后,需要增加编译器路径,采用以下命令增加编译器路径:
#export

Pf锄=¥n删:/usr/local/arm/2.95.3/bin

湖北工业大学硕士学位论文
3.2

U.Boot的移植

3.2.1嵌入式系统中的Bootloader
在PC系统中,计算机系统的启动需要使用BIOS(基本输入输出系统)作为引 导。在嵌入式系统中,由于没有BIOS这一固件程序,因此,在嵌入式系统中,系 统的启动成了一个必须解决的问题,于是就出现了Bootloader启动程序。 Bootloader运行于系统上电或复位的最开始的一段时间,该程序将初始化硬件 设备,建立内存空间的映射图,从而将系统的软硬件带到一个合适的状态,以便 为最终调用操作系统做好正确的准备。对于嵌入式系统来说,有的使用操作系统, 也有的不使用操作系统,比如功能简单仅包括应用程序的系统,但在系统启动时, 都必须运行Bootloader,为系统运行准备好软硬件环境。 系统的启动通常有两种方式:一种是直接从flash启动;另一种是将压缩的内

存映象文件从Flash中复制、解压到I乙W,再从RAM中启动。当电源打开时,一般
的系统会去执行ROM里面的启动代码。这些代码是用汇编语言编写的,其主要作 用在于初始化CPU和板上的必备硬件,如内存、中断控制器等。 从软件的角度,整个系统可以分为四个层次:Bootloader、内核、文件系统和 用户应用程序。典型的固态存储设备的空间分配如图3.3所示。Bootloader--般放在

0x000(0)O处,即存储器的开始位置处。
启动参数

Bootloader

[工[=[=]
Kernel
File System

图3.3存储空间分配图

Bootloader启动代码一般分两个阶段【21】: 第一个阶段主要包含依赖于CPU的体系结构硬件初始化代码,该阶段主要由 汇编语言实现。 第二个阶段主要由C语言实现,以便实现更复杂的功能,也使程序有更好的可 读性和可移植性。
3.2.2
3.2.2.1

U.Boot向目标板的移植
U.boot简介

U.boot最初是由德国DENXdx组开发的用于多种嵌入式MCU的Bootloader程

14

湖北工业大学硕士学位论文
序,现在是SourceForge上的一个开源项目。ARM9系列芯片是其支持对象之一,同 时该固件程序对Linux的支持最好,因此是嵌入式Linux Bootloader的最佳选择。 U-boot本身是一个非常复杂且完整的系统。 从SourceForgeT载到U.boot源文件并经过解压缩后,在文件夹下可以看到很 多目录,具体可以查阅readme文件。U.boot各主要目录包含功能如表3.1所列12¨。
表3.1 U.boot目录结构及内容
目录 内容及功能


b0删


和一些已有开发板有关的文件,比如Makefile和u-boot。lds等都和

具体开发板的硬件和地址分配有关。 与体系结构无关的文件,实现各种命令的C文件。 CPU相关文件,其中的子目录都是以U.boot所支持的CPU为名。 disk驱动的分区处理代码。 通用设备驱动程序,比如各种网卡、支持CFI的Hash、串口和USB 总线等。









一三.| 盎
include
net

支持文件系统的文件,U.boot现在支持cram蠡、fat、fdos、jffs2和
registerfs。

头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件 和对文件系统支持的文件。

与网络有关的代码,BOOTP协议、仰协议、RARP协议和NFS
文件系统的实现。

lib

arm

与ARM体系结构相关的代码。
创建S.Record格式文件和U-boot images的工具。

tools

U.boot作为一种Bootloader,同样由两个阶段组成。第一阶段任务主要由start.S 完成。其主要任务是设置处理器状态,初始化中断和内存时序等,并确定是否要 对这个U.boot代码重定位,最终从Flash中断跳到定位好的内存位置执行。第二阶 段是从/lib arm/board.C中的start armboot函数开始。在该阶段中调用一系列初始化 函数用于初始化Flash设备,初始化内存分配,若系统使用Nand Flash设备,则将其 初始化,然后初始化网络设备,最后进入循环等待,等待用户命令执行下一步任 务。该启动过程可以用图3.4表示122J。



图3.4 U.boot启动过程

湖北3-业大学硕士学位论文
3.2.2.2U.boot的移植过程

U.boot支持多种嵌入式MCU,并包含多种移植好的开发板实例。如上所述, 开发板相关的文件放在board文件夹下,与MCU相关的文件放在epu文件夹下, 移植的主要工作也是主要针对这两个方面进行。通常为了减少工作量,可以选择 board中已包含的开发板项目进行修改。 具体的移植工作需要经过以下几个步骤【231。 (1)交叉编译环境的建立。该步骤在前节中已经完成。 (2)为一个新的平台移植U.boot,需在board目录下增加一个新的开发板目 录,该目录下需要7个文件,如表3.2所示。 表3.2开发板目录所需文件及其功能
文件名
config.mk
flash.C

功能 记录U.boot复制到内存的基址。 用来配置Flash。 Make工具的工程管理文件。

Mal【eme
memsetup.S
u-boot.1ds
XXX.C

初始化配置内存。 内核连接器脚本文件。
根据具体的开发板名命名,初始化开发板。

(3)U.boot中处理器及开发板的其他硬件配置。 (4)生成U.boot映象。在编译之前需要在修改相关的文件中加入编译选项。 在MAKEALL中申明开发板使用的MCU。在Makefile中增加xxx_config的编译
说明。然后通过以下命令编译。

【root@localhost u-boot-1.1。2】静make clean froot(亘Ilocalhost u—boot一1.1.2】静make xxx_config
[root(国localhost 11一boot一1.1.21#make

编译之后将生成u.boot、U.boot.bin、U.boot.srec三个文件,这三个文件就可以 下载到目标板使用。 移植的过程的主要工作就是修改和增加相关文件,U.boot需要修改的代码大
多位于/board、/cpu以及/include/con_figs目录。

(1)在/board下建立开发板相关目录和文件。目前版本的U.boot中的board 目录中已经包含了¥3C2410系列开发板的移植目录文件。我们只需为所用的开发 板在/board目录下新建一个开发板目录,在此我们以S3CBOARD命名该目录,并 在此目录下建立config.mk、flash.C、Makefile、memsetup.S、U—boot.1ds和¥3C2410.C
文件。

(2)在/cpu目录下建立meal相关的目录和文件。¥3C2410属于ARM9T系
16

湖北工业大学硕士学位论文
列,以已存在的ARM9T为模板,在/cpu目录下建立以¥3C2410命名的目录,下 面含cpu.C、config.mk、interrupts.c、serial.C、start.S等文件。 (3)在/include/configs下为我们的开发板建立一个配置文件:¥3C2410.h。 U.boot中的readme文件描述了相关配置项,根据我们所用开发板硬件配置的具体 情况给相关配置项赋值。关键配置项如下所示:
#define CFG

MEⅣ【TEST START

#define CFG MEMTEsT END #define CFG FLASH BASE #define CFG Mi气X FLASH #define CFG Mb气X FI ASH #define CFG
-●●●-●

0x817卿
Ox80C00000

Ox80000000 BANKS l SECI.256

D尉m SMC91111//网络接口

(4)修改MAKEALL文件。在此文件中的ARM9 SYSTEM下面增加以下代 码:
LIST_ARM9=“ep7321
s3c2410_config: evb4510 impa7 modnet50 s3c2410”

(5)修改Makefile文件,在该文件中ARM9T SYSTEM下面增加以下项。 @./makeconfig¥(@:—印nfig=)arm arm920t s3c2410 在移植过程中,参照了board中其它移植实例,但这需要注意不同的芯片寄存 器等都有很大不同。interrupt init函数需要对系统的定时器结果精确的计算。计数 器

3.3操作系统的移植
3.3.1

Linux操作系统的移植

Linux内核相当庞大,包括驱动程序在内有数百MByte之大。整个内核代码结 构图如图3.5所示。其中driver存放的是驱动程序,下级目录是进一步的细分,如 char是字符性设备。fs存放的是文件系统的代码,如ext2和vfat。arch是平台相 关的代码,这里需要的arm相关代码就是放在该目录下。include中同样包含了各 种平台需要的头文件。mm中包含的是内存管理方面的代码。而与平台相关内存管

17

湖北工业大学硕士学位论文
理代码存放在arm/arm/mm中。所以,在Liunx操作系统的移植中,arch目录下将 是重点。

移植过程中要修改很多文件,移植工作就要修改所有和体系结构相关的代码。 主要指内核入口、处理器初始化、I/0映射等。以下是需要修改的典型文件125J: (1)Makefile文件。make命令将根据Makefile文件的规则来决定如何编译和连 接程序。贯穿整个内核代码目录,所有Makefile文件中的CROSS.COMPILE关键字 用于指定要进行交叉编译。因为本文移植的目标是ARM,所以改为ann.1inux.。 ARCH关键字用于指定目标平台,这里改为ARCH:=arm。

drive}—}blk
Incl

广char L...
...

fs斗vfat arch—i386
厂一ext2

【——一

’‘。

net』802
L…
kernel



ann

mm
lpe

图3.5 Linux内核结构

(2)arch.C和irq.C文件。 即:arch/arm/mach.anakin/arch.c;和larch/arm/mach.anakin/irq.C。这两个文件是与 系统平台紧密相关的。arch.C指定了系统启动时用到的地址,按照硬件设计的不同, 地址将有所不同。irq.C是与中断处理相关的程序。

(3)dma.h文件。即:include/asm/arch/dma.h。这个文件定义了D蝴道,以 及DMA可以使用的内存空。如果不支持DMA,可以把MAX.DMA.Cm桃Ls定
义为O。

(4)hardware.h文件。Includej7asm/arch/hardware.h。这个文件定义了内存地址

和I/O地址。根据设计的硬件电路不同而不同:.START是物理地址;.BASE是映射
的内存或I/O的虚拟地址。

(5)irq.h文件。即:include/asm/arch/irq.h。在此文件中加上fi】【u山q宏定义:
#define fixup_irq(i)。

(6)system.h文件。即:include/asm/arch/system.h。在该文件中需要定义两个

18

湖北工业大学硕士学位论文
函数:
arch

和ch。的关相.reset0这。 ta)(eldi. 切密是构结系体件硬与数函个两

系统的移植涉及大量的代码,由于这部分内容不是主要,所以这里只提及几 个主要的文件,略去其他。 实际上,在开源社区中已经有很多人做过针对ARM架构处理器的移植工作,

其中最有影响力的是由ARMLinux领导的126]。ARMLinux已被成功运行在超过500
种的机器平台上,包括网络计算设备、手持设备和各种评估板等。本论文使用的 Magic2410开发平台,致远公司为其提供了通过移植测试的Linux源代码压缩包 linux.2.4.18.rmk7.pxal.mz5.zhiyuan.tar.bz2。解压后将在当前目录下产生kernel目 录,该目录虽OLinux源文件的安装目录。其中有内核配置文件:ZY2410x。在进入 /kemel/目录后,执行make menuconfig时,选择:"Load 将安装ZY2410x配置文件【27J。
an

Alternate Configuration File",

3.3.2文件系统的构建
在嵌入式领域,只要应用到操作系统的必然会需要一个,甚至是多个文件 系统。所谓文件系统,实际上就是在一个具体的存储设备上任何文件的组织和目 录。这个设备可能是各种RAM、Nand
Nand FLASH、Nor

FLASH等DOC设备,还有以

FI_ASH为基础的各种存储卡等。

在本系统中,存储设备是Nand FLASH,所以在根文件系统格式的选择上可以 用压缩率比较高的CRAMFS,而在根文件系统下挂载一个可读写的YAFFS2文件系 统。采用以下步骤完成文件系统的建立: (1)建立根文件系统 Linux内核启动以后,根据参数linux
cmd

line的指示跳转到根文件系统的地

址,完成文件系统的初始化和挂载任务。这里我们通过开发套件Busybox的帮助 来完成基本的根文件系统。Busybox是由Bruce Perens发起的一项计划,该计划最 初的目的是协助Debian发行套件建立安装磁盘。下载Busybox稳定版,解压后通 过make menuconfig命令进入Busybox配置菜单。在Applets下面选择需要的命令, 然后退出保存。执行make、make install命令。在Busybox的目录下就会生成install 目录,这个目录就包含了将要配置的命令的工具包。把这个目录拷贝到工作目录, 更名为rootfs。rootfs目录就是要建立的根文件系统的雏形。但是它还不能工作, 需要进一步的完善。在rootfs/下,首先在/rootfs/dev下建立必须的设备文件。接着 完成/rootfs/etc这个目录下的3个比较重要的文件:inittab、fstab、init.d/re.so
(2)制作YAFFS2文件系统

可以有两种方式来应用YAFFS2文件系统,一是CRAMFs+Ⅵ师FS2的组合,

19

湖北工业大学硕士学位论文
一种是纯YAFFS2文件系统格式。由于在笔者的应用中,内核和根文件系统并不 需要频繁更新,所以从节省存储空间和保护根文件系统的角度来考虑,我们选用 CRAMFS这样的高压缩率、只读文件系统,而应用程序,用户空间使用YAFFS2 文件系统格式。

对于CKAMFS,可以直接用mkcramfs/rooffs卅啪t.img来制作cramfs镜像。
/rootfs是前面建立的根文件系统目录,-/root.img指定做好镜像的保存目录。由于 YAFFS2文件系统当初设计就是针对Nand Flash设备的,而且文件系统是在Nand Flash中启动,因此要使用YAFFS2文件系统,就必须先在内核添加Nand Flash设备 驱动,并修改arch\armLrnach.s3c2410\devs.c文件,增加Nand Flash分区。一般情况 下Bootloader、Kernel、Root三个分区是必须的。 在Bootloader源文件中,将Band Flash分成几个分区,前面提到的devs.c文 件里的分区也必须与Bootloader的分区一致,因为Bootloader指定了内核和文件系 统的地址,最后启动时也会到相应的地址寻找指令。在我们的应用中,将Flash分 成Bootloader,param,kernel,root,user。其中root用来挂载CRAMFS根文件系统, user分区挂载YAFFS2文件系统。 在YAFFS2源文件的utils目录下,执行make就可以生成mkyaffs2image工具, 执行./mkyaffs2image(要制作yaffs2的目录)

不过因为根文件系统是CRAMFS格式,珊S2可以作为模块来加载,这样更加
方便,更加灵活。

(目标镜像),生成yaffs2文件系统。

(3)挂载文件系统 最后一步就是要让内核在启动后挂载文件系统,挂载文件系统有两种方式: 手动和自动挂载。在实际应用中当然是要系统在无需人工干预的情况下自动挂载 文件系统。在本系统中将由re.s文件来完成文件系统的自动加载。

3.3.3摄像头的选择及其驱动程序
在本论文中选择WebEye2000作为图像采集设备。WebEye2000采用USB接口 和上位机相连。该摄像头采用OV511和OV7620作为核心芯片。这两款芯片都是 OmniVision公司的产品。其中OV51是一种低功耗高集成度的USB摄像头应用的 解决方案。OVSll包含一个内置压缩引擎,支持通过USB总线实时传输图像。一 个完整的USB摄像头系统方案包括OV511、一个256Kxl6DRAM和一个数字感光 芯片。OV7620为摄像头采用的感光芯片。该芯片支持VGA/QVGA两种图像,最 高像素达326688,帧速率可达30fps,数据格式包括YCrCb
RGBRaw 4:2:2、GRB 4:2:2、

Data三种,支持CCIR601、CCIR656、ZV port等数字视频接口【15】。在功
20

湖北工业大学硕士学位论文
能及图像品质上能达到一般场合的需求。

之所以选择WebEye2000为图像采集设备,是因为该摄像头采用的视频采集芯 片OV511的驱动程序已经被Linux2.4版本的内核所包含。采用被Linux内核所支 持的视频芯片将简化后继的开发。

3.4内核重新编译和模块加载
3.4.1内核配置编译
采用ZY2410x的默认配置文件安装的嵌入式Linux系统可以保证系统的成功运 行。但是,这个配置文件只包含了能够运行的最小配置,它没有包含最小系统以 外不必要的模块。而在本项目中,还需要用到USB主机驱动模块【矧、视频模块、 ov511驱动模块和串口驱动模块等。这就需要按照项目需求重新配置内核、重新编 译并下载到目标板。 WebEye2000采用USB接口传输图像数据,所以在编译Linux内核时,首先 要将USB主机驱动编译进去。Linux系统2.4.18版本内核包含了功能全面的USB 主机内核软件,通过该内核模块将USB的软件与硬件隔离开。对于不同的USB主 机控制器只需要编写与硬件相关的驱动程序就可以在Linux系统下使用。USB内 核提供了两套API,分别为高层API和低层API。高层API是与硬件无关的,是 由应用程序使用的函数集,低层API是硬件底层USB主机控制器相关的函数集【29】。 为编译USB内核及其文件系统模块。在/kernel/lfl录下输入make
menuconfig

命令配置内核。在打开的Main Menu窗口中进入“USB support..>"选项。进入
USB

suport选项菜单后,配置“Support
filesystem"选项。

for

USB"为模块,并选上“Preliminary

USB device

此外,为了使用WebEye2000实现图像采集。所以应该确保该OV511接口芯 片在Linux下的正常驱动,即除了支持该主机的USB控制器UHCI或OHCI,还 应该有Vide04Linux的支持。在制定内核时,还需增加以下选项: 【串】Video
for Linux

1"1 USB OV511 Camera Support 最后退出保存,并用Make dep命令建立依赖文件,然后使用make

modules

命令编译并链接内核模块。将编译的新内核替换原内核,这样在新的Linux系统下 就可以使用WebEye2000采集图像。

21

湖北工业大学硕士学位论文
3.4.2摄像头的加载
在重新编译内核后,下载到目标板的内核文件已经包含了USB主机和ov511驱 动。在Linux系统中,字符设备和块设备是通过节点访问的。在Linux的文件系统中, 可以找到设备对应的文件名,称这种文件为设备文件。对于设备文件的输入/输出 (I/O操作),系统会调用相应的设备驱动程序。Linux系统是靠主次设备号来联系 驱动程序和设备文件节点的(而不是设备文件的路径)。系统依靠主设备号标识 不同的驱动程序po】。所以在为设备创建设备节点时首先要为其分配主次设备号。 本项目中,设备驱动以内核模块存在1311,所以在使用设备之前需要利用命令insmod 或too@robe来动态加载模块。通过以下步骤完成摄像头的加载。 (1)装载USB支持模块。通过lspci命令检查主机所具有的USB控制器类型。 (2)装载ov511模块。通过modprobe or511命令装载。由于编译内核时增加了 对Vide04Linux的支持,所以在执行上述命令的同时,系统将自动装载videodev模 块。这里用modprobe命令的原因是该命令能自动同时加载与其相关的所有模块 (3)检查视频设备文件/dev/vide00是否存在,如果设备文件不存在则需要通 过mknod/dev/vide00


81

0命令手动生成。这里的c是指该设备是字符型设备,81

是主设备号,O是次设备号。 当加载模块后插入USB摄像头,终端将打印以下信息:
hub.c:USB new device connect
on

busl/1/4,assigned device number3


ov511.e:USB OV5王1+calilera found

ov511.e:Camera type(108)not recognized
ov51 1.c:Please notify

mmeelell@bigfoot.com of

name

ov511.c:manufacturer,model,and this number of your camera
ov51 1.c:also include the output of the detection process

ov511.c:sensor is髓OV7620 ov511.c:Dedce re西stered
on

minor 0

此时,USB摄像头加载完毕,Linux系统可以使用USB图像采集设备。

3.4.3串口驱动的移植
本论文第六章将介绍GPRS模块将通过UARTl和ARM通讯,所以这里需要首
先完成Linux下的串口驱动程序。

目前,Linux核已提供了支持标准串口的驱动程序,只需要增加一个宏来定 义¥3C2410串口的I/O基地址,使用中断号等与硬件相关一些信息,串口的驱动就 完成了【32】。在include/asm.ann/arch.s3c2410目录下添))Hserial.h,其中关键代码如下所
列:

湖北工业大学硕士学位论文

其中,S3C2410_UARTl_BASE为S3C2410串口1的基地址。这样在定义这个宏 后,移植的LinuxI内核就可向串口输出信息了。

3.5本章小结
本章的完成为后继任务奠定了基础。主要是利用实验室已有的设备搭建开发 环境并完成交叉编译环境。为构建项目所需要开发平台,详细介绍了移植U.boot 为启动代码Bootloader的步骤和文件系统的构建。为了使用本项目所涉及的USB 摄像头等设备,本章介绍了Linux内核文件的重新编译,并将ov511、USB主机、 Vide04Linux等模块编译进内核。最后为ARM9平台移植了串口驱动,以驱动GPRS 通讯模块。

湖北工业大学硕士学位论文

第4章静态图像的采集实现
4.1基于Vide04Linux采集图像原始数据
4.1.1

Vide04Linux简介

Vide041inux(V4L)是Linux的影像串流系统与嵌入式影像系统的基础。Linux 在Tv、多媒体上的应用是目前相当热门的研究领域,而其中最为关键的技术则是
Linux的Vide041inux[331。 Vide041inux是Linux Kernel里支持影像设备的一组APIs,配合适当的视频采

集设备和设备驱动,就可以实现图像采集,AM/FM无线广播、影像CODEC、频 道切换等功能。这些视频设备包括现今市场上流行的TV卡、视频捕捉卡和USB 摄像头等。而目前最主要则是应用在影像串流系统和嵌入式影像系统里,应用范
围相当广泛。

Vide041inux分为2层架构,上层为vide041inux驱动本身,下层架构则是影像 设备的驱动程序。
4.1.2

Vide04Linux中的数据结构



Vide041inux应用程序中常用的数据结构有以下几个f矧:
(1)struct voide_capability

该结构中包含摄像头的基本信息,例如设备名称、支持的最大最小分辨率、 信号源信息等,分别对应着结构体中成员变量llallle【32]、maxwidth、maxheight、 minwidth、minheight、channels(信号源个数)、type等。
(2)struct voide_picture

该结构中包含设备采集图像的各种属性,如brightness(亮度)、hue(色调)、 contrast(对比度)、whiteness(色度)、depth(深度)等。
(3)stmct voide_mmap
voide

mmap用于内存映射。

(4)struct voide_mbuf
voide

mbuf利用mmap进行映射的帧信息,实际上是输入到摄像头存储器缓

冲中的帧信息,包括size(帧的大小)、frames(最多支持的帧数)、offsets(每帧
相对基址的偏移)。

湖北工业大学硕士学位论文
4.1.3图像采集的实现
4.1.3.1定义有用的数据结构和函数 基于vide041inux的接口函数,可以实现静态图像的采集。为了在进行图像采 集和处理的过程中可以方便地对摄像头进行各种操作,首先根据Vide041inux定义
以下数据结构:

该结构中的各个数据成员均表示图像采集设备的一个参数。在应用程序中, 一个该数据结构节点就表示一个图像采集设备。Linux系统中把设备看成设备文 件,在用户空间可以通过标准的I/o系统调用函数操作设备文件,从而达到与设备 通信交互的目的。在摄像头设备驱动中也提供了对这些函数的相应支持。 根据需要,设计出了以下6个应用函数:
(1)int get_grab_frame(v41幸vd,int

frame)

通过该函数可以取得当前的一帧图像数据。
(2)int

getStrst_frame(v41掌vd)

通过该函数可以取得开启系统后的第一帧图像数据。该函数用在系统开启之
初。
(3)int get_next_frame(v41?vd)
.,

通过该函数的调用可以获得当前图像帧的下一帧图像数据。 以上三个获取一帧图像数据的函数中主要用到了以下语句完成: ioctl(vd->fd,VIDIOCSYNC,&(vd?>frame_current)) 这里的ioctl语句是用来控制I/O通道,其中的参数vd.>fd表示设备文件描述 符,VIDIOCSYNC为用户程序对设备的控制命令,这里表示等待帧同步。参数 &(vd.>仃ame娜rrent)表示类型的长度。

湖北工业大学硕士学位论文
(4)unsigned

char木get_frame_address(v41宰vd)

当通过该函数从map内存中找到当前帧的起始指针。该函数代码为:

(5)int

open_video(char宰fileptr,struct_v41事vd,int

dep,int pal,int width,int

height) 通过该函数打开图像采集设备。其中参数fileptr是设备文件的描述符,dep、 pal、width和height分别是需要采集到图像的深度、大小等参数。该函数核心代码
如下所列:
int

open_video(char宰fileptr,struct-v4l木vd,hat dep,int pal,int int helen0 if((vd->fd=open(fileptr,o RDWR))<O)/,打开视频设备 /,出错处理

width,



if(ioctl(vd?>fd,VIDIOCGCAP,&(vd->capability))《o)脓取设备
∥出错处理 ∥设置采集图像的参数
vd->picture.palette=pal;

//pelette

vd->picture.depth篁dep; vd?>mmap。format=pal;

臁度

if(iocfl(vd一>fd,VIDIOCSPICT,&(vd一>picture))<毋 ∥出错处理
vd->mmap.width


width;

vd->mmap.height=height;

∥宽 //高

vd->mmap.format=vd一>picture.palette; vd?>flame_current=0;

vd一>frame_using[0]=o:
vd一>frame_using[1]=0: if(iocfl(vd->fd,VIDIOCGMBUF,&(vd->mbuf))<o)//取得内存映射相关信息 ∥出错处理 暑 vd一>map mmap(O, vd?>mbuf.size,PROT_READIPROT_WRITE, MAP_SHARED,vd->fd,o);//内存映射 透(vd->map<o)’ 脏b错处理
relllrll o.

在这个函数中,最主要的工作就是在打开设备文件后将需要设置的采集系统 参数填入相关的数据结构中。并完成内存映射等设备的设置。
(6)void
int

put_image_ppm(FILE幸out,unsigned char乖image,int

width,int

height,

binary)

该函数将采集到的原始图像数据保存为ppm格式的图像文件。其中参数out

湖北工业大学硕士学位论文
表示将保存的图像文件名:image为图像数据所在位置:height和width分别为采 集到图像的高度和宽度:参数binary指出图像以二进制形式还是ASCII码形式保 存。该函数将采集到的图像数据按照ppm的格式要求填入要输出的图像文件之中。
该函数核心代码如下所示:
void put_image_ppm(FILE奉out,unsigned char事image,inl width,妇height,
int

binary)




unsigned

char印=(unsigned char母)image;

//image为图像存储位



ff([binary) {
∥加上头信息,表示ppm文件

腑储为ASCrl码形式
, , ,

fprinff(out,”P3\n%d%d、Il%d|IIn”,width,height,255); for(x=0;X《width;x++) { for(y=O;Y《height;y++) 鼍

篪行扫描
//逐位扫描

艨入每个图像数据点
P+:3;


fprintf(out,”%03d%03d%03d

”,p[2】,p【1】,pfo】);


if(b++>够 { fprinff(out,—沁“舅
Is=o;

鹏采集到盼图像数据填入ppm文件孛

} } }

fp如tf(out,’-、n”);

else

腑储为二进制形式
buff[31; fprintf(out,”P6Ⅷ%d%d\x1%d、n”,width,height,255);∥加上ppm文件头信息 for(x=O;x<width书height;x++)艉叟变三色顺序 { 一, buffIO】=p【2】; bufE【1】=p【1】; buff[2】=p【0】; fwrite(buff,1,3,out); 脚冬采集到的图像数据填入ppm 件中
unsigned char
, 、’



P忙3;
} } fflush(傩t);



/fF一图像数据点

∥届8新输出文件以保存数据

ppm格式是未经压缩的静态图像,包括两个部分:头部分和图像数据部分。 头部分由三部分组成,这三部分由回车或换行分割。第一行通常是P3或P6,说明 是ppm格式;第二行是图像的宽度和高度,用ASCII来表示;最后一部分是描述

湖北工业大学硕士学位论文
像素的最大颜色组成,这里允许描述超过一个字节(0.255)的颜色值。 4.1.3.1图像数据采集的主函数 有了上一小节定义的数据结构和完成的应用函数为基础,可以很方便的完成

最终的静态图像的采集任纠351。在图像的采集过程中,首先应该打开视频设备,
并设置相应参数,此时可以进行视频采集。由于采集到的图像属于原始数据,为 了便于后继处理和传输,一般需进行图像的相关处理,在本论文中是将原始的ppm 格式图像压缩为ipeg格式的图像。关于JPEG算法的压缩将在下一节中详细论述。 图像采集的主函数流程图如图3.1所示。

图4.1图像采集流程图 图像采集主函数关键代码如下所列:

湖北工业大学硕士学位1论文

4.2用JPEG算法完成图像压缩
由上节所述,经过图像采集设备采集到的静态图像数据是原始的数据。在本 论文中,我们的目的是实现图像的远程传输,但原始的图像数据过于庞大,不利 于远程传输。这里,将采用JPEG算法实现图像的压缩处理一
4.2.1

JPEG算法的简介陋】和JpegLib
Group)是一个由ISO和IEC两个组织机构

JPEG(Joint Photographic Experts

联合组成的一个专家组,负责制定静态数字图像数据压缩编码标准,,这个专家组 开发的算法称为J-PEG算法,.并已成为国际通用标准,称/-Mv JPEG标准。JPEG是

一个适用范围很广的静态图像数据压缩标准,既可用于灰度图像又可用于彩色图
像。
÷

,.‘

JPEG专家组开发了两种基本的压缩算法,,一种是采用以离散余弦变换
(Discrete Cosine

Transform,DCr)为基础的有损压缩算法,另一种是采用以预测

技术为基础的无损压缩算法。

盹咖co)c㈣‘荟7磊7删cos学cos骂竽】Ⅳ(4一j)
它的逆变换使用下式计算:

DCT变换使用下式计算:

湖北工业大学硕士’学位论文 ——II I———I—I
III IIII III

fq∽一扣脚)【荟7荟7 F(u,v)cos%芋∞s骂竽】

—I

IIII皇曼!苎黧鬯!!

’(州)’

使用有损压缩算法时,’在压缩比为25:1的情况下,压缩后还原得到的图像与 原始图像相毙较,棼图像专家难于找如它们之闻的区别,嚣此德到了广泛的廖用。 例如,在VCD和DVD.Video电视图像压缩技术中,就使用JPEG的有损压缩算法 来取消空间方向上的冗余数据。为了在保证图像质量筋前提下迸一步的提高压绩 比,近年来?JPEG专家组正在制定JPEG2000标准,。这个标准中将采用小波变换 (Wavelet)算法。JPEG压缩是有损压缩,它利用了人的视角系统的特性,使用量化 和无损压缩编码楣结合来去掉视角的冗余信息和数据本身的冗余信息。JPEG算法 框图如图4.2所示【37l。.
。’

《螂敦:薯繁压缀编辑步骤

l埘ixrr熬解瑕缨辗硝莎罪

图4.2JPEG算法框图 JpegLib是Indepedent JPEG Group开发并维护的一个静态蓐,利用姥静态库可 以建立图像压缩工程,调用其中的功能函数可以实现基于JPEG算法的图像压缩。‘

4.2.2以JPEG实现图像压缩的具体实现 为了实现基于/PEG算法的图像压缩,利用JpegLib,.需要完成以下步骤∞:
(1)审请并初始化~个JPEG压缩工程。采用以下语句实现:
jpeg ereate_compress(struet jpeg_compress宰);

(2)给需要压缩的数据制定西标父律。采用以下语旬实现:
FIFE*outfile;

outride=fopen(filename,‘'wb’,); jpeg_stdio_dest(&cinfo,outfile); (3)设置包括图像大小、色彩空间等压缩参数。其孛的参数in
color.space

湖北工业大学硕士学位论文
必须给出。采用以下语句实现: jpeg set defaults(&cinfo); (4)开始压缩工程。采用以下语句实现: jpeg_start_compress(&cmfo,TRUE); (5)扫描图像的每一行。采用以下语句实现: while(scan
lines remam to be

written)

ipeg_write_scanlines(……); (6)结束压缩工程。采用以下语句实现: jpeg_finish_compress(……); 如果还有其他需要压缩的图像文件,则转向该步骤的第二步。 (7)释放JPEG压缩工程。采用以下语句实现: jpeg_destory_compress(&cminfo); 以下是本项目中利用JpegLib实现图像压缩的关键代码。其中参数out是目标 文件(不同于Windows系统,在Linux系统下,文件类型与文件后缀名没有联系), width和height是图像大小,image是图像存放的地址,quality是图像质量参数,

该参数在o.100之剐冽。

31

湖北工业大学硕士学位论文
cjpeg.in_color jpeg
set

space=JCS_RGB;


//必须设置,指明为RGB存储方式 /,噩缩质量参数
//使用算法参数


defaults(&cjpeg);

jpcg set_quality(&cjpeg,quality,TRUE);

cjpeg.dct_method=JDCT_FASTEST; jpeg_stdio_dest(&cjpeg,ou0; jpeg_start_compress(&cjpeg,TRUE);

//给压缩数据设定目标文件
//开始压缩


row_ptr(01=line;
if(palett害3-VIDEO_PALETI'E_GREY) ∥图像为灰度图像 {
line_width=width;

for(Y=O;Y《height;y++)

row

∥逐行调用扫描

ptr[O]=image;
//下一行图像数据


jpcg_write_scanlines(&cjpeg,row_ptr,1);//¥a描一行
image+=line_width;

} 爹, {
line—width=width幸一,
,’

else//图像为彩色图像

for(y=嘶Y<heigh蜂y+谚

7,,

7//逐行调用j写_籀
,,

{嬲寸内存中图像数据进行格式匹配转化 fof(x=O;x<line_width;x+=3)
_

//BGR劭RGB的转化



,,

…line[x】

誊image[x+2];

,line[x+1】=image[x+1]; lineIx+2]=image【x】; ≥

jpeg_write_scanlines(&cjpeg,row_ptr,1);,船描一行
image+=line_width;

} } jpeg_finish_compress(&cjpeg); jpeg_destroy_compress(&cjpeg); freeOine);
,。一

//结束压缩 胴犟放压缩工程 朋擎放内存空间

该程序中对图像数据进行格式匹配,而上面介绍的获取ppm格式图像却不需要 该步骤。因为经过摄像头采集的图像的通道排列顺序茭JBGR,同时ppm文件格式图 像数据的排列顺序也为BGR,所以在获取ppm[]像文件的时候不需要格式匹配。但

湖北工业大学硕士学位论文
jpe93之件图像格式的顺序是RGB,所以在压缩之前要进行存储格式的转换【39j。否则 图像失真、颜色颠倒。 试验证明:320x240象素的ppm格式图像,在ASCII码编码情况下达980KB左右, 在二进制编码情况下达225KB,而在进jTjpeg压缩后大约6.7.8KB。

4.3本章小结
本章首先介绍了Vide041inux及其相关数据结构。然后详细介绍了为图像采集 所开发的,基于Vide041inux的几个应用函数,并在此基础上完成了图像采集并将 其保存为ppm格式。为了压缩原始图像数据,在最后一节中介绍了JPEG算法以 及JpegLib静态库,并利用该库完成了由原始图像数据到jpeg格式的压缩。

33

湖北工业大学硕士学位论文

第5章基于B/S模式的图像远程采集传输
通过前文所述,在采集终端已经可以完成静态图像的数据采集,并将其压缩 和保存为jpeg格式的图像文件。为了完成图像的远程传输,本章将介绍一种通过 Internet,基于B/S模式的远程传输模式。

5.1系统结构
在完成图像采集并压缩的基础上,在采集终端架设基于Boa的嵌入式服务器, 并在该服务器上运行基于CGI的动态网页,该动态网页可以随时自动更新采集到 的图像信息。远端同样连入Internet的客户机通过浏览器访问该服务器就可以看到 采集到的图像信息,最终完成图像的远程采集传输㈣。该系统的结构图如图5.1
所示。

图5.1基于B/S模式远程图像采集传输结构框图 结合前章内容,可以画出整个图像采集和远程传输系统的软件框图如图5.2所 示。在该系统中,客户机通过浏览器向嵌入式服务器发送相关命令,命令通过Boa 服务器的CGI相关程序传至嵌入式终端,终端系统调用采集模块完成图像的采集 压缩任务以得到实时的图像信息。Boa服务器将最新的图像嵌入到网页中并将该网 页返回给客户机的浏览器。
Ima,ge

Acquisiton?一CGI≮4==二二二=client 二±===t=?—————一
:f——◆Jpeg

一1L—JL...jL...一一…一
:USB
HostI



Compress Image

Imag■=■=叫一html
Boa OS Kernel
Other Device Drivers

!Linux

Camrea Driver

图5.2基于B/S模式远程图像采集传输系统软件框图

湖北工业大学硕士学位论文 5.2构架基于Boa的嵌入式服务器
5.2.1

Boa的简介
Webserver是一个小巧高效的Web服务器,是一个运行于NUIX或Linux

、Boa

下的,支持CGI的单任务的HTI'P服务器,源代码开放、性能高。Boa的可执行 代码大约60KB,为单进程服务器,只能依次单个完成用户的请求,而不能创建出 一个进程来并行响应用户请求。它通过建立HTTP请求列表来处理多路HTlT连 接请求,同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资 源,这对嵌入式系统来说至关重要。同时它还具有自动生成目录、自动解压文件 等功能。因此,Boa具有很高的HTTP请求处理速度和效率,在嵌入式系统中具有
很高的应用价值。

应用于嵌入式系统的Web服务器,Boa和普通Web服务器一样,能够完成接 收客户端请求、分析请求、响应请求、向客户端返回请求结果等任务。它的工作 过程主要包括【41】: (1)完成Web服务器的初始化工作,如创建环境变量、创建TCP套接字、 绑定端口、开始侦听、进入循环结构、以及等待接收客户浏览器的连接请求; (2)当有客户端连接请求时,Web服务器负责接收客户端请求,并保存相关 请求信息; (3)在接收到客户端的连接请求之后,分析客户端请求,解析出请求的方法、 URL目标、可选的查询信息及表单信息,同时根据请求做出相应的处理; (4)Web服务器完成相应处理后,向客户端浏览器发送响应信息,关闭与客 户机的TCP连接。 嵌入式Web服务器Boa根据请求方法的不同,做出不同的响应。如果请求方 法为HEAD,则直接向浏览器返回响应首部;如果请求方法为GET,则在返回响 应首部的同时,将客户端请求的URL目标文件从服务器上读出,并且发送给客户 端浏览器;如果请求方法为POST,则将客户发送过来的表单信息传送给相应的 CGI程序,作为CGI的参数来执行CGI程序,并将执行结果发送给客户端浏览器。

Boa的功能实现也是通过建立连接、绑定端口、进行侦听、请求处理等来实现的。
5.2.2采用Boa架设嵌入式服务器
为了在嵌入式终端系统上架设基于Boa的嵌入式服务器,首先要将Boa移植 到ARM+linux平台之上。采用以下步骤可以完成Boa的移植【42l【43l:

35

苎苎!!詈!I;I;;_;
件包:
Star
xzvf

湖北工业大学硕士学位论文



;;;;;i;。;III;IIi

i;

I!!!!!!曼!!!曼!!皇

(1)在Boa官方网站上下载boa.0.94.13.tar.gz源代码,并用以下命令解压软

boa一0.94.13.tar.gz

(2)编译源代码。进入src目录,编译源代码。解压后src目录下有mkaefile.in 文件,但没有Makefile文件。为了编译源代码,需要先生成Makefile文件,在src 目录下运行configure命令: ¥./configure 生成的Makefile文件是针对X86平台的,为了能够在¥3C2410的ARM9平台 上使用Boa,需要修改Makefile文件中的编译器选项:
CC=gcc改成CC=arm—linux-gee CPP=gcc-E改成CPP=arm—linux?gee-E 这里由于存在的系统bug,需要把src目录中boa.c的226行去掉才可以成功

安装,否则将出现“icky
225

Linux kernel


bug!’’的错误。如下修正【刎:
一一t
,一7/‘

,,口*…:一

if(sctuid(O)!=-l>
//DIE('cickv Li_nux kernel

226..

bug!,’1:∥该行要去掉方1可~…

然后输入make命令进行编译,在src目录下就可以生成Boa文件。将在宿主 机上编译成功的Boa可执行文件添加到文件系统之中,重新下载文件系统。此时, Boa就成功的移植到终端系统之中。
5.2.3

Boa的配置文件

和大多数linux环境下的应用程序一样,Boa也有自己的配置文件:boa.conf。 该文件是一个文本文件,由一些规则组成,用于配置Boa服务器时指定相应接口、 服务器名称、一些相关文件路径等。顾名思义,通过boa.conf.:件来配置boa服务器, 完成系统的相关参数设定。boa.conf文件在Boa启动时被调用。因此,Boa服务器的 正确运行的前提就是保证boa.conf文件的正确配置。 在本论文中,对boa.conf作以下修改和设置: ●服务器端口设置,这里按照http协议的习惯设置为80。即:Port ●对于用户,将User nobody改为User
0。 0。 80

●对于用户组,将Groupnogroup改为Group

●将DocumentRoot/var/www改为DocumentRoot/home/www/html ●定义CGI程序所在的目录:ScriptAlias/cgi—bin/home/www/cgi—bin
●定义默认页面文件ScriptAlias/index.html/home/www/html/index.html

这样配置后的BoaJ]艮务器将/home/www作为服务器的根目录,CGI程序放在/

湖北工业大学硕士学位论文
k.

home/wv,nⅣIc蛐in目录下,静态网页文件放在/home/www/html目录下。本论文中,
页面是基于CGI的动态页面,所以应该特别注意CGI程序所在目录这一项,CGI程 序都是以/homclwww为根目录,而不是以home/www/cgi.bin为根目录。

o!!!苎!曼苎!!!曼!!!!!!!!!!!!!!!!!!!詈!!!!皇曼

5.3用CGI实现图像的动态采集
通用网关接12 CGI(Common
Gateway

Interface)是一个外部应用与信息服务器

(女fihttp或webJ]艮务器)之间的标准接E11441。其主要功能是在Web环境下,从客户端传 递一些信息给Web服务器。CGI脚本通过标准输入STDIN从web服务器得到输入信 息,最后使用STDOUT输出html形式的结果文件,经Web服务器送回浏览器显示给 用户。由于用户能传递不同的参数给CGI脚本,所以CGI技术使得浏览器和服务器 之间具有交互性。其工作过程如图5.3所示1451。 用STDOUT输出 运行结果

图5.3 CGI工作原理

其中,CGI与表单之间的信息交互方法有两种模式:“GET'’和“POST'’。选择哪 种模式取决于表单(FORM)的“METHOD”字段的设置。如果METHOD设定为POST, 数据会以STDIN方式送人CGI接口;如果METHOD设定为GET,数据会保存在
QUERY

STRING的环境参数中,以供接口读取。

服务器与CGI程序交换信息的协作方式是通过环境变量实现的。上述
QUERY

STRING就是其中一个环境变量。无论什么请求,CGI程序总能在特定位

置找到某些信息。无论环境变量怎样定义,总有一些变量有着特定含义。环境变 量就是保存用户信息的内存区。

5.3.1以CGI实现动态网页
CGI脚本可以用任何计算机语言描述,这里采用C语言实现动态网页脚本【矧, 在网页中嵌入采集到的实时图像。CGI脚本通过编译后在Server运行。

湖北工业大学硕士学位论文
皇曼曼!!!苎!!!!!!皇苎!鼍I!!曼!鼍!曼!!!皇苎!!!!!!!曼!!!曼曼曼!曼曼!!皇曼!鼍!曼曼鼍曼

5.3.1.1初始页面的设计 当客户机向服务器发出连接申请,并得到服务器响应后,Boa首先将根据 boa.conf中配置的默认页面路径向客户机发送初始html页面。 考虑系统安全,不能让任何人随意获得采集到的图像,所以这里初始html页 面被设计成用户密码验证页面。只有正确输入预先设定好的口令才可以顺利进入 图像显示页面。初始页面采用html标记语言描述。该html文件如下所示:

文件中,<form method=”post”action=”/cgi-bin/cgi_main”>表示表格的传输方式 是POST,当表格中的参数和数据在发送之后,服务器将调用/c#-bin/cgi_main,其 中c西main就是在口令通过后服务器运行的CGI脚本。演示结果将在测试结果一 节中描述。 5.3.1.2图像显示页面CGI脚本的实现 当客户输入正确口令后,服务器将以网页的形式将采集到的图像数据发送到 客户机浏览器上。该页面是由CGI脚本cgi_main负责。 CGI脚本在运行中,将标准输出(STDOUT)重新映射到远端客户机浏览器。 即:由CGI脚本的所有标准输出信息将被传输到客户端的浏览器。而浏览器上能 够显示的是html标记文件,所以需要CGI脚本按照html的格式输出。这样程序的 编写比较复杂。为了便于程序编写,首先按照html格式要求编写出以下几个常用 html显示标记函数:
void void

htmlHeader(char宰title); htmlBody0; addTitleElement(char掌title);

void.htmlFooterO;
void

调用这几个函数分别能完成向html文件中添加头信息、<body>标记、结束标 记和<tile>标记。 服务器成功调用CGI脚本后,有两个工作需要完成: ●调用本文上一章介绍的图像采集程序,完成实时图像的更新。

湖北工业大学硕士学位论文
●将所得到的实时图像嵌入到html网页中,并发送至远端的客户机浏览器。 以上两个工作在具体程序中被抽象出两个任务,并由这两个任务分别实现。 在linux环境下,任务的创建由函数fbrk完成。主页面的CGI脚本程序流程图如
图5.4所示。

图5.4主页面CGI程序流程 CGI脚本程序关键代码如下所列:

湖北工业大学硕士学位论文

程序中,showimage_pageOi函数的功能是显示图像页面。该函数中完成以下功 能: ●将采集到的图像信息嵌入到显示网页中。 ●提供选择采集设备选项控件。若嵌入式终端连有多个USB摄像头,则可 以通过该控件可以选择显示哪个摄像头采集到的图像。 ●提供选择自动显示间隔时间选项控件,该值为1.15s。当系统处于自动更 新模式的时候,通过该选择设置自动图像更新的时间间隔。 图像显示页面函数关键代码如下所列:

40

湖北工业大学硕士学位论文

该函数中,图像文件名默认为out.jpeg和outl.jpeg。这两个图像文件被存放在 /varlwww/image/目录中。之所以采用两个图像文件存放图像数据,是为了提高系 统速度。两个图像文件,一个用来提供给CGI程序显示,另一个用来存放当前采 集到的图像数据。以此来避免两个进程中对同一资源访问带来的竞争。

5.3.2测试结果
至此,基于Boa的嵌入式服务器已经成功架设,能够完成图像采集和输出包 含图像信息的CGI脚本程序也成功编译。下面对系统进行测试。 由于本实验室缺乏固定公网坤,我们采用局域网测试。设定嵌入式目标板口 为192.168.1.94,PC为WindowsXP平台,口设制为192.168.1.99。在PC浏览器 上访问http://192.168.1.94,浏览器上首先显示口令输入页面如图5.5所示。

41

湖北工业大学硕士学位论文
文件(!)lI培(E)童看(!)历史(§)书簦(勤工^(T)糟助(旦)

,————————一
Input

p㈣ord……?

L2嬲恐。j L!e2墼j.』

图5.5口令输入页面 当正确输入口令之后,由客户端浏览器向服务器发送命令。测试中,我们设 置了设备选择为设备i,自动采集时间间隔为最小值1s。固定采集图像为320x240 大小。图像采集测试效果图如图5.6所示。
文件(芒)■瞰D 董l'fi9收瓤盎)工工(I)话肋@ 聋碧

◇后退?≥;杰。燕:/歙忱天彩?l。≥固?,,(

孓铹豢/爨
l_一“

地址(∞篱煦:Ⅳ1薯1581吲c曲啦口胛
i廿嚣缸<:- V开拮

_霹国韩釉锻”
钐珏-

掣,0}?☆书签,驿已拦越31个嗲拼写橙毒-;j翻谭-◆发选至,

Select

Videodevi ce:vzdeoO’

Ref'lesh

Interva]fs):1

V:

函囹墨西五

缀霸獭麴籀盆甾豳鲞盗豳江溢出盗誓嗣国遴篮警豳谧蔷函盔涵函潮黼盗濯童警蠲篮豳警磁。貔{麓;茏乞辘茏
图5.6图像显示页面

42

湖北工业大学硕士学位论文 5.4本章小结
本章介绍了基于B/S模式的图像远程采集传输系统的构建模型,并结合前章 所述描述了该模式整个系统的软件框架。在对Boa和CGI初步介绍的基础上,详 细叙述了Boa的移植以及嵌入式服务器的架设,并用C语言完成CGI脚本编程以 实现动态地实时显示图像到远端浏览器上。最终完成了通过Interact和浏览器进行 远程图像传输系统。

湖北工业大学硕士学位论文

第6章基于GPRS的图像远程无线传输
基于有线路径传输数据,受到空间位置、线路等诸多限制。近年来随着无线 网络地快速发展,特别是GPRS网络技术的成熟应用,为数据的无线远程通讯带

来了福音M。本章就基于GPRS无线网络,来实现图像的远程传输。
在前文所述的嵌入式开发平台上增加GPRS通讯模块。在图像采集完成之后, 图像可通过GPRS模块传送至GPRS网络。由于GPRS无线网络通过GGSN和 Intemet相连,所以图像能够顺利的传送至拥有公网口的监控服务器上【铝1。该系统 原理结构图如图6.1所示。

图像采集发射终端 图6.1系统原理结构图 6.1

GPRS概述
GPRS(General
Packet Radio

Service)是通用无线分组业务的简称。作为第二代

移动通信技术GSM向第三代移动通信(3G)的过渡技术,是由英国BT Cllnet公司 最早在1993年提出的,是GSM Phase2+(1997年)规范实现的内容之一,是一种基 于GSM的移动分组数据业务,面向用户提供移动分组的口或者X.25连接149J。 GPRS在现有的GSM网络基础上叠加了一个新的网络,同时在网络上增加一 些硬件设备和软件升级,形成了一个新的网络逻辑实体,提供端到端的、广域的 无线口连接。通俗地讲,GPRS是一项高速数据处理的技术,它以分组交换技术 为基础,用户通过GPRS可以在移动状态下使用各种高速数据业务。GPRS是一种

湖北工业大学硕士学位论文
新的GSM数据业务,在移动用户和数据网络之间提供一种连接,给移动用户提供 高速无线服务。GPRS采用分组交换技术,每个用户可同时占用多个无线信道,而 同一无线信道又可被不同用户共享,资源被有效利用。GPRS网络的数据实现分组 发送和接收,用户永远在线并且按流量、时间计费,高速并降低了服务成本。 与现有的通讯网络相比,GPRS有以下两个新特点: (1)GPRS采用的是分组交换技术,不需要像Modem那样拨号连接,用户只 有在发送或者接收数据的时候才占用资源。 (2)GPRS以传输文件数据量计费,而不是以传输的时间计费,所以就算遇 上网络堵塞,也不会计费,对用户更为合理。 GPRS是基于现有的GSM网络实现的,需要在现有的GSM网络中增加一些 节点:网关GPRS支持节点GGSN(Gateway 支持节点SGSN(Serving GPRS
Supporting GPRS Supporting

Node)、服务GPRS

Node)。GGSN在GPRS网络和公用数据

网之间起关口站的作用,它可以和不同的数据网络连接。SGSN记录移动台的当前 位置信息,并在移动台和各种数据网络之间完成移动分组数据的发送和接收,为 服务区内所有用户提供双向的分组路由。系统公用GSM基站,但基站需要进行软 件更新,并采用新的GPRS移动台。GPRS需要增加新的移动性管理程序,通过路 由器实现GPRS骨干网互联。GPRS网络结构模型图6.2所示。

图6.2 GPRS网络结构模型

6.2

GPRS无线通讯的实现
GPRS模块及AT指令

6.2.1

基于本课题无线传输静态图像的靠要,这里选用BenQ公司的M22为GPRS
无线通讯模块。实物图如图6.3所示。

湖北工业大学硕士学位论文

图6.3 GPRS模块实物图 该模块具有以下特性和技术参数:
(1)GSM/GPRS
Class

10三频模块。

(2)符合ETSI GSM

phase 2+。

(3)内嵌TCP/IP协议,可以支持数据业务的透明和非透明传输。 (4)通讯功能:支持GSM语音、数据、传真、短消息及GPRS数据传输等。 (5)软件支持标准AT command(3GPP 27.07/27.05)。 (6)模块体积:55.5×40×4.95ram。 (7)模块重量:139。 (8>正常工作温度:一40--一80℃。 (9)价格低廉,适于大规模生产。 在M22 GPRS通讯模块中插入一张SIM卡,并当SIM卡用户向服务商申请开 通GPRS功能后就可以通过拨号上网的方式连接Intemet。在本课题中采用的是中 国移动的全球通SIM卡,需申请开通CMNET功能以满足无线传输数据的需要。 M22的AT指令是由BenQ公司定义的[50l。MCU通过全串口和GPRS模块相

连,所有AT指令通过标准串口输入模块,并最终实现对通讯模块的控制。可见, AT指令是控制M22模块的指令,也是系统间的软件接口。在GPRS模块中,无线
移动台的软件结构如图6.4所示。

图6.4 GPRS无线模块软件结构 串口接口作为MCU和GPRS模块之间的唯一接口,二者之间所有的数据都由

湖北工业大学硕士学位论文
串口进行传输。

6.2.2GPRS模块上网通讯过程及其实现
为了使用GPRS模块将我们的终端设备连接到Internet上,从拨号到获得中国 移动分配IP需要经过以下步骤: (1)初始模块状态。这里包括设置UARTl的波特率。为了避免通讯模块进 入睡眠状态,采用以下命令:
AT¥NOSLEEP=1

(2)采用以下命令设置APA:
AT%CGPCO=I,“PAP,,”,1

该指令指定了验证的方式以及用户名称和密码,由于GPRS支持空的用户名和
密码,所以这里的用户名和密码为空。

(3)采用以下命令进行PDP场景设置:

灯+CGDCONT=I,“IP”,“CMNET'’
该命令表示,网络层使用的是IP协议,网关设置为中国移动通讯网 CMNET(China Mobile Net)。 (4)采用以下命令设置PAD。在该命令中将设置将要连接的远端服务器口、 端口号以及传输层使用的协议。如下所示:

灯¥DESl’D口O=“202.114.180.133",1,5000
该命令表示,将要连接的服务器口是202.114.180.133,使用的传输层协议是 TCP,使用的端口号是5000。 (5)采用以下命令拨号:
√气T宰97舞

假若以上步骤成功设置,都将返回“OK"提示字符。拨号成功后GPRS模块 将连接到Intemet上,此后可以通过GPRS无线网络传输数据。 GPRS拨号上网的关键代码如下所列:

47

湖北工业大学硕士学位论文

代码中调用write_gprs_command O函数可以将参数里面的字符串从UARTl接 13中发送至GPRS模块。create_Jipinfo()函数可以完成将P号、传输层协议代号和 端口号整合成一个设置PAD的AT命令字符串。

6.2.3通过GPRS发送数据的实现
在无线网络中,数据的可靠性远不如有线网络。M22 GPRS模块每次发送的数 据包被建议不超过1KByte。在本系统中,存储为jpeg格式的图片一般将远大于 1KByte。也就是说,在利用GPRS远程无线传输图像时不能将其作为一个数据包 发送,否则将可能引起不可预料的错误。因此在传输之前需要将图像数据分割为 若干个小于1KByte的数据包分别发送。在服务器接收端再将这些数据包整合成一 个图像文件。本项目中采用给包编号的策略来实现数据的分割和合并。另外,对 于监控服务器,它可能接收到来自不同GPRS终端的图像数据,因此需要将不同 来源的数据包区别开来。基于以上原因,我们设计了传输过程中包的结构如图6.5
所示。

图6.5传输中数据包结构 其中,8字节的GPRS ID是每个GPRS模块的固有D,通过它可以确定图像 数据的来源;8字节的包总数是一组数据被分割的数据包数量;8字节的包m是 当前包在一个原始图像文件中被分割的序号;有效数据存储有用的图像数据。
函数send_data O则完成数据的发送。该函数关键代码如下所列:

湖北工业大学硕士学,位论文
package_hum=length/1000;∥计算一共需要分割的数据包个数
else
1IN

一//需要发送的数据大于1000B



package_hum=length/1000+l;力针算一共需要分割的数据包个数 ,//数据量大于1000B,每次传送1K数据


while(1ength>looo) {

//package=”..8(ID).8(包数)烈包序列)..1ength(有效数据).”
add__package

header(package,package_num);//数据打包,即加包的头信息

tcmp。package+24; |tt

for(i=O;i<1000;i++) { 》 package[1024]=。桫: write__gprs_command(package,1024);历蕴过GPRS模块发送数据
data+霉1000;


幸temp++=data[i];删每数据拷入缓存

length啭1000;

》、

, ,

//package=”..SOD).8(包数).8(包序列》,沁ng£h(有效数据).”,传送最后一个包
add_package__header(package,package hum);,/数据打包7.
temp。package+24;

for0=o.i《length;“”
掌temp i-+=串data++;



7’

7。

脯数据拷入缓存

package[1ength+24】=W;
write_gprs_command(package,length+24);/,i煎过GPRS模块发送数据
return

l:

、-,

函数中参数data,是需要传输的数据位置;length是需要传输数据量的大小。该 函数中调用的函数add__package_header0用来完成数据包的封装。该函数将需要发 送的数据前面加上GPRS ID、包总数、包序号等头信息,以形成一个完整的数据
包。

6.3基于Linux的监控服务器软件
6.3.1

Linux下Socket网络编程

在x86平台的PC I-:构建基-T'Linux操作系统的服务器软件。由于本项目的应用

特殊性,没有现行可利用的服务器构架系统可以利用。项目中利用Linux Socket完 成服务器软件构架并实现相关功能。 Linux下Socket的网络编程需要根据固定的模式实现,网络程序的设计靠套接

湖北工业大学硕士学位论文
字实现接收和发送信息。套接字实质上提供了进程通讯的端点,进程通讯之前双 方首先必须建立一个端点,否则是没有办法建立联系并互相通讯的。每一个套接 字都用一个半相关描述:{协议,本地地址,本地端121)。一个完整的套接字则用 一个相关描述:{协议,本地地址,本地端口,远程地址,远程端口)。每个套接 字有一个本地的唯一套接字号,由操作系统分配。套接字利用客户一服务器模式 巧妙地解决了进程之间的通讯连接地问题【5¨。本系统采用Berkeley的套接字实现。 服务器

客户机

图6.6面向连接的流式套接字的工作流程图 套接字有三种类型: (1)流式套接字(sock
也是“1”,“2”。

)MAERTS.。流信通地接连向面,靠可供提以它

如果通过流式套接字发送了顺序地数据:“1”,“2”。那么数据达到远程时候地顺序

(2)数据报套接字(SOCK

DG删)。它定义了一种无连接地服务,数据

通过相互独立地报文进行传输,是无序地,并且不保证可靠,无差错。数据报套 接字提供的是“无连接”的服务,它表现在:如果你发送了一个数据报,它可能不会 到达,或者以不同的顺序到达,或者到达了但数据中有错误的存在。 (3)原始报套接字。它允许对底层协议如口或ICMP直接访问,主要用于新网 络协议的实现和测试等。原始套接字主要用于一些协议地开发,可以进行比较底 层地操作,一般应用中比较少见。

湖北工业大学硕士学位论文
显然,本系统中传输的数据具有固定顺序,假若采用数据报套接字则需要另 外开发保证数据安全传输的策略。正因为如此,为了简化系统的开发难度,建议 采集终端选择采用TCP协议传输数据。论文在服务器中暂时只实现了面向连接的流 式套接字的通讯模式。面向连接的流式套接字的工作流程如上图6.6所示。
6.3.2

Linux下服务器的实现

在linux系统下,服务器软件在进入运行之后通过fbrk函数创建出两个任判52】。
(1)其中一个任务完成数据的监听接收并处理。当监控服务器监听端口时, 发现有采集终端对服务器发出的连接请求时,就接受远程采集终端的连接请求, 并解析该终端所带GPRS模块的IP地址,在Linux文本操作环境中前面方括号的提示 符将显示GPRS模块的IP地址。对于接收到的图像数据,服务器将其存放在当前工 程目录下,该文件名以远端采集模块的GPRS ID序号命名,这样可以在连接若干远 程终端时分辩不同终端设备。 (2)另外一个任务完成对键盘的监控,并把用户输入的合法相关命令编辑成 命令字符串发送数据采集终端。对于不合法的命令抛弃并输出相关提示信息。 结合Socket编程方法和具体的应用,服务器软件流程如下图6.7所示。 Taskl:监听数据



T雒l(2:发送命令

[三夏]
图6.7服务器软件流程图

服务器在Linux环境下,使用C语言实现基:]:SocketflcJ N络通讯。软件采用gee
51

湖北工业大学硕士学位论文
编译器编译连接。主函数关键代码如下所列。
int

main(int argc,char阜argVl) //参数定义



脓取Socket文件描述符
…… //错误处理

坂(sockfd=socket(AF_-INET,SOCK_STREAM,0jcl嚣-1)

臌同一个端口号在释放后还可以再被打开利用
setsoekopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,len); ∥填写本地socket的相关参数
addr_.10cal.sin_family=AF nqET;

。。z/协议族

∥端口号 addr_local.sln_port=htons(my_port); addr_local.sin__addr.s_addr=htonl 0NADDR_ANY);∥自动填入本地IP

bzero(&(addr_local.sin_zero),8);
//绑定一个固定端口号

∥将其他成员填入零

if(bind(soekfd,(struct sockaddr+)&addr_local,sizeof(struct sockaddr))==一1) … ……//绑定失败的错误处理

if(1isten(soekfd,BACKLOG)一一1)
……


膛听端口

./,j盗听失败的错误处理

white(1)


’…

sin_size=sizeof(struct soekaddr__in); ∥等待连接请求,并为该连接分配新的socket描述符 if((nsockm-acccpt(sockfd,(struct sockaddr事)&addr …… //错误处理 pid=fork{);
一//仓日建进程
remote,&sin

size))==一1)

近(pid—O)


∥子进程一从客户机接收数据

while<1) { bzero(r._buf,LEN_R); ’llum;recv(nsockfd,r_buf,LENjt,o);∥接收远端传来的数据 if(hum>o) ,//解析远端传来的数据 dispose rev data(c轮mmand3,啦 } }
else

if(pid>o)


股进程一监听键盘输入以接收命令
∥填入远端客户机信息



ipinfo=inet_ntoa(addr_remote.sin_addr); while(1) { printf(“f%sjft,ipinf0);
gets(command_btt0;

∥取键盘命令

52

湖北工业大学硕士学位论文

该函数中调用的recv()函数是接收远端客户机发来的数据。这些数据在监控服 务器接收后通过调厍Jdispose_rcv_data0函数解析出来。在dispose
rcv

dataO函数将

嵌入式终端发送过来的数据包合并到一个文件之中,并以远端GPRS的ID命名并保 存。函数parse_serverO的功能是解析从键盘输入的命令,这些命令合法时将被传输 到远端的嵌入式终端,非法时Linux将显示提示信息。


为了方便程序的调试,编写TMakefile文件1531。该文件在编译调试过程中,在 工程目录下输入make命令,系统将自动编译连接生成可执行文件。Makefile文件如
下所示:

6.4图像无线传输中的数据分析
6.4.1采集终端和监控服务器间的数据流
采集终端和监控服务器之间涉及的数据传输较多:数据由采集终端传向服务 器,或者由服务器传向采集终端。数据的交互过程中完成系统的最终数据采集并 保证系统的正常运行。

53

湖北工业大学硕士学位论文
Client

Client

Server

Client

图6.8图像数据传输流 图6.9控制系统数据流 采集终端和监控服务器之间的数据流基本分为三种:

图6.10监控数据流

(1)采集到有用的图像数据传输。这些数据是远程采集最终需要得到的数据, 这些数据的传输流程如图6.8所示。 (2)系统控制数据的传输。在监控服务器和嵌入式终端之间有一些控制命令 的传输,这些控制命令数据由键盘输入命令发起,显然不同于图像数据。这些数 据是系统参数设置的依据,系统根据这些数据来完成相关的操作。控制系统数据 流如图6.9所示。 (3)系统在线监控数据的传输。这组数据周期性的在终端和服务器之间传输, 用于监视GPRS模块是否在线。嵌入式终端定时的向监控服务器发送心跳包,即 字符“Test’’。服务收到后将返回一个确认信息(ACK),以确认GPRS目前在线, 否则嵌入式终端将重新启动GPRS模块并重新拨号。监视数据流如图6.10所示。
6.4.2 MCU与GPRS模块间的数据类型及其辨识策略

嵌入式终端系统的控制和运行需要根据不同的数据流来做出不同的动作。

在GPRS模块和ARM的通讯来说,对于ARM来说可以分为数据输出和数据

湖北工业大学硕士学位论文
输入。数据的输入类型有AT指令返回值、SMS数据(短信功能未实现)、服务器 命令和应答值四种。数据的输出类型有AT命令、SMS数据、测试数据和采集的 有效图像数据四种。这些数据类型可以分为命令模式下数据流和数据模式下数据 流。这里的命令模式指系统传输的数据是系统命令,数据模式指传输的数据是有 效的图像数据。数据类型分类如图6.11所示。

.命令模式1、sM SP默G, SM SMS


6。。世。、f


AT Command Data

AT

Command

Return Data

Value]数据来自


蕊巍

八∥I天厌

数据模式卢试数据
。有效数据

server

Co蚴and

1数据来自


应答值(ACK)

Intemet

图6.11数据类型分类 对于Linux服务器来说,可能接收到数据的有采集到的有效数据和测试字两 种。数据的输入类型有服务器命令、应答字“OK'’、应答字“ERROR”三种。 上节中分析的数据在传输过程中以字符为表现形式,所以通讯信号的分类可 以根据各种不同的特征字符串来区别开来。通过提取特征值的方法来判断数据类 型。各特征值如下所列: (1)AT命令以“AT"开头的字符串;

(2)AT命令返回值一般为“OK”或者“ACK”;
(3)ARM和GPRS之间采集到的有效数据以GPRS ID开头; (4)规定服务器命令格式为“*CM+xx=xx*’’的形式; (5)测试数据为字符串“Test"; (6)应答信号字符串为“ACK’’或者“OK"; (7)采集终端和Server之间的有效数据格式为“GPRS ID*包总数毒包ID’’。 通过这些特征值可以有效的判断MCU所收到的数据类型,根据不同的数据类 型调用不同的程序完成所需要的功能。

55

湖北工业大学硕士学位论文 6.5本章小结
本章介绍了GPRS基础,并利用GPRS网络来实现图像数据的远程无线传输。 介绍了终端系统通过GPRS连接Internet方法步骤和基于PC Linux平台的服务器 接收软件的开发方法。最后分析了系统中的数据流向和不同的数据类型,并以此 为根据实现数据的传输和系统的控制。

湖北工业大学硕士学位论文

第7章总结与展望
7.1两种传输方式的比较
文中详细介绍了两种模式进行图像的远程采集传输:基于B/S模式的远程图 像采集传输和基于GPRS的无线远程图像采集传输。这两种传输方式的前提都是 完成图像的采集。对于嵌入式终端的图像采集模块是完全相同的,不同之处在于 前者是通过有线Internet网络实现,后者通过GPRS无线网络实现。 两种传输方式都是基于嵌入式技术和现有的网络技术实现,但两者也有很大
区别,表现在以下方面:

(1)用途不一样。基于B/S模式的远程图像采集传输方式可以用在家庭以及 Intemet网络发展比较成熟的地区。而基于GPRS的无线远程图像采集传输方式可 以用在人烟稀少的荒郊野外以及没有网络布线的位置。 (2)网络连接方式不一样。从本质上说两种传输方式最终通过Internet网络 传输图像数据,但是二者的连接方式却有区别。基于B/S模式的远程图像采集传 输方式是在嵌入式终端架设嵌入式服务器,网络连接时,终端充当服务器的角色。 需要图像数据传输时,由客户首先向嵌入式终端发起连接。而在基于GPRS的无 线远程图像采集传输方式下,嵌入式终端是客户机,接收图像的远程机器是服务 器。需要传输图像时,由嵌入式终端首先发起连接,服务器不能主动发起连接。 (3)需要的口网络资源不一样。基于B/S模式的远程图像采集传输方式,嵌 入式终端里架设有服务器,它为客户提供连接服务,所以必须要有一个固定口, 而连接它的客户机不需要公网固定口。基于GPRS的无线远程图像采集传输方式, 核心是通过GPRS通讯,而终端的GPRS模块每次拨号上网时分配的口是不固定 临时P。换言之,嵌入式采集终端不需要固定的公网口。而这种方式下的监控服 务器要随时接收采集终端的连接,必须要固定IP。 (4)系统规模不同。基于B/s模式的远程图像采集传输方式,由于服务器基 于Boa实现,所以规模只能定位于小规模领域。再者,在此种方式下,嵌入式终 端运行图像数据采集、服务器和CGI脚本程序,需要更高的硬件平台支持。而在 基于GPRS的无线远程图像采集传输方式下,嵌入式终端主要运行图像数据采集 程序,通讯工作主要交给GPRS模块完成,因此需要的硬件配置可以稍低。

湖北工业大学硕士学位论文
7.2全文总结
本文主要研究了基于嵌入式的远程图像采集传输系统,该系统在成功构建基 于ARM和Linux的开发平台的基础上,首先通过USB摄像头采集原始图像数据, 然后用JPEG算法将其压缩为jpeg格式图像文件。在此基础上分别两种方式实现 基于Intemet的有线传输和基于GPRS网络的无线远程传输。
全文的主要结论如下:

(1)对图像远程采集传输的现状进行了介绍。嵌入式技术和网络技术是当前 最热门和最有前途的技术。在研究过程中也感觉到嵌入式系统作为一个微系统的 性能和平台稳定性都十分优秀。因此本文选择采用嵌入式技术来实现图像的远程 采集传输。 (2)Linux因其开源免费等独特优势融入嵌入式系统是当前的一大趋势。但 由于嵌入式系统的特点,应注意考虑应用程序的性能问题和可移植性。由于Linux 是一种比较完善的操作系统,在其上开发应用程序要考虑到嵌入式系统的硬件资 源情况,很多在PC机上并不影响工作的问题,在嵌入式系统中应充分给予考虑。 (3)讨论了如何通过USB接口连接MCU和摄像头以完成图像采集工作,主 要是USB摄像头的驱动编译和模块加载。在此基础上,通过Vide04Linux提供的 API接口函数,开发了嵌入式Linux环境下的图像采集程序。最后利用JpegLib静 态库开发了图像的压缩处理程序。 (4)对Boa和CGI进行了简要介绍。在图像成功采集的基础上,采用Boa 架设嵌入式服务器,并用C语言编写了CGI脚本程序以实现包含图像信息的网页 实时显示。 (5)提出了另外一种无线远程传输的方案一基于GPRS的无线远程图像采集 传输。在该方式下,详细分析了GPRS模块和MCU通讯数据流的特点,并用程序 实现了有效数据和系统数据的分流。在成功驱动Linux串口接口的情况下,用程序 实现GPRS模块的拨号上网以及数据传输。并在Linux PC上编写了服务器程序, 在该服务器上能接收嵌入式终端数据并向其发送系统参数设置命令。 (6)本文将嵌入式技术用于图像的远程采集传输之上,实现了基于嵌入式系 统的图像采集。提出的两种传输方式经过改善都可以应用于多种环境场合,在监 控等诸多领域都有重要的显示意义。

—___———__Illllllll

湖北工业大学硕士学位论文 Ill奠!|!曼—黑曼!!!曼蔓!!!!曼皇!!!!曼皇!曼!!!曼1

7.3存在问题
虽然课题取得了部分阶段性的成粟,测试结果大部分也令入满意。但是,由 于一些现实技术问题,以及研究的不够深入,研究力度和水平也很有限,目前的 工作还是存在一些问题,主要有以下几点: (1)图像的清晰度不高、采集速度较慢。图像在320X 240象素时清晰度还 符合要求,再大的话就产生失真。采集一张静态图像,从采集到压缩完成经测试 共需要1.03s,耗费时间过多。 (2)基于B/s模式的传输方式能够连接的客户机数日受限,经过测试,当连 接一台客户机时最快可以达到每秒显示一幅图片,但当多台机器连接时,效采就 不太理想。 (3)基于B/s模式的传输方式依赖网络传输速度。局域网内尚未发现网速对 其的影响,僵真正通过Internet的传输还有待测试。 (4)基于GPRS的传输方式传输速度不快。也出现过图像数据传输过去发生 错误的现象,说明该方式受GPRS网络稳定性的影响较大。 (5)基于GPRS的传输方式系统稳定性不好,在经过长时间测试时,发现系 统时有死机现象和GPRS掉线现象。

7.4展望
随着社会的发展,越来越多的领域将涉及图像的远程采集,无论是基于有线 还是无线的传输方式。同时,基于嵌入式Linux操作系统的应用有很多,图像远程 采集系统的研究是比较有现实意义的方向。随着嵌入式处理器性能的提高和Linux 操俸系统的逐步普及,相信这方面的研究会有更广阔的发展空闻。 论文的后续工作还有许多要做,表现在以下方蕊: ●将静态图像的传输变成动态图像的传输。动态图像的传输更具有实用性和 市场前途。 ●提高系统的稳定性。系统之所以不太稳定一定是某个地方bug的存在。而 同时系统的稳定性和健壮性也是嵌入式系统的要求所在。 ●用更高端的摄像头替换WebEye2000摄像头。这里涉及到Linux中驱动问 题,设备驱动本身也是嵌入式Linux中极其挑战性的技术。 ●探索将GPRS的远程数据传输应用予其他领域。除了图像采集外,各行各 业都有无线采集的需求,基于GPRS的无线传输有非常广阔的空间。

59

lI■●——■■—●—■——■鼍■■——●●■■—!鼻!■■—■■●————●■■■●—●——■———●—■————●●■■■●———■——■■■■—■■■■■——●—●———一

湖北工业大学硕士学位论文

参考文献
【1】周树民.无线视频传输关键技术研究【D】.北京:中国科学院研究生院.2006. 【2】2
Son,J.Y.Multiview 2006.V01.2:359—363. Image Acquisition and

Projection[J].Journal

of display

technology,

【3】方璐擞字视频监控系统的研究与实现【D】.重庆:重庆大学研究生院,2002.
【4】刘富强.数字视频监控系统开发及应用『M】.北京:机械工业出版社,2003. 【5】邢玉东.基于¥3C2410的嵌入式远程监控系统【D】.吉林:吉林大学研究生院,2007. 【6】李绍民,滕国库.嵌入式图像采集系统的硬件设计【J】.大连海事大学学报,2004,30(2):4246. 【7】CHEN Shuai,ZHONG Xian—xin.Image
Telemetering and Positioning Receiver System Basing
on

GPRS【R】.Dalian(CN),International Symposium 011 Test and Measurement(ISTM/2005),2005. 【8】Chin E.Lin,Ying—Shing Shiao.Real?Time Remote Onboard Diagnostics Using Embedded GPRS
Surveillance Technology[J].IEEE Transactions
on

Vehicular

Technology,2001,V01.56,No.3.
Architecture
in

【9】Tmos

Balderas-Contrersa

RenA.Cumplido—Parra.Security

UMTS

n硼

Generation Cellular Networks.2004:1.19.

【10】WANG Mi
Navigation

GUO Bingxuan.Speech

Recognition

Technology Applied to Intelligent Mobile

System【J】.Ge0-spafiM Information Science,2002,50):37-40.

【11】周立功.ARM嵌入式系统基础教程【M】.北京:北京航空航天大学出版社,2005.

【12】费浙平.32位嵌入式系统的ARM浪潮—一ARM体系结构在微控制器领域的应S P].2004
年全国第五届嵌入式系统学术交流会,北京:北京航空航天大学出版社。2004. 【13】F
Vahid,T

Givargis.Embedded

System

Introduction[M].US:Frank

Vahid and T0ny

Design:A Unified Hardware/Software Givargis John Wiley&Sons,2002.

【14】田泽.嵌入式系统开发与应用【M】.北京:北京航空航天大学出版社,2005. 【15】李侃.基于ARM嵌入式linux系统的远程机器人控制与图像传输的研究p】.北京:北京邮
电大学,2006.

【161于明,范书瑞,曾祥烨.ARM9嵌入式系统设计与开发教程【M】_七京:电子工业出版社,2006.
【17】Samsung Co。¥3C2410A user’s manual 【18】Jean J.Labrosse.MicroC/OS?ll
LLC,2002.
Revision 1.0.Samsung,2004. The Real?Time

Kernel,Second Edition[M].US:MCP Media

【19】KARIM YAGHMOUR.Building

Embedded Linux

System[M].0’Reilly Media,Inc.2003.

【201周立功。ARM嵌入式系统试验教程(三)【M】.广州:广州周立功单片机发展有限公司,2005.
【21】孙天泽.嵌入式设计及Linux驱动开发指南【M1.北京:电子工业出版社,2005. 【22]曹程远.U—B00t在¥3C2410 I-_的移植【J】.微型电脑应用,V01.21,No.7,2005:48-50. 【23】周俊,谭宝华,熊健民.U-boot在LPC2200上的移植【J】.电脑开发与应用,V01.2,2008. 【24】张宏财,赵曾贻.基于ARM核的Boot loader代码的分析与设计【J】.微计算机信 息,2006,5-2:137--139. 【25】孙天泽,袁文.嵌入式Linux操作系统的移植【J】.仪器仪表用户,VOLl2,2005 No.6:116-118.

湖北工业大学硕士学位论文
【26】Russell King.The
ARM Linux

Project[M].US:Addison Wesley

Publishing Commany,1998

【27】周立功.S3C2410&嵌入式unlI)【系统教程【M】.广州:广州致远电子有限公司,2007. 【28】熊健民,胡长晖,宋庭新.USB数据采集卡的研制【J】.湖北工业大学学报,2007,No.3.:1.3 【29】Jonahan corbet,A1essandro
Rubini&Greg
Kroab.Hartman,Linux Device Drivers,Third

Edition[M],Taipei:O’Reilly Media,Inc.2005. 【30】刘淼.嵌入式系统接口设计与Linux驱动程序开发【M】.北京:北京航天航空大学出版
社.2006.

【31】Robert Love.Linux内核设计与实现【M】.陈莉君,译.北京:机械工业出版社,2006. 【32】周立功,陈明计.ARM嵌A式L.mux系统构建与驱动开发范例【M1.北京:北京航空航天大学
出版社。2006.

【33】刘欣,翟勇.uClinux平台上USB摄象头的驱动开发【J】.自动化技术与应用,2006,№.3:77.78.
【34】Free
Software Foundation.The Linux Kernel API[S].Boston,USA,1994.

【35】daily3.USB Camera base on Vide04Linux[EB].Anhui,PRC.Huahen Inc,2006,7. 【36】叶明.JPEG/MPGE2技术【M】.北京:科学出版社,2004. 【37】-z.M.Parvez Sazzad.Image quality assessment models for JPEG and JPEG2000
color images[C].Toyama:Society
for Imaging

compressed

Science and Teclmology,2006.
Group,1994.

[38】Thomas

G Earle.USING TIlE IJG JPEG

LIBRARY[S].JPEG

【39】邵丹,韩家伟.YLN与RGB之间的转换【J】.长春大学学报2004,04(14):51-53. 【40】朱斌.基于嵌入式系统的视频图像传输系统【J】.电子技术.2003,1:22.24 【41】徐明.基于s3 CA480与uClinux构建web服务器【J】.成都大学学报(自然科学版),2000(12),V01. 24:280.282. 【42】陆永健.嵌入式Web服务器B0a的移植及其应用【J】.河海大学常州分校学报,2005,V01.19
No.4:44—46

【43】Larry Doolittle,./on
Conference
on

Nelson.Boa

server[J].International

Joumal of Network and server,2005,2.
1992 IEEE International

【44】James Marshall.CGI Made

Really

Easy[C].Proceeding of the

Computer,1992,10.

【45】金顺燕,嵌入式ARM+Linux环境下CGI的实现【J】,延边大学学报(自然版),2006,V01.32
No.4:259.261.

【46】Jambalaya.用C写CGI程序[J].信息工程大学学报,2002,No.4:49-53. 【47】谭保华,周俊.一种基于GPRS的远程温度采集系统设计fJ】.仪器仪表学报,2007,V01.28
No.4:.253.255.

【48】Charles M,Sarraf,Rihab M,Waldm.JPEG 2000 Images Delivery over GPRS Mobile Networks-Evaluation and Improvement[J].WSEAS Transactio璐on Communications,2007。 V01.6 No.4:539-546. [49】孙龙杰.移动通信与终端【M】.北京:电子工业出版社,2006. [501 BenQ.M22 GSM/GPRS Wireless Module [52】W.Richard Stevens.Advance
Publishing Commany,1992? AT Command List.taipei:BenQ

Corporation,2004.

【51】李卓恒.Linux网络编程【M】.北京:机械工业出版社,2000.
Programming in the UNIX


Environment[M].US:Addison Wesley

[53】田军营.#Clinux源代码中Make文件完全解析珊].北京:机械工业出版社,2005.

61

湖北工业大学硕士学位论文

、致谢
三年的研究生生活,即将随着论文的完成两结束。回想求学过程,如同昨日 一般历历在目。论文能够顺利完成,首先要特别感谢我的导师熊健民教授,还有 实验室的刘幺和教授、宋庭新副教授以及谭保华老师给予我的悉心的指导和关心, 使我克服了许多爨难终于完成了论文的撰写工作。 在攻读硕士学位期间,熊老师对我谆谆教诲,耐心指导,并以睿智的思想和 高瞻远瞩的学术见解为我确立了研究方向,为我的研究剖造了越好的学术氛围、 提供了良好的实验条件。他们广博的知识、严谨的治学态度、敏锐的科学头脑以 及对事业的执着追求,都令我受益匪浅。在这三年里,导师们除了在学业及专业 上的教导外,对于待人接物及做研究的态度上,也给了我一个良好的典范,使我
受益匪浅。

三年的求学的过程中,与实验室的囝学相处融洽。模式识别与智能控制实验 室是一个温暖、和谐、充满活力的集体,三年的时光是一段美好的回忆。感谢同 窗三年的学友以及师兄、师姐、师弟、师妹给予我的帮助,带给我的快乐。这个 积极向上、奋发图强、热情洋溢的集体令我今生难忘。祝你们永远幸福、快乐1 05电力电子研究生班是一个团结的集体,这里感谢我每一位亲爱的同窗。 最要感谢的是我亲爱的父母,感谢他们对我各方面的支持,不诗代侩的提供 我如此美好的读书机会,愿你们与我分享这一份荣耀与喜悦。最后还要感谢女友 杨明秀多年来对我的支持,一起承受了太多的压力,愿此时也能与你分享。要感 谢的人太多了,最后将此份论文献给所有关心及爱护我的人,希望大家都能誊福
快乐。

感谢各位教授、专家在酉忙之中对本论文的审阅和赐教! 谢谢大家!





2008年5月子湖北工业大学

湖北工业大学硕士学位论文

附录
硕士期间公开发表的论文: 《一种基于GPRS的远程温度采集系统设计》仪器仪表学报,V01.28 No.4 《U—boot在LPC2200上的移植》 电气与电子工程V01.2
No.1 2007,1 Apr.

《基于嵌入式B/S模式的远程图像采集系统》兵工自动化已录用

基于嵌入式的远程图像采集传输系统的研究
作者: 学位授予单位: 周俊 湖北工业大学

本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1251898.aspx


相关文章:
开题报告_基于嵌入式系统的图像采集系统
网络、图像处理和传输技术于一体 的嵌入式网络视频图像监测系统的研究,意义是明显...电子与通信、图像处理等技术的飞 速发展, 基于嵌入式技术的远程网络视频监测技术...
嵌入式系统论文:基于嵌入式ARM-Linux的图像采集与传输系统的研究
嵌入式系统论文: 基于嵌入式 ARM-Linux 的图像采集传输 ARM嵌入式系统论文: 系统的研究 【中文摘要】图像采集技术应用范围十分广泛,如在工业检测, 交通道路,医学...
基于嵌入式图像信息采集与传送系统的设计与实现
基于嵌入式图像信息采集与传送系统的设计与实现 【摘要】本文设计与实现了以 ARM9 为核心的嵌入式系统家庭安防功能, 搭载 MC35I 无线通信模块,红外传感器模块,CMOS...
基于ARM的图像采集无线传输系统的设计(修改稿)
(论文)说明书 基于 ARM 的图像采集无线传输系统的...图像采集技术一直是过内外的一个研究热点,它的应用...基于嵌入式 Linux 的远程图像监控系统[D]:武汉:...
基于ARM平台与嵌入式Linux 的图像采集应用
本论文研究设计了一种基于嵌入式的图像采集传输系统,具有体积小、成 本低、...同时提高了系统的稳定性和图像质量,可以扩展应用在 远程监控系统等诸多领域,具有...
一种基于嵌入式技术的图像采集技术实现
一种基于嵌入式技术的图像采集技术实现_专业资料。一种基于嵌入式技术的图像采集技术实现 摘要:随着电子技术的发展,处理芯片的运行性能得到了飞速提 升。在最新的 64...
基于嵌入式的网络视频监控系统研究
基于嵌入式的网络视频监控系统研究_互联网_IT/计算机_专业资料。摘要近年来, 视频...USB 数字 把 摄像头采集到的图像进行 JPEG 压缩, 然后通过网络传输远程计算机...
嵌入式图像采集
基于ARM 的嵌入式图像采集处理系统及其 无线传输引言...ARM 处理器可以通过多种方式 向远程计算机传输压缩的...本课题成功 研究了通过蓝牙、 USB 无线网卡和以太网...
基于嵌入式linux的视频图像采集
基于嵌入式linux的视频图像采集_计算机软件及应用_IT/计算机_专业资料。基于嵌入式 linux 的视频图像采集 [摘要] 本文主要介绍在 linux 操作系统、arm xsbase270 平...
更多相关标签:
图像采集传输设备 | 车载图像远程传输系统 | 嵌入式数据采集系统 | 嵌入式数据传输效果 | 嵌入式数据采集器 | 嵌入式linux 文件传输 | 嵌入式声波传输 | 嵌入式 视频采集 |