基于ARM—LINUX平台的物联网服务器设计

发布者:BlissfulAura最新更新时间:2021-04-01 来源: eefocus关键字:ARM  LINUX平台  物联网服务器 手机看文章 扫描二维码
随时随地手机看文章

0 引言


物联网是互联网应用的扩展,是一种新兴的联网技术,其核心是物与物之间的信息通信交流,也是物与人之间的交互控制。物联网技术,主要是利用各种传感器设备,例如:无线技术、射频识别(RFID)技术,各类传感器等技术设备将物理世界中的各种信息,如温度、光强、位置等信息通过网络传输,达到物与物之间、物与人之间的信息交互目的。


要使人们能方便地访问物联网信息,监测和控制各类传感节点和电气设备,一个友好的用户界面是前提。基于B/S架构的解决方案以其客户端通用性成为构建系统的首选。本文将设计开发一个通用的基于ARM处理器平台和Linux嵌入式操作系统的物联网服务器,在硬件平台上,将使用基于XSCALEPXA270处理器的UPTECH嵌入式开发实验箱、51单片机及各种传感控制设备。在此嵌入式设备上使用ARM LinuX系统,在嵌入式Linux系统下搭建服务器,采用B/S架构,以BOA为WEB服务器,通过CGI通信方式实现远程的信息传递和智能交互。


1 系统体系结构


为了突出现代物联网服务器系统的低功耗、低成本、服务水平高、处理效率高的特点,服务器将运行在基于XSCALE PXA270处理器的UP—Tech嵌入式设备上,利用51单片机连接各种传感控制设备。


在UP—Tech嵌入式设备上移植了2.6.28内核的ARM Linux操作系统。在Linux系统上面,编写一个守护程序来与51单片机通信,从而在Linux系统上与各种传感控制设备进行通信控制。在Linux上面移植Boa WEB服务器,用来搭建用户可交互式的访问界面。使用户通过浏览器访问页面就可以实时进行查看或控制各种传感控制设备。


系统架构如图1所示。

基于ARM—LINUX平台的物联网服务器设计

2 物联网数据采集与处理子系统设计


2.1 基于51单片机的数据采集系统


在物联网终端设备方面,采用51单片机,通过其丰富的外扩接口和温度传感器、湿度传感器,以及LED灯等模块进行连接。在软件上采用“C语言+驱动库”的开发模式,通过这样的开发模式,不仅可以提高开发效率,还能很好地完成多个传感器的信息收集和处理。在连接ARM—Linux嵌入式平台方面,采用UART虚拟串口与嵌入式平台进行连接通信。


本系统的基本实现功能如下:


(1)连接各个传感模块,通过输入输出接口获取传感器传递过来的信息并且记录;


(2)设置定时器,在规定的单元时间内,采集各个传感设备的信息和控制设备的状态。将他们的信息、状态合成数据包,通过虚拟串口发送;


(3)利通虚拟串口通信,时刻检测来自ARM—Linux平台发送过来的控制信号;


(4)分析串口传递过来的数据包,检测数据来源确定是否合法,然后根据特定的控制代码对单片机和各个控制模块进行控制。


2.2 基于ARM—Linux平台的数据处理系统


ARM-Linux平台是指利用开源的Linux内核经过特定需求的裁剪后,经过交叉编译后得到一个能够运行在ARM处理器的Linux内核,同时还定制一个Linux根文件系统,整个系统容量控制在几百KB到几十MB。系统主要由三部分组成:BootLoader、ARM—Linux内核、Linux根文件系统。


在嵌入式设备上,主要的数据处理系统由守护程序实现。守护程序一方面负责接收处理单片机发送过来的信息;一方面接受WEB服务器传来的查询控制请求。


在物联网服务器端,来自客户端访问的请求,由服务器接收并检验后,将请求查询、控制指令传递给守护程序,守护程序接收到来自服务器的请求,通过验证后再向单片机发送请求查询、控制指令。


守护程序的通信过程分为两部分,第一部分为守护程序向服务端的CGI程序告知更新数据,第二部分为服务端CGI程序向守护程序发送指令控制,由守护程序监听到后执行控制程序。


3 人机交互子系统-WEB服务器设计


由于嵌入式设备的硬件资源一般都比较有限,不能同时处理多个用户的请求。因此,在WEB服务器的选取方面,选择一些专为嵌入式设备而开发的WEB服务器。这些服务器具有占用内存空间低、处理效率高、安全性高等优点,相当适合嵌入式应用领域。另一方面,在实际的应用当中,由于互联网的高速发展,3G网络的到来,每个人都希望可以通过手上的手持式设备来访问控制自己的物联网设备,使用一个轻量级的WEB服务器当作访问控制服务器,可以相当出色地完成任务。


3.1 服务器工作原理


嵌入式WEB服务器的体系结构采用B/S架构,也即由服务端和客户端构成。在此架构上,将会通过以下几个步骤来与WEB服务器互相通信。


(1)在客户端的浏览器(Browser)输入WEB服务器的IP地址;


(2)客户端首先通过TCP发起建立连接请求,然后服务器通过认证后,确认请求合法后立即建立连接。在这个过程中,采用的是TCP/IP协议的“三次握手”方式建立连接的;


