出处:今日电子发布于:2011-06-0411:52:30
根据IEEE的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统以其占用资源少、专用性强、功耗低的特点使其广泛应用在移动通信、工业生产、安全监控等领域。以其在性能、体积及功耗等方面的优势在智能家居领域得到越来越广泛的应用。
随着嵌入式技术、网络及信息技术的发展,针对人们对智能家居的追求,提出了一种基于ARM9的嵌入式智能家居控制系统的解决方案。介绍了嵌入式Linux系统的软硬件平台,结合实例阐述了嵌入式QT图形界面系统、嵌入式数据库SQLite等关键技术在嵌入式智能家居控制系统中的应用。该方案解决了控制系统的可视化操作问题,提高了系统数据管理效率,并具有通用性可移植到其他硬件或软件平台应用。
系统结构设计
本文将控制系统分为现场控制级(主机)和多个控制对象级(分机)。主机设备能够收集到控制对象的各种信息,对这些数据进行处理,并能够在设定的条件下产生报警。通过该系统,可以得到家居的各种运行状态(例如,房间温度、湿度,煤气泄漏报警等),并能根据现场情况做出相应的调整控制(例如,照明及家电控制等)。其家居控制系统结构如图1所示。
图1家居控制系统结构图
系统软件开发
在WindowsCE.net产品的开发中,有两个重要的方面,一个是内核定制,另一个是应用程序的开发。微软在这两个方面都提供了非常好的开发工具,就是内核定制工具PlatformBuilder和应用程序开发工具EmbeddedVisualC++。
1操作系统平台定制
WindowsCE作业系统是Windows家族中的成员,专门设计给掌上型电脑(HPCs)所使用的电脑环境。这样的作业系统可使完整的可携式技术与现有的Windows桌面技术整合工作。WindowsCE被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)的通用操作系统,WindowsCE可以通过设计一层位于内核和硬件之间代码来用设定硬件平台,这即是众所周知的硬件抽象层(HAL)(在以前解释时,这被称为OEMC(原始设备制造)适应层,即OAL;内核压缩层,即KAL。以免与微软的WindowsNT操作系统HAL混淆)。
WindowsCE平台的定制过程
(2)利用标准开发向导,根据WindowsCE的架构创建一个定制平台,根据目标硬件设备开发BootLoader、设备驱动程序,适当的裁减、添加组件。
(3)通过以太网、USB或串口将镜像文件到目标设备,可以使用PlatformBuilder提供的调试工具查看WindowsCE.net的运行情况并进行调试,若需要,进行重复配置、封装、及调试,直到满足要求,完成平台的创建。
(4),导出相应的SDK(SoftwareDevelopmentKit)软件开发工具包,运行后安装到EVC中,使得可以进行特定硬件平台上的应用程序开发。SDK包含程序库、头文件、示例程序源代码和库函数使用文档,同时还包括编程指导和API参与以及设备驱动工具包(DDK)。
安装BSP
1:系统上电时的硬件初始化。
2:为操作系统访问硬件驱动程序提供支持。
开发BSP需要的条件
·目标硬件:硬件调测完毕,经过必要的软件测试
·必要的硬件设计文档:如地址空间的分布,CPU和其他芯片的工作模式等。
·操作系统
·交叉开发工具:编译器、汇编器、链接器等
2BSP实际开发的主要过程
1.掌握开发中使用的操作系统,和在这种操作系统下开发BSP的要求。
2.研读所选CPU的资料。
3.研读硬件设计文挡。
4.研读电路板中器件的资料。
5.找一个BSP模板,熟悉它并在此基础上开发自己的BSP。从头研制BSP工作量极大,也没有必要。
6.利用仿真器进行调试,开发BSP系统。
7.在BSP的基础上,利用Tornado集成开发环境,进一步调试外围设备,配置、完善系统。
8.调试单板上的设备驱动程序。
把WindowsCE.net移植到新硬件平台由平台构造器(PlatformBuilder)完成。PlatformBuilder是一个定制基于WindowsCE.net操作系统的嵌入式平台的集成开发环境(IDE)。我们为一个硬件平台构建CE系统,在PB里实际上就是创建平台,然后编译平台,得到CE映像文件的过程。所以我们首先需要创建一个平台。BSP是连接一个硬件平台和操作系统内核功能的桥梁,所以,首先PB会要求选择BSP。
图2生成系统镜像
定制WindowsCE操作系统镜像
PB定制基于本平台的操作系统镜像的步骤如下。
(1)选择BSP:本系统开发板CPU是SAMSUNGSMDK2410S3C2410,所以选“S3C2410:ARMV4”BSP。
(2)选择平台类型。本文选择了手持设备。在“Availableconfigurations”列表中,选择“MobileHandheld”,并输入“Platformname:sbc2410”。
(3)选择基本类库及所需要的网络通信服务,平台配置完毕。
(4)右键单击“SBC2410features”选项的“Setting…”。在对话框BuildOption属性页中,选择[EnableFullKernelMode],WindowsCE中所有线程都会运行在态。这会使整个系统相对不稳定,但是也可提高系统的运行效率。选择[EnableImagesLargerthan32MB],WindowsCE的终运行时映像可大于32MB。
(7)单击菜单Build→BuildPlatform开始编译系统。编译完毕,将会在C:WINCE420PUBLICsbc2410RelDirSAMSUNG_SMDK2410ARMV4Release目录下生成NK.bin和NK.nb0映像文件。编译开始大约10分钟后看到编译信息:SBC2410-0error(s),30warning(s)。有警告是正常的,因为某些组件是有风险的,例如,一些网络组件,所以只要没有错误,说明定制没有问题。
创建平台SDK
SDK(SoftwareDevelopmentKit,即软件开发工具包)一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
完成了平台的定制后,接着可以利用PlatformBuilder来创建SDK,SDK为平台上其他应用程序的开发提供支持。SDK(SoftwareDevelopmentKit)是一系列头文件、库文件、文档、平台管理器和运行时库的总称。一旦创建了SDK,就可以将它导出或者安装到别的计算机上,开发者可以将创建的SDK导入EmbeddedVisualC++或VisualStudio中,进行应用程序的开发、调试和运行。
在EmbeddedVisualC++中,提供了PlatformManager来管理已经安装的SDK。注意,在安装开发工具时,默认会安装一个称作“StandardSDK”的SDK。由于WindowsCE操作系统特性,不可能存在“标准”的SDK。所谓StandardSDK,只不过是微软把WindowsCE中常用的一些功能取出来作为一个“标准”的SDK,使用StandardSDK开发的应用程序,可在大多数WindowsCE平台上运行。但是StandardSDK也并不是的,例如,StandardSDK不支持中文和DirectX等。PlatformBuilder提供了SDKWizard向导,来创建和生成SDK,Build过程完成后即可生成名为SBC2410_SDK.msi的SDK文件。此时在生成目录中找到SBC2410_SDK.msi,双击安装,就可以将生成的SDK安装到EVC中进行应用程序的开发了。
2应用软件开发
目前,针对WindowsCE应用开发的软件有很多种,在使用的时候根据具体情况选择适合应用的软件开发工具。EmbeddedVisualC++支持WinCEApp/DLL/COM/LibusingWin32API,MFC,ATLandSTL等功能,它与VisualC++6.0具有相似的工程管理模式和用户界面,易于调试和测试。但是必须安装相应的为特定平台开发的SDK,本文就是自己导出的SDK。
智能家居系统的主机应用程序通过两个对话框实现分机设备的基本读/写过程:Measure对话框主要实现对输入量信息的采集及对系统运行状态的监视,Control对话框主要用于主机发送控制信息给分机系统。这两个对话框通过主窗体调用完成对整个家居系统的测量与控制。主机应用程序流程图如图3所示。智能家居系统应用程序以1路模拟量输入、3路数字量输入及相应的4路输出控制量为例实现智能控制功能。
图3主机应用程序流程图
EVC,以太网虚连接(EthernetVirtualConnection),与ATM技术中的PVC/SVC的概念是非常类似的。EVC是描述一种端到端的概念,我们可以把它想象成逻辑管道,以太网帧一旦进入到管道中,是不会泄露的,除非从管道的另一个口子出来。EVC可以更规范的描述成:“两个或更多UNI关联起来的一个实例”。
EVC在电信级以太网业务中扮演着非常重要的角色,依靠着在有限的网络资源里构建统计复用的逻辑管道,流量可以有效的隔离开来,通过对逻辑管道及其中的流量施加相应的控制,电信级以太网就具有了比较完备的流量控制能力,这是成为电信级业务的重要特征。
EVC的开发环境与VisualC++基本一致。首先,选择项目类型、项目存放路径、项目名称及平台类型;然后选择项目的样式和支持的语言;接下来,确定一些其他的选项;选择完毕后,就可以得到一个程序的框架。项目类型我们选择WCEMFCAPPWizard,项目名称为SmartHome,在支持的CPU类型中我们选中了ARM和X86(应该根据开发环境来选择)。对于我们来说,首先要在PC上进行调试,然后编译成适合使用的应用程序,目标机是ARMCPU,所以我们需要WCEX86和WCEARM。(如果你要开发商用软件或者想让更多的人使用你的程序,应该考虑更多种类的CPU)编译运行,成功启动MicrosoftActiveSync同步软件,这时可将在PC上生成的exe文件复制到移动设备下MyDocuments文件夹下。智能家居系统应用程序以1路模拟量、3路数字量输入及相应的4路输出控制量为例实现智能控制功能,如图4所示。