网站首页 | 论文指导 | 经济论文 | 理工论文 | 管理论文 | 法律论文 | 行政论文 | 英语论文
艺术论文 | 农学论文 | 医学论文 | 文史论文 | 教育教学论文 | 论文定制 | 论文发表
论文库分类>>> 点这里访问轻松论文网主站>>>
您当前的位置:轻松论文网 -> 论文中心 -> 理工论文 -> 电子通信网络论文 -> 文章内容 退出登录 用户管理
 子栏目导航
· 计算机与信息技术论文
· 电子通信网络论文
· 自动化论文
· 土建水利论文
· 交通运输论文
· 化学与化工论文
· 石油与能源动力论文
· 机械制造论文
· 矿业与冶金论文
· 工程论文
· 生命环境论文
· 材料科学与工程
· 综合论文
 最新推荐
· 世界地缘政治体系与印度...
· 维新与革命:政治选择的...
· 世界地缘政治体系与印度...
· 中国国家安全哲学-政治哲...
· 政治学视野中的公共政策...
· 方法引导下的政治理论[上...
· 格拉修斯原则:基督教二...
· 方法引导下的政治理论[下...
· 国体、国情与现代国家-政...
· 试论我国今后政治发展的...
· 东亚的政治权威与现代化...
· 跨国收养法的概念与渊源...
 热门文章
· 开题报告的格式(通用...
· 怎样写开题报告
· [图文] 开题报告范文1(银行...
· 开题报告范文2(网上...
· 毕业论文开题报告-A...
· 开题报告的撰写方法...
· 开题报告范文3(网络...
· 文献综述的写法
· 毕业论文例文评析
· 开题报告撰写的方法...
 相关文章
· 一种射频IC卡就餐机...
 
[论文定制][论文发表][价格总览][支付方式][购买流程]点击这里给我发消息 点击这里给我发消息
基于uCLinux和S3C4510B的网络通信设计
作者:佚名  来源:不详  发布时间:2007-3-2 16:21:27  发布人:admin

减小字体 增大字体

摘要:结合工程实例,基于S3C4510B微处理器,构建以DM9161为以太网物理层接口的低功耗、高速硬件电路;在嵌入式操作系统uCLinux上实现网络通信工程的程序编写,对于网络通信工程在嵌入式设备中的应用有很好的借鉴意义。

    关键词:uCLinux S3C4510B 网络通信 DM9161 嵌入式系统

引言

Linux是一种很受欢迎的操作系统,与UNIX系统兼容,开放源代码。它原本被设计为桌面系统,现在广泛应用于嵌入式设备。uCLinux正是在这种氛围下产生的。在uCLinux这个英文单词中,u表示Micro,是“小”的意思;C表示Control,是“控制”的意思,所以uCLinux就是Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”。它也是针对无MMU(内存管理单元模块)的微处理器设计的操作系统。S3C4510B就是属于该类的微处理器。

Samsung公司的S3C4510B是基于以太网应用系统高性价比16/32位RISC微控制器,内含一个由ARM公司设计16/32位ARM7TDMI RISC处理器核。ARM7TDMI为低功耗、高性能的16/32核,最适合用于对价格及功耗敏感的应用场合。除了ARM7TDMI核以外,S3C4510B还有许多重要的片内外围功能模块,其中就有1个以太网控制器,用于S3C4510B系统与其它设备的网络通信工程。在S3C4510B的网络控制平台上移植了uCLinux操作系统,并在这个嵌入式平台上实现网络控制的各项功能。本文的叙述的网络通信工程就是其中最主要的功能。

1 基于S3C4510B以太网电路的设计思路与实现

作为一款优秀的网络控制器,基于S3C4510B的系统若没有以太网接口,其应用价值就会大打折扣,因此,就整个系统而言,以太网接口电路应是必不可少的,但同时也是相对较复杂的。从硬件的角度看,以太网接口电路主要由MAC控制器和物理层接口(Physical Layer,PHY)两大部分构成。

S3C4510B内嵌一个以太网控制器,支持媒体独立接口(Media Independent Interface,MII)和带缓冲DMA接口(Buffered DMA Interface,BDI),可在半双工或全双工模式下提供情报0M/100Mbps的以太网接入。在半双工模式下,控制器支持CSMA/CD协议,在全双工模式下支持IEEE802.3MAC控制层协议。因此,S3C4510B内部实际上已包含了以太网MAC控制,但并未提供物理层接口,故需外接一片物理层芯片,以提供以太网的接入通道。

常用的单口10M/100Mbps高速以太网物理层接口器件主要有RTL8201、DM9161等,均提供MII接口和传统7线制网络接口,可方便地与S3C4510B接口。以太网物理层接口器件主要功能一般包括:物理编码子层、物理媒体附件、双绞线物理媒体子层、10BASE-TX编码/解码器和双绞线媒体访问单元等。

在该设计中,使用DP9161作为以太网的物理层接口。DM9161是一款低功耗、高性能的CMOS芯片,支持10M和100M的以太网传输,它起编码、译码输入和输出数据的作用。它与S3C4510B的引脚连线如图图1所示。

由于S3C4510B片内已民用有带MII接口的MAC控制器,而DM9161也提供了MII接口,各种信号的定义也很明确,因此DM9161与S3C4510B的连接时序衔接,可以达到很好的网络信号传递的目的。图2为DM9161在本系统中的实际应用电路(图中右下方的1、2、3以及14、15、16分别与网络隔离变压器相应引脚相连)。

S3C4510B的MAC控制器可通过MDC/MDIO管理接口控制多达斡尔1个DM9161,每个DM9161应有不同的PHY地址(可从00001B~11111B)。当系统复位时,DM9161锁存引脚9、10、12、13、15的初始状态作为与S3C4510B管理接口通信工程的PHY地址;但该地址不能设为00000B,否则DM9161进入掉电模式。

信号的发送和接收端应通过网络隔离变压器和RJ45接口接入传输媒体,实际应用电路如图书室所示。

图2

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

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

其中BSD socket层由专门用来处理BSD socket的通用套接字管理软件来处理,它由INET socket层来支持。INET socket为基于IP的协议TCP和UDP管理传输端点。UDP(用户数据报协议)是一个无连接协议,而TCP(传输控制协议)是一个可靠的端对端协议。传输UDP包的时候,Linux不知道也不关心它们是否安全到达了目的地。TCP则不同。在TCP连接的两端都需要加上一个编号,以保证传输的数据被正确接收。在IP层,实现了Internet协议代码,这些代码要给传输的数据加上一个IP头,并且知道如何把传入的IP包送给TCP或者UDP协议。在IP层以下,就是网络设备来支持所有的Linux网络工作,如PLIP、SLIP和以太网。

3 uClinux环境下的socket编程

网络的socket数据b传输是一种特殊的I/O,socket也是一种文件描述符,也具有一个类似文件的函数调用socket()。该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过该socket函数实现的。常用的socket类型有两种:流式socket和数据报式socket。两者的区别在于:前者对应于TCP服务,后者对应于UDP服务。

3.1 uCLinux中socket编程中用到的函数

(1) socket函数

为了执行I/O,一个进程必须做的第一件事情就是调用socket函数,指定期望的通信协议类型(使用IPv4的TCP、使用IPv6的UDP、Unix域字节流协议等),其函数结构如下:int socket(int family,int type,int protocol);

/*返回:非负描述字—成功,-1—出错*/

代码中的family指明协议族。套接口的类型type是某个常值。一般来说,函数socket的参数protocol主设置为0,socket函数成功时返回一个小的非负整数值。为了得到这个数值,我们指定协议族(IPv4IP、v6或Unix)和套接口类型(字节流、数据报或原始套接口)。

(2)connect函数

TCP客户用connect函数来建立一个与TCP服务器的连接。

Int connect(int sockfd,const struct sockaddr* servaddr,socklen_t addrlen);/*返回:0—成功,-1—出错*/

Sockfd由socket函数返回数值,第二、第三个参数分别是一个批晌套接口地址结构的指针和该结构的大小。套接口叶址结构必须含有服务器的IP地址和端口号。

(3)bind函数

函数bind给套接口分配一个本地协议地址。对于网际协议,协议地址是非颠倒2位IPv4地址16位的TCP或UDP端口号的组合。

Int bind(int sockfd,const struct sockaddr* myaddr,socklen_t addrlen);/*返回:0—成功,-1—出错*/

第二个参数量个指向特定于协议地址结构的指针,第三个参数是该地址结构的长度。对于TCP,调用函数bind可以指定一个端口,指定一个IP地址。可以两者都指定,也可以一个也不指定。

(4)listen函数

函数listen仅被除数TCP服务器调用。它做两件事件事情,当函数socket创建一个套接口时,被假设为一个主动套接口。也就是说,它是一个将调用connect发起连接的客户套接口,函数listen将未连接的套接口转换成被动套接口,指示内核应接受指向此套接口的连接请求。根据TCP状态转换调用函数listen导致套接口从CLOSED状态转换到LISEN状态。函数的第二个参数规定了内核为此套接口排队的最大连接个数。

Int listen(int sockfd,int backlog);

/*返回:0—成功,-1—出错*/

一般来说,此函数应在调用函数socket和bind之后,调用函数accept之前调用。

(5)accept函数

accept函数由TCP服务器调用,从已完成连接队列头返回下一个已完成连接。若已完成连接队列为空,则进程睡眠。(假定套接口噗缺省的阻塞方式)

int accept(int sockfd,struct sockaddr*cliaddr,socklen_t*addrlen);/*返回非负数值—OK,-1—出错*/

参数cliaddr和addrlen用来返回连接对方进程(客户)的协议地址。Addrlen是结果参数,调用前,将由*addrlen所指示的整数值置为由cliaddr所旨的套接口地址结构的长度,返回时,此整数值即为由内核存在此套接口地址结构内的准确字节数。

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

在uCLinux中进行socket编程,一般按照图书资料所示流程编写网络应用程序。

除了熟悉前文提出的函数外,还应知道两个重要的数据结构。因为在计算机中,数据存储有两种字节优先顺序:高位字节优先和低位字节优先。在互联网上,数据是以高位字节优先顺序传输的,所以对于在内部以低位字节优先方式存储的数据,需要进行转换才能在互联网上传输。

*struct sockaddr:用来保存socket信息

struct sockaddr{unsigned short sa_family;/*地址族,AF_xxx*/

char sa_data[14]; /*14字节的协议地址*/};

*struct sockaddr_in;和来进行数据类型的转换

struct sockaddr_in{

short int sin_family; /*地址族*/

unsigned short int sin_port; /*端口号*/

sruct in_addr sin_addr; /*IP地址*/

unsigned cha sin_zero[8]; /*填充0,以保持与struct sockaddr同样大小*/};

至此,可经编出uCLinux的网络通信工程程序。在此给出部分uCLinux下实现网络通信源代码及其Makefile文件的编写实例。

main()函数中部分代码如下:

int sockfd;

unsigned int uiip;

char szsendbuf[1024];

char head[8];

int*phead=head+4,nsize=1024,allsize=0;

struct sockaddr_in servaddr;

sockfd=socket(AF_INET,SOCK_STREAM,0);/*创建socket*/

bzero(&servaddr,sizeof(struct sockaddr_in));

servaddr.sin_family=AF_INET;

servaddr.sin_port=8888;//htons(8888); /*指定通信端口*/将命令行输入的字符串IP转换为connect函数可识别的整数uiip。本来在Linux上开发时可以使用C库函数inet_pton(),但在uCLinux的库中不支持该函数,因此只好自己实现该函数的功能。

aiptoi()如下所示:

aiptoi(argv[1],&uiip);

servaddr.sin_addr.s_addr=uiip; /*指定连接的对端IP*/

connect(sockfd,(struct sockaddr)&servaddr,sizeof(struct sockaddr));

/*连接对端接收代码*/

fp=fopen("kongzhi.htm","r"); /*打开控制页面*/

while(nsize==1024)

{bzero(szsendbuf,1024); /*每次从文件中读取巧024个字节发送出去,若读出少于1024字节结束*/

nsize=phead=fread(szsendbuf,1,1024,fp);/*从文件中读取并填入发送BUFFER中*/

write(sockfd,head,8);/*发送协议头*/

nsize=write(sockfd,szsendbuf,nsize);/*发送*/}

fclose(fp);

uCLinux中的Makefile需做的修改如下:

CC=gcc

COFF2FLAT=/uclinux/coff2flt-0.3/coff2flt

CFLAGS=-I/uclinux/uC-libc-pic/include

LDFLAGS=/uclinux/uC-libc-pic/libc.a

ethernet:Ethernet.o

$(CC)-o $@.coff ethernet.c $(CFLAGS)$(LDFLAGS)

$(COFF2FLAT)-o Ethernet ethernet.coff

cp Ethernet /Ethernet

clean:

rm -f Ethernet Ethernet.o

需要注意的是:①uCLinux中不带有pthread库,在编写网络程序要切记;②在uCLinux环境下,处理器(硬件)和内核黄素(软件)均不提供内存管理机制,所以程序的地址空间等同于内存的物理地址空间。在程序中可直接对I/O地址进行操作,而不需要申请和释放I/O空间,但需要用户自己来检查所操作的I/O地址的占用情况。

结语

由于网络通信工程广泛应用在嵌入式设备中,以往的文章只是泛泛地叙述网络通信设计的某一个方面。本文结合实际工程项目,从硬件电路的搭建、应用软件的设计要点。这对于在嵌入式设备中,特别是基于uCLinux的系统中应用网络通信有重要的参考意义。

论文指导 开题报告   论文格式   论文撰写   论文答辩   论文答谢   
经济论文 税收论文   证券投资论文   房地产论文   金融论文   投资论文   财政论文   西经论文   国际贸易论文   计量经济论文   国民经济论文   保险信托论文   地方经济   国际经济   新经济学   经济学理论   经济学其他   
理工论文 计算机与信息技术论文   电子通信网络论文   自动化论文   土建水利论文   交通运输论文   化学与化工论文   石油与能源动力论文   机械制造论文   矿业与冶金论文   工程论文   生命环境论文   材料科学与工程   综合论文   
管理论文 电子商务论文   会计论文   财务论文   人力资源论文   市场营销论文   企业管理论文   信息管理论文   旅游管理论文   工商管理论文   公共管理论文   物流管理论文   
法律论文 民法论文   刑法论文   诉讼法论文   行政法论文   国家法   宪法论文   土地资源环境法论文   国际法论文   劳动保障论文   商法论文   经济法论文   法史学论文   法理学论文   司法制度论文   
行政论文 中国政治论文   国际政治论文   管理科学论文   思想政治教育论文   国家行政管理论文   政治理论论文   哲学理论论文   三个代表论文   社工论文   
英语论文 学术英语论文   商务英语论文   科技英语论文   英语教学论文   
艺术论文 艺术理论论文   电视艺术论文   电影艺术论文   音乐论文   舞蹈论文   戏剧论文   美术论文   
农学论文 农艺学(园林,林学)论文   渔业论文   水产论文   植物保护论文   农业基础科学论文   综合论文   
医学论文 医学论文写作方法   基础医学论文   医药卫生论文   临床医学论文   药学论文   特种医学论文   护理学论文   
文史论文 中国史论文   世界史论文   考古论文   文字学论文   语法论文   中国文学论文   世界文学论文   文学理论论文   文艺美学论文   文学评论论文   经典名著赏析论文   新闻传媒学论文   社会学论文   
教育教学论文 语文论文   数学论文   英语论文   物理论文   美术论文   音乐论文   地理论文   化学论文   历史论文   体育论文   思想政治论文   生物自然论文   信息技术论文   德育管理论文   素质教育论文   教学管理论文   综合论文   
[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:Motorola微处理器的bootloader分析与应用
下一篇文章:基于IP设计的8位SoC微微器ET44M210
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
服务电话:020-61131011;020-61131022 转82 投诉电话:020-61131011;020-61131022 转88 传真:020-61131022
电子邮件:paperease@vip.163.com paper@126.com 服务QQ:130008818 130009919
© 2002-2004 轻松论文网 赣ICP备05004673号 网络实名:轻松论文