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

随着网络和通信技术的发展,嵌入式系统现已进入高速发展阶段。并在社会各个领域得到了广泛的应用。本文介绍了一种采用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转换,并对采集到的数据进行简单的处理,同时提供调整运行参数的接口。数据传输部分可将采集的数据传送到远端的主机,并接收远端主机的控制信息。远端主机则对传输过来的远程数据进行处理、存储和显示,并可以修改数据采集部分的参数以控制数据采集,同时依据采集到的数据对设备发出操作指令,或对远端的设备进行控制,从而实现远程监控功能。

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引导文件中。即可实现开机自动运行。

结束语

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为了满足日益增长的数据处理需求,铁威马NAS推出了全新的性能巅峰2024年旗舰之作F4-424 Pro,并搭载了最新的操作系统--TOS 6。这款高效办公神器的问世,无疑将为企业和专业人士带来前所未有的便捷与效率。

关键字: 存储 Linux 服务器

Arm CPU正在从根本上推动AI变革,并造福地球。Arm架构是未来AI计算的基石。​

关键字: ARM AI

近日,Arm推出了Arm® Ethos™-U85神经网络处理器(NPU)和Arm Corstone™-320物联网参考设计平台,旨在满足海量的数据处理和大规模计算,加速推进边缘AI的发展进程。

关键字: ARM

为了赶超云计算市场上的竞争对手,谷歌正试图通过定制的Arm服务器芯片降低云计算服务成本。

关键字: 谷歌 ARM 定制芯片

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

随着汽车软件数量爆发式的增长,整个行业都需要重新思考汽车产品的开发流程。为此,Arm推出了丰富的硬件IP、新的系统IP,以及全新的汽车计算与计算子系统产品路线图,旨在为各种汽车应用实现性能、功能安全、可扩展等方面的支持。

关键字: ARM 汽车电子

双系统将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对双系统的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 双系统 Windows Linux

知名移动芯片设计公司ARM最近迈出重要一步,它正式推出汽车芯片设计。ARM推出的芯片设计方案名叫Neoverse,随同芯片一起推出的还有面向汽车制造商、汽车供应商的新系统。

关键字: ARM 汽车芯片 芯片

随着通用人工智能的发展,数据中心的计算需求逐步提高。针对多模态数据、大模型的推理和训练需要更高的算力支持,而随着算力提升与之而来的还需更关注在功耗方面的优化。对于头部云计算和服务厂商而言,针对专门用例提高每瓦性能变得至关...

关键字: ARM 服务器 AI Neoverse CSS

一直以来,riscv架构都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来riscv架构的相关介绍,详细内容请看下文。

关键字: riscv ARM riscv架构
关闭
关闭