电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 通信与网络 > 详细信息
通信与网络:基于S3C2410的嵌入式网关的设计与研究
来源:   时间: 2007-12-17 6:22:18    
  摘  要: 本文设计了一种基于S3C241032位嵌入式微处理器实现串口和以太网口之间的数据传输的嵌入式网关系统。系统以32位的ARM嵌入式微处理器S3C2410为核心,外扩多个功能模块构建硬件平台,并在Linux下开发相应的驱动程序和上层应用程序来构建一个嵌入式网关。该网关可广泛应用于工业控制、智能家居等领域。

  关键字: 网关   S3C2410   Linux

1 引言
  随着通信网络技术和集成电路设计的高速发展,以tcp/ip网络传输通信协议为代表,成熟度较高的开放式网络通信技术向各种自动化系统进行渗透,连接并控制所有设备。

  而在工业控制和各种通讯设备中,更多的却是符合rs-232标准的串行口设备。要将串行口的数据转发到网络上以实现数据的远程传输,就必须使用网关系统。网关又被称为网间协议变换器,用于连接采用不同通信协议的网络,实现网络之间的数据传输。本文提出了一种基于嵌入式系统来实现串口和以太网口之间的数据传输的设计方案。

  本文以32位嵌入式微处理器s3c241o为核心,通过移植嵌入式操作系统linux,并在linux上开发相应的驱动程序和应用程序来构建一个方便、实用的网关。

2 嵌入式网关的结构化设计
  本网关主要实现串口和以太网口之间的数据传输。其总体结构可简化为硬件层和软件层两部分

2.1 硬件设计
  本系统采用结构化设计,由串行口模块,协议转换模块和以太网接口模块等三部分组成。串口的数据以报文的格式发送到以s3c2410为核心的协议转换模块中,协议转换模块完成对该报文的接收和翻译,并通过以太网接口模块转发到internet上,最终实现串口设备到以太网的协议转换。

各模块基本组成描述如下:

(1) 微处理器mcu
  基于arm92ot内核的s3c241o微处理器是一个多用途的通用芯片,它内部集成了微处理器和常用外围组件,特别适用于手持设备;

(2) 1o/1oom以太网接口
  选用realtek公司生产的rtl82oi芯片作为以太网的物理层接口控制芯片。再通过rj45就可连接到以太网;

(3) flash存储器
  采用一片hy29lv16o构建flash存储器系统,其存储容量为2mb;

(4) sdram存储器
  选用两片hynix公司的hy57v64162o芯片并联构建sdram存储器系统;

(5) jtag接口
  可对芯片内部的所有部件进行访问,通过该接口可对系统进行调试,编程等;

(6) 串行接口
  s3c241o自身就带有两个uart控制器,我们将它们与max232相连进行电平转换,就可以得到两个标准rs-232串行接口;

(7) i/o接口
  主要包括键盘控制模块和液晶显示模块等。

2.2 软件设计
  网关的软件体系结构设计分为3个层次:

  (1) linux内核:提供文件系统管理、中断和中断处理、系统初始化、网络协议栈等;
  (2) 硬件驱动层:包括驱动串口、以太网等;
  (3) 应用程序:如串口通信程序、网络服务程序等。

  ● 建立linux开发环境。基于linux操作系统的应用开发环境由s3c2410的开发板和宿主pc机所构成。目标板所用到的操作系统的内核编译、应用程序的开发和调试由宿主pc机来完成。双方通过串口和以太网接口建立连接关系。

  首先,在宿主机上安装linux操作系统,然后从网上下载工具链如:arm-elf-gcc-2.95.3-2.i386.rpm将它复制到宿主机上的任一目录下,键入安装命令,将交叉编译器安装到宿主机,建立起交叉开发环境.就可以用交叉编译器arm-elf-gcc编译操作系统内核和用户应用程序了。

  ● 设备驱动程序。设备驱动程序是内核和硬件之间的接口。它是一组数据结构和函数的集合,其中以init_module和cleanup_module这两个函数和file_operations,inode,file这三个数据结构最重要,它们都在linux/fs.h中定义。这些数据结构和函数通过定义的接口控制一个或多个设备。设备驱动程序位于内核的最底层,直接与硬件进行交互。内核提供统一的系统调用,用户程序通过这些标准系统调用来访问硬件设备。

  本设计中需要开发的硬件驱动有:以太网卡控制器,串口,lcd,小键盘等驱动程序。为linux内核编写驱动要做的只是为相应的设备编写几个基本函数并vfs注册即可。一般都是在一个现成的驱动程序的基础上针对特殊的硬件设备作相应的改动。驱动编好以后,就为上层的应用程序提供了接口函数,然后开始编写针对该设备的应用程序。最后重新编译内核,把linux的二进制文件烧进flash存储器,就可以使用这些外部设备了。

  ● 应用程序设计。本网关的主要功能就是实现串口协议和网络协议的转换。由于移植了linux操作系统,我们只需在linux操作系统上编写串口应用程序和网络应用程序就可以实现网关的设计要求。应用程序设计框图如图3所示。主要包括三个应用程序:linux下的串口编程、socket编程以及进程间通信。

