自来水厂全自动恒压供水监控系统毕业设计论文

上传人:阳*** 文档编号:54759835 上传时间:2022-02-15 格式:DOC 页数:69 大小:899KB
返回 下载 相关 举报
自来水厂全自动恒压供水监控系统毕业设计论文_第1页
第1页 / 共69页
自来水厂全自动恒压供水监控系统毕业设计论文_第2页
第2页 / 共69页
自来水厂全自动恒压供水监控系统毕业设计论文_第3页
第3页 / 共69页
点击查看更多>>
资源描述
摘要随着越来越多的场合正向自动化无人职守迈进,尤其在安全、监控等领域。为了进一步降低成本,减少人力的投资,以及更集中、更方便的掌握现场情况,许多场合都采用了电子监控设备,如办公室,发电站,机场,海关等等领域。而这些电子设备的设计无疑涉及到这些领域的安全性,这就对监控设备的成本,稳定性,以及性能三方面都提出了更高的要求。本系统的研究背景主要是根据现有视频监控系统的不足,旨在降低系统的成本和提高系统的性能。它采用了价格低廉的三星应用处理器S3C2410,并使用软件音、视频编解码器,能实现以250Kbps和350Kbps的编码位流速进行网络传输,并以160*128和320*240两种显示分辩率,可以进行良好的视频监控。同时,它的一个最大的特点是可以在终端上进行录像,而不需要通过PC机,这样既适合低功耗的场合,又可以减少的系统的复杂性。图像采集终端则采用性价比很高的USB型摄像头,在市场上很容易买到,同时,USB型摄像头具有很好的通用性,驱动程序丰富,可以减少代码的编写。由于本系统使用标准的以太网进行传输,因此系统支持无限个终端进行级联,监控区域可以很轻易的进行扩大。综上所述,本系统采用ARM处理器,USB摄像头,标准以太网传输,实现了一个性能良好的视频监控系统。关键词:嵌入式;Linux;ARM;CODEC;视频监控AbstractAs more and more occasions no positive duty towards automation, especially in security, monitoring, and other fields. To further reduce costs and reduce manpower investment and more focused, more convenient to grasp the situation on many occasions used the electronic monitoring equipment, such as offices, power stations, airports, customs and so on the field. These electronic devices undoubtedly related to the design of these areas of security, which the monitoring equipment, the cost, stability and performance of all three areas a higher demand.The system of background are mainly based on existing video surveillance system inadequate, aimed at reducing the cost and improve system performance. It uses the low price of Samsungs application processor S3C2410, the use of software and audio and video codecs, to achieve 250 Kbps to 350 Kbps encoding and digital transmission network velocity, and 160 *128 and 320 * 240 two display resolution, Can be a good video surveillance. At the same time, one of its greatest feature is the terminal on the video, rather than through a PC, this is suitable for low power consumption of the occasion, can also reduce the complexity of the system.Image Collection Terminal is a high cost-effective use of the USB-based camera, in the market is readily available, at the same time, USB-based camera has a good GM, driver rich, can reduce the preparation of the code. Since this system uses standard Ethernet transmission, the system supports an unlimited number of terminal cascade, the region can easily monitor the conduct of expansion.In a word, this system uses ARM9 processor, USB camera, standard Ethernet transmission, to achieve a good performance of the video surveillance system.Keyword:Embedded;Linux;ARM;CODEC;Video Surveillance目 录引言62 绪论72.1课题研究的目的和意义73 网络监控系统概述83.1系统简介83.2系统组成83.3系统框图84 嵌入式系统简介104.1主流嵌入式操作系统的比较104.1.1Windows CE104.1.2Linux104.1.3VxWorks114.1.4C/OS114.2常用的嵌入式处理器114.2.1ARM114.2.2MIPS124.2.3PowerPC125 ARM处理器135.1ARM构架特点135.1.1ARM的特点135.1.2ARM的模式135.1.3ARM的状态135.1.4ARM寄存器映射135.1.5ARM寻址方式145.2现有主流ARM处理器155.2.1Samsung S3C2410155.2.2Atmel AT91RM9200165.2.3TI OMAP175.2.4Intel Xscale185.3S3C2410硬件设计要点195.3.1S3C2410电源设计205.3.2S3C2410 USB接口设计205.3.3S3C2410 网络接口电路设计206 嵌入式Linux开发步骤226.1GNU GCC简介226.2开发环境的搭建226.2.1二进制文件的安装226.2.2源码文件的安装236.3Linux内核配置编译236.3.1内核配置236.4Linux内核构架详解256.4.1进程和内核模式266.4.2进程的实现276.4.3内核同步机制和临界区286.5Linux设备驱动层286.5.1设备驱动概述286.5.2设备驱动的分类286.5.3设备驱动重要的数据结构296.5.4Linux驱动程序设备号336.5.5OV511摄像头驱动336.5.6V4L视频标准346.6Linux文件系统356.6.1cramfs356.6.2JFFS/JFFS2356.6.3ext2/ext3366.6.4ramdisk366.7摄像头应用程序的编写377 常用的视频编码格式407.1常用视频格式407.1.1AVI格式407.1.2ASF格式407.1.3RM(Real Media)格式417.1.4MPEG格式417.2ASF格式特点417.2.1可扩展的媒体类型417.2.2部件下载427.2.3可伸缩的媒体类型427.2.4多语言427.2.5目录信息427.3ASF格式结构427.3.1ASF 对象定义427.3.2高层文件结构437.3.3ASF头对象447.3.4ASF数据对象457.3.5ASF索引对象458 ffmpeg 视频CODEC库468.1ffmpeg简介468.2ffmpeg移植要点468.3fmpeg常用命令469 ffserver视频服务器519.1ffserver简介519.2ffserver移植要点519.3ffserver配置和使用详解5110 系统测试5210.1ffmpeg测试5210.1.1查看支持的格式5210.1.2从视频文件中截图5210.1.3用摄像头录像5310.2ffserver测试5410.2.1启动ffserver5410.2.2载入摄像头视频流5510.2.3启动Windows Media Player进行远程监控5510.3测试注意事项5611 总结58谢 辞59参考文献601 引言现在国内的视频监控设备多数采用高成本的DSP处理器+网络传输和专用处理器+模拟传输两种方案,就目前的这两种方案而言,前者不但硬件成本高,而且由于DSP的特性,多数无法运行多任务操作系统,以致系统软件的设计也变得很复杂,通常情况下要重新编写任务管理调度程序,同时还要进行图像采集端程序的设计以及图像编解码程序的设计,无疑,仅此三大类软件设计,其成本便可见高下,除此以外,整个系统的升级尤其是软件的升级造成了很大的阻碍,原因在于没有良好操作系统的支持,应用程序没能与操作系统进行良好的交互。而后者同样也面临诸多问题,首先,专用处理器的优点是内置硬件编解码器,无疑,从性能方面来讲,这是一个优势,但同时也是它的劣势,因为内置硬件编解码器的专用处理器往往价格比普通应用处理器高出许出,虽然利用专用处理器能节省软件的开发周期,换而言之,也就降低了软件开发的成本,但高出的硬件投资,也就恰好抵消了软件的成本,最多也就实现用硬件来弥补软件的成本,而在软件升级方面则和方案一存在相同的问题,到最后,方案也未能比方案一有明显的优势。那么,如何选择视频监控系统的方案以填补现有监控系统的不足呢?这就是本课题的研究重点,本文就如何进行方案可行性的研究、选择以及验证进行介绍。2 绪论2.1 课题研究的目的和意义近几年来,我国的安防系统的发展相当迅速,特别是近两年为筹备2008年北京奥运会的到来,国家更是投资了大批人力物力进行所有奥运会场的安全防御监控系统升级安装,从北京市的交通到奥运会场的监控,整个市区安装了高达百万个监控终端。这不仅说明监控设备在现在的社会安全领域起着不可或缺的作用,也说明了政府也越来越重视社会集中监控的优越性。从现代控制理论来看,集散型控制是比较突出的一种控制方式,所以,现在流行的监控系统也同样采用此方法。从系统的上下行模式来区别,监控系统主要有Host-Client模式,也就是主从模式,这种模式主要是采用以太网传输方式,通常情况下可以一个Host实现多个Client终端,因此,监控系统采用此模式可以有效的实现多终端监控,从而节省了资源。在我国现有的监控系统中,普遍采用的是前面所述的两种系统方案,根据前面的分析可以知道,这两种都不是最理想的方案,因此要真正的向高效化、低成本化发展监控系统,就必须重新设计新的监控系统方案。本课题主要从实际应用的角度出发,为了进一步解决现有监控系统中的不足,并利用价格上较有优势,软件上更易升级的思想对系统进行了设计,最终以应用处理器+嵌入式Linux操作系统+以太网传输作为整个系统的核心构架,这种方案有效的克服了前面所述的两种监控系统的缺点,极大程度上解决了硬件高成本,软件不易管理的问题。因此,本课题的研究意义在于通过重新设计监控系统,以改造现有监控系统的不足,主要突出在改变了传统监控方案:DSP处理器+网络传输和专用处理器+模拟传输两种方案,以全新的方案:应用处理器+嵌入式Linux操作系统+以太网传输,不仅具有良好的稳定性,而且从性价比等方面都有非常突出的优势。3 网络监控系统概述3.1 系统简介随着社会的秩序问题日趋严重,为了加强区域的安全性,网络监控系统越来越得到重视,到现在已经广泛的应用于交通、海关、航空等领域。本系统以全新的思路设计,整合了目前嵌入式系统的新技术,从性能、成本,操作方面进行最大的优化,使得本系统能够应用到更多的场合。系统由前端的图像采集和图像压缩,通过以太网把图像数据传输到监控端,在监控端实现现场监控的作用。3.2 系统组成网络监控系统是以图像采集端、网络枢纽、宿主端三部分构成。图像采集端主要是由嵌入式主板组成,其硬件包含:嵌入式处理器、网络控制器、存储器、电源模块等,而软件则包括:嵌入式操作系统、TCP/IP协议栈、存储器管理等。通常所构成的系统的主要功能是采集现场的情况,以某种图像格式进行编码压缩,再通过网络控制器把图像信息传送给宿主端,以达到监控目的。网络枢纽是指为了实现远程监控的功能,在网络传输过程中,需要多个网络中继站,即网络路由器,通过这种方式,可以进行网络级联,最后达到多点同时监控的目的。即节省了宿主端的数目,同时又简化了操作和管理,实现一主多从的集散型监控方式。宿主端即监控端,通常以PC主机和显示设备组成。宿主端把各采集点回传的数据进行解压显示,以多窗口的方式显示各个监控点的现场情况,即可达到非常及时的监控效果。3.3 系统框图系统框图见 图 3.1图 3.1系统框图4 嵌入式系统简介4.1 主流嵌入式操作系统的比较嵌入式操作系统以其微小内核、可移植、可裁剪、源码开放的特性在嵌入式领域得到广泛的应用。对于不同的产品,不同的应用场合,可以选择合适的嵌入式操作系统。到目前为此,全世界范围内出现的嵌入式操作系统高达200多种,它们专为嵌入式应用而开发,使得嵌入式产品的开发越来越方便,价格也变得越来越低廉,在航空、通信、娱乐等领域已经得到了很好的应用。较为流行的嵌入式操作系统有:Linux,Windows CE,VxWorks,C/OS等等4.1.1 Windows CEWindows CE是微软公司的产品,它是以Windows操作系统核心作为基础,为有限资源的平台进行简化,并保留了多线程、优先权、多任务、可移植等特性。Windows CE和PC机使用的Windows 操作系统的最大区别是采用了模块化设计,从而使得Windows CE可以安装到存储空间并不大的嵌入式设备,通常Windows CE的内核映像文件最小可以达到200KB,对于现有嵌入式设备的存储空间有限的情况下,Windows CE仍然可以得到非常好的应用。目前,全球范围内已经有上千家公司采用Windows CE进行各种各样的嵌入式产品开发。典型的新产品有手机、POS终端、ATM终端、工业控制系统等等。当然,Windows CE属于商业产品,当使用Windows CE进行产品开发时,需要支付3美元20美元的授权费。4.1.2 LinuxLinux是嵌入式领域中发展最快、应用最广的一个操作系统。Linux是在GPL下发行的操作系统,与其他现有的操作系统相比有以下特点:(1) 完全源码开放(2) 可以免费获得(3) 支持数十种不同的处理器(4) 可移植(5) 可裁剪其中,“免费”和“开源”是Linux最有竞争力的特点。在全球范围内,已经有不计其数的个人、企业正在使用Linux。随着Linux的进一步成熟,它以更小代码尺寸和更多不同平台的支持,大大的减少了新产品的成本和研发时间,吸引了越来越多的设备生产商,到现在,Linux已经成为世界主流的嵌入式操作系统。根据IDC报告指出,Linux已经成为世界第二大操作系统。并且每年以高于25%的速度增长,再加上基于Linux的变种体,如实时性能较强的RTLinux、RTAI,Kurt和Linux/RK,能在没有MMU处理器上运行的CLinux,更是把Linux的应用领域扩展到了工业控制和军事工业以及航空工业。4.1.3 VxWorksVxWorks是WindRiver公司专门为实时系统而设计的一款优秀的实时操作系统。VxWorks以其超微小的内核提供了实时任务调度、中断管理、任务间通信等功能。由于WindRiver已经为VxWorks作了大量的优化工作,其优异的性能和稳定的特点使得程序员只要专心编写应用程序,根本不需要去关心系统内核的管理。除此之外,VxWorks具备完善的网络通信,文件系统等模块,可以应用到各种不同的场合。下面罗列了VxWorks的一些主要特点:(1) 任务间通信机制(2) 网络协议(3) 文件系统(4) I/O管理(5) 超微小内核(6) POSIX标准实时扩展(7) 支持C+语言4.1.4 C/OSC/OS是由美国的Jean J.Labrosse编写的一个小型实时操作系统。该系统从1992年开始至今,已经发展到了第二个版本C/OS II。C/OS的特点是:公开源码,内核简洁,可移植性好,可裁剪,可固化,抢占式内核,可以管理60多个任务。该系统主要用于教育研究,和一些简单的控制系统应用。4.2 常用的嵌入式处理器4.2.1 ARMARM(Advanced RISC Machines)公司是英国一家CPU核设计商,它本身并不生产CPU,而是设计出CPU以IP核的方式授权给其他公司生产。ARM处理器目前主要包括ARM7,ARM9,ARM10,ARM11以及Cortex 和SecurCore系列。ARM公司推出的嵌入式处理器几乎含盖了所有层次的处理器,主频也从50MHz到1GHz不等。到目前为此,ARM处理器已经成为嵌入式领域的神话,其市场份额高达80%以上,应用范围涉及手机,端终,控制,家电等等。4.2.2 MIPSMIPS(Microprocessor whithout Interlocked Pipeline Stages)是一种处理器内核标准,它由MIPS技术公司开发拟定的。MIPS技术公司是一家设计制造高性能、高档次的嵌入式32位和64位处理器开发商,在RISC处理器领域占有很重要的地位。2000年,MIPS公司发布了针对MIPS 32 4 Kc的新版本以及未来64位MIPS 64 20 Kc处理器内核。MIPS技术公司既开发MIPS处理器构架,又自己生产基于MIPS的32/64位处理器芯片。为了使用户更加方便地应用MIPS处理器,MIPS公司推出了一套集成开发工具,称为MIPS IDF(Integrated Development Framework),大大的降低了开发的难度。4.2.3 PowerPC Power PC构架的主要特点是可伸缩性好,方便灵活。Power PC处理器品种很多,既有通用的处理器,又有嵌入式控制器和内核,应用范围非常广泛,从高端的工作站、服务器到个人PC,从消费类电子产品到大型通信设备等各个方面。目前Power PC独立微处理器与嵌入式处理器的主频从25MHz700MHz之间,它们的功耗,尺寸,价格相差比较大,主要的产品模块有Power PC 750 CX和 750 CXe,以及Power PC 440GP,用于嵌入式系统的有Power PC405和Power PC 440。Power PC的嵌入式处理器常用于通信,金融和其他终端设备。5 ARM处理器5.1 ARM构架特点5.1.1 ARM的特点ARM主要特点:体积小、低功耗、低成本、高性能。支持16位Thumb和32位ARM指令,Thumb指令可以减少大约30%40%的代码大小,具有更高的代码密度,大量使用寄存器,指令运行速度更快,ARM共有37个32位寄存器,被分为若干组,其中:-31个通用寄存器,包括程序计数器(PC)-6个状态寄存器,用以标志CPU的工作状态和运行状态等大多数的数据操作都在寄存器中完成,寻址方式灵活简单,执行效率高指令长度固定Load/Store加载/存储指令实批量数据传输,大大的提高了执行效率。5.1.2 ARM的模式为了加强系统的安全性和对时间的响应,ARM设计了7种系统模式,以适应于不同的场合。例如,在时间要求比较严格的时候,可以进入fiq模式对事件进行响应,可以减少响应时间。而在多任务操作系统下,可以使用用户模式和系统模式来加强系统的安全。ARM七种模式如下:(1) 用户模式(usr)(2) 快速中断(fiq)(3) 外部中断(irq)(4) 管理模式(svc)(5) 数据访问中止模式(obt)(6) 系统模式(sys)(7) 未定义指令中止模式(und)5.1.3 ARM的状态ARM具有两种不同的工作状态:ARM状态和THUMB状态,通常,ARM在上电默认是ARM状态,如要切换到THUMB状态,常用的方法是使用BX跳转指令。特别注意的是,在所有的异常模式中,都必须是在ARM状态下实现的,这是ARM固有的特点,不需要用户的干涉。5.1.4 ARM寄存器映射ARM拥有多达37个寄存器,这些寄存器在不同的模式下不尽相同。对于一些时间要求比较严谨的场合,需要系统作出相当快的响应以确保安全,这时候,往往要立即执行紧急事件,通常的解决方法是使用Fiq(快中断),以保证响应时间。怎么让事件更快速的响应呢?方法就是减少现场保护的时间,ARM的Fiq设计不需要进行现场保护,因为在Fiq模式下,它拥有独立的寄存器,不会影响中断前的任何寄存器状态,从而大大的加快了响应速度。这也是ARM寄存器多的原因之一。同样的道理,在其他相应的模式下,它们对应的寄存数目也是有其特殊意义的。ARM寄存器映射如图 5.1 ARM寄存器映射所示:图 5.1 ARM寄存器映射5.1.5 ARM寻址方式为了提高代码的执行效率,ARM提供了多种寻址方式,一方面,可以减少代码的编写量,另一方面提高了代码密度。尤其是ARM的多寄存器寻址和条件执行的特点,使得程序变得更加优化。ARM支持的寻址方式如下:(1) 立即数寻址(2) 寄存器寻址(3) 寄存器间接寻址(4) 基址变址寻址(5) 多寄存器寻址(6) 相对寻址(7) 堆栈寻址5.2 现有主流ARM处理器5.2.1 Samsung S3C2410S3C2410是著名的半导体公司Samsung推出的一款32位ARM处理器,为手持式设备、终端设备等提供了高性价张的解决方案。S3C2410的内核是ARM920T,内置MMU(Memory Management Unit)功能,采用AMBA新型总线结构,实现了MMU、AMBA BUS、Hardvard的高速缓冲体系结构,同时支持16位Thumb 指令集,从而能以较小的存储空间需求,获得32位的系统性能。S3C2410的主要特点:(1) 内核工作电压1.82.0V、存储器和外部I/O设备的供电电压3.3V(2) 16KB指令Cache和16KB的数据Cache(3) LCD控制器,最大支持6.5K色的TFT液晶屏(4) 4个通道DMAd(5) 3路UART(IrDA1.0、16B TxFIFO、16B RxFIFO),2通道的SPI接口;(6) 2通道USB(Host/Slave)(7) 4路PWM和1个内部时钟控制器(8) 117个通用I/O,24路外部中断(9) 272PinFBGA封装(10) 16位看门狗定时器(11) IIC/IIS控制器(12) 带PLL片上时钟发生器S3C2410 ARM处理器支持大小端模式存储字数据,其寻址空间可达1GB,每个Bank最大支持128MB的存储器,对于外部I/O设备的数据宽度,可以是8,16,32位,所有的存储器Bank(共有8个)都具有可编程的操作周期,而且支持各种ROM引导方式(Nor/Nand)Flash,EEPROM)。其S3C2410内部结构如图 5.2 S3C2410内部结构框图所示 图 5.2 S3C2410内部结构框图5.2.2 Atmel AT91RM9200AT91RM9200是Atmel公司的32位RISC ARM9处理器,它是基于ARM920T核的,主频达180MHz,运算速度为200MIPS。内置全功能MMU,支持SDRAM、SRAM、BurstFlash、CF卡、SmartMedia以及NAND Flash,具有高性能、低功耗、低成本、小体积等优点。AT91RM9200微处理器是一个多用途的通用芯片,它内部集成了微处理器和常用的外围组件,具有更高性价比的特点,可以为工控等领域提供优秀的解决方案。AT91RM9200具有以下的丰富片上资源:(1) 16KB数据Cache、16KB指令Cache(2) 虚拟内存管理单元MMU(3) 带有Debug调试功能(4) 内置16KB的SRAM和128KB的ROM(5) 带有外部总线接口(EBI),方便用户进行扩展升级(6) 支持SDRAM、SRAM、Burst Flash、CF、SM和NAND Flash(7) 增强型时钟发生器和电源管理单元(8) 带有2个PLL的2个在片振荡器(9) 慢速时钟操作模式和软件电源优化能力(10) 4个可编程外部时钟信号(11) 周期中断、看门狗和第二计数器(12) 带有报警功能的实时时钟(13) 带有8个优先级别、可单独屏蔽中断源、Spurious中断保护的先进中断控制器(14) 7个外部中断源和1个快速中断源(15) 4个32位GPIO控制器,可以达到122个可编程I/O引脚(16) 20通道的DMA(17) 10/100M以太网接口(18) 2个USB2.0 HOST和一个USB Device(19) 4个UART(20) 3通道16位定时器/计数器(21) 两线接口(22) IEEE1149.1 JTAG标准扫描接口5.2.3 TI OMAPOMAP可扩展的开放式处理器平台是TI公司于1998年推出的全新多媒体应用概念,OMAP平台提供了语音、数据和多媒体所需的带宽和功能,可以在非常低的功耗下为高端的2.5G和3G无线设备提供较高的性能。TI的 OMAP处理器支持所有嵌入式操作系统,无需任何新的编程技能就可以进行无缝访问DSP。TI还提供了OMAP解决方案,将无线调制解调器与专用应用处理器完美地组合在单个芯片上。TI在提供全球范围的技术支持的同时,还提供了可降低系统成本的高度集成的解决方案。TI OMAP处理器分类如表 5.1 TI OMAP处理器分类所示:类别型号描述单纯应用处理器OMAP310175MHz,具有基本的多媒体功能OMAP1510175MHz,与310相比增加了DSP和ARM926内核,192KB片内RAMOMAP1610204MHz,功耗、尺寸较1510更小,多媒体处理能力有较大的提高,增加了JAVA加速器,采用硬件方法加速应用程序的执行,集成了更多运动控制和接口器件单纯应用处理器OMAP1611204MHz,增加了内部RAM和54Mbit/s的WLAN接口OMAP1612204MHz,比1611增加了堆叠式整合的DDR存储器,与外接存储器方式相比减少了空间和功耗整合了数字基带功能的应用处理器OMAP710132MHz,性能和1510对应OMAP730200MHz,性能较710提高一倍,待机时间也增加了一倍OMAP732200MHz,类似于730,但SRAM以堆叠式整合,减少了体积表 5.1 TI OMAP处理器分类5.2.4 Intel XscaleIntel Xscale构架的处理器有PXA2xx系列,它属于ARM处理器的一种衍生,不过它在构架扩展的基础上保留了对以往软件的向下兼容性。Intel 目前开发的基于ARM核 的处理器有2个系列:(1) StrongARM-StrongARM SA1100(2) 基于XScale构架的PXA系列较为突出的是PXA系列,它是一款功耗低、可伸缩度高的产品,并且其最大的优势就是核心频率可以高速的提升。此外,Xscale整合了以往其他ARM处理器所不支持的MMX指令,这种指令集类似桌面处理器的多媒体指令集,是一种64bit的精简指令,这种指令集可以大大地优化视频播放、3D图像显示、音频处理等应用,同时这种指令也会降低产品的开发难度。PXA采用较先进的0.18um工艺制程、内含32KB指令缓存和32KB数据缓存以及多媒体流数据专用的2KB缓存,最高支持256MB内存、包含双通道PCMCIA、CF卡、MMC/SD卡,LCD控制器、AC97音频、USB接口,红外接口、蓝牙接口,芯片采用PBGA封装。PXA270内部结构如图 5.3 PXA270 内部结构所示:图 5.3 PXA270 内部结构5.3 S3C2410硬件设计要点S3C2410是一款高速嵌入式处理器,由于它内置了很多外设模块,需要用到的模块可能要在外围电路中增加一些芯片。这样一来,加上电源、CPU最小系统以及各个模块,系统变得非常复杂。所以在绘制原理图的时候,要注意模块化的设计,可以避免出错。5.3.1 S3C2410电源设计电源是系统的心脏,系统的稳定性很大程度上取决于电源的设计,对于S3C2410处理器,合理的电源设计如图 5.4 S3C2410系统电源设计所示:图 5.4 S3C2410系统电源设计5.3.2 S3C2410 USB接口设计本系统的摄像头使用的是USB接口,S3C2410的USB接口属于USB1.1版本,最高支持12Mbit/s,在设计的过程尽量保持信号线的等长关系,以防止时间上有延迟。下图使用了AU9254芯片进行HUB,扩展为4个USB HOST接口,可以供更多的USB设备使用,其电路原理图如图 5.5 USB 接口原理所示。图 5.5 USB 接口原理5.3.3 S3C2410 网络接口电路设计在本系统中,S3C2410核心是以网络服务器的形式接入网络的,系统采用了10M网卡芯片CS8900,以提供更高的网络带宽供传输图像。网络接口电路原理图如图 5.6所示:图 5.6 CS8900网络接口原理图6 嵌入式Linux开发步骤6.1 GNU GCC简介嵌入式Linux下的开发,常常使用交叉编译工具。交叉编译工具通常是GNU的一个开放源码的工具链GCC(GNU Compiler Collection),它是一种面向嵌入式领域、支持多种编程语言、支持多种CPU的交叉编译工具,并且可以网上免费得到()。它提供了多种编译优化选项,支持分步编译、支持多种反汇编和多种调试信息格式,目前支持的平台有X86、ARM、StrongARM、PPC、MPC、MIPS等等。GCC的基本功能如下:(1) 输出预处理后的C/C+源程序(展开头文件和替换宏)(2) 输出C/C+源程序的汇编代码(3) 输出二进制目标文件(4) 生成静态库(5) 生成可执行文件(6) 轮换文件格式(7) 支持C、C+、Fortran、Java6.2 开发环境的搭建GCC工具提供了二进制文件和源码文件两种方式进行安装。对于宿主机上没有C编译程序的情况下,应当使用二进制文件安装,这种方式的缺点是大部分的可选项都已经配置好,不能由用户自行调整。而源码文件安装方式则不同,用户可以根据自己的需要加载或去除某些选项,最后得到小而合适编译工具。6.2.1 二进制文件的安装在全球范围内已经有数百个镜像网点提供方式下载。对于二进制文件,通常GNU的工作人员针对各种情况编译出不同的安装包,用户可以根据自己的需要下载合适的安装文件。下载完成后,就可以直接进行安装了,下面以gcc-core-2.95.3.tar.gz安装包为例。$cd /usr/local/src解压到合适的路径$tar xvzf /gcc-core-2.95.3.tar.gz最后在PATH环境变量中加入安装路径即可。在命令行中输入:$gcc v可以测试安装情况。6.2.2 源码文件的安装嵌入式开发过程中,可能会使用不同的CPU,这样就需要一个针对该CPU的开发环境,因此,常以源码的方式安装交叉工具以支持不同的平台。源码包安装步骤:(1) 首先,在确保宿主机上的GCC编译程序可用,否则应先在宿主机上安装好GCC。(2) 下载合适的源码包,解压到正确的路径。(3) 进入源码包所在路径,执行configure脚本。也可以先执行configure help来查看帮助信息。配置过程中有很多选项可供选择,每个选项都有默认值,所以只需要为某些特殊情况的选项指定它的值。(4) 最常用的选项是prefix,用来指定安装GCC二进制代码的根目录名字。安装完成之后,用来指定安装GCC二进制文件的根目录名字。安装完成后,指定前缀的目录包含所有的GCC可执行文件,而子目录bin、include、info、lib、man和share中含有其他文件。默认的前缀是/usr/local/。要针对ARM处理器编译还要加上-with-cpu=arm最简单的配置如:./configure prefix=/usr/local/ -with-cpu=arm。(5) 配置完成后,会在目录下生成一个makefile编译文件,然后执行make命令即开始编译了。(6) 编译成功后,再运行make install进行安装。(7) 最后设置环境变量,可以运行arm-linux-gcc进行测试。6.3 Linux内核配置编译arm-linux-gcc安装成功后,就可以对Linux内核进行编译或配置了。本系统采用的是linux2.4.18版本的内核,可以使用arm-linux-gcc2.95.3交叉工具进行编译。在内核源码的文件夹中可以看到,内核是一个很庞大的源码包,其程序文件就有上万个,代码达到几百万行,可以说是非常的复杂。6.3.1 内核配置内核可配置是Linux的最大特点,用户可以根据自己的需要不选择编译未用到的模块,通过这种方式,可以使内核变得更加小,更有效率,同时也节省了内存的开销。现在发行的内核,都支持菜单配置方式,对用户而言,配置变得更简单、直观。可用的配置方式如表 6.1所示:方式功能config通过命令行程序更新当前配置menuconfig通过可视化菜单配置xconfig通过QT图形界面更新当前配置gconfig通过GTK图形界面更新当前配置oldconfig通过已经提供的.config文件更新当前配置randconfig对所有选项随机配置defconfig对所有选项使用缺省配置allmodconfig对所有选项尽可能选择“m”allyesconfig对所有选项尽可能选择“y”allnoconfig对所有选项尽可能选择“n”表 6.1 内核可用的配置方式如进入可视化菜单配置的命令如下:$make menuconfig配置菜单如图 6.1可视化配置菜单所示:图 6.1可视化配置菜单图6.1可视化配置菜单Makefile文件中包含了所有的编译选项。具体可以执行make help查看,打印出详细的帮助信息。下面解释一下帮助信息列出的各种选项的含义。(1) 内核编译辅助选项$make clean清除大多数生成的文件,但保留.config$make mrproper清除所有生成的文件,包括.config和各种备份文件。$make config以命令行方式配置内核。$make menuconfig以光标菜单方式配置内核$make xconfig以QT图形界面配置内核$make gconfig以GTK图形界面方式配置内核$make oldconfig使用已存在的.config文件配置内核(8) 内核编译选项$make all编译所有标记星号的目标,也就是编译所有缺省目标$make vmlinux编译最基本的内核映像。$make modules编译所有的模块$make zImage编译生成压缩内核映像$make Image编译生成非压缩映像6.4 Linux内核构架详解Linux内核提供了应用程序可以运行的执行环境。因此,内核必须实现一组服务及相应的接口。应用程序使用这些接口,而且通常不会与硬件资源直接交互。内核整体结构如图 6.2 内核整体结构所示:图 6.2 内核整体结构6.4.1 进程和内核模式CPU既可以运行在用户态,也可以运行在内核态。实际上,一些CPU可以有两种以上的执行状态。当一个程序在用户态下执行时,它不能直接访问内核数据结构或内核的程序。然而,当应用程序在内核态下运行时,这些限制不再有效。每种CPU模型都为从用户态到内核态的转换提供了特殊的指令,相反,一个程序执行时,大部分时间都处于用户态下,只有需要内核所提供的服务时才切换到内核态。当内核满足了用户程序的请求后,它让程序又回到用户态下。对于每一个进程来说,它们都是动态的实体,在系统内通常只有有限的生存期。创建、撤消以及同步现有进程的任务都委托给内核中的一组例程来完成。内核本身并不是一个进程,而是进程管理者。进程/内核模式假定:请求内核服务的进程使用所谓系统调用的特殊编程机制。每个系统调用都 设置了一组识别进程请求的参数,然后执行与硬件相关的CPU指令完成从用户态到内核态的转换。另外,还有一些特权进程叫作内核线程,它们具有以下特点:(1) 以内核态运行在内核地址空间。(2) 不与用户直接交互,因此不需要终端设备(3) 通常在系统启动时建立,直到系统关闭。内核的工作不只是处理系统调用。实际上,可以有几种方式激活内核例程:进程调用系统调用,正在执行进程的CPU发出一个异常信号,异常是一些反常的情况,CPU不得不处理的事件。外围设备向 CPU发出一个中断请求信号以通知一个事件的发生,如一个要求注意的请求、一个善忘的变化或一个I/O操作已经完成等等.每个中断信号都是由内核中的中断处理程序来处理的。因为外围设备与CPU异步操作,因此中断是在不可预知的时间发生的。内核线程被执行。因为内核纯种运行在内核态,因此必须认为期 相应程序是内核态的一部分。进程的用户态和内核态之间的转换如图 6.3进程的用户态和内核态之间的转换所示:图 6.3进程的用户态和内核态之间的转换6.4.2 进程的实现为了让内核管理进程,每个进程由一个进程描述符表示,这个描述符包含有关进程当前状态的信息。当内核暂停一个进程的执行时,就把几个相关处理器寄存器的内容保存在进程描述符中,这些寄存器包括:(1) 程序计数器和栈指针寄存器(2) 通用寄存器(3) 浮点寄存器(4) 包含CPU状态信息的处理器状态寄存器(5) 用来跟踪进程对RAM访问的内存管理寄存器当内核决定恢复执行一个进程时,它用进程描述符中合适的字段来装载CPU寄存器。因为程序计数器中所存的值指向下一条将要执行的指令,所以进程从它停止的地方恢复执行。6.4.3 内核同步机制和临界区对于一个单CPU的系统而言,实际上只有一个进程能够得到CPU及其他资源而获运行的机会,为了不让所有进程都无秩序的访问某些资源,这就需要对这些进程进行统一的安排和管理,内核的同步机制正是为此设计。例如:如果内核控制路径对某个内核数据结构进行操作时被挂起,那么,其他的内核控制路径就不应当再对该数据结构进行操作,除非它已经被重新设置一致性状态。否则,两个控制路径的交互作用将破坏所存储的信息。简单而言,这也就是对资源访问的一种竞争条件,同时这个资源,则称为临界区。Linux系统中常用的内核同步机制有:原子操作:操作必须以单个指令执行,运行期间不能够被中断,且避免其他的CPU访问 同一存储单元。自旋锁: 当内核控制路路径必须访问共享数据结构或进入临界区时,需要为自己获取一把“锁”。资源正在被访问时是上“锁”的,这时其他想访问资源的进程需要等待,它将会不断的查询资源是否可用,直到资源被释放。信号量: 类似于自旋锁,但等待资源忙时进入睡眠,直到资源可用才被唤醒。6.5 Linux设备驱动层 6.5.1 设备驱动概述设备驱动属于内核的一部分,对于一个特定的硬件设备来说,由于不同的设备存在不同的通信协议,它们的数据的存取可能需要不同的方式来实现,所以,对于Linux内核,它是不可能包含所有硬件设备的驱动程序,因此,当用户需要在系统中添加一个新的设备时,可能需要用户自己编写该设备的驱动程序。这样,Linux就可以实现对种类烦多的设备驱动。由于设备驱动属于内核的一部分,而内核态拥有操作系统的最高权限,驱动程序控制了操作系统与设备之间的交互访问,如果驱动程序发生错误,很可能导致整个系统崩溃。6.5.2 设备驱动的分类现在发行的Linux内核已经提供了非常完善的驱动程序构架,用户可以通过这些通用的驱动程序接口来实现某一设备的驱动。现有的驱动分类主要有两大类:(1) 字符设备驱动字符设备和普通文件之间的区别在于:普通文件可以来回读/写,而大多数字符设备仅仅是数据通道,只能顺序的读/写。但是不能完全排除字符设备模拟普通文件读/写过程的可能性。字符设备是Linux最简单的设备,用户可以像访问文件一样访问字符设备,在VFS的作用下,应用程序可以使用标准系统调用打开、读取、写和关闭,和普通文件的操作没有任何区别。(2) 块设备驱动和字符设备一样,块设备也支持像文件一样的访问。这种为打开的块特殊文件提供正确的文件操作组的机制和字符设备的十分相似。Linux用blkdevs向量表维护已经登记的块设备文件。它像chrdevs一样,使用设备的主设备号作为索引,它的条目也是device_struct数据结构。与字符设备不同的是,块设备进行分为两大类:SCSI和IDE。无论是字符设备还是块设备,由于内核为各类驱动统一了接口,所以对用户而言,对这些设备的使用和操作并没有多大的区别,这也正是Linux的优点之一。6.5.3 设备驱动重要的数据结构Linux内核提供了几个比较重要的数据结构,这些结构是所有驱动程序必须用到的,也是驱动程序中最基本的数据结构,它提供了设备的入口函数。分别有:,inode和file这三个数据结构。数据结构:说明:用于注册设备驱动的open(),write(),read(),release()等基本函数struct struct module*owner;loff_t (*llseek) (struct file *, loff_t, int);ssize_t (*read) (struct file *, char *, size_t, loff_t *); /* 设备读操作函数*/ssize_t (*write)(struct file *, const char *, size_t, loff_t *); /* 设备写操作函数*/int (*readdir) (struct file *, void *, filldir_t);unsigned int (*poll) (struct file *, struct poll_table_struct *);int (*ioctl)(struct inode *, struct file *, unsigned int, unsigned long); /* 设备ioctl操作函数*/int (*mmap) (struct file *, struct vm_area_struct *);int (*open) (struct inode *, struct file *); /* 设备打开操作函数*/int (*flush)(struct file *);int (*release)(struct inode *, struct file *); /* 设备释放操作函数*/int (*fsync)(struct file *, struct dentry *, int datasync);int (*fasync)(int, struct file *, int);int (*lock)(struct file *, int, struct *);ssize_t (*readv)(struct file *, const struct iovec *, unsigned long, loff_t *);ssize_t (*writev)(struct file *, const struct iovec *, unsigned long, loff_t *);ssize_t (*sendpage)(struct file *, struct page *, int,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类 > 论文指导


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!