大学本科毕业设计毕业论文基于S3C2440远程视频监控系统的设计与实现论文.doc
本科生毕业设计基于S3C2440远程视频监控系统的设计与实现Design and Implement of Remote Video Monitoring System Bases on S3C2440 学生姓名XXX所在专业所在班级申请学位指导教师嘘哨哨职称讲师副指导教师职称答辩时间目 录设计总说明IINTRODUCTIONII1绪论11.1系统背景11.2系统的目的与意义11.3国内外设计发展状况21.4设计的研究范围32需求分析42.1系统的目标42.2系统的功能特性42.3系统用例分析52.3.1远程视频监控用例52.3.2远程控制设备用例62.3.3远程抓图用例62.3.4远程警报用例63系统概要设计73.1系统总体设计方案73.1.1本地服务器73.1.2远程通信73.1.3客户操控终端73.2系统方案可行性论证73.2.1技术背景73.2.2技术可行性83.3系统模块的划分83.3.1嵌入式Linux最小系统模块83.3.2图像数据的采集与压缩模块83.3.3Linux字符设备驱动模块93.3.4SOCKET本地服务器模块93.3.5远程视频监控Android客户端模块93.4系统开发选型94系统详细设计与实现104.1系统硬件设计104.1.1系统硬件框架104.1.2LCD接口硬件原理图114.1.3USB接口硬件原理图114.1.4LED硬件原理图124.1.5蜂鸣器硬件原理图124.2系统软件设计134.2.1最小Linux系统的搭建134.2.2图像数据的采集与压缩174.2.3Linux字符设备驱动234.2.4SOCKET本地服务器284.2.5远程视频监控Android客户端315系统测试345.1测试目的345.2测试环境345.3测试方法345.4系统功能模块测试355.5系统集成测试366结束语37鸣 谢38参考文献39附 录40设计总说明视频监控作为安防系统的一个重要元素,目前已经广泛应用于国防、工业、交通、能源、信息技术以及日常生活等领域,并发挥着极其重要的作用。随着相关技术的发展与推广,前端一体化、视频数据数字化、监控网络化、系统集成化已经成为视频监控系统公认的发展方向1。随着现代计算机技术和互联网技术的飞速发展,嵌入式系统成为当前IT行业最热门的焦点之一。而ARM以其高性能、低功耗的特性成为目前应用最广泛的32位嵌入式处理器,嵌入式Linux也凭借其功能强大、免费开源以及开发资源丰富等优势占据了嵌入式操作系统的主导地位。利用嵌入式Internet技术可以实现远程检测、远程监控、远程维护以及远程数据采集变得简单。视频监控系统一般采用基于PC机平台视频采集卡的形式,该方案系统体积大、成本高,在远距离、多点系统中实现困难。针对PC机暴露出的诸多缺点,本设计采用高性能、低功耗的片上系统S3C2440远程采集视频流数据,实现远程视频监控。Linux操作系统的稳定性、优良的网络支持性能、模块化的结构,满足了系统的需要。系统从用户的需求出发,结合不同领域对安防监控系统的需求,以应用为中心,适应应用系统功能、可靠性、成本、体积等综合性要求,严格按照软件工程的规范,对系统进行需求分析,概要设计,详细设计,系统编码实现等。系统以嵌入式ARM技术为核心,采用嵌入式Linux实时多任务操作系统,利用视频流服务器采集USB摄像头的图像数据,通过Socket网络接口,传输到Android手机客户端,实时地显示给用户。通过手机或平板电脑,用户可以实时、方便地监控到目标。通过对比,本系统有方便实用、低成本、高效率、稳定可靠等优点。对安防系统、智能家居、物联网的建设等具有一定的参考价值。关键词:ARM9;S3C2440;Socket;远程监控;视频流监控;INTRODUCTIONVideo monitoring, as an important element of security system, has been widely used in national defense, industrial, transportation, energy resources, information technology and daily life and other fields, and plays a very important role. Along with the development of related technologies and promotion, front-end integration, video data, monitoring network, digital system integration has become one of the development direction of video monitoring system.With modern computer technology and Internet technology rapid development, embedded system becomes the most popular of the IT industry focus. And with its ARM high performance, low power consumption of the characteristics of the most widely applied for the 32 bit embedded processor, embedded Linux also with its powerful, free open source and the development of rich resources advantages dominated the embedded operating system of the dominant position. Embedded Internet technology can achieve remote detection, remote monitoring, remote maintenance and remote data acquisition become easy. Video monitoring system based on the general PC platform and video capture card form, this scheme is big and high cost, hardly to realize in the distance multipoint system. For PC exposed many weakness, this design uses the high performance and low-power system on chip S3C2440 remote acquisition streaming video data, to realize the remote video monitoring. Linux operating systems stability, excellent network performance, modular structure, meets the needs of the system.System bases on the needs of users, and combining different areas of safety monitoring system needs, as the center of the application, to adapt to the application system, reliability, cost and volume comprehensive requirements, strictly according to the software engineering specifications, the requirement analysis, and general design, detailed design, system code implementation, etc.System bases on embedded ARM technology, the embedded real-time multitasking operating system Linux, use the MJPG-streaming server acquisition USB Camera data, through the Socket web interface, transmission to the Android mobile phone client, real-time display to the user. Through the phone or flat computer, the user can monitor the target in a real-time, convenient way. By comparison, this system is more convenient and practical, low cost, high efficiency, stable and reliable. For security system, smart home technology, the Internet of Things is a certain reference value.KEYWORDS: ARM; S3C2440; Socket; Remote Control; Video Monitoring基于S3C2440远程视频监控系统的设计与实现信息管理与信息系统,200811622115,XXX指导教师:嘘哨哨1 绪论1.1 系统背景随着社会和经济的快速发展,国民的财富在迅速增加,同时政府提倡构建社会主义和谐社会,是我们党从中国特色社会主义事业总体布局和全面建设小康社会全局出发提出的重大战略任务,在政策的指导下,构建“平安城市”等具体措施就成为构建和谐社会的一部分,传统的管理防范模式已经难以适应当前形势,构筑以科技为支撑的安全防范体系和运行机制日益提升到重要日程。在“平安城市”的建设中,其核心是监控系统与远程报警,远程视频监控也逐渐成为政府、金融、能源等各行业保证安全的有力工具。政府构在建“平安城市”中,使政府人员和民众对视频监控在安全系统中的作用有了进一步的认识,产生了更高的期望,并认识到远程监控是安全系统中是最有效的手段。这为远程音视频的传输与发展带来了好的机会和新的空间,与此同时、也对我们提出了更高的要求,提出了新的挑战2。随着IT时代的到来,现代化企业对监控系统的要求也越来越高,监控系统不但可以对进出企业的人流、物流进行监控,还可以对企业的重要办公区、生产线、机房进行监控,以提升企业的安全保卫水平和管理水平。视频监控系统是现代企业监控系统的一项重要组成部分,它以其直观、方便、信息内容丰富而广泛应用于各行各业。1.2 系统的目的与意义远程视频监控系统有着重大的意义,首先,远程监控的应用可以快速、集中、实时的采集现场数据,有利保证整个系统的协调、调度以及流畅运转。其次,采用远程监控替代传统的现场监控,可以有效减少现场工作人员,达到减员增效的目的。 第三,传统的分散看守,维护运行方式已无法满足当前需求,迫切需要利用新技术对远端工作状态进行集中监控,使整个系统逐渐趋于自动化、集中化、智能化、综合化。第四,采用远程监控可以实现集中监控分散控制,在保证监控端正常运行的情况下,上层控制中心实时掌握监控现场信息,遇到突发事件时可在第一时间做出应对策略。第五,作为大型企业,利用远程监控系统对生产现场、运行情况进行实时监控,可有力地提高企业在市场经济条件下的竞争力3。远程视频监控系统建设的目的,是利用现有的网络资源实现对远程资源进行有效管理、监控,同时通过即时通讯系统,实现统一平台上的通讯、监控、应急处理、监控报警、数据采集,对各个监控点全天候安全情况的实时监控,以及突发事件的第一时间告警。本系统属于安防监控、智能家居的一个模块,对监控目标的控制采用模拟的方式。例如,开启蜂鸣器表示报警。系统主要研究对象是视频流的监控,使用户方便及时地监控到监控目标,以及做相应的控制。虽然说系统只是一个模拟的方案,对实际的应用,以及当前的学习有着重大意义。1.3 国内外设计发展状况从市场的需求情况来看,随着反恐形势的不断严峻,智能视频监控系统正在越来越多的引起人们的关注,需求量处于不断上升的过程当中。从总体上看,国外的智能视频应用市场正在从“概念验证”阶段向“规模应用”阶段转化,智能视频监控已经慢慢开始成为一个产业。比如,新加坡中央医院可以采用手机上网,探视新生儿。医院将在保育箱内的婴儿床边挂一台摄像机,拍摄婴儿画面,实时传到网上,父母或家人可用手机上网探视婴儿。网上探视可为没有精力探望婴儿的父母和其他家庭成员提供机会,一起关注婴儿成长。视频监控也不断发展,顺应视频监控的发展,需要我们不断的完善和改进,在应用模式上,技术上和观念上要有突破,视频监控技术正在向着数字化、网络化、智能化的方向发展,而当前的形势将极大的促进这一发展过程。许多城市、地区以及行业准备建立大型视频监控系统,监控点的数量大、监视的范围广。利用传统的方式和技术,信号的传输成本较高,而网络越来越发达,网络无处不在,且带宽越来越宽。利用网络来传输视频信号是一种可行的选择。无线视频监控伴随着我国3G网络覆盖的开始、COFDM、WIFI等技术的飞速发展,和卫星的民用化。基于3G的无线视频监控、基于COFDM 无线视频监控、WIFI的无线视频监控、卫星无线视频监控等技术的进一步提高,无线视频业务对于误码率、切换效率、时延、带宽稳定性等方面的进一步优化。无线视频监控将进入飞速发展的时代。如智能化大厦、智能小区、港口、码头、边防检查站等都安装了无线视频监控系统。长期以来,视频监控系统主要用于对重要区域或远程地点的监视和控制,视频监控技术在电力系统、电信机房、工厂、城市交通、水利系统、小区治安等领域也得到了越来越广泛的应用。视频监控系统将监控点实时采集的视频流实时地传输给监控中心,便于监控中心进行远程监控,对突发事件及时指挥处置。基于传统的有线网络实现的视频监控存在着明显的缺点。这些缺点包括:布点受限制,监控点的选择一般都在靠近有线接入点的地方,这种方式限制了布点的灵活性;布点工程量大,需要铺设网线和光纤,由于基础网络的工程量往往会很大,因此一般有线监控比较适用于已存在基础网络的场合;工程周期长,铺设基础网络耗时耗力;欠缺灵活性,扩展和调整不方便,会增加工程量和不必要的基础网络建设;缺乏移动性,这是有线网络的先天缺陷。为了解决上述问题,无线视频监控应运而生,从而让视频监控彻底摆脱了因有线而带来的种种限制。可以预见,伴随着无线视频监控相关技术的持续进步,如终端技术、组网技术、传输技术等,无线视频监控业务将成为无线网络技术最典型的应用之一。1.4 设计的研究范围针对远程视频流监控系统的研究,本设计主要着重研究以下内容: 嵌入式系统的构建远程视频监控,最关键的就是要有服务器为提供服务。有了服务器,才能响应Android客户端的请求,并做出相应的处理。而视频流服务器是在Linux环境上运行的。要想达到远程视频监控的目的,首先得搭建起Linux的最小系统。一个嵌入式Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序。其中 Bootloader是系统启动或复位以后执行的第一段代码,它主要用来初始化处理器及外设,然后调用 Linux 内核。Linux 内核在完成系统的初始化之后需要挂载某个文件系统做为根文件系统(Root Filesystem)。根文件系统是 Linux 系统的核心组成部分,它可以做为Linux 系统中文件和数据的存储区域,通常它还包括系统配置文件和运行应用软件所需要的库。应用程序可以说是嵌入式系统的“灵魂”,它所实现的功能通常就是设计该嵌入式系统所要达到的目标。如果没有应用程序的支持,任何硬件上设计精良的嵌入式系统都没有实用意义。本系统的应用程序主要是Socket服务器与视频流服务器。 视频流的采集与传送系统采用 MJPG-Streamer视频流服务器,对视频流进行采集与压缩。该视频流服务器使用的是v4l2的接口,可以通过文件或者是HTTP方式访问linux UVC兼容摄像头。服务器通过摄像头捕获图像存入global buffer缓冲中,当客户端有访问请求时,服务器会将global buffer缓冲中图像数据连续的发送给客户端。嵌入式Linux系统是开源的操作系统,自身带有TCP/IP协议,具有强大的网络功能,方便用户进行网络编程。视频流服务基于TCP/IP协议,为视频数据的传输和网络信息的收发提供网络服务,远程客户端通过接收视频流数据来实施对现场的视频监控。系统支持远程控制,采用Socket网络接口建立通信。为了响应远程客户端的请求,在目标板上要建立socket服务器。Socket 服务器在本地监听特定的端口,当有连接请求时,能够及时处理。收到不同的请求时,能够做出相应的处理。比如:发现异常时可以报警。 远程Android客户端的接收与显示Android是一种以Linux为基础的开放源代码操作系统。凭借Linux系统的开源性与本身的开放性,得到了广泛程序员的青睐,发展比较快,逐渐占领了移动领域的市场。Android系统的手机以及平板电脑得到了广泛的普及。所以手机作为的一种远程监控的工具,是非常便利的。只要服务正常开启,手机客户端就能够远程监控到目标的一切情况,并做相应控制。 Android手机客户端的设计客户端是呈现功能给用户的,主要包括三方面:建立Socket通信机制、对视频流的解码及显示以及向服务器发出相关的请求。2 需求分析2.1 系统的目标在TQ2440开发板上搭建服务器,实现Android客户终端的远程视频监控。系统是在TQ2440开发板上搭建的服务器,TQ2440是基于S3C2440(System on Chip)的开发板,也就是通常所说的ARM9微处理器。在ARM9平台上搭建Linux环境以及Socket服务器,为Android客户端提供服务。建立Android客户端来对监控目标进行视频监控,以及做相应的控制。本系统,用四个发光二极管来模拟监控目标的某些设备,点亮表示开启设备,熄灭表示关闭设备。用蜂鸣器来模拟发出警报。除了监控视频外,还可以进行抓图,并保存于终端设备上。2.2 系统的功能特性 系统工作环境的需求作为视频流远程监控系统,服务器需要长期地连续地工作,来保证随时给客户端提供服务,以实现24小时随时监控的目的。系统要么是长时间连续运转,要么是环境恶劣的。所以,系统选用高性能、低功耗、可靠性强的ARM9微处理器作为服务器来提供服务。 远程视频流监控功能系统实现远程视频流监控功能,用户可以随时随地连接上服务器监视监控目标的一切动静。通过远程视频监控,可以了解到现场的状况,保证了财产的安全。 系统的远程控制功能系统除了可以监视到现场的情况,还可以对现场作相应的控制,实现远程管理的目的。通过Socket网络接口的通信,给服务器发送相关的指令,实现对现场的控制。系统采用蜂鸣器来模拟报警,采用4个发光二极管来模拟现场的设备。 系统的方便性与实时性用户需要随时地了解到现场的情况,在时间、地点上都是不确定的。因此,系统采用了Android平台上的应用作为客户终端,用户只要拿出Android手机或平板电脑就可以监视现场的情况了。将客户端建立于移动平台,有效地实现了方便性与实时性。 多用户访问的特性系统支持多用户访问的特性,同时可以连接多个客户端连接。实现多用户管理的协同工作。 系统的保存现场鉴于移动设备的存储器容量有限,系统没有把视频流录制下来,而是在必要的时候把某一帧图像保存起来。为了实现现场记录的保存,系统提供抓图的功能,把现场的某一瞬间的一帧图像保存在端终,方便以后查看。2.3 系统用例分析根据系统的需求,系统用例有视频流监控、远程控制、远程抓图、远程警报等。如图2-1 系统顶层用例图所示。图2-1 系统顶层用例图2.3.1 远程视频监控用例远程视频监控用例分为远程观看视频、远程开启视频、远程关闭视频。如图2-2 远程视频监控用例图所示。图2-2 远程视频监控用例图2.3.2 远程控制设备用例远程控制设备用例分为远程开启设备、远程关闭设备。如图2-3远程控制设备用例图所示。图2-3 远程控制设备用例图2.3.3 远程抓图用例远程抓图用例分为远程开启抓图、远程关闭抓图。如图2-4 远程抓图用例图所示。图2-4 远程抓图用例图2.3.4 远程警报用例远程警报用例分为远程开启警报,远程关闭警报。如图2-5 远程警报用例图所示。图2-5 远程警报用例图3 系统概要设计3.1 系统总体设计方案系统的目标是达到远程视频监控的效果。为了达到此目的,有三个重要的环节,即本地服务、远程通讯以及客户操控终端。如图3-1系统总体框架图所示。图3-1 系统总体框架图3.1.1 本地服务器本地服务是指在S3C2440上运行的服务器。系统用TQ2440开发板作为硬件设备,搭建最小Linux系统,并支持USB Camera,通过移植MJPG-Streamer视频流服务器,就能用USB Camera 采集到视频流数据,并保存在全局的缓冲区里,供远程客户端访问。系统还支持相应的远程控制,所以本地服务还得建立Socket服务器,当客户端连接时,可以发出相应的请求命令,以达到相应的控制。3.1.2 远程通信远程通讯,即连接本地服务器与远程客户端,让它们进行交互。系统采用Socket套接字,以TCP的方式进行通信,保证传输的有效性,达到实时监控的目的。3.1.3 客户操控终端客户操控终端,即运行在Android手机或平板的客户端应用程序。它面向的是用户,只要实现了的Socket通信,以及相关的通信协议,用户就可以简单的在屏幕上操控了。用户不需要知道是怎么通信的,只需要知道,按下报警时,监控目标就会响起警报。3.2 系统方案可行性论证3.2.1 技术背景ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。Arm公司无线技术部经理James Bruce指出,Arm+Linux代表了未来的趋势,标准化的硬件+软件的组合,可以令更多OEM厂商愿意去做差异化。可以说,Arm+嵌入式Linux的开发和研究是操作系统领域中的一个热点,目前已经开发成功的嵌入式系统中,大约有一半使用的就是Linux。Arm+Linux构架的广泛应用加快了移动互联网的标准化,加快移动互联网发展,也更符合大众的利益。以嵌入式视频web服务器为核心的视频监控系统,采用嵌入式实时多任务操作系统。摄像头采集到的图片信息经过压缩,通过内部总线送到内置的web服务器,网络上的用户可以直接用手通过Socket连接服务器监视由摄像头采集的图像。嵌入式视频web服务器监控系统通过多种方式连入网络,网络是没有距离概念的,彻底抛弃了地域的概念,扩展了布控的区域。3.2.2 技术可行性MJPG-Streamer,视频流服务器,使用的是v4l2的接口,可以通过文件或者是HTTP方式访问Linux UVC兼容摄像头。服务器通过摄像头捕获图像存入global buffer缓冲中,当客户端有访问请求时,服务器会将global buffer缓冲中图像数据连续的发送给客户端。强大的视频流服务器,解决了视频流采集的后顾之忧。通过几个月的嵌入式学习,对嵌入式领域有了更深的了解,熟悉了Linux内核的运行机制,对系统的移植、基本驱动的编写以及常用开源组件的移植都比较了解。系统借用MJPG-streamer视频流服务器来采集,以Socket来交互,最终以显示给用户,从技术上考虑是没有问题的。3.3 系统模块的划分3.3.1 嵌入式Linux最小系统模块系统采用TQ2440开发板作为硬件设备,它是基于S3C2440的ARM9平台。Linux操作系统的大概启动流程为:Bootloader引导并启动内核,内核运行起来后再加载驱动以及挂载根文件系统。搭建Linux最小系统,一般需要做三大部分的工作,即u-boot的移植、内核的移植以及根文件系统的构建。3.3.2 图像数据的采集与压缩模块系统采用USB 摄像头来采集图像数据。经过MJPG-Streamer视频流服务器调用V4L2接口,将图像数据采集并压缩,然后再传送给客户端。此模块需要对USB摄像头驱动的移植,MJPG-Streamer的移植,将视频流数据通过Socket方式传送到客户端。3.3.3 Linux字符设备驱动模块系统采用LED模拟本地设备的开启状态,用蜂鸣器模拟警报。在安装USB摄像头的时候,需要用到开发板上的LCD屏来测试USB Camera是否正常工作,以及安装的位置。所以,需要以上的设备工作,必须开发相应的设备驱动,驱使其工作。Linux内核中使用了LCD控制器,在移植LCD驱动时,一般只需修改相关的硬件参数。除了LCD驱动,还要编写LED、锋鸣器等基本的字符设备驱动。3.3.4 SOCKET本地服务器模块 实现远程监控,系统采用Socket来建立通信。为了响应远程客户端的请求,在目标板上要建立socket服务器。Socket 服务器在本地监听特定的端口,当有连接请求时,能够及时处理。收到不同的请求时,能够做出相应的处理。3.3.5 远程视频监控Android客户端模块系统采用Android应用作为客户终端,有效地提高了系统的实用性与实时性。使用用户非常方便地监控到目标,并做相应控制。为了实现此目的,Android客户端的设计主要包括:建立Socket通信机制、对视频流的解码及显示以及向服务器发出相关的请求。3.4 系统开发选型本系统采用的开发模型是快速原型模型。所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。如图3-2所示(图中实线箭头表示开发过程,虚线箭头表示维护过程),快速原型模型的第一步就是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用。一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件便可以满足用户的真实需求。图3-2 快速原型模型图4 系统详细设计与实现4.1 系统硬件设计4.1.1 系统硬件框架考虑到系统工作的特性,系统采用的是三星公司推出的16/32位微处理器S3C2440A,为系统提供了低成本、低功耗、高性能的解决方案。系统以S3C2440为核心,通过USB摄像头采集到图像数据,显于到LCD屏幕上,或者通过网络传输到远程的Android客户端。如图4-1系统硬件框架图所示。图4-1系统硬件框架图4.1.2 LCD接口硬件原理图图4-2 TFT LCD屏接口系统采用TQ035 LCD屏幕作为本地的图像显示。LCD控制需要用到I2C协议来控制,I2CSDA为数据线,I2CSCL为时钟线。还需要帧同步信号VFRAME、象素时钟信号VCLK等,如图4-2 TFT LCD屏接口所示。4.1.3 USB接口硬件原理图图4-3 USB接口系统采用USB摄像头采集图像数据,此时,USB作为主设备,D+、D-上分别接一个15K的下拉电阻,使得在没有插入设备时,始终保持低电平。USB HOST接口,图4-3 USB接口所示。4.1.4 LED硬件原理图图4-4 LED电路图系统用4个LED表示4种不同的设备,模拟远程控制本地设备。四个LED分别接上一个1K的电阻,起限流作用,防止电流过大而烧坏发光二极管。如图4-4 LED电路图所示。4.1.5 蜂鸣器硬件原理图图4-5 蜂鸣器 电路图系统采用蜂鸣器来模拟发出警报。J4B是跳帽,扣上才能接通电源。在TOUT0输入PWM信号,采用8050三极管扩大电流,以驱动蜂鸣器。如图4-5 蜂鸣器 电路图所示。4.2 系统软件设计4.2.1 最小Linux系统的搭建4.2.1.1 Bootloader的移植Bootloader是在嵌入式系统运行之前运行的一段程序。通过这段Bootloader小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境4。简单地说,Bootloader就是这么一小段程序,它在系统上电时开始执行,初始化硬件设备、准备好软件环境,最后调用操作系统内核。Bootloader的实现严重依赖于具体硬件,在嵌入式系统中硬件配置千差万别,即使是相同的CPU,它的外设(比如Flash)也可能不同,所以不可能有一个Bootloader支持所有的CPU、所有的电路板。因此,要启动S3C2440,首先必须得移植Bootloader.而U-Boot是Bootloader的一种,全称 Universal Boot Loader, 是遵循GPL条款的开放源码项目,支持大多CPU,广泛应用于嵌入式领域。为什么选择u-boot呢?这是由它的特性所决定的。(1) 开放源码; (2) 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS; (3) 支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale; (4) 较高的可靠性和稳定性; (5) 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等; (6) 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等; (7) 较为丰富的开发调试文档与强大的网络技术支持;Bootloader的启动过程分为两个阶段:stage1和stage2,通常stage1是用汇编语言完成,而stage2的用C语言来实现,以便于在stage2阶段实现更加复杂的功能和取得更好的代码可读性和可移植性。如图4-6 u-boot启动流程所示。图4-6 u-boot启动流程清楚u-boot的启动流程之后,就可以开始移植u-boot,来给内核传递参数并启动内核了。一般需要做到以下几点。(1) 从u-boot官方网站下载内核。(2) 在board目录下建立支持开发板的目录及文件,从已有的模板中修改过来即可。(3) 针对目标板,修改时钟、SDRAM、机器ID等参数。(4) 移植当前目标板的网卡驱动,用tftp下载时用到。(5) 移植Nand Flash驱动,产品定形后内核、文件系统等都要烧录到内核。(6) 支持yaffs2文件系统映象。4.2.1.2 内核的移植一个硬件平台最主要的是处理器,因此在移植之前需要了解目标平台的处理器。ARM处理器内部采用32位的精简指令架构(RISC),核心结构设计相对简单,有低耗电量的优势,被广泛应用到各种领域。下面介绍一下移植Linux内核对硬件平台需要考虑的几个问题。(1) 目标平台目标平台包括了嵌入式处理器和周围器件,处理器可能整合了一些周围器件,如中断控制器、定时器、总线控制器等。在移植之前需要确定被移植系统对外部设备和总线的支持情况。本书的ARM开发板采用mini2440平台,在S3C2440A外围连接了许多外围设备,包括NOR Flash存储器、NAND Flash存储器、网络接口芯片、USB控制器等。在S3C2440A处理器内部集成了许多常用的控制器以及嵌入式领域常用的总线控制器。对于移植Linux内核来说,操作处理器内部的控制器要比外部的设备容易得多。(2) 内存管理单元(MMU)MMU负责内存地址保护、虚拟地址和物理地址相互转换工作。在使用MMU的硬件平台上,操作系统通过MMU可以向应用程序提供大于实际物理内存的地址空间,使应用程序获得更高性能。Linux的虚拟内存管理功能就是借助MMU实现的。在移植的时候要考虑目标平台的MMU操作机制,这部分代码是较难理解的,最好能在相似代码基础上修改,降低开发难度。(3) 内存映射嵌入式系统大多都没有配备硬盘,外部存储器只有Flash,并且系统内存也非常有限。内存控制器(Memory Controller)负责内部和外部存储器在处理器地址空间的映射,由于硬件预设的地址不同导致每种平台内存映射的地址也不同。在移植时需要参考硬件的用户手册,得到内存地址的映射方法。(4) 存储器由于嵌入式系统多用Flash存储器作为存储装置。对于文件系统来说,在PC流行的ext2、ext3文件系统在嵌入式系统无法发挥作用。幸好Linux支持许多文件系统,针对Flash存储器可以使用JFFS2文件系统。在移植的时候,不必要的文件系统都可以裁剪掉。Linux启动过程可以分为两部分:架构/开发板相关的引导过程、后续的通用启动过程。引导阶段通常使用汇编语言编写,它首先检查内核是否支持当前架构的处理器,然后检查是否支持当前开发板。内核的启动可以分为两个阶段。大致启动流程如图4-7 内核启动流程所示。做好内核的相关知识准备后,就可以对Linux内核进行移植了,一般分为以下几点: