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

发布者:快乐家庭最新更新时间:2011-05-30 关键字:ARM  uCLinux  网络控制 手机看文章 扫描二维码
随时随地手机看文章

引言

    随着网络和通信技术的发展,嵌入式系统现已进入高速发展阶段。并在社会各个领域得到了广泛的应用。本文介绍了一种采用ARM+uCLinux作为开发平台。实现基于TCP/IP的远程系统监控.从而取代传统单片机来实现数据采集、预处理和通信功能;并依靠互联网将数据向上位机传送,同时支持远端客户对设备进行远程控制,从而实现远程监控功能的具体方法。

1 系统平台的构建

    本系统由嵌入式平台服务器、前端控制器、前端传感器、客户端和配置PC组成。开发时可通过配置PC来下载系统和应用软件。嵌入式系统平台能够收集现场数据。并传送到远端客户机,之后由远端客户机对数据进行处理,接着发送控制信号给系统服务器,以便通过前端控制器对设备进行远程控制。其系统结构如图1所示
 

1.1 硬件开发平台
 

    该系统的硬件开发平台可选择SmartARM2200。该嵌入式设备的核心是ARM7TDMI的LPC2210.开发板自身具有A/D转换器和多个GPIO(通用I/O)口,可对工业现场的各种设备、仪表进行数据采集和监控。使用时,只要将相应的传感器信号接入控制器的端口即可。其开发板系统的硬件配置如图2所示。

1.2 uCLinux操作系统

    操作系统是嵌入式设备软件的核心部分。本系统采用uCLinux系统平台来完成对硬件系统的管理和维护。uCLinux是广泛应用于微控制领域的一种嵌入式Linux操作系统。它通过对标准Linux内核的裁减,可去除虚拟内存管理部分代码,以对内存分配进行优化。从而达到提高系统运行效率的目的。uCLinux则可经过各方面的小型化改造形成一个高度优化、代码紧凑的嵌入式Linux,它保留了Linux的大多数优点,包括稳定、良好的移植性、优秀的网络功能、完备的文件系统支持、丰富的API等。

1.3 uCLinux在ARM平台上的移植

    若将uCLinux移植到SmartARM2200上,需要进行以下四个步骤:

(1)下载源码,建立交叉编译环境

    uCLinux是自由软件(完全开放代码)。用户可以直接从http://www.uclinux.org/pub/uclinux处下载源代码并安装到Red Hat9.0系统下,以便正常在Red Hat9.0建立起交叉编译环境。

(2)配置和编译内核

    进入到安装好的uCLinux目录,依次执行下面的命令:

    make menuconfig;进入配置菜单后,选择Vendor/Product(厂商/产品)下的PHILIPS/lpc2200;用Kernel Version(内核版本)选择Linux-2.4.x,Libc Version(函数库版本)选择uClibc:其余内核和应用程序选项可根据情况选择。

make dep

make clean

make lib_only

make user_only

make romfs

make image

make 

    编译结束后会在uCLinux安装目录下生成romfs.img文件,利用它可以制作RAM Disk,然后在linux-2.4.X目录下生成elf格式的Linux内核文件,并以下列方式将其转换成bin格式

#arm-elf-objcopy-O binary linux linux.bin

从而生成下载用的uCLinux内核镜像文件linux.bin。

(3)制作Ram Disk挂栽根文件系统

    首先创建一个512 kB的虚拟磁盘,并将虚拟磁盘文件格式转化成ext2格式:

dd if/dev/zero of=initrd.img bs=1024 count=512

mkfs.ext2-c init.img

    然后将init.img和romfs.img加载到主机文件系统上,并在RAM中建立需要的目录:/bin,/dev,/etc,/var,进而拷贝ROM中的文件到ram目录中。

    下来在RAM盘dev目录下创建设备节点:

#mknod ram/dev/ttyS0 c 4 64

#mknod ram/dev/console c 5 1

    最后卸载init.img和romfs.img,并应确保init.img修改已保存,至此,RAM DISK便创建完成。

(4)下载内核和文件系统

    正确设置主板启动选择跳线。主板加电后,在超级终端上便可以看到BootLoader引导信息,可选择默认的FTP连接,并使用BootLoader默认的IP进行下载,然后启动gftp,输入主板默认的IP和端口号。这样,linux主机就可以和主机连接,最后选择需要下载的Linux内核文件和RAM盘及相关的配置文件即可。

2 监控系统功能的实现

    监控系统主要由3个部分组成:数据采集部分,设备控制部分,数据传输部分。数据采集部分可对传感器信号进行A/D转换,并对采集到的数据进行简单的处理,同时提供调整运行参数的接口。数据传输部分可将采集的数据传送到远端的主机,并接收远端主机的控制信息。远端主机则对传输过来的远程数据进行处理、存储和显示,并可以修改数据采集部分的参数以控制数据采集,同时依据采集到的数据对设备发出操作指令,或对远端的设备进行控制,从而实现远程监控功能。[page]

2.1 数据采集

    使用A/D转换设备前,首先要创建设备节点,并加载ADC驱动,然后通过open()和close()将其打开和关闭.主要的数据采集程序如下:

……

ioctl(fd,ADC_SET_CLKDIV,(Fpclk+fadc1)/fadc-1);//设置A/D转换速度

ioctl(fd,ADC_SET_BITS,10);//设置A/D转换精度; 

while(1) {

ad_data=0;

read(fd,&ad_data,sizeof(ad_data));//读取A/D转换的值;

……
 

2.2 GPIO设备控制

    同A/D转换设备类似,使用GPIO也需先创建设备节点并加载驱动。对GPIO操作前,应通过open()打开,使用后应通过close()关闭。


    首先。选定开发板上没有使用过的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 结束语

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

关键字:ARM  uCLinux  网络控制 引用地址:基于ARM uCLinux的网络控制系统设计与实现

上一篇:基于ARM的大型LED点阵显示系统的设计
下一篇:基于ARM的汽车防盗报警系统设计

推荐阅读最新更新时间:2024-03-16 12:36

智能手机和平板电脑推动ARM第三财季超预期
北京时间10月23日晚间消息,ARM周二发布了2012财年第三季度财报,受智能手机和平板电脑日益普及的推动,使得ARM净利润超出了预期。 第三财季,ARM调整后的税前利润为6810万英镑(约合1.09亿美元),同比增长22%,高于分析师预期的6740万英镑。营收为1.446亿英镑(约合2.28亿美元),同比增长20%,高于分析师预期的1.4亿英镑。   ARM CFO蒂姆·斯科尔(Tim Score)称:“ARM主要得益于智能手机和平板电脑的强劲增长。”斯科尔还表示,业绩超预期还得益于版税增长25%至1.211亿美元,较预期高出约600万美元,远高于业界平均4%的涨幅。   ARM的节能芯片技术被用于大多数平板电
[手机便携]
台积电30周年庆闪耀登场 苹果高通ARM、NVIDIA、ASML齐聚一堂
台积电30周年庆今(23)日登场,由下午的半导体论坛揭开序幕,董事长张忠谋将亲自主持论坛,全球半导体重量级的八巨头齐聚一堂,包括高通(Qualcomm)执行长Steve Mollenkopf、博通(Broadcom)执行长Hock Tan、ASML执行长Peter Wennink、NVIDIA执行长黄仁勋、安谋执行长Simon Segars、苹果(Apple)营运长Jeff Williams、亚德诺(ADI)执行长Vincent Roche都前来祝贺!   在台积电三十周年庆之前,张忠谋抛出即将在2018年6月退休的震撼弹,他表示,如果等到该活动后才宣布退休,对于长久合作的供应商和客户们,难免礼仪不够周到,因此,提前宣布退休的消息
[半导体设计/制造]
ARM 浮点运算详解
一:早期ARM上的浮点模拟器: 早期的ARM没有协处理器,所以浮点运算是由CPU来模拟的,即所需浮点运算均在浮点运算模拟器(float math emulation)上进行,需要的浮点运算,常要耗费数千个循环才能执行完毕,因此特别缓慢。 直到今天,在ARM Kernel配置时,都有如下选项: Floating point emulation --- NWFPE math emulation FastFPE math emulation (EXPERIMENTAL) 在这里,可以配置ARM 浮点模拟器。 浮点模拟器 模拟浮点是利用了undefined instrction handler,在运算过程中遇到浮点计算是
[单片机]
软银考虑将购并的ARM重新上市
根据英国《金融时报》的报导,日本电信及科技大厂软件银行(Softbank)的高层 Yoshimitsu Goto 在日前瑞士信贷所举行的亚洲投资会议上表示,软银可能对 2 年前收购的英国芯片知识产权大厂ARM进行再融资,并考虑未来会将其重新上市。不过,目前没有立即上市的详细计划。 报导指出,Yoshimitsu Goto 表示,对于 2016 年软银推出的“愿景基金”而言,ARM 的重新上市计划可能是一种潜在性的退出策略。之前,该基金已经从将从软银手中收购了 25% 的 ARM 股份。而且,软银仍在持续优化ARM的财务状况。 而根据《路透社》在日前的报导,软银目前正考虑借由 ARM 寻求 50 亿美元的贷款。主要是因为 A
[半导体设计/制造]
基于ARM、WiFi和蓝牙实现农田生产检测管理系统的设计
近年来,由于新疆农田生产管理技术和管理模式停滞不前,农业生产管理人员水平不一,农情基础数据信息缺乏,资源不能合理利用和共享,使该区农业的进一步发展受到了严重的制约。因此,随着农田膜下滴灌等节水灌溉技术的大面积推广应用,迫切需要提出与现有的节水灌溉设备、方式和灌溉技术等相配套的农田生产检测管理系统,以提升该区农田生产的管理技术和管理水平。目前国内已开发的一些农田生产管理系统产品,由于没有解决农田信息采集的空间变异、农田灌溉、施肥等的智能诊断决策、渠系运行管理知识模型构建等瓶颈问题,使农田生产管理系统产品缺乏实时性、时效性和有效性,与灌溉、施肥等自动控制设备成为两张皮,不能真正达到精准控制灌溉、施肥的目的。本系统应用地理信息、空间数据
[单片机]
基于<font color='red'>ARM</font>、WiFi和蓝牙实现农田生产检测管理系统的设计
ARM_SWP指令用法
存储器访问指令 SWP 寄存器和存储器交换指令。使用SWP 可实现信号量操作。 实列代码如下: SWP R1,R1, ;取出r0地址中的数据,放在r1中,并把r1中的数据放在r0中。 SWP R1,R2,, ; 将R0 指向的存储单元内容读取数据到R1 中 ; 并将R2 的内容写入到该内存单元中 使用SWP 指令可以方便地进行信号量的操作: 12C_SEM EQU 0x40003000 12C_SEM_WAIT MOV R0,#0 LDR R0,=12C_SEM SWP R1,R1, ;取出信号量,并设置其为0 CMP
[单片机]
Ember与ARM瞄准高效ZigBee网络
ARM公司与Ember公司共同宣布:Ember的下一代ZigBee半导体将采用ARM® Cortex™-M3处理器,为迅速成长的ZigBee 市场设定高效能、低功耗的新标杆。 Ember 公司作为ZigBee 产业的领导者,市场占有率超过65%,并且拥有一系列在智能测量、家庭自动化以及商业大厦自动化等领域占据全球领导地位的客户。Ember通过授权获得了Cortex-M3 处理器,为包括智能能源(Smart Energy)、家庭网络、家庭保健和安全系统等应用提供日益复杂的解决方案。 32位ARM Cortex-M3 处理器采用了多种技术来减小存储器和处理器的尺寸,同时实现业界领先的性能和功效,为加速数千种应用向
[单片机]
ARM和FPGA搭建神经网络处理器通信方案
  引言   人工神经网络在很多领域得到了很好的应用,尤其是具有分布存储、并行处理、自学习、自组织以及非线性映射等特点的网络应用更加广泛。嵌入式便携设备也越来越多地得到应用,多数是基于ARM内核及现场可编程门阵列FPGA的嵌入式应用。某人工神经网络的FPGA处理器能够对数据进行运算处理,为了实现集数据通信、操作控制和数据处理于一体的便携式神经网络处理器,需要设计一种基于嵌入式ARM内核及现场可编程门阵列FPGA的主从结构处理系统满足要求。   1人工神经网络处理器   1.1人工神经网络模型   人工神经网络是基于模仿大脑功能而建立的一种信息处理系统。它实际上是由大量的、很简单的处理单元(或称神经元),通过广泛的互相连接而形成
[单片机]
用<font color='red'>ARM</font>和FPGA搭建神经网络处理器通信方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved