打印
[ZLG-ARM]

基于ARM9的嵌入式网络接口设计

[复制链接]
1127|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
arminfo|  楼主 | 2009-6-1 13:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 引言

  当今时代设备网络化是当今科技发展的趋势。如何使用嵌入式系统将设备的远程控制、数据的远程传输数据转发到网络上呢?嵌入式网关使用嵌入式Linux操作系统,数据存储芯片SDRAM、FLASH,网络控制芯片DM9161等,实现网络通讯的传输方案便是基于这种思想而设计的。

  2 硬件设计

  本系统采用ATMEL公司生产的微处理器AT91RM9200T 。其处理速度可达200MIPS,同时它也具有USB、Ethernet、支持RS485的红外串口、IIC、SPI、SSC等丰富的片内资源。网口控制芯片DM9161, SDRAM和Flash接口。系统的硬件结构框架如图1所示。

         

  2.1 AT91RM9200T简介

  AT91RM9200T是英国ATMEL公司出品的一款工业级ARM9微处理器,处理速度可达200MIPS。其集成了USB 2.0 全速主机和设备端口及与10/100 Base-T 以太网媒体访问控制器(MAC)。此外,它还提供一系列符合工业标准的外设。

  2.2存储器接口电路

  存储器接口电路包括两个方面:一是RAM接口,主要存储数据,采用PCI接口方式;二是Flash接口,主要存储操作系统及应用软件,采用并口形式与CPU相连。

  2.2.1 Flash 存储器接口电路

  Flash 在系统中通常用于存放程序代码、常量表以及一些系统掉电后要保存的数据。Flash存储器是一种集成度高的、非易失存储器。本系统采用Intel 公司生产的NOR flash,与NAND flash 相比,它的优点是可以直接从flash中运行程序,但工艺复杂,价格比较贵。

  2.2.2 SDRAM 接口电路

  SDRAM 是高速的动态随机存取存储器,在系统中主要用作程序的运行空间、数据及堆栈区。与Flash 存储器相比较,SDRAM 不具有掉电保持数据的特性,但其存取速度大大高于Flash 存储器,且具有读/写的属性。

  本系统采用两片HY57V641620 并联构成32 位的SDRAM 存储系统,其中一片为高16 位,另一片为低16位。两片HY57V641620 的CLK 端接的SDCLK 端、CLE 端接AT91RM9200的 CLE 端。

  2.2.3 以太网接口控制器DM9161接口

  本设计使用DM9161作为以太网的物理层接口。DM9161是一款低功耗、高性能的CMOS芯片,支持10M和100M的以太网传输,编码、译码输入和输出数据。它通过RMII与AT91RM9200相连,经过一个隔离器件(H1012),提供了RJ45接口。

  3 软件设计

  本系统采用Linux 作为操作系统。Linux的是一套免费的32位的多任务操作系统, Linux系统稳定与网络功能非常强大。与其它操作系统相比,Linux还具有以下特色: 

  (1)采用阶层式目录结构,文件归类清楚、容易管理;

  (2) 支持多种文件系统,如FAT16,FAT32,NTFS等;

  (3)具备高度移植性。

  3.1 网络程序的设计

  3.1.1 Linux 下的网络编程协议分析

  Linux 下的TCP/IP 网络协议栈的各层之间的通讯是通过一系列互相连接层的软件来实现的,结构层次如图2 所示。

               

  其中,socket 层由专门用来处理Socket 的通用套接字管理软件处理。Socket 为基于IP 的协议TCP 和UDP 管理传输端点。UDP(用户数据报协议)是一个无连接协议, 传输UDP 包的时候,不关心是否它们安全到达了目的。而TCP(传输控制协议)是一个可靠的端对端协议。本系统采用可靠性连接的TCP网络协议。

  网络程序是由客户端和服务器端两部分组成。服务器端建立步骤为socket-->bind-->listen-->accept。客户端socket-->connect。Linux通过套结字socket和其他函数的调用进行网络通讯。返回的文件描述符,可以看成普通文件的描述符。通过向描述符读写操作实现网络的数据通讯,体现了linux 的设备无关性。以下是网络程序部分函数:

     

  3.2 Linux中网络通信编程的实现
     

  在编写网络应用程序时,需注意计算机中的数据存储有两种字节优先顺序:高位字节优先和低位字节优先。在互联网上,是以高位字节优先顺序传输数据的。所以,对于在内部以低位字节优先方式存储的数据想在互联网上传输需要进行转换。
    
  下面给出部分Linux下网络通信应用程序的源代码实例。
  int main() 函数中部分代码如下:

     
  其中,使用库函数inet_pton()将输入的字符串IP转换为connect函数可识别的整数uiip。 


  4结束语

  本设计已在ARM9开发板上实现了基于嵌入式网关的嵌入式系统网络通讯。它结合目前飞速发展的32位嵌入式技术,采用嵌入式Linux操作系统,源代码开放,应用丰富,内嵌嵌入式Web服务器,用于远程控制、设置、和监视设备的状态。通过以太网实现嵌入式系统与网络服务器的信息传递以及音频、视频等占用大量带宽的数据的传输,将以前单片机时代的低速传输模式升级为使用100M带宽的TCP/IP网络进行通信。开发者只须根据实际情况编写上层应用软件,即可解决大多数的工控设备和通讯设备的网络通讯问题,实现“嵌入式Internet”。

  本文作者创新点:设计提出了基于ARM9的嵌入式网络技术,采用嵌入式技术和Linux 实时多任务操作系统应用于远程控制和监视等数据的网络传输,能充分利用现有网络硬件设施,节约了开发成本,缩短了开发周期。本设计模式是工业控制网络通讯的一个发展趋势。若现有煤矿监控系统采用本模式,项目经济效益至少在30万元以上。

相关帖子

沙发
lpczcy| | 2009-6-1 13:36 | 只看该作者

TCP/IP设备

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

47

帖子

0

粉丝