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

发布者:码字徜徉最新更新时间:2016-04-07 来源: eefocus关键字:ARM  LINUX平台  物联网服务器 手机看文章 扫描二维码
随时随地手机看文章
  基于XSCALE PXA270处理器平台和开源Linux系统搭建ARM-Linux物联网服务器。使用51单片机连接温湿度传感模块、LED灯等外围设备,使用基于XSCALE PXA270处理器的Up-Tech嵌入式实验箱为核心服务器运行平台。首先介绍了嵌入式设备的ARM-Linux系统搭建、守护程序和CGI程序之间的通信设计,然后详细介绍了Web服务器的搭建和网络程序设计所使用的iQuery类库和AJAX技术的设计实现。
  物联网是互联网应用的扩展,是一种新兴的联网技术,其核心是物与物之间的信息通信交流,也是物与人之间的交互控制。物联网技术,主要是利用各种传感器设备,例如:无线技术、射频识别(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所示

图1 系统架构
  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配置文件部分配置说明:
表1 Boa配置文件配置参数说明
  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平台的物联网服务器设计

上一篇:关于STM32 MDK中USE_STDPERIPH_DRIVER问题
下一篇:arm汇编—ldr伪指令

推荐阅读最新更新时间:2024-03-16 14:49

ARM Cycle Models—精确评估ARM IP的模型工具
Arm公司的 Cycel Models是100%周期精确的Arm IP模型,用于性能分析和精确的评估Arm IP。 Cycle Models是由Arm RTL直接编译而来,保留了完整的功能以及精准的周期,借助Cycle Models,您可以放心的选择和配置Arm IP,还可以自信地做出体系结构决策、优化系统性能,并在芯片可用之前做裸机固件开发。 Cycle Models特点 精准的IP性能参考 Cortex处理器和系统IP,包括NIC,CCI,CCN,以及CMN连接的精确周期模型。在使用硬件之前先证明你的假设,分析复杂的内部互连问题。快速探索设计方案,以及发现软件硬
[嵌入式]
<font color='red'>ARM</font> Cycle Models—精确评估<font color='red'>ARM</font> IP的模型工具
arm-Linux中断处理体系结构与处理流程分析
异常,就是可以打断CPU正常运行流程的一些事情,比如外部中断、未定义指令、试图修改只读的数据、执行swi指令(Software Interrupt Instruction ,软件中断指令)等。当这些事情发生时,CPU暂停当前的程序,先处理异常事件,然后再继续执行被中断的程序。操作系统中经常通过异常来完成一些特定的功能。其中的中断也占有很大的一部分。例如下面的这几种情况: * 当CPU执行未定义的机器指令时将触发 未定义指令异常 ,操作系统可以利用这个特点使用一些自定义的机器指令,它们在异常处理函数中实现。 * 当用户程序试图读写的数据或执行的指令不在内存中时,也会触发一个 数据访问中止异常 或 指令预取中止异常 ,在异
[单片机]
<font color='red'>arm</font>-<font color='red'>Linux</font>中断处理体系结构与处理流程分析
ARM探索之旅 03 | 如何使用 ARM FPU 加速浮点计算
引言 笔者接触嵌入式领域软件开发以来,几乎用的都是 ARM Cortex M 内核系列的微控制器。感谢C语言编译器的存在,让我不用接触汇编即可进行开发,但是彷佛也错过了一些风景,没有领域到编译器之美和CPU之美,所以决定周末无聊的休息时间通过寻找资料、动手实验、得出结论的方法来探索 ARM CPU 架构的美妙,以及C语言编译器的奥秘。(因为我个人实在是不赞同学校中微机原理类课程的教学方法)。 ARM探索之旅 01 | 带你认识ARM Cortex-M阵营 ARM探索之旅 02 | ARM Cortex-M 用什么指令集? 一、浮点数的存储 浮点数按照 IEEE 754 标准存储在计算机中,ARM浮点环境是遵循 IE
[单片机]
<font color='red'>ARM</font>探索之旅 03 | 如何使用 <font color='red'>ARM</font> FPU 加速浮点计算
技术文章—Arm内核解析
Arm 架构已经主导了当今嵌入式处理和计算市场,但在过去的几十年里,Arm 架构却走过了漫长的道路。从20世纪80年代开始,它起初是作为家用电脑处理器,然后在20世纪90年代成为手机芯片的基础。如今,在几乎所有技术细分市场,Arm都是一个强有力的竞争者。许多人认为,Arm 架构已成为 32 位或 64 位处理器的首选。由于这种广泛应用,现在已经有成千上万种基于Arm架构的变体。了解这些内核彼此之间的不同是做出选择决策的重要一环。 早在 2004 年,最初的 Cortex 家族就使 Arm架构分化为三个内核产品组,每个产品组都针对不同类型的应用。最早集成到芯片的是Cortex-M,它已成为基于Arm微控制器(MCU)生态系统的支
[嵌入式]
技术文章—<font color='red'>Arm</font>内核解析
基于S3C2410平台移植Linux 2.6内核指南
安装交叉编译工具 下载交叉编译工具 (本文默认所有软件均下载在用户主目录下) arm-linux-gcc-3.4.1 编译内核 URL: ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2 安装 //将压缩包移动至根目录下 #mv arm-linux-gcc-3.4.1.tar.bz2 / //解压,默认路径为 /usr/local/arm /3.4.1 #tar jxvf arm-linux-gcc-3.4.1.tar.gz2 下载Linux内核 下载Linux 2.6.14.1
[单片机]
ARM和单片机AVR的区别
AVR单片机是ATMEL公司研制开发的一种新型单片机,它与51单片机、PIC单片机相比运行效率高很多、芯片内部的Flsah、EEPROM、SRAM容量较大、全部支持在线编程烧写(ISP、每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强、内部资源丰富,一般都集成AD、DA模数转换器;PWM;SPI、USART、TWI、I2C通信口;丰富的中断源等。主要现在使用的型号是ATMEGA8/16。 ARM不是单片机,准确来讲ARM是一种处理器的IP核。英国ARM公司开发出处理器结构后向其他芯片厂商授权制造,芯片厂商可以根据自己的需要进行结构与功能的调整,因此实际中使用的ARM处理器有很多种类,主要有三星、飞利浦、ATMEL、I
[单片机]
菜鸟自学ARMlinux下编程获取系统时间和设置时间
获取时间有几种编程方法: 1 #include stdio.h #include time.h main(){ time_t t; struct tm *p; time(&t); p=gmtime(&t); printf( Year :%d\n ,1900+p- tm_year); printf( Month :%d\n ,1+p- tm_mon); printf( Day :%d\n ,p- tm_mday); printf( Hour :%d\n ,p- tm_hour); printf( Minute:%d\n ,p- tm_min); printf( Second:%d\n ,p- tm_sec); printf( W
[单片机]
Intel凌动凌空出世 ARM阵营备受挑战
在2008年,Intel成立40周年全球首发的IDF大会上,这家半导体业界的航母不仅介绍了下一代处理器微体系架构Nehalem的处理器以及为实现其强大性能而推出的QuickPath平台架构,更带来了面向MID的凌动(Atom)处理器和迅驰凌动技术。Intel还通过与SBS的合作显示了进军工控嵌入式领域的雄心。此外,由众多技术合作伙伴带来的PCI Express和Dispalyport方案也成为这次为期两天的大会上的亮点。 Tick-Tock继续前行 自2005年开始实施的制程(Tick)与架构(Tock)的交替更新战略终于令Intel成功摆脱了AMD的苦苦纠缠。在2007年推出了45nm Penryn系列处理器之
[嵌入式]
Intel凌动凌空出世 <font color='red'>ARM</font>阵营备受挑战
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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