基于S3C44B0X的嵌入式Socket通信实现

发布者:RainbowPromise最新更新时间:2013-02-19 来源: dzsc关键字:S3C44B0X  Socket通信  网络通信 手机看文章 扫描二维码
随时随地手机看文章
    嵌入式系统是"控制、监视或者辅助装置、机器和设备运行的装置"(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能,对可靠性、成本、体积、功耗有严格要求的专用计算机系统。

  本文给出一种适合于中/低端应用的通信平台设计方案,它可支持Ethernet网络之间的数据传输,并且具有RS232?RS485? USB等接口。文中围绕嵌入式uClinux环境设计了基于嵌入式通信微处理器S3C44B0X的硬件通信平台,从而实现了嵌入式Socket通信。

  1 嵌入式网络通信系统结构

  作为一类特殊的计算机系统, 嵌入式系统通常由嵌入式处理器。嵌入式外围设备。嵌入式操作系统和嵌入式应用软件等几大部分组成。嵌入式处理器是嵌入式系统的核心部件,它可分为嵌入式微处理器。嵌入式微控制器。嵌入式DSP(DigitalSignal Processor)和高度集成的嵌入式SoC(System on Chip)。嵌入式外围设备是指嵌入式硬件系统中除中心控制部件以外的存储。通信。保护。调试。显示等其它辅助部件。嵌入式操作系统一般在比较大型或需要多任务的应用场合才考虑使用,它可方便嵌入式应用软件的设计,大大提高嵌入式系统的功能,但同时也要占用宝贵的嵌入式资源。嵌入式应用软件和普通的应用软件有一定的区别,它是针对特定的实际专业领域。基于相应的嵌入式硬件平台。能完成用户预期任务的计算机软件。

  嵌入式处理器有许多种流行的处理器核,本文主要介绍采用Samsung公司基于ARM公司32位RISC的ARM7TDMI核的S3C44B0X处理器来进行Socket通信的软硬件平台的设计和实现方法。

  S3C44B0X是高性价比。高性能的微控制器,它采用ARM7TDMI核,可工作在66MHz?ARM7TDMI是一种32位嵌入式RISC处理器,但也配备了16位压缩指令集Thumb?它支持片上调试,允许处理器响应调试请求暂停,芯片内的增强型乘法器(multiplier)可进行两个32位数相乘从而直接产生64位结果,也可为嵌入式ICE硬件提供片上断点和调试点支持。此外,它还可以提供三级流水线及冯。诺依曼结构。实际上,S3C44B0X已在ARM7TDMI内容基础上扩展了一系列完整的通用外围器件。图1所示是一种嵌入式网络通信系统的硬件体系结构。


 

 



  2 外围电路设计

  作为优秀的网络控制器,基于S3C44B0X处理器的系统必须要有一个与之匹配的控制芯片。这里,笔者选用了Cirruslogic公司的CS8900A?CS8900A是一个单芯片全双工的以太网解决方案,片内集成了用于完成以太网电路所必需的所有模拟和数字电路。图2为系统中的CS8900A以太网接口电路。图中的信号发送和接收端通过网络隔离变压器和RJ45接口接入传输媒体。另外,为了系统能够正常工作,还需要外接一个20MHz的晶振。 

[page]

  

  3 基于uCliunx的Socket通信

  uclinux表示micro-control linux.即"微控制器领域中的Linux系统",是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。uCLinux主要是针对目标处理器没有存储管理单元MMU(Memory Management Unit)的嵌入式系统而设计的。它已经被成功地移植到了很多平台上。由于没有MMU,其多任务的实现需要一定技巧。

  uCLinux是一种优秀的嵌入式Linux版本,是micro-Conrol-Linux的缩写。它秉承了标准Linux的优良特性, 经过各方面的小型化改造,形成了一个高度优化的、代码紧凑的嵌入式Linux.虽然它的体积很小,却仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、对各种文件系统完备的支持和标准丰富的API.它专为嵌入式系统做了许多小型化的工作,目前已支持多款CPU. 其编译后目标文件可控制在几百KB数量级,并已经被成功地移植到很多平台上。

  本系统的软件是基于嵌入式操作系统uClinux而设计的。uClinux是专门面向没有存储器管理单元(MMU)的处理器的嵌入式操作系统,并且专为嵌入式系统做了许多小型化工作,它可以直接在Flash上运行,也可以加载到内存中运行。u-Cliunx带有一个完整的TCP/IP协议,同时也支持其他许多网络协议,对于嵌入式系统来说,它是一个网络完备的操作系统,因此得到了广泛的应用。

  为了实现基于uClinux的应用系统的开发,建立或拥有一个完备的uCliunx开发环境是十分必要的。基于uClinux操作系统的应用开发环境一般由目标系统硬件开发板和宿主PC机构成3。通常需在安装有Linux的宿主PC机上安装交叉编译器,以把用户应用程序编译成目前uClinux只支持的flat格式的可执行文件和编译操作系统内核。目标硬件开发板用于运行操作系统和系统应用软件。目标硬件开发板和PC宿主机之间一般通过串口。并口或以太网接口来建立连接。本文Socket通信使用的软件开发及仿真环境如图3所示。





  Socket即"套接字",表示网络通信进程的ID?最常用的有流式套接字和数据报套接字两种。在Linux中,分别称为"SOCK STREAM"和"SOCKDGRAM"?经裁剪的uClinux保留了Linux中的大部分Socket库函数。基于S3C44B0X处理器的嵌入式Socket通信所要调用的主要库函数如下:

  (1)socketint socket(int domain int type int proto-col)

  此函数用来建立一个新的socket,以通知系统建立一个通信端口。函数中的domain参数用于指定使用何种地址类型;type参数用于指定套接字类型;protocol参数通常为0,表示使用默认协议。

  (2)bind intbind(int sockfd,struct sockaddr*myaddr,int addrlen)

  bind函数可把socket返回的套接字端口与网络上的物理位置相关联。其中sockfd参数是函数socket返回的套接字描述符;myaddr参数是本地地址;ad-drlen参数是套接字地址结构的长度。服务器和客户机都可以调用函数bind来绑定套接字地址,但一般是由服务器调用函数bind来绑定自己的公认端口号。

  (3)listenint listen(int sockfd,int backlog)

  利用该函数可以使socket端口接受从客户机发送来的连接请求。backlog参数是所能接受的客户机的最大数目。对socket?bind?listen三个函数的综合调用最终可在服务器上产生一个能接受客户机请求的监听文件描述符sockfd?

  (4)acceptint accept(int sockfd,struct sockaddr*address,int*address_len)

  当有客户机发出连接请求时,此函数初始化这个连接。其中参数address用来存储客户机的信息,此信息由accept填入。当与客户机连接时,客户机的地址与端口将填到此处;addresslen是客户机地址长度的字节数,也由accept填入。

  (5)connectint connect(int sockfd,struct sockaddr*address,size_t address_len)

  客户机调用socket建立传输端口后,接着将调用connect函数来建立与远程服务器相连的连接线路。此函数的参数调用同bind。

  本文设计的Socket通信采用server/client模式,即服务器端的应用程序用于接受客户端的连接请求。接收客户端的信息。处理客户端的计算请求。向客户端发送计算结果以及应答信息等。客户端的应用程序用于申请与服务器的连接。向服务器发送计算请求。处理服务器发回的计算结果和其它信息。

  服务器在创建一个socket后,接着会将该socket与本地地址/端口号进行捆绑,成功之后就在相应的socket上监听,当accpet捕捉到一个连接服务请求时,即完成一个新的连接,稍后可向客户端发送数据。

  客户端代码相对来说要简单一些,首先通过服务器域名获得其IP地址,然后创建一个socket,接着调用connect函数来与服务器建立连接,连接成功之后再接收从服务器发送过来的数据,最后在通信结束后关闭socket?

  mso-ascii-font-family: \'Times New Roman\'; mso-hansi-font-family: \'Times New Roman

  \'">综上所述,网络程序客户端和服务器端进行Socket通信的建立步骤如下

  服务器端:socket →bind →listen→accept

  客户端:socket →bind →connect[page]

  本设计使用的套接字为流式套接字,下面是运行于32位微处理器S3C44B0X嵌入式开发平台的客户端应用程序:

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  int main(int argc,char *argv[])

  {

  int s;

  char buffer[256];

  struct sockaddr_in addr;

  struct hostent *hp;

  struct in_addr in;

  struct sockaddr_in local_addr;

  if (argc < 2) return;

  if(!(hp=gethostbyname (argv[1]))){

  fprintf(stderr,"Can\'t resolve host. ");

  exit (1);

  }

  if ((s = socket(AF_

  INET,SOCK_STREAM,0)) <0){

  perror ("socket");

  exit (1);

  }

  bzero (&addr,sizeof (addr));

  addr.sin_family = AF_INET;

  addr.sin_port=htons((unsigned short)atoi(argv[2]));

  hp = gethostbyname(argv[1]);

  memcpy(&local_addr.sin_addr.s_addr,hp->h addr,4);

  in.s_addr = local_addr.sin_addr.s_addr;

  printf ("Domain Name %s " argv

  printf ("IP address :%s ",inet_ntoa (in));

  printf("%s,%s ",hp->h_name,argv[2]);

  addr.sin_addr.s_addr=inet_addr(hp->h_name);

  if connect(s,(struct sockaddr *)&addr,sizeof (addr))<0){

  perror ("connect");

  exit (1);

  }

  recv (s,buffer,sizeof (buffer),0);

  printf ("%s ",buffer);

  while(1);

  bzero(buffer,sizeof (buffer));

  read (STDIN_FILENO,buffer,sizeof(buffer));

  if (send (s,buffer,sizeof (buffer),0)<0){

  perror ("send");

  exit (1);

  }

  }

  }

  4 结束语

  设计开发了基于S3C44B0X的以太网通信系统,并利用uClinux操作系统强大的网络功能实现了Socket通信。由于uClinux目前只支持flat格式的可执行文件,因此本设计是在先建立好uClinux开发环境的情况下,把用户自行开发的应用程序通过宿主PC机上的交叉编译器转化为flat格式,然后再通过FTP添加到目标硬件开发平台上运行的。文中的客户端应用程序已经在基于ARM7TDMI核的S3C44B0X处理器的嵌入式开发平台上成功运行,并成功地和宿主PC机的服务器端应用程序实现了Socket通信。当然,也可以把目标硬件开发平台当作服务器端,而把宿主PC机当作客户端来进行双向文件传输。

