新闻中心

EEPW首页>嵌入式系统>设计应用> 基于ARM开发板+uCLinux的网络控制系统设计与实现

基于ARM开发板+uCLinux的网络控制系统设计与实现

作者: 时间:2012-11-16 来源:网络 收藏

  首先。选定开发板上没有使用过的GPIO端口,设定其输入/输入状态,然后根据客户端返回的信息对端口进行操作,输出0/1的电平,以使其外部连接的继电器动作。从而控制设备的运转。程序主要通过函数ioctl来实现。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数,通过它可对设备的一些特性进行控制.其函数原形为:

  int ioctl(int fd,ind cmd,…);

  其中,fd是用程序打开设备时,使用open函数返回的文件标示符;cmd是用户程序对设备的控制命令;至于后面的省略号,则是一些补充参数(一般最多一个,有或没有是和cmd的意义相关的)。在这里,可通过如下一组函数来实现:

  ioctl(fd1,GPIO_SET_PIN_IN,devicel);

  //设置管角为输出状态;

  ioctl( fd2, GPIO_SET_PIN_OUT, devicel_state);

  //设置管角为输入状态;

  ioctl(fd2,GPIO_READ_PIN,devicel_state);

  //读取设备状态管角;

  ioctl(fd1,GPIO_CLR_PIN,device);

  //清除设备管角控制信号;

  2.3 网络通信程序

  网络通信程序可使用TCP/IP协议下标准的socket套接字编写。套接字(socket)是网络通信的基本操作单元。它提供了不同主机间进程双向通信的端点。这些进程在通信前应各自建立一个socket,并通过对socket的读/写操作实现网络通信功能。常用的套接字有两种:流式套接字(Stream Socket)和数据报套接字(Datagram Socket)。其中,流式套接字是可靠的面向连接的通信数据流,是无错误的传输;而数据报套接字则使用UDP来传送数据包,数据包的顺序是没有保障的。本系统采用流式套接字进行程序设计。

  流式套接字的服务进程和客户进程建立连接及通信的程序流程如图3所示。现具体说明如下:

  (1)服务进程首先调用socket()创建一个流式套接字,并调用bind()将服务器地址捆扎在该套接字上,接着调用listen()监听连接请求,随后调用accept()做好与客户进程建立连接的准备。无连接请求时,服务进程被阻塞;

  (2)客户进程先调用socket()创建流式套接字,然后调用connect()向服务进程发出连接请求;

  (3)当连接请求到来后,服务进程被唤醒,并生成一个新的流式套接字。同时用新套接字同客户进程的套接字建立连接,而服务进程最早生成的套接字则继续用于监听网络上的服务请求;

  (4)服务进程和客户进程通过调用send()和recv()来交换数据,服务器可向客户端传送所收集的数据。客户端则向服务器反馈控制信息和参数调整信息;

  (5)服务进程或客户进程可通过调用close()来撤消套接字并中断连接。

  服务器端的程序通过交叉编译环境编译后。可通过NFS(网络文件系统)下载到开发板中,然后手动加入到rc引导文件中。即可实现开机自动运行。

  3 结束语

  基于和CLinux嵌入式系统代表了目前嵌入式系统的发展方向。嵌入式系统与网络技术和控制技术相结合.是嵌入式系统发展的必然趋势。本文讨论了基于+平台的设计与实现方法。并对该平台下应用TCP/IP协议进行网络通信进行了探讨。该方法对于自动化楼宇、工业控制、智能家居等方面都有一定的借鉴意义。参考文献:

[1].7TDMIdatasheethttp://www.dzsc.com/datasheet/ARM7TDMI_139812.html.
[2].LPC2210datasheethttp://www.dzsc.com/datasheet/LPC2210_454566.html.
[3].ROMdatasheethttp://www.dzsc.com/datasheet/ROM_1188413.html.


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