2.3 linux下的串口编程
  串口是通信应用中最简单也是最常用的接口。在linux下,串口被当作文件对待,每个串口都被赋予了一个文件描述符。在linux中打开和预置一个串行设备的基本步骤:

(1) 打开串口
  在 linux 下串口文件是位于/dev下的,串口一为/dev/ttys0,串口二为/dev/ttys1。打开串口是通过使用标准的文件打开函数open操作。

(2) 设置串口
  设置串口包括波特率设置,效验位和停止位设置,它主要是设置struct termios结构体各成员c_ illag, c_ oflag, c_ cflag、c_1nag的值。设置这个结构体比较复杂,下面是设置波特率的函数:

void set_speed(int fd, int speed){
//fd为打开串口的文件句柄,speed为串口速率
int i;
int status;
struct termios opt;
tcgetattr(fd, &opt);
//使用tcgetattr获取当前设备方式
for (i= 0; i<sizeof(speed_arr)/sizeof(int); i++){
if(speed == name_arr[i]) {
tcflush(fd, tcioflush);
cfsetispeed(&opt, speed_arr[ i ]);
//设置波特率,speed_arr[ i ]为波特率表某值
cfsetospeed(&opt, speed_arr[ i ]);
status = tcsetattr(fd1, tcsanow, &opt);
//使用tcsetattr设置设备工作方式
if(status != 0) {
perror("tcsetattr fd1");
return;
}
tcflush(fd,tcioflush);
}
}
}

(3) 读写串口
  设置好串口之后,把串口当作文件,使用read和write读写串口终端。函数原型为write(fd,buffer,length)和read(fd,buffer,length)。

(4) 关闭串口
  输入输出处理完毕,用close关闭串口。关闭串口就是关闭文件,即close(fd)。

2.4 linux下的socket编程
  socket接口是tcp/ip网络的api,它是建立在传输层协议(主要是tcp和udp)上的一种套接字规范。socket接口定义了许多函数或例程,程序员可以用它们来开发tcp/ip网络上的应用程序。网络的socket数据传输是一种特殊的i/o,socket也是一种文件描述符。socket具有一个类似于打开文件的函数调用socket(),该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过该socket实现的。常用的socket类型有两种:流式socket(sock_stream)和数据报式socket(sock_dgram)。流式是一种面向连接的socket,针对于面向连接的tcp服务应用;数据报式是一种无连接的socket,对应于无连接的udp服务应用。本方案采用流式socket,因为它提供一种可靠的面向连接的数据传输办法,有自己的检错和纠错机制,并且不管是对单个的数据报,还是对于数据包,它都提供了一种流式数据传输方式。

3 进程之间通信
  在linux中,每一个进程都有它的独立的运行空间,进程之间要实现通信就要用到系统提供的通信机制。在linux中用来进行进程间通信与同步的机制有:共享内存、信号量、消息队列、管道、有名管道、socket等等。在本系统中,用到的是共享内存和信号量。在两个进程间通信时用到的是共享内存,实现对它的互斥访问用的是信号量。共享内存允许两个或更多的进程共享一块内存。在linux任务中通过/dev/mem设备在这段内存中寻址,进程也通过读取这段内存的数据获得信息。共享内存从理论上讲,应该是两个进程之间最快速的通信方式,因为它将信息直接的映射入内存省去了其它ipg方法的中间步骤。使用共享内存时,同步问题尤其重要。“信号量”就是为解决这种问题而引入的。信号量能够让程序员实现一种对任意事件的锁定机制。

4 结束语
  本文设计了一种基于嵌入式处理器s3c2410及linux操作系统的串行设备与以太网通信的嵌入式网关系统。本网关可实现以太网与串行设备的通信,通过改进可以满足与更多类型的串行设备的通信。随着以太网的发展和嵌入式系统设计被人们越来越广泛的关注,这种设计方案将会在工业控制、楼宇自动化、智能家居等领域得到越来越广泛的应用,具有广阔的应用前景。

相关信息
发表评论
打印本页 关闭本页
基于S3C2410的MPEG-4数字录像机的设计与实现
    视频信息在现代信息化战争发挥日益重要的作用,在视频监控、侦察、机载或车载视频记录等方面都得到了越来越广泛应用,这种形势对数字视频监控记录设备的研制提出了新的要求:大批量的应用要求降低监控记录设备成本,多样的应用环境、分散、孤立的监控点要求监控记录设备尽可能一体化、小型化、独立、便携、低功耗、供电方便、性能可靠。针对这些新问题和新要求,笔者设计实现了一种基...
>>详细内容
MAX232获得正负电源的另一种方法
  MAX232获得正负电源的另一种方法  在单片机控制系统中,我们时常要用到数/模(D/A)或者模/数(A/D)变换以及其它的模拟接口电路,这里面要经常用到正负电源,例如:+9V,-9V;+12V,-12V.这些电源仅仅作为数字和模拟控制转换接口部件的小功率电源。在控制板上,我们有的只是5V电源,可又有很多方法获得非5V电源。  1.外接;2.DC-DC变换......在这里我介绍一块大家常用的芯片:MAX23...
>>详细内容
嵌入式实时操作系统Nucleus PLUS在S3C2410A上移植的实现
  摘 要:本文在简要介绍嵌入式实时操作系统内核Nucleus PLUS和基于ARM920T内核的嵌入式微控制器S3C2410A后,详细地论述了Nucleus PLUS在S3C2410A上的移植过程和方法,最后指出了Nucleus PLUS 在ARM9上移植的重点和难点。关键词:嵌入式实时操作系统;Nucleus PLUS;移植;S3C2410A 引言Nucleus PLUS是美国ATI 公司为实时性要求较高的嵌入式系统应用设计的操作系统内核。约95%的Nucleus PL...
>>详细内容
基于Linux和S3C2410的嵌入式图象传输系统设计
  1 引言 如何更好的获得监控现场的图象数据一直是棘手的一个问题,传统的方法是采用CCD摄象机获取现场的视频信息,这种方法易于实现,但成本较高。随着ARM系列处理器应用的越来越广和基于linux的嵌入式技术的迅速发展,利用linux自身带有的TCP/IP协议来实现远程监控、图象传输已成为可能。本文提出的正是一种这样的方法,利用市场上很常见的中星微系列的USB摄象头来得到现场的图...
>>详细内容
嵌入式Nucleus PLUS在S3C2410A上移植的实现
  引言 Nucleus PLUS是美国ATI公司为实时性要求较高的嵌入式系统应用设计的操作系统内核。约95%的Nucleus PLUS代码用ANSI C语言编写,因此,非常便于移植并能够支持大多数类型的微处理器,如X86、68K、PowerPC、MIPS、ARM等。经过截减编译后,Nucleus PLus核心代码区一般不超过20KB大小。同时提供TCP/IP网络、图形界面Grafix、文件系统File等模块。还有一个特点就是免费提供源代码,有利...
>>详细内容
基于ARM芯片S3C2410的TFT-LCD驱动方法
  0 引言 S3C2410是三星公司生产的基于ARM920T内核的RISC微处理器,主频率可达203MHz,适用于信息家电、Smart Phone、Tablet、手持设备、移动终端等领域。其中,集成的LCD控制器具有通用性,可与大多数的LCD显示模块接口。 PD064VT5是一种用非晶硅TFT作为开关器件的有源矩阵液晶显示器,该模块包括TFT-LCD显示屏、驱动电路和背光源,其接口为TTL电平。分辨率为640 x480像素,可通过18bit...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com