基于ARM的网络数据传输技术研究_第1页
基于ARM的网络数据传输技术研究_第2页
基于ARM的网络数据传输技术研究_第3页
基于ARM的网络数据传输技术研究_第4页
基于ARM的网络数据传输技术研究_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGEII摘要基于ARM处理器的网络数据传输技术结合了嵌入式设备工作稳定,实时性好,集成度高,环境适应能力强,成本低等优点与网络覆盖广泛及接口具有良好通用性的优点,在各种数据传输现场中具有越来越广泛的应用前景。本文是基于RAM处理器的网络数据传输技术的研究,网络数据以图像数据的传输为例,并且研究对象采用了通过网络传输图像数据的应用系统,所以本文提出在单芯片上实现全局控制+轻量级RTOS内核+精简TCP/IP协议栈的系统架构方式,设计一个基于S3C2440开发板的网络图像数据实时传输的嵌入式系统。关键词:网络数据传输嵌入式LinuxTCP/IP协议AbstractUnifiedtheembeddedequipmentworkbasedontheARMprocessornetworkdatatransmissiontechnologytobestable,timelinesswasgood,theintegrationratewashigh,environmentadaptiveness,thecostlowstatusmeritandthenetworkcoverwidespreadandtheconnectionhadthegoodversatilemerit,hadthemoreandmorewidespreadapplicationprospectineachkindofdatatransmissionscene.ThisarticleisbasedontheRAMprocessornetworkdatatransmissiontechnologyresearch,thenetworkdatataketheimagedatatransmissionasanexample,andtheobjectofstudyhasusedthroughthenetworktransmissionimagedataapplicationsystem,thereforethisarticleproposedrealizestheoverallsituationcontrol+lightweightRTOSessenceonthesinglechip+tosimplifytheTCP/IPagreementstackthesystemconstructionway,designsonebasedontheS3C2440developmentboardnetworkimagedatareal-timetransmissionembeddedsystem.Keywords:DataTransmissionNetworkEmbeddedLinuxTCP/IPAgreement目录第一章绪论 11.课题的背景及其意义 12.本文所做工作 1第二章嵌入式系统及图像的网络传输 32.1嵌入式系统概述 32.1.1嵌入式系统的定义 32.1.2嵌入式系统的特点 32.1.3嵌入式系统的组成 42.1.4嵌入式Linux 52.1.5嵌入式系统开发与调试 52.2基于嵌入式系统的图像的网络传输 62.3嵌入式网络传输的图像压缩算法 6本章小结 7第三章基于嵌入式系统的图像网络传输的系统设计 83.1系统结构设计 83.2硬件平台设计 93.2.1S3C2440体系结构及特点 93.3软件设计 13本章小结 13第四章TCP/IP协议概述 144.1网络分层结构 144.1.1OSI七层参考模型 144.1.2TCP/IP参考模型 154.2TCP/IP网络协议 164.2.1嵌入式TCP/IP协议 164.2.2IP协议 164.2.3UDP/TCP协议 174.2.4ARP协议 17本章小结 17第五章基于嵌入式系统的图像网络传输的软件设计 195.1LINUX在ARM硬件平台上的移植 195.1.1移植环境 195.1.2建立交叉编译环境 195.1.3BOOTLOADER 205.2烧写和启动LINUX以及LINUX内核编译 225.2.1烧写Linux内核 225.2.2烧写根文件系统 225.2.3启动Linux 235.2.4安装编译工具 235.2.5编译内核 245.2.6cramfs根文件系统的创建 245.3嵌入式TCP/IP协议栈的设计 255.3.1ARP协议的实现 265.3.2IP协议与ICMP协议的实现 275.3.3TCP与UDP协议的实现 29本章小结 32第六章总结与展望 336.1全文总结 336.2不足与展望 33参考文献 35致谢 37附录 38第一章绪论1.课题的背景及其意义数据信号获取以及转移可以采用直接存储在采集现场本地,收集一段时间的数据后由工作人员到采集现场将数据取回,或者通过某种途径实时传输到后端,前者对实时性要求比较高的场合以及某些较为危险的工业现场缺乏实用价值,后者能实时将采集的数据信号传输到控制端,较为及时地反映出采集现场的实际情况,无疑具有更多的灵活性与实用价值,同时由于Internet的广泛的覆盖以及接口的通用性,传输的方式通过网络来进行,将会使成本降低并且让系统规划的难度减小的优势。采用通过网络实时传输数据的方式可以采用传统的PC+数据采集卡的方式或者基于具备网络功能的嵌入式设备的方式,前者虽然具备实现简单,功能多样化的优点,但也存在体积庞大,稳定性低,在恶劣环境中难以工作,成本较高,功能不可裁减等劣势,相比较而言,嵌入式设备具备工作稳定,易于携带和安装,操作灵活的特点,同时还具有实时性好,集成度高,环境适应能力强,系统成本低,同时也易于根据实际需要进行功能的添加与裁减等优点,在各种数据信号获取的各种应用场合,将得到越来越广泛的应用,是今后的一个发展趋势。在网络中传输图像数据,由于网络的传输速率有限,为了实现图像数据的稳定传输,必须对图像进行压缩,无损压缩的压缩比比较低,对降低码率的贡献有限,所以在对图像质量没有精确要求的情况下通常采用有损压缩算法。由于嵌入式系统具有计算能力有限的特性,而这是设计面向一般PC或者工作站的图像压缩算法所不需要考虑的,其压缩算法有其固有的特点,需要单独对其进行研究。目前针对嵌入式系统进行图像压缩的工作,主要集中在对动态图像实时压缩算法实现的研究和基于专用图像压缩芯片构架实用系统上,对于对成本敏感,每秒需要传输的图像的帧数只要求在若干帧以内的场合下适用的压缩算法的研究还鲜有所闻,随着工业以太网技术和Internet的迅速发展,越来越多图像获取设备将接入网络,这种较为低端的网络图像传输设备的应用将越来越广泛,对于其上的图像压缩算法的进行一定的探讨,实现一个同时具备网络功能和图像压缩功能的嵌入式设备,对该领域进行一次有益的探索与尝试,是一项很有意义的工作。2.本文所做工作本文第二章介绍了相关的背景知识,包括嵌入式系统,图像的网络传输,以及两者相结合的讨论。第三章从系统架构的角度对实现的系统进行描述,介绍了系统总体方案,芯片选型的考虑和系统集成的具体工作。第四章重点介绍了TCP/IP协议以及相关协议,为下一章的的网络传输TCP/IP协议的设计做好理论铺垫。第五章全面地介绍了系统的软件设计工作,包括操作系统的移植过程,嵌入式TCP/IP协议的设计,以及在应用层实现网络图像数据传输。第六章对全文进行简明的总结,并对该领域的研究进行展望。第二章嵌入式系统及图像的网络传输2.1嵌入式系统概述2.1.1嵌入式系统的定义根据IEEE(国际电气和电子工程师协会)的定义,嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置(devicesusedtocontrol,monitor,orassisttheoperationofequipment,maehineryorplants)。嵌入式系统定义:是现代科学的多学科互相融合的以应用技术产品为核心,以计算机技术为基础,以通信技术为载体,以消费类产品为对象,引入各类传感器,进入Internet网络连接,适应应用环境的产品。2.1.2嵌入式系统的特点(1)嵌入式系统通常是面向特定应用的。嵌入式系统的专用性很强,其中的软件系统和硬件的结合非常紧密,一般需要针对硬件进行系统的移植,同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不同的概念。(2)系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。(3)高实时性嵌入式操作系统。这是嵌入式软件的基本要求,而且软件要求固态存储,以提高速度。软件代码要求高质量和高可靠性、实时性。(4)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。(5)嵌入式软件开发走向标准化。为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS(RealTimeOperatingSystem)开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。(6)嵌入式系统本身不具备自主开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。2.1.3嵌入式系统的组成嵌入式系统包括硬件和软件两部分。图2.1嵌入式系统的组成框图1.专用硬件包括嵌入式处理器、存储器和I/O端口及外围设备等。其核心是嵌入式处理器。嵌入式处理器一般具备以下4个特点:①对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核的执行时间减少到最低限度;②具有功能很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断;③可扩展的处理器结构,以能最迅速地开发出满足应用的最高性能的嵌入式微处理器为准;④嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备,靠电池供电的嵌入式系统更是如此。2.应用软件是实现嵌入式系统功能的关键,包括操作系统软件和应用程序。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。嵌入式系统软件的特征如下:①软件要求固态化存储。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般固化在存储器芯片或单片机本身中,而不存贮于磁盘等载体中;②软件代码高质量、高可靠性。尽管半导体技术的发展使处理器速度不断提高、片上存储器容量不断增加,但在大多数应用中,存储空间仍然是宝贵的,还存在实时性的要求。为此要求程序编写和编译工具的质量要高,以减少程序二进制代码长度、提高执行速度;③系统软件(OS)的高实时性是基本要求。在多任务嵌入式系统中,对重要性各不相同的任务进行统筹兼顾的合调度是保证每个任务及时执行的关键,单纯通过提高处理器速度是无法完成和没有效率的,这种任务调度只能由优化编写的系统软件来完成。2.1.4嵌入式Linux本文选择的嵌入式系统为Linux。嵌入式Linux支持多种体系结构,有强大的网络功能支持,支持多文件系统,有丰富的外设驱动,此外Linux还具备一整套工具链,使用户容易自行建立嵌入式系统的开发环境、交叉运行环境,并且可以跨越嵌入式系统开发中仿真工具的障碍。一般开发嵌入式操作系统的程序调试和跟踪都是使用仿真器来实现的,而使用Linux系统做原型的时候,可以绕过这个障碍,直接使用内核调试器来做操作系统的内核调试和查错。嵌入式应用系统的体系结构可用图2.2分层方式描述:第五层嵌入式应用软件第四层中间支撑软件层第三层硬件无关的操作系统内核层第二层硬件抽象层(HAL)第一层硬件系统图2.2嵌入式应用系统的体系结构分层体系结构层与层之间的依赖关系是上层完全依赖于下层,这种依赖主要是由明确定义的接口来实现的,能很好的满足体系结构的要求。2.1.5嵌入式系统开发与调试由于开发平台受到存储容量和功能的限制,嵌入式应用的开发和调试需要借助一套专门的开发工具和软硬件环境来完成。硬件环境包括:具有文件传送功能的宿主机,具有编译调试功能的仿真器。软件包括:操作系统软件、编译调试软件、文件传输软件等。嵌入式应用系统设计完成以后,一般不具备在其上进行进一步开发的能力,如果要进行功能的扩充和改进,必须在宿主机上进行重新设计。嵌入式应用软件开发可以通过两种途径进行:一种是直接利用汇编和嵌入式高级语言对硬件编程,由于嵌入式程序具有直接在CPU芯片上运行的能力,这种程序只需要在其开发调试仿真器环境下编译运行通过后直接下载ROM即可;第二种是为了利用CPU的强大功能,便于对硬件和软件的管理,引入嵌入式的操作系统和相应的编译环境,由操作系统来管理软硬件资源(存储管理,文件管理,进程管理,中断管理等)。由于操作系统对高级语言(C语言)的支持和其强大的网络功能,我们可以进行高级语言的编程,屏蔽对低层的直接访问,使得具有复杂功能的应用程序的编写和实现变得更加容易和方便。2.2基于嵌入式系统的图像的网络传输在网络中传输图像数据,由于网络的传输速率有限,为了实现图像数据的稳定传输,必须对图像数据进行压缩,无损压缩的压缩比比较低,对降低码率的贡献有限,所以在对图像质量没有精确要求的情况下通常采用有损压缩算法。由于嵌入式系统具有计算能力有限的特性,需要基于该特点考虑具有适用性和实用性的压缩算法。目前针对嵌入式系统进行图像压缩的工作,主要集中在以下的两个方面:(1)动态图像的实时压缩:要求对视频信号进行实时的压缩,压缩算法基于通用的标准,应用为视频监控系统或者视频会议系统,标准为MPEG-2,MPEG-4,H.264等,一般使用高端数字信号处理器如TI的6200系列或者Philps的Trimedia来实现算法,配合处理能力强的高端控制器如ARM9,XScale,使用嵌入式Linux或者嵌入式WindowsXP作为操作系统,或者是使用高中端处理器配合视频压缩专用芯片来构架系统,这种技术的典型应用是银行系统中的24小时实时监控录像,特点是对实时性要求高,要求压缩后重建的图像质量好,对成本较不敏感。(2)静态图像的高质量压缩:要求重建后的图像与原图相差极小,一般使用无损压缩或者根据JPEG2000标准进行低压缩比有损压缩,使用中档数字信号处理器如TI的6711配合中档处理器。典型应用是医学图像采集与存储系统,特点为对重建的图像质量要求高。2.3嵌入式网络传输的图像压缩算法本文所考虑的应用方向是在嵌入式系统上的压缩算法,因此采用基于零树小波编码的算法。该算法具有以下特点:(1)算法思想简洁,易于通过程序实现,并且可以通过对原有算法某些步骤的改善与省略实现精简的目的;(2)零树小波编码是一种嵌入式编码,编码所得的比特流按其重要性排序,可以在任意一点结束编码,允许精确度达到一个目标压缩率和目标比特率,而仍能确切地产生同样的图像。基于零树小波编码的算法进行图像压缩大体需要经过以下步骤:(1)选择小波基及其对应的小波滤波器;(2)输入待压缩图像点值序列;(3)给出分解层数L和图像数据向量长度k;(4)对源图像采用分解算法进行小波变换,得到不同层次不同图号的子图;(5)根据不同层次不同子图的特点,对相应小波系数的各个部分进行嵌入式编码。反过来,在恢复图像(图像解压缩)时,需先根据密码书还原出各层小波系数,最后利用重构算法对还原后的小波系数进行反变换以重建源图像。本章小结本章对嵌入式系统的定义、特点以及本文所采用的嵌入式操作系统Linux进行介绍,并介绍了嵌入式网络与图像获取结合的优点,同时分析了图像采集速率要求不高的嵌入式系统上实现的压缩算法的特点,得出零树小波算法作为其压缩算法较佳的结论。第三章基于嵌入式系统的图像网络传输的系统设计本文设计的系统是面向成本敏感,每秒需要传输的图像的帧数只要求在若干帧以内的场合下适用的嵌入式图像网络传输应用,前面章节己经说明该系统的理想实现模式是在一个中档处理器上运行一个非标准的静态图像压缩算法程序来实现压缩。从系统设计的角度来考察,设计工作包括系统总体方案的考虑,硬件平台的搭建与系统软件实现。3.1系统结构设计本系统结构框图如下:图3.1系统结构框图由于系统同时需要进行图像压缩,数据的网络传输,这些功能模块之间存在并行执行的可能性,引入操作系统,基于操作系统的多任务模式,利用操作系统提供的任务间通信机制对应用程序进行设计有利于降低应用程序的设计难度与提高其执行效率。由于系统资源有限,网络功能的实现在软件上由一个功能精简的嵌入式TCP/IP协议栈来实现,该协议栈是TCP/IP协议栈的一个功能子集,只保留一些对于系统必须的协议(关于该协议栈的考虑,将在软件设计部分详细分析)。网络接入方式的考虑,考虑到以太网技术的的优点:成本低;速度在近年得到较大提高以及因普遍应用形成了广泛支持(以太网是世界上应用最多的网络,包括各种工业用网络,有超过93%的网络节点为以太网。)。选择以太网作为网络接入方式使得系统具有较高的通用性与较强的适应性。从系统的功能考虑,硬件平台的架构基于主控芯片+以太网控制器+其他必要外设,每一模块的功能界定清晰,通过一定的接口设计工作各模块之间可以很好地实现协调工作。系统设计根据设计的目标确定了本系统设计的框架,软件与硬件的大体结构,是系统实现的基础。下面将对硬件架构与软件设计的具体实现进行说明。3.2硬件平台设计图3.2硬件结构框图硬件平台设计的首要工作是选择主控芯片,对于本文设计系统,主控芯片是一个具有中等控制能力与计算能力的处理器,性价比较高,具备尽量多的系统所需的片上外设。基于这样的考虑,选择ARM系列的三星公司的S3C2440处理器作为系统的主控芯片。3.2.1S3C2440体系结构及特点ARM(AdvancedRISCMachine)是基于精简指令集的一种计算机体系结构实现,ARM系列的处理器当前有ARM7,ARM9,ARM9E,ARM10等多个产品。所有的ARM处理器都共享ARM通用的基础体系结构,所以开发者在不同的ARM处理器上做操作系统移植时,将可以节省工作量,这无疑将大大降低软件开发成本。三星公司推出的S3C2440A处理器,是一个16/32位的RISC微处理器。内含ARM920T内核,ARM920T实现了MMU,AMBA,BUS和Harvard高速缓冲体系结构,其低功耗且全静态设计特别适合对成本和功耗敏感型的应用。S3C2440微处理器提供了一系列完整的系统外围设备图3.3S3C2440结构框图其中的ARM920T处理器内核采用哈佛结构,5级流水线(包括取指、分析、执行、访存、写存);分立的指令和数据Cache都是16KB,8个字的数据总线;采用增强的ARM体系V4的MMU,以提供对指令和数据地址的翻译和访问许可检查;支持ARM调试结构,包含了辅助软件和硬件调试的逻辑电路;还具有协处理器支持。ARM920T的功能模块如图3.4所示:ARM920T处理器的编程模型包括ARM9TDMI内核以及以下增加和更改。1.ARM920T处理器包含了两个协处理器:CP14:允许软件访问调试通信通道。CP15:系统控制协处理器,提供附加的寄存器,用来配置和控制ARM920T的Cathe、MMU、保护系统、时钟模式和其他系统操作,可以使用MCRM和RC访问CP15定义的寄存器。2.提供了外部协处理器界面,允许在同一片上布置相关的协处理器,例如:一个浮点运算单元。可以用适当的协处理器指令访问任何一个挂接在外部协处理器界面上的协处理器的寄存器和并进行操作。3.取指,读/写数据的内存访问可以放到Cahte中或缓冲器(Buffer)中。4.内存管理单元(MMU)页表常驻主存,用来描述虚存到物理内存的转换、访问许可、Cathe和写缓冲配置等。页表被操作系统软件所创建,任何时候,一个存储访问导致TLB丢失时,ARM920TMMU硬件都会自动访问页表。5.ARM920T有一个调试界面接口,允许使用硬件和软件调试工具实时跟踪指令和数据。图3.4ARM920T功能块图1.S3C24401.2V内核供电,1.8V/2.5V/3.3V存储器供电,3.3V外部I/O供电,具备16KB的I—Cache和16KB的D—Cache/MMU;外部存储控制器(SDRAM控制和片选逻辑);LCD控制器(最大支持4K色STN和256K色TFT)提供1通道LCD专用DMA;4通道DMA并有外部请求引脚;3通道UART(IrDA1.0,16字节TxFIFO,和16字节RxFIFO);2通道SPI;1通道主从ⅡC—BUS;1通道ⅡS—BUS音频编解码器接口;AC’97解码器接口;兼容SD主接口协议1.0版和MMC卡协议2.11兼容版;2端口USB主机/1端口USB设备(1.1版);4通道PWM定时器和1通道内部定时器/看门狗定时器;8通道10比特ADC和触摸屏接口;具有日历功能的RTC;相机接口(最大4096*4096像素的投入支持;2048*2048像素的投入,支持缩放);130个通用I/0口和24通道外部中断源;功耗控制模式:具有普通,慢速,空闲和掉电模式;具有PLL片上时钟发生器。2.S3C2440地址空间分配:S3C2440支持两种启动模式:一种是从NANDFLASH启动;一种是从NORFLASH启动。在这两种启动模式下,各片选的存储空间分配是不同的,这两种启动模式的存储分配图如下:图3.5(a)图是nGCS0片选的NORFLASH启动模式下的存储分配图;(b)图是NANDFLASH启动模式下的存储分配图。在NANDFLASH模式启动下,内部的4KBytesBootsRAM被映射到nGCS0片选的空间;在NORFLASH启动模式下,与nGCS0相连的外部存储器NORFLASH就被映射到nGCS0片选的空间。SDRAM地址空间:0x30000000~0x34000000。3.S3C2440总电源电路:图3.6S3C2440总电源电路图本系统主要采用2片SDRAM和1片Flash做为储存器。SDRAM具有存取速度快的特点,适用于被访问频率较高的场合。由于本系统需要传输,存储大量的数据,因此采用一片32位32MB的SDRAM专门存储这些数据。另一片32MB的SDRAM供整个系统使用。Flash存储器的特点是掉电不易丢失数据,适用于存放永久性数据。本系统采用64MB的NANDFlash来固化操作系统内核,应用程序以及其他永久性数据。由于S3C2440没有内置的以太网控制器,所以采用了低功耗,性能优越的16位以太网网控制器——CS8900,它负责处理有关以太网数据桢的发送和接收。3.3软件设计软件设计工作主要包括系统启动代码编写,各外设驱动程序编写,操作系统选择及移植,嵌入式TCP/IP协议栈编写,应用程序设计等,其中启动代码,外设驱动程序(包括DMA,TIMER,中断控制器,串口等)实现较为简单,不再占用论文篇幅进行详细介绍。操作系统选择及移植,嵌入式TCP/IP协议栈编写,应用程序设计的内容较多,且体现了本文主要的工作,为其单独安排在第五章进行介绍。本章小结本章介绍了基于嵌入式系统的图像网络传输的系统设计的工作,主要讨论了总体方案的考虑与硬件和软件平台的设计,介绍了本文所采用的芯片S3C2440处理器。第四章TCP/IP协议概述4.1网络分层结构为了减少协议设计的复杂性,大多数网络都按层(layer)或级(level)的方式来组织,每一层都建立在它的下层之上。不同的网络,其层的数量、各层的名字、内容和功能都不尽相同。但在所有的网络中,每一层的目的都是向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。关于协议分层,有两个思想占据了该领域的主导地位。第一个思路基于国际标准化组织ISO早期所做的工作,称为ISO的OSI开放系统互联参考模型(opensysteminterconnectionreferencemodel);第二个就是TCP/IP参考模型。4.1.1OSI七层参考模型图4.1OSI七层网络模型结构OSI参考模型是关于如何把开放式系统(即为了与其他系统通信而相互开放的系统)连接起来的。模型共有七层,现将其各主要功能分述如下:物理层(physicallayer):涉及到通信在信道上传输的原始比特流,主要处理机械的、电气的和过程的接口,以及物理层下的物理传输介质等问题。数据链路层(datalinklayer):主要任务是加强物理层传输原始比特的功能,使之对网络层显现为一条无错线路。传输以帧的格式实现。其中还有一个特殊的子层——介质访问子层,它主要控制对共享信道的访问。网络层(networklayer):关键问题是确定分组从源端到目的端如何选择路由。传输层(transportlayer):基本功能是从会话层接收数据,并且在必要时把它分成较小的单元,传递给网络层,并确定到达对方的各段信息准确无误。通常会话层每请求建立一个传输连接,传输层就为其创造一个独立的网络连接。会话层(sessionlayer):允许不同机器上的用户建立会话关系,其服务有管理对话、令牌管理、同步等。表示层(presentationlayer):完成某些特定的功能,如用一种大家一致同意的标准方法对数据编码。应用层(applicationlayer):包含大量人们普遍需要的协议,如文件传输。OSI模型的数据传输,是一个关键的概念,虽然数据的实际传输方向是垂直的,但每一层在编程时却好像数据一直是水平传输的。4.1.2TCP/IP参考模型广泛地讲,TCP/IP软件分成五个概念层次,建立在第五层上的是四个软件层,图4.2给出了这些概念性层次结构以及在这些层次之间传输的数据形式。图4.2TCP/IP网络层次模型及各层之间传输数据形式应用层(applicationlayer):在这个最高层,用户调用应用程序通过TCP/IP互联网来访问可用的服务。与各个运输层协议交互的应用程序负责接受和发送数据。传输层(transportlayer):基本任务是提供应用程序之间的通信服务,这种通信又叫端到端通信。不但要系统地管理信息的流动,还要提供可靠的传输服务,以确保数据到达无差错,无乱序。网络层(internetlayer):用来处理机器之间的通信问题。其传输格式表现为IP数据报,还要根据需要发出和接受ICMP(Internet控制报文协议)差错和控制报文。网络接口层(networkinterfacelayer):又称数据链路层,负责接受IP数据报并把数据报通过选定的网络发送出去。它包括一个设备驱动程序,也可能包括一个复杂的子系统,使用自己的数据链路协议,如以太网协议。4.2TCP/IP网络协议TCP/IP网络以一种自治和对等的方式操作,互联的计算机都可以作为主机出现,任一计算机的应用都可以动态地与对等计算机上的另一个应用建立一个连接,而不需要中心控制服务器。对等网络的主要优点是允许网络范围内的系统资源得到最大限度的共享。TCP/IP是一个网络协议族,协议按上面所述不同的网络层次进行开发,每一层分别复杂不同的通信功能,相应的有不同的协议。TCP/IP协议的核心是TCP、UDP和IP协议。4.2.1嵌入式TCP/IP协议嵌入式系统与TCP/IP网络的互联,这一技术在许多领域得以广泛的应用。但由于网络协议的复杂性与嵌入式系统的MCU相对简单之间的矛盾,极大地制约了嵌入式系统实现网络化的进程。传统的TCP/IP协议是以PC机、服务器为应用平台的,协议复杂,功能强大,面面俱到,而且没有实时的概念,这种情况与嵌入式系统的要求是格格不入的。嵌入式TCP/IP协议即是从以满足嵌入式系统的实际需求为目的这一指导思想出发,建立在嵌入式Internet理论的基础上,通过对庞大、功能齐全的TCP/IP协议的仔细研究,对标准的TCP/IP协议进行了一定的取舍,从而制定出了一套简单的,适用于嵌入式系统的并且能完成相应网络功能的协议,称为嵌入式TCP/IP协议。4.2.2IP协议IP协议位于网络层,是TCP/IP协议族中最核心的协议,所有的TCP、UDP、ICMP及IGMP数据都以IP数据包格式传输。IP是一个无连接和不可靠协议,不可靠的意思是它不能保证IP数据包能成功地到达目的地,IP仅提供最好的传输服务,如果发生某种错误,IP丢弃该数据包,然后发送ICMP消息包给信源端,任何要求的可靠性必须由上层来提供。无连接是指IP并不维护任何关于后续数据包的状态信息每个数据包的处理是相互独立的,即IP数据包可以不按发送顺序接受。IP最终要的作用是将数据包装成为目的机IP地址的数据包;另一个重要的作用是将一个过长的数据包分解和重装配;IP同样也处理因数据包经由ICMP而产生的传输问题;最后,IP规定网关设备如何处理数据包。4.2.3UDP/TCP协议UDP是一个简单的面向数据包的运输层的协议。UDP和TCP都属于IP上层的传输层协议,二者都使用端口号作为送往主机的解码地址。UDP为维护数据包的整体性应尽最大可能地选用校验。UDP数据包的可靠性是与IP相当的,UDP客户机向指定的远端主机发送数据包时,并没事先确认对方是否做好了接收数据地准备,所以,远端主机收到的数据包未能保证其正确的顺序。但是由于TCP所传数据流应用了顺序号和应答措施,可以发现数据的丢失、段的失序和对传输错误的排除,所以TCP协议提供的是数据流的可靠传输。端口号表示发送进程和接受进程。需要指出的是由于IP层已经把IP数据包分配给TCP或UDP(根据IP首部中协议字节段值),因此TCP端口号由TCP来查看,而UDP端口号由UDP来查看,TCP和UDP的端口号是相互独立的。4.2.4ARP协议ARP地址解析协议,它是一个隐藏底层网络物理编址、允许给每台机器分配一个任意IP地址的底层协议。ARP提供的是一种把IP地址映射到物理地址的机制。因此我们要了解IP和物理地址两种编址形式:IP地址:互联网上的每个接口必须有一个唯一的Internet地址(也称IP地址),IP地址长32bit。物理地址:该地址用来指明计算机所安装的网卡的地址,网卡地址是由IEEE统一分配给网卡制造商的,每个网卡的地址在世界范围内是唯一的。所有的物理地址的MSB位的值为零,即48位网卡地址的最高位位“0”。以太网中所说的目的地址和源地址都是指物理地址。ARP是在源主机不知目的地址的前提下才需要的。协议的实现可以从两个方面来考虑:一是发送方,在以太网帧的传输中是以物理地址为目的地址的,但在应用层我们是以网络的IP地址来操作的,当给定一个目的站的IP地址时,发送方软件会查询它的ARP缓存,看是否有从该IP地址到物理地址的映射,若有,则软件提取该物理地址,把数据放到使用该地址的帧中,并发送该帧,若没有,则软件必须广播一个ARP请求并等待应答。从接收方考虑,如果网络上过来的是ARP请求帧,则查看自己是否是请求的目标(是否与自己的IP地址相符),如果符合则发送ARP应答帧。本章小结本章介绍了TCP/IP协议以及相关协议,为下一章的网络传输TCP/IP协议的设计做好理论基础。第五章基于嵌入式系统的图像网络传输的软件设计本章是系统设计中的核心部分,包括系统实现多任务运行的基础——操作系统的移植,网络功能的基础——TCP/IP协议栈的设计。5.1Linux在ARM硬件平台上的移植5.1.1移植环境1.硬件资源及连接一台PC机,ARM硬件平台,交叉串口连接线,交叉网线,USB连接线,5V稳压电源。用交叉串口连接线将开发板上的串口P1与PC机串口1相连;用交叉网线将CON3与PC机相连;用USB连接线将开发板与PC机相连;5V电源连接到开发板上。2.调试终端配置在PC机上DNW,在configuration中设置为:COM1,波特率为115200,8位,无奇偶位,停止位1,无硬件流。如下图所示:图5.1终端设置5.1.2建立交叉编译环境交叉编译是嵌入式开发过程中的一项重要技术,它的主要特征是某机器中执行的程序代码不是在本机编译生成,而是由另一台机器编译生成,一般把前者称为目标机,后者称为主机。嵌入式系统开发环境一般分成主机端(HOST)和目标板(ATGRET)两部分。目前一般采用的解决办法是首先在通用计算机上编写程序,通过交叉编译生成目标平台上可运行的二进制代码,再下载到目标平台上的特定位置上运行。在主机端和目标板之间需要通过某种方式进行通信,如使用RS232串口。这种通信的目的在于发送控制指令和传输数据,同时获得反馈信息。采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到高性能的主机中进行。Linux下的交叉编译环境重要包括以下几个部分:针对目标系统的编译器GCC;针对目标系统的二进制工具Binutils,包括ar,objcopy,strip工具集;目标系统的标准C库Glibc;目标系统的Linux内核头文件;GNUMake工具。可通过两种方式建立ARMLinux交叉编译环境:手动方式和使用集成环境。因手动方式比较繁琐,这里只介绍使用集成环境建立方法。在Internet上我们可以得到一些整套的开放源码嵌入式Linux开发工具,常用的有Denx公司的ELKD和TimeSys公司的TimesysLinux/GUN。这些工具链不仅包含了交叉编译工具GCC、Binutils、GDB,而且包括可以直接使用的RAMDISKImage文件和文件系统制作工具等许多工具和元件。上述两个集成交叉编译环境都支持MIPS、PPC、ARM、x86、XScale等处理器。5.1.3BootLoaderBootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。从操作系统的角度看,BootLoader的总目标就是正确地调用内核来执行。1.BootLoader所支持的CPU和嵌入式板每种不同的CPU体系结构都有不同的BootLoader。有些BootLoader也支持多种体系结构的CPU,比如U-Boot就同时支持ARM体系结构和MIPS体系结构。除了依赖于CPU的体系结构外,BootLoader实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,通常也都需要修改BootLoader的源程序。2.BootLoader的安装媒介(InstallationMedium)系统加电或复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址上取指令。比如基于ARM920T的CPU在复位时通常都从地址0x00000000取它的第一条指令。而基于CPU构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM或FLASH等)被映射到这个预先安排的地址上。以确保在系统加电后,CPU将首先执行BootLoader程序。3.用来控制BootLoader的设备或机制主机和目标机之间一般通过串口建立连接,BootLoader软件在执行时通常会通过串口来进行I/0,比如:输出打印信息到串口,从串口读取用户控制字符等。4.BootLoader的启动过程有单阶段(SingleStage)和多阶段(MultiStage)之分。通常多阶段的BootLoader能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动的BootLoader大多都是2阶段的启动过程,也即启动过程可以分为Stagel和Stage2两部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在Stagel中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而Stage2则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。5.BootLoader的操作模式(OperationMode)大多数BootLoader都包含两种不同的操作模式:“启动加载”模式和“下载”模式,这种区别仅对于开发人员才有意义。但从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。①启动加载(BootLoading)模式:这种模式也称为“自主”(Autonomous)模式。也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式,因此在嵌入式产品发布的时侯,BootLoader显然必须工作在这种模式下。②下载(Downloading)模式:在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的FLASH类固态存储设备中。BootLoader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用BootLoader的这种工作模式。工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。6.BootLoader与主机之间进行文件传输所用的通信设备及协议最常见的情况就是,目标机上的BootLoader通过串口与主机之间进行文件传输,传输协议通常是xmodem/ymodem/zmodem协议中的一种。但是,串口传输的速度是有限的,因此通过以太网连接并借助TFTP协议来下载文件是个更好的选择,但此时一般需要主机方提供相应的软件。比如,在通过以太网连接和TFTP协议来下载文件时,主机方必须有一个软件用来的提供TFTP服务。5.2烧写和启动Linux以及Linux内核编译5.2.1烧写Linux内核(1)上电启动开发板,进入BIOS界面。(2)USBDEVICE的连接线,选择“1”,选择USB下载,接着出现“Enteranewtemporarydownloadaddress:”的提示,在这个提示下输入程序下载的地址,这里设置为0x32000000(不要与BIOS的地址0x30100000相冲突),同时要注意用USB下载要先在PC端装好驱动程序,保证USB连接好,有时PC端出现发现无法识别的USB设备时,在BIOS中输入ESC取消下载,等几秒钟后再输入“1”启动USB下载。(3)点击“USBPort”“Transmit”选项,选择zlmage(这个映像文件在光盘目录的“目标代码”文件夹下),点击“打开”,USB下载开始。下载结束后,会返回主功能菜单。(4)下载成功后,在出现主功能菜单后,选择“4”,将出现提示,输入“1”,在接下来的提示输入“Y”,将zlmage烧写到NANDFLASH的分区1中。烧写成功后,会自动进入主功能菜单。5.2.2烧写根文件系统(1)上电启动开发板,进入BIOS界面。(2)USBDEVICE的连接线,选择“1”,选择USB下载,接着出现“Enteranewtemporarydownloadaddress:”的提示,在这个提示下输入程序下载的地址,这里设置为0x32000000(不要与BIOS的地址0x30100000相冲突),同时要注意用USB下载要先在PC端装好驱动程序,保证USB连接好,有时PC端出现发现无法识别的USB设备时,在BIOS中输入ESC取消下载,等几秒钟后再输入“1”启动USB下载。(3)当USBDEVICE成功枚举后,点击“USBPort”“Transmit”选项,选择YLSBC2440_demo.cramfs(这个映像文件在光盘目录的“目标代码”文件夹下)。(4)下载成功后,在出现主功能菜单后,选择“4.WritefiletoNandFlash”进行程序烧写,在接下来的分区选择中,选择分区“2”,出现提示输入后选择“Y”(5)设置根文件系统分区位置参数,这个参数主要是传递给内核的,在主功能菜单中,选择“7.Configparaments”进入系统参数配置,接着选择“7.rootfs”对Linux启动根目录进行配置,然后回车,在出现“pleaseentervalue:”提示下输入“2”设置Linux根文件系统为2分区,然后回车,然后再进行一次回车或者选择“15”退出,会提示“Doyouwanttosaveparameters?pressyorYforsave.”,这时输入“Y”,这样就将根文件系统所在的分区位置参数保存了。(6)设置LCD显示参数,因为在板子的LCD标准配置是Sharp3.5。在BIOS的主功能菜单中,选择“8.Configparaments”。接着选择“14.Userpara”,然后回车,在“pleaseentervalue:”提示下输入“display=shp240”,然后回车,在进行一次回车或者选择“15.Exit”退出,这是将提示“Doyouwanttosaveparameters?pressyorYforsave.”,接着输入“Y”5.2.3启动Linux将Linux内核和Linux根文件系统烧写好之后,接下来就是启动Linux了,启动Linux有两种方式:一种是通过BIOS的5号功能来启动;另一种是设置Linux自启动。1.通过BIOS的5号功能来启动Linux。开发板进入BIOS主功能菜单后,选择“5”2.Linux自启动。进入BIOS的主功能菜单后,选择“7”对启动参数进行设置,在接着出现的选项中输入“0”进行启动系统选择设置,然后回车,在出现“pleaseentervalue:”的提示下,输入“1”,然后回车,接着再进行一次回车,将会提示“Doyouwanttosaveparameters?pressyorYforsave.”,这时输入“5.2.4安装编译工具编译嵌入式Linux内核前,要先安装交叉编译工具toolchain,随板光盘已附带编译工具。编译工具cross-3.4.1.tar.bz2,安装此编译器只需要在/usr/local目录下建一个arm的目录,先将光盘目录“Linux源码和工具”下“toolchain”文件夹下的cross-3.4.1.tar.bz2拷贝到某个目录下,然后进入该目录,执行解包命令tarxjvfcross-3.4.1.tar.bz2即可,之后可编辑/etc/bashrc文件,在最后增加路径exportPATH=/usr/local/arm/3.4.1/bin:$PATH,以后编译内核或其他应用程序均可用arm-linux-来指定交叉编译器。可以使用echo$PATH来查看环境变量中是否有/usr/local/arm/3.4.1/bin路径变量。5.2.5编译内核(1)解压内核包:先将光盘目录的“Linux源码和工具”的Linux内核包拷贝到某个目录下,进入这个目录,然后解压这个Linux源码包,命令为:Tarxjvflinux-2.3.12-2440.tar.bz2(2)编辑Makefile文件:进入解压的目录后,运行命令:vimakefile找到“CROSS_COMPILE=”这行,将它改为“CROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-”(3)输入命令:makemenuconfig,进入配置栏的“LoadanAlternateConfigurationFile”,输入配置文件名kernel_2440.cfg并回车,在主菜单里选择Exit退出并保存设置。(4)接着输入命令:makezlmage。(5)编译结束后,可在arch/arm/boot目录下得到linux内核压缩映像zlmage。5.2.6cramfs根文件系统的创建(1)将YLSBC2440_camare_demo.cramfs拷贝到任意目录下。(2)在该目录下建立两个文件:mkdirromsmkdirtmp(3)将YLSBC2440_camare_demo.cramfs挂接到chang目录:mountYLSBC2440_camare_demo.cramfs.roms-oloop(4)将roms目录下的内容压缩:Tar-cvf1.tarroms这样将在roms的上一级目录产生一个1.tar的包。(5)将包解压到tmp目录下:umountromscd..mv1.tartmpcdtmptar-xvf1.tarrm1.tar(6)经过上面的步骤就可以将自己的驱动和应用程序添加到cramfs根文件系统中了。进入tmp目录下的文件夹,在这个目录下运行命令:MkcramfstmpYL2440_demo_test.cramfs运行成功后会在该目录下生成YL2440_demo_test.cramfs根文件系统mkcramfs工具在光盘:Linux内核源码和工具\toolchain下。(7)根文件系统制作成功后,就可以将YL2440_demo_test.cramfs烧写到相应的地方。5.3嵌入式TCP/IP协议栈的设计众所周知,TCP/IP是一个协议族,它由几百种网络通信协议组成,这些协议用于组织计算机网络中的数据通信。嵌入式系统是一种以应用为核心、以计算机技术为基础、功能稳定的专用计算机系统。嵌入式TCP/IP协议栈其功能必定在嵌入式系统的定义范畴之内。因此,嵌入式TCP/IP协议栈的功能是特定的,它不要求(也不可能)实现所有的TCP/IP协议,其实现的必定是TCP/IP族的一个子集。基于这一思想,我们在设计嵌入式TCP/IP协议栈时在TCP/IP协议的子集中实现,降低设计的难度。由于系统资源有限,本文系统设计的协议栈的目标是一个能实现所需功能的尽量精简的协议栈。本文系统中的ARP协议,IP协议及ICMP协议是TCP/IP协议栈最基本的也是必须的协议,对于传输层协议,本文系统的协议栈根据具体需要实现了UDP与TCP。UDP没有保证可靠性的机制,没有其他的关卡机制,得以实现全速地发送(即充分发挥物理通信设备的速度)。考虑到本论文设计的系统需要传输大量的图像数据,而图像的传送对实时性要求较高并且对于掉包不敏感,而由于在局域网环境下丢包错序的现象很少见,同时可以在应用程序中适当地添加简单的控制机制对乱序进行处理,系统中图像数据的传输采用UDP具有更优的效果。相对于UDP,TCP的可靠性是以许多复杂措施及由此而增加的开销为代价换来的,TCP提供可靠的数据流,但处理的开销较大,传输率有所降低。通过远程控制台通过网络对系统的工作进行控制的过程具有数据量小,需要保证控制参数在发送与接受过程中的顺序及内容的严格正确的特点,并且在一个完整的控制过程中的的交互当中,双方应能了解对方当前的状态,TCP的机制能有效地满足这些要求,控制台程序与图像采集系统中的控制线程通过建立TCP连接进行通信是很有必要的。图5.2实现的TCP/IP协议栈中各协议的关系5.3.1ARP协议的实现ARP协议即地址解析协议,是将IP地址与网络物理地址一一对应的协议。在IPv4中地址长度是32位,在以太网中,设备的地址是48位(即MAC地址)。一张ARP表,用来支持在MAC地址和IP地址之间的一一对应关系。它提供两者的相互转换。主要流程为:当传送一个的包要传向一个局域网的主机时,当它到达网关时,网关要求ARP对应程序找到物理主机或与IP地址相对应的MAC地址,ARP对应程序在缓存中寻找,如果找到地址,则提供此地址,以传送到主机,如果未找到,ARP对应程序就在网上广播一个特殊格式的消息,如果一台机器发现是自己的IP地址,它就发送回应,这样就指出了相应的地址,ARP对应程序更新自己的缓存并将此包送到回应的MAC地址。程序设计时需要定义一个IP地址与以太网地址映射的表,在对方发送ARP请求包时,可以从该映射表中读取相应的数据回复给对方,在接受到对方的ARP包时将对方的IP地址与以太网地址映射存储到该表中,程序中通过两个模块ARPSend()和ARPReceive()来实现发送和接收ARP报文的功能。其中ARPReceive()程序设计框图如下:图5.3ARPReceive()程序设计框图发送包模块ARPSend()的处理流程较简单,先在映射表中查找有无相应IP地址与MAC地址映射的项,如果无则发送ARP请求包。5.3.2IP协议与ICMP协议的实现(1)IP协议。在IP协议的实现中,可以作以下的简述:即不接收分片包。分片包需要根据包头中的一些信息进行重组,这将会占用大量的存储器空间与处理器资源,在系统资源比较紧张的情况下,可以考虑忽略。程序实现IP协议,在接收到IP数据包,需要对包中携带的信息进行检查,根据这些信息分别做出丢弃该包的处理或者判断该包中携带的数据由哪个处理程序进行处理。对发送而言则相对简单,只需要对上层协议产生的包进行封装,加上一个IP包头。在本系统中的设计中,实现IP层功能的模块分别是负责IP包的发送的IPSend()模块与接收处理的IPReceive()模块。这两个模块的处理流程分别通过框图来表示:图5.4IPSend()流程框图图5.5IPReceive()流程框图(2)ICMP协议。ICMP协议是作为IP上面的传输层实现的,但它与IP层紧密结合在一起,经常被认为是IP层的一个组成部分。ICMP传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或者跟高层协议使用。ICMP报文是被封装在IP数据报中传输的,ICMP有许多种类型,对于一个只需要基本功能的精简的协议栈而言,只需要实现一个“回显应答”(PING)功能就可以了。实现ICMP协议主要通过模块ICMPSend()和ICMPReceive()来实现,ICMPReceive()对接收到的ICMP数据报进行处理。如果类型字段是ECHO_REQUEST,就需要调用相关拷贝函数将该ICMP报文拷贝到发送缓冲区,修改其类型字段和IP后返回;ICMPSend()只是简单地将包往下交给IP层。图5.6ICMPReceive()流程框图5.3.3TCP与UDP协议的实现用TCP协议传输的所谓数据实际指的是数据流中的段,而用UDP协议传输的所谓数据指的是数据报。TCP和UDP都属于IP上层的传输层协议。二者都使用端口号作为送往主机的解码地址。端口号由各个具体应用所确定,同时使用多个端口号能完成“一机多网”的操作。每个UDP数据包和TCP数据段中都含源端口号和目的端口号。为接收远端的输入而等待着执行接入操作的主机是所谓的服务器,发起接入请求的主机就是所谓的客户机。服务器为最常服务的应用如FTP(文件传输协议)、Email和HTTP,分配了知名的端口号并对其进行持续地监听。作为传输源的客户机通常选择随机的端口号,并向已分配了知名端口号的服务器发出接入请求。客户应用所取的端口号应大于1024,1024以下的端口号是为知名应用而预留的。对于应用程序中的每个TCP与UDP的套接口,系统维护两个Socket链,分别对应TCP与UDP,每个节点对应一个应用程序正在使用的套接口,维护相关的必要信息,在一个新的套接口建立时,关于该套接口的节点插入到Socket链的头部,对于每个接收到的TCP报文或者UDP报文将通过遍历相应的Socket链来获取必要信息及转到相应处理程序中,同样在发送每个TCP报文或者UDP报文时,同时需要根据对应的Socket节点进行一定的操作。(1)UDP协议在上文所描述的Socket链中每个UDP套接口的节点相关的数据结构中需要包含:套接口的四元组字段;是否接收到提交到应用程序的新数据和应用程序是否有新数据发送的判断字段;接收到的提交到应用程序的数据的缓冲区首地址字段;从应用程序中获得的需要发送的数据的缓冲区首地址字段等必须的字段。(2)TCP协议在程序中实现这个状态机,需要为每个TCP连接维护其状态,在上文所描述的Socket链中每个TCP套接口的节点相关的数据结构中需要包含:状态字段;套接口的四元组字段;收发序号字段;是否接收到提交到应用程序的新数据和应用程序是否有新数据发送的判断字段;接收到的提交到应用程序的数据的缓冲区首地址字段;从应用程序中获得的需要发送的数据的缓冲区首地址字段等必要的元素以提供状态机运行时必须的信息,状态机运行时根据接收到的TCP包中的信息与对应的Socket节点中的字段进行比较并根据需要修改字段的内容,发送包则直接更新对应的Socket节点中的字段内容。状态机通过函数TCP_Handler来实现,TCPHandler的实现流程如图5.7所示,该函数对应用程序透明。图5.7TCPHandler函数流程图程序提供的接口函数主要为:1.TCP_Open:主动发起TCP连接;2.TCP_Listen:创建监听套接口;3.TCP_Send:发送数据;4.TCP_Flush:发送紧急数据;5.TCP_Close:关闭套接口。应用程序通过调用这些函数来实现相应的TCP相关的操作。实现了上述的协议,系统的基本网络功能就构架起来了,在这个基础上图像的传输以及接收控制台的控制命令两大功能可以得到实现。通过网关还可以接入公网。在本文实现的基本网络功能的基础上进一步的工作可以考虑编写PPP协议使设备直接接入公网,以及编写HTTP协议并通过CGI技术使得控制可以通过WEB来实现等。本章小结本章主要讲述了将Linux内核移植到ARM平台的过程,第二章介绍了ARMS3C2440处理器的体系结构,本章在此基础上给出了具体的开发环境并搭建了交叉编译环境,进行了烧写和启动Linux,并进行了Linux内核的编

温馨提示

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

评论

0/150

提交评论