基于uCLinux和ARM7的网络通信设计
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的系统中应用网络通信有重要的参考意义。
参考文献:
[1]. S3C4510B datasheet http://www.dzsc.com/datasheet/S3C4510B_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操作系统文章专题:linux操作系统详解(linux不再难懂)
- 在uclinux下实现拨号(04-21)
- 基于uClinux嵌入式系统的汽车黑匣子的设计(07-08)
- uClinux进程调度器的实现分析(04-13)
- 嵌入式操作系统uCLinux详解(03-19)
- UC/OS与uClinux的比较(04-21)
- 基于ARM和uClinux的家庭网关系统(09-14)