<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于uCLinux和ARM7的網(wǎng)絡(luò )通信設計

基于uCLinux和ARM7的網(wǎng)絡(luò )通信設計

作者: 時(shí)間:2013-04-12 來(lái)源:網(wǎng)絡(luò ) 收藏


*struct sockaddr:用來(lái)保存socket信息

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

char sa_data[14]; /*14字節的協(xié)議地址*/};

*struct sockaddr_in;和來(lái)進(jìn)行數據類(lèi)型的轉換

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同樣大小*/};

至此,可經(jīng)編出工程程序。在此給出部分下實(shí)現源代碼及其Makefile文件的編寫(xiě)實(shí)例。

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);/*創(chuàng )建socket*/

bzero(servaddr,sizeof(struct sockaddr_in));

servaddr.sin_family=AF_INET;

servaddr.sin_port=8888;//htons(8888); /*指定通信端口*/將命令行輸入的字符串IP轉換為connect函數可識別的整數uiip。本來(lái)在Linux上開(kāi)發(fā)時(shí)可以使用C庫函數inet_pton(),但在的庫中不支持該函數,因此只好自己實(shí)現該函數的功能。

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"); /*打開(kāi)控制頁(yè)面*/

while(nsize==1024)

{bzero(szsendbuf,1024); /*每次從文件中讀取巧024個(gè)字節發(fā)送出去,若讀出少于1024字節結束*/

nsize=phead=fread(szsendbuf,1,1024,fp);/*從文件中讀取并填入發(fā)送BUFFER中*/

write(sockfd,head,8);/*發(fā)送協(xié)議頭*/
nsize=write(sockfd,szsendbuf,nsize);/*發(fā)送*/}

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

需要注意的是:①u(mài)CLinux中不帶有pthread庫,在編寫(xiě)網(wǎng)絡(luò )程序要切記;②在uCLinux環(huán)境下,處理器(硬件)和內核黃素(軟件)均不提供內存管理機制,所以程序的地址空間等同于內存的物理地址空間。在程序中可直接對I/O地址進(jìn)行操作,而不需要申請和釋放I/O空間,但需要用戶(hù)自己來(lái)檢查所操作的I/O地址的占用情況。

結語(yǔ)

由于工程廣泛應用在嵌入式設備中,以往的文章只是泛泛地敘述網(wǎng)絡(luò )通信設計的某一個(gè)方面。本文結合實(shí)際工程項目,從硬件電路的搭建、應用軟件的設計要點(diǎn)。這對于在嵌入式設備中,特別是基于uCLinux的系統中應用網(wǎng)絡(luò )通信有重要的參考意義。


參考文獻:
[1]. datasheet http://www.dzsc.com/datasheet/_589499.html.
[2]. DM9161 datasheet http://www.dzsc.com/datasheet/DM9161_264516.html.
[3]. RISC datasheet http://www.dzsc.com/datasheet/RISC_1189725.html.
[4]. ARM7TDMI datasheet http://www.dzsc.com/datasheet/ARM7TDMI_139812.html.
[5]. RTL8201 datasheet http://www.dzsc.com/datasheet/RTL8201_586322.html.
[6]. 100M datasheet http://www.dzsc.com/datasheet/100M_2509927.html.
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程


數字通信相關(guān)文章:數字通信原理


通信相關(guān)文章:通信原理



上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>