浅谈嵌入式智能家居控制系统的研究与设计

时间:2011-06-04

  根据IEEE的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统以其占用资源少、专用性强、功耗低的特点使其广泛应用在移动通信、工业生产、安全监控等领域。以其在性能、体积及功耗等方面的优势在智能家居领域得到越来越广泛的应用。

  随着嵌入式技术、网络及信息技术的发展,针对人们对智能家居的追求,提出了一种基于ARM9的嵌入式智能家居控制系统的解决方案。介绍了嵌入式Linux系统的软硬件平台,结合实例阐述了嵌入式QT图形界面系统、嵌入式数据库SQLite等关键技术在嵌入式智能家居控制系统中的应用。该方案解决了控制系统的可视化操作问题,提高了系统数据管理效率,并具有通用性可移植到其他硬件或软件平台应用。

  系统结构设计

  本文将控制系统分为现场控制级(主机)和多个控制对象级(分机)。主机设备能够收集到控制对象的各种信息,对这些数据进行处理,并能够在设定的条件下产生报警。通过该系统,可以得到家居的各种运行状态(例如,房间温度、湿度,煤气泄漏报警等),并能根据现场情况做出相应的调整控制(例如,照明及家电控制等)。其家居控制系统结构如图1所示。

家居控制系统结构图

图1 家居控制系统结构图

  文章仅研究设计智能家居的分机部分,图1中的GSM和GPRS等远程通信模块作为以后系统的扩展升级。主机MCU选用ARM9芯片S3C2410,因其具有丰富的功能端口而适合设计要求和日后扩展。S3C2410嵌入式微处理器集成了众多的常用资源,例如,LCD控制器、NAND Flash控制器、SDRAM控制器、系统片选逻辑以及一些常用的通信接口等资源。

  分机采用16位单片机MSP430F149,主要考虑此芯片的低功耗性能,具有超低功耗的MSP单片机可以完成分机家居现场的控制功能。报警信息的采集就是对各传感器的信息采集;对各种家电的控制是通过控制连接在家电电源的继电器来实现;现场控制手动命令是通过触摸屏来实现的。各分机通过nRF905收发模块与主机进行无线通信。各分机通过连接不同的传感器或控制器来实现不同的功能。

  系统软件开发

  在Windows CE.net产品的开发中,有两个重要的方面,一个是内核定制,另一个是应用程序的开发。微软在这两个方面都提供了非常好的开发工具,就是内核定制工具Platform Builder和应用程序开发工具Embedded Visual C++。

  1 操作系统平台定制

  Windows CE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95,Windows CE的图形用户界面相当出色。

  Windows CE作业系统是Windows家族中的成员,专门设计给掌上型电脑(HPCs)所使用的电脑环境。这样的作业系统可使完整的可携式技术与现有的Windows桌面技术整合工作。 Windows CE 被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)的通用操作系统,Windows CE 可以通过设计一层位于内核和硬件之间代码来用设定硬件平台,这即是众所周知的硬件抽象层(HAL)(在以前解释时,这被称为 OEMC (原始设备制造)适应层,即 OAL; 内核压缩层,即 KAL。 以免与微软的 Windows NT 操作系统 HAL 混淆) 。

  Windows CE平台的定制过程

  (1)选择操作系统的基本配置,并且为特定的平台选择相应的微处理器和板级支持包BSP(Board Support Packet)。本系统终端采用S3C2410处理器,因此我们导入了和硬件平台相关的smdk2410.cec文件。

  (2)利用标准开发向导,根据Windows CE的架构创建一个定制平台,根据目标硬件设备开发Boot Loader、设备驱动程序,适当的裁减、添加组件。

  (3)通过以太网、USB或串口将镜像文件到目标设备,可以使用Platform Builder提供的调试工具查看Windows CE.net的运行情况并进行调试,若需要,进行重复配置、封装、及调试,直到满足要求,完成平台的创建。

  (4),导出相应的SDK(Software Development Kit)软件开发工具包,运行后安装到EVC中,使得可以进行特定硬件平台上的应用程序开发。SDK包含程序库、头文件、示例程序源代码和库函数使用文档,同时还包括编程指导和API参与以及设备驱动工具包(DDK)。

  安装BSP

  BSP即Board Support Package,板级支持包。它来源于嵌入式操作系统与硬件无关的设计思想,操作系统被设计为运行在虚拟的硬件平台上。对于具体的硬件平台,与硬件相关的代码都被封装在BSP中,由BSP向上提供虚拟的硬件平台,BSP与操作系统通过定义好的接口进行交互。BSP是所有与硬件相关的代码体的集合。一个成熟的商用操作系统,其被广泛应用的必要条件之一就是能够支持众多的硬件平台,并实现应用程序的硬件无关性。一般来说,这种无关性都是由操作系统实现的。

  BSP就是为软件操作系统正常运行提供基本、原始的硬件操作的软件模块,它和操作系统息息相关,但又不属于操作系统的一部分。BSP可以分为三大部分:

  1:系统上电时的硬件初始化。

  2:为操作系统访问硬件驱动程序提供支持。

  3:集成的硬件相关和硬件无关的操作系统所需的软件模块。

  开发BSP需要的条件

        ·目标硬件:硬件调测完毕,经过必要的软件测试

        ·必要的硬件设计文档:如地址空间的分布,CPU和其他芯片的工作模式等。

        ·操作系统

        ·交叉开发工具:编译器、汇编器、链接器等

        ·机制:bootrom或仿真器

  2    BSP实际开发的主要过程

  1.   掌握开发中使用的操作系统,和在这种操作系统下开发BSP的要求。

  2.   研读所选CPU的资料。

  3.   研读硬件设计文挡。

  4.   研读电路板中器件的资料。

  5.   找一个BSP模板,熟悉它并在此基础上开发自己的BSP。从头研制BSP工作量极大,也没有必要。

  6.   利用仿真器进行调试,开发BSP系统。

  7.   在BSP的基础上,利用Tornado集成开发环境,进一步调试外围设备,配置、完善系统。

  8.   调试单板上的设备驱动程序。

  把Windows CE.net移植到新硬件平台由平台构造器(Platform Builder)完成。Platform Builder 是一个定制基于Windows CE.net 操作系统的嵌入式平台的集成开发环境(IDE)。我们为一个硬件平台构建CE系统,在PB里实际上就是创建平台,然后编译平台,得到CE映像文件的过程。所以我们首先需要创建一个平台。BSP是连接一个硬件平台和操作系统内核功能的桥梁,所以,首先PB会要求选择BSP。

  Platform Builder 是微软公司提供给Windows CE 开发人员进行基于Windows CE 平台下嵌入式操作系统定制的集成开发环境。它提供了所有进行设计、创建、编译、测试和调试Windows CE 操作系统平台的工具。它运行在桌面Windows 下,开发人员可以通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试,如果开发板和Platform Builder提供得相同,那么只需重新编译,生成相应的系统镜像到开发板即可。但是实际情况更多的可能是处理器相同,但是板上的各种外围硬件接口不尽相同,这时候可以通过修改Platform Builder中相同或相近处理器的BSP来完成一个新的BSP,这样可以大大减少BSP的研发时间。这里我们利用厂商直接提供的BSP,节省了开发时间,也可以提高成功率。同时,开发人员还可以利用Platform Builder 来进行驱动程序开发和应用程序项目的开发等等。

生成系统镜像

图2 生成系统镜像

  定制Windows CE操作系统镜像

  PB定制基于本平台的操作系统镜像的步骤如下。

  (1)选择BSP:本系统开发板CPU是SAMSUNGSMDK2410S3C2410,所以选“S3C2410:ARMV4”BSP。

  (2)选择平台类型。本文选择了手持设备。在“Available configurations”列表中,选择“Mobile Handheld”,并输入“Platform name:sbc2410”。

  (3)选择基本类库及所需要的网络通信服务,平台配置完毕。

  (4)右键单击“SBC2410 features”选项的“Setting…”。在对话框Build Option属性页中,选择[Enable Full Kernel Mode],Windows CE中所有线程都会运行在态。这会使整个系统相对不稳定,但是也可提高系统的运行效率。选择[Enable Images Larger than 32MB],Windows CE的终运行时映像可大于32MB。

  (5)利用Platform Builder进行Windows CE.net操作系统的定制和开发一个重要的步骤就是在Platform Builder提供的特性目录(Catalog)中进行特性选择。这是因为Platform Builder中已经将Windows CE.net操作系统用到的大量的组件以特性(Feature)的形式列在特性目录中。加入USB键盘鼠标支持特性,加入USB移动存储设备(U盘、移动硬盘)支持,加入打印机设备相关的驱动(如果不加入打印机设备相关的驱动,在编译应用程序时会出现“syntax error:identifier ‘LPDOCINFO’”错误),加入网络设备驱动。

  (6)更改适合自己网络环境的IP地址、DNS、网关地址等网络参数,通过编辑platform.reg平台注册表文件中相关的键值,来修改网络参数。将PC的IP设定在同一网段内。

  (7)单击菜单Build→Build Platform开始编译系统。编译完毕,将会在C:WINCE420PUBLICsbc2410RelDirSAMSUNG_SMDK2410ARMV4Release目录下生成NK.bin和NK.nb0映像文件。编译开始大约10分钟后看到编译信息:SBC2410-0 error(s),30 warning(s)。有警告是正常的,因为某些组件是有风险的,例如,一些网络组件,所以只要没有错误,说明定制没有问题。

  此时,我们用USB电缆连接主机和目标机(开发板),在PC端已安装了SAMSUNG提供的USB驱动的前提下,使用2410提供的专用工具DNW把生成的NK.bin和NK.nb0到开发板中,这样根据我们的目标机系统定制的Windows CE就可以在开发平台上正常运行了。

  创建平台SDK

  SDK(Software Development Kit, 即软件开发工具包 )一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。

  完成了平台的定制后,接着可以利用Platform Builder来创建SDK,SDK为平台上其他应用程序的开发提供支持。SDK(Software Development Kit)是一系列头文件、库文件、文档、平台管理器和运行时库的总称。一旦创建了SDK,就可以将它导出或者安装到别的计算机上,开发者可以将创建的SDK导入Embedded Visual C++或 Visual Studio中,进行应用程序的开发、调试和运行。

  在Embedded Visual C++中,提供了Platform Manager来管理已经安装的SDK。注意,在安装开发工具时,默认会安装一个称作“Standard SDK”的SDK。由于Windows CE操作系统特性,不可能存在“标准”的SDK。所谓Standard SDK,只不过是微软把Windows CE中常用的一些功能取出来作为一个“标准”的SDK,使用Standard SDK开发的应用程序,可在大多数Windows CE平台上运行。但是Standard SDK也并不是的,例如,Standard SDK不支持中文和DirectX等。Platform Builder提供了SDK Wizard向导,来创建和生成SDK,Build过程完成后即可生成名为SBC2410_SDK.msi的SDK文件。此时在生成目录中找到SBC2410_SDK.msi,双击安装,就可以将生成的SDK安装到EVC中进行应用程序的开发了。

  2 应用软件开发

  目前,针对Windows CE应用开发的软件有很多种,在使用的时候根据具体情况选择适合应用的软件开发工具。Embedded Visual C++支持WinCE App/DLL/COM/Lib using Win32 API,MFC,ATL and STL等功能,它与Visual C++6.0具有相似的工程管理模式和用户界面,易于调试和测试。但是必须安装相应的为特定平台开发的SDK,本文就是自己导出的SDK。

  智能家居系统的主机应用程序通过两个对话框实现分机设备的基本读/写过程:Measure对话框主要实现对输入量信息的采集及对系统运行状态的监视,Control对话框主要用于主机发送控制信息给分机系统。这两个对话框通过主窗体调用完成对整个家居系统的测量与控制。主机应用程序流程图如图3所示。智能家居系统应用程序以1路模拟量输入、3路数字量输入及相应的4路输出控制量为例实现智能控制功能。

主机应用程序流程图

图3 主机应用程序流程图

  EVC,以太网虚连接(Ethernet Virtual Connection),与ATM技术中的PVC/SVC的概念是非常类似的。EVC是描述一种端到端的概念,我们可以把它想象成逻辑管道,以太网帧一旦进入到管道中,是不会泄露的,除非从管道的另一个口子出来。EVC可以更规范的描述成:“两个或更多UNI关联起来的一个实例”。

  EVC在电信级以太网业务中扮演着非常重要的角色,依靠着在有限的网络资源里构建统计复用的逻辑管道,流量可以有效的隔离开来,通过对逻辑管道及其中的流量施加相应的控制,电信级以太网就具有了比较完备的流量控制能力,这是成为电信级业务的重要特征。

  EVC的开发环境与Visual C++基本一致。首先,选择项目类型、项目存放路径、项目名称及平台类型;然后选择项目的样式和支持的语言;接下来,确定一些其他的选项;选择完毕后,就可以得到一个程序的框架。项目类型我们选择WCE MFC APPWizard,项目名称为SmartHome,在支持的CPU类型中我们选中了ARM和X86(应该根据开发环境来选择)。对于我们来说,首先要在PC上进行调试,然后编译成适合使用的应用程序,目标机是ARM CPU,所以我们需要WCE X86和WCE ARM。(如果你要开发商用软件或者想让更多的人使用你的程序,应该考虑更多种类的CPU)编译运行,成功启动Microsoft ActiveSync同步软件,这时可将在PC上生成的exe文件复制到移动设备下My Documents文件夹下。智能家居系统应用程序以1路模拟量、3路数字量输入及相应的4路输出控制量为例实现智能控制功能,如图4所示。

运行界面

图4 运行界面

   


  
上一篇:BSQUARE新款OMAP35x EVM开发套件上市
下一篇:更低功耗,更高性能的异步DSP设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料