基于ARM的嵌入式网络接口控制器设计
议,不需要对方的回答确认。
5.1 应用程序的开发环境和网络编程
由于嵌人式系统程序的开发和执行是在PC和ARM 两个不同的平台上进行的,因此需要进行交叉编译和连接。用串口和以太网将宿主机和目标板连接起来,程序开发在RedHat9.0 Linux操作系统下编辑,调试通过后,加入自己开发的程序重新编译armlinux内核,并将编译好的二进制文件固化到开发板的ROM中,使其开机后自动运行。
TCP/IP处理模块采用SOCKET套接字编程实现。SOCKET最早是在UNIX系统上为TCP/IP网络通信而开发的一个接口程序,后来被成功移植到DOS、Windows等操作系统上,成为Internet上网络开发最为通用的API函数。用于网络开发的SOCKET主要有Stream Sockets(流格式)和Datagram Sockets(数据报格式)两种类型,流格式Socket与TCP协议对应,数据报格式Socket与UDP协议对应。
5.2 软件设计
本系统采用工作模式TCP Server服务器,等待客户端请求连接,实现数据传输功能。本程序的流程图如图3所示。首先,打开串口,在Linux下打开串口是通过标准的文件打开函数

图3 功能实现流程图

图4 以太网数据通过串口发送

图5 串口数据通过网卡发送
操作,程序代码如下:
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处理模块,这样大大缩短了产品开发周期,并有利于提高了串口数据和以太网数据的转换速率,提高数据传输的实时性,使传统串口设备方便接入以太网,为以太网在控制层和设备层的应用奠定了基础。
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)
- 在Ubuntu上建立Arm Linux 开发环境(04-23)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- SQLite嵌入式数据库系统的研究与实现(02-20)
- 革新2410D开发板试用手记(04-21)