参考文献:

[1]. RS232 datasheet http://www.dzsc.com/datasheet/RS232_585128.html.
[2]. RS485 datasheet http://www.dzsc.com/datasheet/RS485_585289.html.
[3]. S3C44B0X datasheet http://www.dzsc.com/datasheet/S3C44B0X_.html.
[4]. RISC datasheet http://www.dzsc.com/datasheet/RISC_1189725.html.
[5]. ARM7TDMI datasheet http://www.dzsc.com/datasheet/ARM7TDMI_2.html.
[6]. CS8900A datasheet http://www.dzsc.com/datasheet/CS8900A_593567.html.

关键字:S3C44B0X  Socket通信  网络通信 引用地址:基于S3C44B0X的嵌入式Socket通信实现

上一篇:基于ZigBee技术的温室监控系统网关设计方案
下一篇:一种Linux平台上S3C2440的物流配送系统设计和实现

推荐阅读最新更新时间:2024-03-16 13:18

网传韩国前通信部长已加盟华为
近日,据韩媒报道,韩国前通信部长李相哲,现已加入华为公司,担任华为的首席顾问。这也是韩国运营商高层,首次加盟一家中国企业。而在他的帮助下,华为或许会在韩国市场“搞大事”。 据了解,李相哲此前韩国运营商LG U+的CEO,并兼任LG集团的首席顾问。但在今年2月的MWC2017大会上,他出现在华为展台,就曾有人猜测,他是否已经“叛离”。其实在2013年, LG U+就成为首个部署华为网络设备的韩国运营商,此举引发了韩国电信行业的反对。 韩某业内人士称,“令人担心的是,一位深知国家通信网络系统核心作用的前任部长,成为了与中国政府密切相关的公司的顾问。” 运营商LG U+方面,也暂时未对其加盟华为,有所回应。 不管怎么说
[手机便携]
基于S3C44B0x的室内空气质量监测仪设计
  1 引言   目前,困扰人们日常生活的室内空气质量问题主要有两种:   (1)由于房屋装修、玩具、杀虫喷雾剂等带来的有害气体,如甲醛、挥发性有机物(VOCs:包含苯系物)等致癌物质;   (2)人们日常生活中由于粗心或设备故障引起的有害气体泄露,如水煤气、天然气、液化石油气等的泄露给人体带来危害。因此,有必要设计一种集这两方面有害气体监测为一体的便携式室内空气质量监测仪(IAQ Monitoring System),及时、准确、有效地对生活坏境中这类有害气体进行检测并报警,提醒人们做出一定措施。不仅能有效地保护人们的健康,甚至能够让很多家庭灾难得以避免。   该系统采用Samsung 公司的S3C44B0x 微