(3)通过TCP/IP建立连接后,浏览器再用HTTP协议发出HTTP请求;


(4)当服务器端接收到HTTP请求后,对其进行解析等操作,然后根据不同的处理结果服务器再执行相应的返回操作。


(5)客户端收到服务器的返回结果后,解析HTML数据包,然后将之显示在浏览器上。


3.2 Boa WEB服务器的移植


Boa是一个处理单任务的WEB服务器。也就是说只有在完成一个请求后才能响应另外一个连接请求,虽然无法实现并发响应,但是已经足够应付嵌入式的应用处理了。另外,Boa也是一个相当轻量级的WEB服务器,交叉编译所得到的可执行文件只有60kB左右。出于设计的精简和应用需求,Boa仅支持CGI。


在WWW.boa.org上下载boa的源代码。通过以下步骤完成其交叉编译:


#tar—bxzf boa-0.94.1 3.tar. gz


#cd./boa-0.94.13/src


#./configure


#vi./Makefile


修改CC=gcc为CC=arm-unknownlinux-gcc,CPP=gcc -E为CPP=arm-unknownlinux-cpp -E,保存退出。执行如下命令:


#make


#arm-linux-strip./boa


得到能在arm平台下的可执行文件boa,大小只有60KB


将可执行文件Boa下载到嵌入式设备后,还需对其进行一些配置。首先需要在/etc/boa目录下建立一个boa配置文件boa.conf。表1为Boa配置文件部分配置说明:

基于ARM—LINUX平台的物联网服务器设计

3.3 通用网关接口CGI


CGI是通用网关接口的简称。该接口定义了WEB服务器和其他可执行程序之间的通信接口标准。一般这些可执行程序我们也简称为CGI程序。在客户端浏览器上面,可以请求执行CGI程序,并会附带传送的参数。当服务器收到此请求后,执行对应的CGI程序,与此同时,会把来自客户端的传输传递给CGI程序。在服务器和CGI程序之间,他们足利用标准输入输出来实现参数传递和信息返回的。


在本物联网服务器的设计当中,CGI程序不仅仅与WEB服务器通信,它还需要和守护程序进行通信。由于守护程序是负责连接外围设备,并与之通信的,所以可以通过CGI程序来对外围设备进行通信。通过这样的通信过程实现了客户端与物联网设备终端的交互。其通信过程如下:


(1)客户端利用TCP/IP协议和WEB服务器建立连接;


(2)客户端利用HTTP协议发出URL指向一个CGI程序的请求;


(3)服务器收到请求后,执行对应的CGI程序;


(4)CGI应用程序执行,可以通过读取标准输入或环境变量(QUERY STRING)获取来自客户端的参数;


(5)应用程序利用进行标准输出方式来输出返回结果给WEB服务器。


(6)WEB服务器将结果传送给客户端,完成整个请求返回过程。


3.4 网络应用程序的访问与控制


网站的访问和控制使用JavaScript语言,调用jQuery类库和利用AJAX技术,实现动态显示页面的效果。而页面的参数传递和CGI反馈都是使用JSON数据格式。


JSON即JavaScript Object Notation,它是一种轻量级的数据交换格式。本设计使用JSON数据格式中的”名称/值”对的集合为基本数据结构,它作为页面与CGI程序之间的参数传递和运算结果返回的数据格式。基本格式如下:


{device:"value",model:"value",type:"value",data:“Value”}


利用jQuery类库,每隔1 s中通过请求./cgi-bin/web_cgi。得到请求结果作为当前状态。


4 总结


本文实现了一个基于ARM—Linux平台的通用物联网服务器的设计,本设计可以为用户提供通过WEB页面对物联网中数据采集的实时监测和控制功能,具有较好的实用意义。下一步将继续完善系统的功能,如:增加对更多传感器的支持,系统如何更方便地应用于不同的领域等,系统的安全性也有待完善。


关键字:ARM  LINUX平台  物联网服务器 引用地址:基于ARM—LINUX平台的物联网服务器设计

上一篇:低成本ARM 32位MCU,开发人员面临的两种选择
下一篇:ARM-Linux平台下GPS信号的采集与处理研究

推荐阅读最新更新时间:2024-11-09 11:21

