基于ARM的嵌入式网络接口控制器设计
操作,程序代码如下:
int fd;
fd=open(“/dev/ttyS0”,O_RDWR);
if(fd==-1) {perror(“提示错误!”);}
然后设置串口的波特率、校验位和停止位。要用网卡接收发送数据,就要首先创建套接字,程序代码如下:
int sock_fd;
sock_fd=socket(AF_INET,SOCK_STREAM,O)
if(sock_fd==-1)
{perror(“socket”);
exit(1);}
然后设置属性,然后等待客户端的连接,一旦建立连接,就可以实现数据的接收和传送。
数据处理在整个程序中是十分关键的一环,该环节中实现的是在网络数据和串口数据之间的相互交换,根据实际需要也可以将网络数据转换成并行数据或者其他类型接口的数据;这里网络和串口数据交互处理分成两部分,一部份是网络数据转变成串口数据,另一部份是串口数据发送到网络上,其流程图如图4、5所示。为了充分利用系统资源,在数据处理程序中调用select()函数。Select函数原型为:int select(int numfds,fd_set *readfds,fd_set *writeset,fd_set *exceptset,const struct timeval *timeout);
返回:准备好的文件描述符个数(可以是0),-1表示出错。
6 结束语
本文作者创新点:本文采用性价比高的32位微处理器s3c2410作为主控芯片,移植了源代码开放的Linux,它易于实现了TCP/IP处理模块,这样大大缩短了产品开发周期,并有利于提高了串口数据和以太网数据的转换速率,提高数据传输的实时性,使传统串口设备方便接入以太网,为以太网在控制层和设备层的应用奠定了基础。
评论