[测试测量]
基于<font color='red'>S3C44B0x</font>的室内空气质量监测仪设计
基于S3C44B0X和uClinux的Socket通信实现
嵌入式系统是指将应用程序、操作系统与计算机硬件集成在一起的系统。它以应用为中心、以计算机技术为基础,而且软硬件可以裁剪,因而是能满足应用系统对功能、可靠性、成本、体积和功耗的严格要求的专用计算机系统。 本文给出一种适合于中/低端应用的通信平台设计方案,它可支持Ethernet网络之间的数据传输,并且具有RS232、RS485、 USB等接口。 文中围绕嵌入式uClinux环境设计了基于嵌入式通信微处理器S3C44B0X的硬件通信平台,从而实现了嵌入式Socket通信。 1 嵌入式网络通信系统结构   作为一类特殊的计算机系统, 嵌入式系统通常由嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件等几大部分组成。嵌入
[嵌入式]
基于Linux操作系统下的TCP/IP网络通信研究与应用
1 引言 Linux 是一种自由的Unix类多用户,多任务的操作系统,可在运行在Intel 80386及更高档次的PC机、ARMS、MIPS和PowerPC等多种计算机平台,已成为应用广泛、可靠性高、功能强大的计算机操作系统,Linux 具有内核小、效率高、源代码开放等优点,还内含了TCP/IP网络协议,很适合在服务器领域使用,而服务器主要用途之一就是进行网络通信,随着计算机办公自动化处理技术的应用与推广,网络的不断普及,传统的纸张式文件传输方式已经不再适合发展的需要,人们更期待一种便捷、高效、环保、安全的网络传输方式。 本文就是考虑到这一现状,结合基于Linux操作系统下的TCP/IP网络通信原理,给出了一种基于TCP/
[嵌入式]
S3C44B0X与LM057QC1T01的接口方法及其应用
引言 S3C44B0X是面向嵌入式系统的高性价比微处理器,它采用ARM7TDMI核,工作在66MHz。为了节约项目开发周期和成本,S3C44B0X大量集成了ADC、LCD控制器等外围器件。其中,LCD控制器支持在LCD上的单色、4级、16级灰度、256色的显示,具有很强的通用性。夏普LM057QC1T01是像素格式为320×3×240的256色TSTN透光型液晶显示模块。本文讨论了S3C44B0X和夏普LCD接口的连接。在此基础之上着重讨论彩色图形显示和英文、汉字显示实现的具体原理和方法。 LCD控制器 S3C44B0X LCD控制器的作用是将缓存中的数据传送到外部的LCD驱动器,并产生必须的LCD控制信号。LCD 控制器可
[单片机]
一种基于DSP的网络通信接口设计
  DSP芯片是专门为实现各种数字信号处理算法而设计的、具有特殊结构的微处理器,其卓越的性能、不断上升的性价比、日渐完善的开发方式使它的应用越来越广泛。将计算机网络技术引入以DSP为核心的嵌入式系统,使其成为数字化、网络化相结合,集通信、计算机和视听功能于一体的电子产品,必须大大提升DSP系统的应用价值和市场前景。将DSP技术与网络技术相结合,必须解决两个关键问题:一是实现DSP与网卡的硬件接口技术,二是基于DSP的网络通信程序设计。DSP与网卡的硬件接口技术参考文献 有比较详尽的论述,以下主要讨论基于DSP的网络通信程序设计。    1 通信协议的制定   协议是用来管理通信的法规,是网络系统功能实现的基础。由于DSP可以实