简单外中断实验(最近又要搞arm相关的东西,复习一下中断)
程序烧写在norflash上面 Makefile mem_controler.bin : start.s function.c arm-linux-gcc -g -c -o start.o start.s arm-linux-gcc -g -c -o function.o function.c arm-linux-ld -Ttext 0x30000000 -g start.o function.o -o interrupt.elf arm-linux-objcopy -O binary -S interrupt.elf interrupt.bin arm-linux-objdump -D -m
[单片机]
Ubuntu下Eclipse搭建ARM开发环境
第一步:安装JRE 和 Eclipse 详细步骤请参考:http://blog.csdn.net/ex_net/article/details/7251664 第二步:安装 arm -linux-gcc 和 arm-linux-g++ (1)复制 arm-linux- gcc -4.3.2.tgz 到 /home/tools 目录下,然后解压缩到 根目录下 / # tar -xvzf arm-linux-gcc-4.3.2.tgz -C / (2)修改环境变量 # gedit /etc/environment 向该配置文件加
[单片机]
Ubuntu下Eclipse搭建<font color='red'>ARM</font>开发环境
ARM平台linux内核Notes 1
linux内存管理   嵌入式处理器的分页管理为二级映射,内存空间与I/O空间统一编址,而x86处理器采用三级映射,内存空间与I/O空间独立编址。   在32位嵌入式系统中,存储空间的地址范围从0x0000_0000到0xFFFF_FFFF,内存和I/O共享从这4GB地址空间范围。   其主要包含以下几种存储空间:   1)设备空间(MT_DEVICE):二级分页   2)内部高速SRAM空间(MT_CACHECLEAN):一级分段   3)内部mini cache空间(MT_MINICLEAN):一级分段   4)低端中断向量(MT_LOW_VECTORS):两级分页   5)高端中断向量(MT_HIGH_VECTORS):
[单片机]
<font color='red'>ARM</font><font color='red'>平台</font><font color='red'>linux</font>内核Notes 1
Part2_lesson1---arm家族大检阅
芯片(比如2440、6410、210等等)包含ARM核。 指令结构和ARM核有关系: ARM9对应指令架构版本ARMV4 ARM11对应指令架构版本ARMV6 cortex A8对应指令架构版本ARMV7 6410芯片的概况: 2440芯片的概况: 210芯片的概况:
[单片机]
Part2_lesson1---<font color='red'>arm</font>家族大检阅
安谋科技与全志科技签署Arm Total Access授权许可协议,技术合作再迎“芯”篇章
近日,安谋科技(中国)有限公司(以下简称“安谋科技”)与国内卓越的智能应用处理器SoC设计厂商珠海全志科技股份有限公司(以下简称“全志科技”)共同宣布,双方签署了一项为期多年的Arm® Total Access技术授权订阅许可协议,进一步强化在高性能CPU、GPU、多核整合技术等领域的技术交流与合作,“智”胜生成式创新未来。 安谋科技销售及商务执行副总裁徐亚涛 表示:“很高兴全志科技选择Arm Total Access方案,这无疑彰显了该方案在本土市场中的广泛认可和商业潜力。一直以来,安谋科技都非常重视与合作伙伴的价值共创、协同创新,双方过往就Arm通用IP和安谋科技自研业务产品等方面合作成果丰硕。未来,我们期待与全志科
[嵌入式]
安谋科技与全志科技签署<font color='red'>Arm</font> Total Access授权许可协议,技术合作再迎“芯”篇章
ARM的37个寄存器和异常处理机制详解
1.ARM的37个寄存器 ARM的37个寄存器中,30个寄存器是“通用”,1个固定用作PC(程序控制寄存器),一个固定用作CPSR(程序状态寄存器),5个固定用作5种异常模式下的SPSR(程序状态保存寄存器),特别注意user模式和sys模式共用寄存器集。上面的37个寄存器不是同时可见的,只有在特定模式下才能访问某些寄存器。例如sp和lr寄存器各有6个,但是只有在相应模式下才能访问相应的寄存器,在user模式下访问的是user的sp和lr,FIQ模式下访问的是FIQ的sp和lr,这叫做影子寄存器。模式切换时寄存器会自动切换,其中用r13作sp,用r14作lr并不是一定的,用其他的寄存器作sp和lr也是可以的,只是大家约定俗成的
[单片机]
<font color='red'>ARM</font>的37个寄存器和异常处理机制详解
x264编码的ARM移植
写一下最近移植x264的过程。 最新的版本(我最开始用的是20090715这个)已经有cross-compile的支持了,移植应该还是很顺利的。但是这个版本的win下编译不通过,问题在网上找了一下,没有解决。后来退而求其次,选择了一个20060805的版本,这个版本在网上找到了win下vc6可以编译通过的版本,同时也可以在x264的官方ftp上找到linux下可以编译的版本。最后决定使用这个版本。这样可以方便一些在win下的交互调试。 注意,这里要提醒一下,几年之内,x264的变化还是很大的。总之,在需要两个平台交叉调试的时候,看来一个相同的版本是非常有必要的。否则,可能会发生这种情况:程序在win下好用,在linux下就不好
[单片机]
Arm披露,Neoverse出口中国,面临许可风险
Arm在在公开股票发行前提交的文件中表示,最新的 ARM Neoverse 处理器内核功能过于强大,客户无法出口到中国。 告称,美国和英国有关向中华人民共和国出口的出口政策要求 ARM 获得 Neoverse 等某些处理器的出口许可证才能将其出口给中国,但这种许可证可能很难获得。 该公司表示:“Neoverse 系列处理器中性能最高的处理器达到或超过了美国和英国出口管制制度下的性能阈值,从而在出口和交付给中国客户之前触发了出口许可证要求。” “鉴于对运往中国的 HPC 技术的国家安全担忧更高,而且政府的响应时间表尚未确定,获得此类出口许可证可能具有挑战性且不可预测。”(原文:“The highest performance
[半导体设计/制造]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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