您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 基于ARM9的嵌入式Linux网络通信系统设计与实现
基于ARM9的嵌入式Linux网络通信系统设计与实现随着计算机技术的发展,嵌入式系统已经成为计算机领域的一个重要组成部分。Internet现已成为社会重要的基础信息设施之一,是信息流通的重要渠道,如何让嵌入式设备连接到Internet上,和其他通信系统进行信息交换是当前嵌入式技术领域研究的热点所在。本文结合实际应用需求,详细研究实现了一种基于S3C2410平台和Linux操作系统的嵌入式网络通信系统。1.嵌入式网络通信系统总体设计经过大量的资料收集比较,深入地研究分析并结合现有的实验条件,我们对系统的体系结构、硬件平台和软件系统做出了以下选择:1)目前嵌入式CPU很多,选择哪款CPU要根据自己产品的实际需要。一般而言,首先应尽量选择系统集成度高、外围电路简洁的CPU;其次,还应综合考察CPU的各项性能指标;最后,还应该考虑软硬件开发环境的建立、厂家的货源以及代理的软件支持力度。经过比较,本设计采用三星的S3C2410微处理器。这是一款高性价比、低功耗、高集成度的CPU,基于ARM920T内核,主频最高为203MHz,专为手持设备和网络应用而设计,能满足嵌入式系统中的低成本、低功耗、高性能、小体积的要求。图1为硬件平台的总体设计[1]。CPUS3C2410模块是开发板的核心部件。S3C2410在包含ARM920T核的同时,增加了丰富的外围资源,主要包括1个LCD控制器,支持STN和TFT液晶显示屏;3个通道UART;4个通道DMA;4个具有PWM功能的16位定时/计数器和1个16位内部定时器,支持外部时钟源;8通道10位ADC,最高速率可达500kB/s;触摸屏、IIS总线、SD卡和MMC卡接口;117位通用I/O口和24位外部中断源。存储系统包括64MB的NANDFlash存储器模块和SDRAM存储器模块;Flash用于存放嵌入式操作系统、应用程序和用户数据等,并作嵌入式文件系统;SDRAM作为系统运行时的主要区域,用于存放系统及用户数据。通信模块包括串口和以太网接口模块;以太网接口为系统提供以太网接入的物理通道,UART接口则通过RS232可以和宿主机做串口通讯。JTAG调试接口用于系统的嵌入式调试。扩展总线扩展出了系统总线供今后继续开发使用。图1硬件平台结构框图2)网络通信系统需要一个便宜、成熟并且提供高端嵌入式系统所必须特性的操作系统,嵌入式Linux操作系统以价格低廉、功能强大又易于移植而正在被广泛采用,成为嵌入式操作系统的首选。因此,在软件体系上采用Linux216版本作为操作系统内核,并使用GNU工具链,包括编译器、汇编器、库、调试器和相关实用程序等[2]。根据以上,系统体系结构如图2所示:图2系统体系结构2.基于S3C2410的以太网接口电路以太网芯片采用了CirrusLogic公司生产的低功耗、性能优良的16位以太网控制器CS8900A[3]。CS8900A包括片上RAM,10Base2T传输和接受滤波器。该芯片的突出特点是使用灵活,其物理层接口、数据传输模式和工作模式等都可以根据需要而动态调整,通过内部寄存器设置来适应不同的环境。为了工艺简洁,采用内部带有变压器的RJ45。本系统选用的是中山汉任的HR901103A。网络接口硬件电路原理图如图3。数据的发送校验,总线数据包的碰撞检测与避免是由CS8900A自己完成的。信号的发送和接收端通过RJ45接口接入CS8900A,再传送给S3C2410,从而组成了以太网信号传输的硬件通道。3.嵌入式通信系统软件设计本文的软件系统设计采用C/S(客户机/服务器)模式,以S3C2410平台作为服务器,以PC作为客户端。服务器在得到客户端的请求时将信息通过网络传给客户端。下面讨论通信系统软件的具体设计与实现[4]。3.1建立宿主机开发环境本文以PC为宿主机,带有Fedora5系统,开发环境就建立在这个平台上。对于嵌入式系统的开发,由于没有足够的资源在目标板上运行开发工具和调试工具,所以通常采用交叉编译调试的方式。本文采用的交叉编译器为arm2linux2gcc,开发时使用宿主机上的交叉编译、汇编及连接工具生成可执行的二进制代码。然后,把可执行文件下载到目标机上运行。为了快速方便地下载,采用tftp方式,这就需要宿主机在宿主机上安装tftp服务器,并进行配置。3.2操作系统的移植嵌入式系统的存储空间往往很有限,需要把Linux系统根据实应用需求进行裁剪。对Linux进行裁减需要对Linux系统有完全的了解,如启动过程、文件系统、目录结构、系统工具文件等[5]。这一过程需要在空间和功能上加以权衡。其主要包括以下两部分工作:3.2.1Linux内核的移植针对系统的硬件,修改Linux2216内核,提供对S3C2410的支持和必要的设备驱动。由于在本系统所采用的Linux216内核中,S3C2410CPU已经成为一种标准支持,因此关于内核移植部分的工作量就大大减少了,所需要做的就只剩下修改网卡驱动、加入支持Cramfs文件系统的选项、添加NANDFlash启动初始化代码等工作了。由于论文篇幅所限,具体工作请参考相关资料。3.2.2文件系统的设计为了提供Linux运行所必需的环境,需提供文件系统。在嵌入式环境下,内存和外存资源都需要节约使用。Cramfs不会影响系统读取文件的速度,而且是一个高度压缩的文件系统,因此非常广泛应用于嵌入式系统中。本系统采用Cramfs文件系统,包括如下内容:目录/dev,/proc,/bin,/etc,/lib,/usr,/tmp,最基本的应用程序如sh,ls,cp,mv等,最低限度的配置文件如inittab、fstab等,设备文件如/dev/mtd3,/dev/console等。此外,还应包括程序运行所需的函数库。由于以上所需文件远超过1144MB,因此文件系统的构建主要采用busybox和其他必要的工具。3.3Linux环境下Socket[6]网络通信编程Linux是和网络密切相关的,其自身也常常被用来支持各种应用的网络需求。Socket在所有网络操作系统和网络应用程序中都是必不可少的,它是网络通信中应用进程和网络协议之间的接口。Socket接口是为方便开发人员进行TCP/IP程序开发,而为TCP/IP协议所开发的一组应用程序接口。当服务器和应用程序需要和其他进程通信时就需创建套接口。套接口地址的格式是一个IP地址和一个端口号,套接口是进程间通信的端点,每个套接口的名字都是惟一的,所以依靠套接口来确定整个Internet域中的一个网络进程。TCP和UDP是传输层协议,TCP是保证传输的面向连接的协议,而UDP是无连接协议,不能保证消息传送到目的地。本设计选择TCP协议,运用流式Socket编程技术实现服务器端、客户端之间的通信,图4是网络通信程序流程。服务器端主要用到的函数有:socket()、bind()、listen()、accept()等。用ARM2Linux2gcc交叉编译工具编译服务器端程序TCPSever.c生成可执行程序TCPSever。再将可执行应用程序加入到Cramfs文件系统里,下载到装有Linux内核的ARM开发板上。客户端主要用到的函数有Socket(),connect()。用gcc编译客户端程序TCPClient.c生成可执行程序TCPClient。3.4网络通信测试为了验证ARM嵌入式开发板上服务器端的通信能力,在PC机上打开minicom环境,启动开发板,装载在开发板内的bootloader信息和Linux内核的启动过程就会显示在minicom里。待操作系统启动后,按“Enter”键,就进入Linux的命令行模式。在提示符下,用ls命令查看开发板的文件系统,可以看到TCPServer;给开发板配置IP,在此开发板的IP地址要和与之通信的客户端PC的IP地址在同一网段;给该通信分配端口号2000,运行./TCPServer2000,如图5(a)所示。在PC机的Linux环境下打开一终端作为客户端的测试窗口,进入TCPClient所在的目录,执行命令./TCPClient19211681111002000,即客户端向服务器请求建立连接,服务器接收到请求并连接成功后则显示信息“Servergetconnec2tionfrom1921168111124”。其中,1921168111124是客户机的IP地址。客户端再向服务器发出测试信息,服务器收到信息后作出判断处理,将字符串中所有的小写字母转变成大写字母,其他信息不变,然后将处理后的信息再发送给客户端。如图5(b)所示。测试结果表明,通信正常,程序反应速度较快,达到了预期的设计目标。4.结束语凭借ARM9的强大性能与嵌入式Linux的开放灵活性,本文提出了一套基于S3C2410平台和嵌入式linux的网络通信系统的具体设计与实现,并给出了实验结果。实验结果证明:作为服务器的嵌入式设备可以稳定运行,及时向发出请求的客户端回复信息。与其他传输信号方式(如RS485等)相比,本设计稳定,传输速度快,符合网络扁平化趋势。本设计经过简单的功能扩展,可广泛应用于工业现场的监控,也可以与其他系统如门禁系统相结合获得门开或关时现场的重要数据,在未来的发展中必将赢得更广阔的发展空间。参考文献:[1]乔晓丹,张鹏.一个基于Linux操作系统的嵌入式网关的实现[J].微计算机信息,2005,21(722):26228.[2]孙纪坤,张小全.嵌入式Linux系统开发技术详解———基于ARM[M].北京:人民邮电出版社,2006.[3]孙天泽,袁文菊.嵌入式设计及Linux驱动开发指南———基于ARM9处理器[M].2版.北京:电子工业出版社,2007.[4]倪继利.Linux内核分析及编程[M].北京:电子工业出版社,2002.[5]杨著,郝丹,范太华.高性能硬件平台与嵌入式Linux的建构[J].西安科技大学学报,2006,26(2):2502252.[6]张泽,陈吉,聂敏.网络信息在Linux系统下的捕获与分析[J].西北大学学报:自然科学版,2005,35(5):5192522.
本文标题:基于ARM9的嵌入式Linux网络通信系统设计与实现
链接地址:https://www.777doc.com/doc-5890105 .html