[网络通信]
一种基于DSP的<font color='red'>网络通信</font>接口设计
基于S3C44B0X的嵌入式GUI的研究与应用
   1  GUI 的概述   GUI以一种以图形化为基础的用户界面,使用统一的图形操作系统,如可移动的视窗、选项与鼠标,作为用户与操作系统之间的中介。GUI最重要的优势在于使用户摆脱了在命令行提示符下与操作系统进行交互的方式,用户可以仅仅通过鼠标点击来实现熟悉程序的操作,而且由于图表、对话框等的引入,使得操作直观形象。GUI已成为一种用户与计算机交互的标准。包括Microsoft的视窗系统、Unix的Motif、Linux的桌面系统GNOME。   在计算机硬件平台下的GUI模型一般如图1所示:   uC/GUI是由Micrium公司专门针对嵌入式系统开发的一款图形开发系统。它设计用于为任何使用LCD图形显示的应
[嵌入式]
中兴加速5G发展,打造高效率低成本承载网络
 5G建设,承载先行。2015年,ITU正式定义了5G的三类典型应用场景,包括增强型移动宽带(eMBB)、大连接物联网(mMTC)和低时延、高可靠通信(uRLLC),5G业务对网络带宽、时延、可靠性、安全的要求,给承载网络带来了严峻挑战。在日前举行的MWC上海展上,多家厂商发布并展示了5G承载网解决方案,为5G商用未雨绸缪。下面就随网络通信小编一起来了解一下相关内容吧。 作为5G的引领者之一,中兴通讯早在2月份的MWC上就发布了业界首家基于IP+光的5G前传回传一体化解决方案Flexhaul。本次展会期间,中兴通讯举办“承载网络转型”高峰论坛,正式发布了5G Flexhaul新品ZXCTN 609,并现场进行了关键技术FlexE
[网络通信]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved