智能家居远程监控系统毕业论文

智能家居远程监控系统毕业论文

基于ARM9的智能家居远程监控系统的设计与实现

摘要

目 录

1 绪论 ...................................................................................................................... - 6 -

1.1 目的与意义 .................................................................................................. - 6 -

1.2 研发背景 ...................................................................................................... - 6 -

1.2.1 ARM介绍 ....................................................................................... - 6 -

1.2.2 嵌入式Linux介绍 .......................................................................... - 7 -

1.2.3 GSM介绍 ........................................................................................ - 8 -

2 嵌入式系统开发概述 .......................................................................................... - 9 -

2.1 嵌入式系统的特点 .................................................................................... - 9 -

2.1.1 嵌入式系统通常是面向特定任务的 .............................................. - 9 -

2.1.2 嵌入式系统运行环境差异很大 ...................................................... - 9 -

2.1.3 嵌入式系统比通用PC系统资源少得多 ..................................... - 10 -

2.1.4 低功耗、体积小、集成度高、成本低 ........................................ - 10 -

2.1.5 高效、可靠、稳定 ........................................................................ - 11 -

2.1.6 具有较长的生命周期 .................................................................... - 11 -

2.1.7 目标代码通常是固化在非易失性储器中 .................................... - 11 -

2.1.8 一般是实时操作系统(RTOS),系统有实时约束 .................. - 11 -

2.1.9 嵌入式软件开发走向标准化 ........................................................ - 11 -

2.1.10 需要专用开发工具和方法进行设计 .......................................... - 11 -

2.1.11 嵌入式微处理器通常包含专用调试电路 .................................. - 12 -

2.2 嵌入式系统的组成结构 .......................................................................... - 12 -

2.2.1 硬件基本结构 ................................................................................ - 12 -

2.2.2 软件的层次结构 ............................................................................ - 13 -

3 智能家居概述 .................................................................................................... - 14 -

3.1 研究背景 .................................................................................................... - 14 -

3.2 国内外研究现状 ........................................................................................ - 15 -

3.2.1 国外研究现状 .................................................................................. - 15 -

3.2.2 国内研究现状 .................................................................................. - 15 -

4 嵌入式Linux和嵌入式Linux开发环境 ........................................................ - 16 -

4.1 嵌入式Linux ............................................................................................. - 16 -

4.2 嵌入式Linux开发 .................................................................................... - 17 -

4.3 交叉开发环境 ............................................................................................ - 19 -

4.4 交叉编译和链接 ........................................................................................ - 19 - 5 需求分析 ............................................................................................................ - 20 -

5.1 用户需求 .................................................................................................. - 20 -

5.2 需求分析 .................................................................................................. - 20 - 6 智能家居基本模块及解决方案 ........................................................................ - 21 -

6.1 智能家居的基本功能模块 ........................................................................ - 21 -

6.2 家庭对外通信模块 .................................................................................... - 22 -

6.3 家庭网关模块 ............................................................................................ - 23 -

6.4 家庭安全防范模块 .................................................................................... - 23 -

6.5 家庭设备自动控制模块 ............................................................................ - 23 -

7 模拟实现硬件设计 ........................................................................................................ - 24 -

7.1 硬件选型 .................................................................................................... - 24 -

7.2 硬件连接及测试 ........................................................................................ - 25 - 8 嵌入式系统平台的建立 ............................................................................................... - 27 -

8.1 嵌入式系统交叉编译环境的建立 ............................................................ - 27 -

8.2 嵌入式Linux移植 .................................................................................... - 28 -

8.2.1 Linux移植流程 ................................................................................ - 28 -

8.2.2 Bootloader移植 ................................................................................ - 28 -

8.2.3 Linux内核移植 ................................................................................ - 29 -

8.2.4 YAFFS2文件系统制作 .................................................................... - 32 -

9 模拟实现软件设计 ............................................................................................ - 32 -

9.1 获取短信内容模块 .................................................................................... - 33 -

9.1.1 接收短信模块 .................................................................................. - 33 -

9.1.2提取短信内容模块 ........................................................................... - 38 -

结 论 ...................................................................................................................... - 41 - 致 谢 ...................................................................................................................... - 42 - 参 考 文 献 ............................................................................................................ - 43 -

1 绪论

当网络席卷整个社会,带来经济飞速发展的同时,也给人们的生活带来无限的惊奇。不断更新的生活方式,使得越来越多的人追求对生活的舒适度和享受度。智能家居作为新生力量呼之欲出,自然地走进了我们的生活,随之,引领新一代的数字家庭生活。

目前,智能家居在全球都呈现良好的发展趋势。国外,智能家居在美国、德国、新加坡、日本等国都有广泛应用。目前在新加坡也有近30个住宅小区近5000户的家庭采用了“家庭智能化系统”,美国已有近4万户家庭安装了这一类的“家庭智能系统”。三星已经开始在中、韩两国同时推出起智能家居系统。统计资料显示:2004年,家庭网络市场总额可达57亿美元,国际智能家居的产品销售额可达148亿美元。在国内,智能家居已经走过了“概念期”,正是基于对智能家居市场发展前景的展望,使得智能家居不断地纳入各研发单位、房产开发公司、网络公司下期的开发计划,也是竞相销售的卖点。他们正是基于对这个难得机遇的意识,开始为研究和开发相关系统和产品进行先期的部署和规划,越来越多的企业开始介入智能家庭网络这个全新的领域。

1.1 目的与意义

本课题是基于ARM9的智能家居监控模块开发与实现,我们采用ARM9 内核的S3C2410处理器为控制芯片,再将Linux系统移植到硬件平台上,然后设计好相应的驱动程序和应用程序,最后将软件下载到硬件平台来对家电进行本地和远程控制。系统主要有GSM通讯模块和ARM9系统板两个部分组成。而系统软件主要完成各个模块之间交互通信的功能。

智能家居与普通家居相比,它不仅具有传统的居住功能,提供舒适安全、高品位且宜人的家庭生活空间,还由原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交换功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用节约资金。

智能家居是数字家庭的一部分,只有将智能控制和上网功能集成起来,才形成真正意义上的数字家庭。数字家庭涉及的领域将综合生活中的娱乐、工作、投资理财、学习、医疗、教育等,是实现家庭内部、家庭和社会的实时性沟通的综合系统。数字家庭伴随着无线而产生,也使无线技术得到了充分的应用和体现。

1.2 研发背景

下文将简单介绍一下本系统的研发背景及相关系统的情况。

1.2.1 ARM介绍

ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得 ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。

1.2.2 嵌入式Linux介绍

Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一;可运行在X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM等多种硬件平台,而且开放源代码,可以定制;可与各种传统的商业操作系统分庭抗争。越来越多的企业和研发机构都转向嵌入式Linux的开发和研究上,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式Linux的特点:

第一,Linux系统是层次结构且内核完全开放。Linux是由很多体积小且性能高的微内核系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要方便地对内核进行改造,低成本地设计和开发出满足自己需要的嵌入式系统。

第二,强大的网络支持功能。Linux诞生于因特网时代并具有Unix的特性,保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。 此外,Linux还支持ext2、fat16、fat32、romfs等文件系统,为开发嵌入式系统应用打下了很好的基础。

第三,Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。Linux也符合IEEE POSIX.1标准,使应用程序具有较好的可移植性。传统的嵌入式开发的程序调试和调试工具是用在线仿真器(ICE)实现的。它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,完成监视和调试程序;但一般价格比较昂贵,只适合做非常底层的调试。使用嵌入式Linux,一旦软硬件能够支持正常的串口功能,即使不用仿真器,也可以很好地进行开发和调试工作,从而节省一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(tool chain)。它利用GNU的gcc做编译器,用gdb、kgdb、xgdb做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。

第四,Linux具有广泛的硬件支持特性。无论是RISC还是CISC、32位还是

64位等各种处理器,Linux都能运行。Linux通常使用的微处理器是Intel X86芯片家族,但它同样能运行于Motorola公司的68K系列CPU和IBM、Apple、Motorola公司的PowerPC CPU以及Intel公司的StrongARM CPU等处理器。Linux支持各种主流硬件设备和最新硬件技术,甚至可以在没有存储管理单元(MMU)的处理器上运行。这意味着嵌入式Linux将具有更广泛的应用前景。

1.2.3 GSM介绍

GSM全名为:Global System for Mobile Communications,中文为全球移动通讯系统,俗称"全球通",是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。我国于20世纪90年代初引进采用此项技术标准,此前一直是采用蜂窝模拟移动技术,即第一代GSM技术(2001年12月31日我国关闭了模拟移动网络)。目前,中国移动、中国联通各拥有一个GSM网,为世界最大的移动通信网络。GSM系统包括 GSM 900:900MHz、GSM1800:1800MHz 及 GSM1900:1900MHz等几个频段 。GSM(全球移动通信系统)是一种广泛应用于欧洲及世界其他地方的数字移动电话系统。GSM使用的是时分多址的变体,并且它是目前三种数字无线电话技术(TDMA、GSM和CDMA)中使用最为广泛的一种。GSM将资料数字化,并将数据进行压缩,然后与其它的两个用户数据流一起从信道发送出去,另外的两个用户数据流都有各自的时隙。GSM实际上是欧洲的无线电话标准,据GSM MoU联合委员会报道,GSM在全球有12亿的用户,并且用户遍布120多个国家。因为许多GSM网络操作员与其他国外操作员有漫游协议,因此当用户到其他国家之后,仍然可以继续使用他们的移动电话。

美国著名通信公司Sprint的一个辅助部门,美国个人通信正在使用GSM作为一种宽带个人通信服务的技术。这种个人通信服务将最终为爱立信、摩托罗拉以及诺基亚现在正在生产的手持机建立400多个基站。手持机包括电话、短信寻呼机和对讲机。

GSM及其他技术是无限移动通信的演进,无线移动通信包括高速电路交换数据、通用无线分组系统、基于GSM网络的数据增强型移动通信技术以及通用移动通信服务。

(1).GSM使用上直观的特点:

GSM系统有几项重要特点:防盗拷能力佳、网络容量大、手机号码资源丰富、通话清晰、稳定性强不易受干扰、信息灵敏、通话死角少、手机耗电量低。

(2).GSM的技术特点:

 频谱效率。由于采用了高效调制器、信道编码、交织、均衡和语音编

码技术,使系统具有高频谱效率。

 容量。由于每个信道传输带宽增加,使同频复用栽干比要求降低至9dB,

故GSM系统的同频复用模式可以缩小到4/12或3/9甚至更小(模拟系统

为7/21);加上半速率话音编码的引入和自动话务分配以减少越区切换的

次数,使GSM系统的容量效率(每兆赫每小区的信道数)比TACS系统

高3~5倍。

 话音质量。鉴于数字传输技术的特点以及GSM规范中有关空中接口和话

音编码的定义,在门限值以上时,话音质量总是达到相同的水平而与无

线传输质量无关。

 开放的接口。GSM标准所提供的开放性接口,不仅限于空中接口,而且

报刊网络直接以及网络中个设备实体之间,例如A接口和Abis接口。

 安全性。通过鉴权、加密和TMSI号码的使用,达到安全的目的。鉴权用

来验证用户的入网权利。加密用于空中接口,由SIM卡和网络AUC的

密钥决定。TMSI是一个由业务网络给用户指定的临时识别号,以防止有

人跟踪而泄漏其地理位置。

 与ISDN、PSTN等的互连。与其他网络的互连通常利用现有的接口,如

ISUP或TUP等。

 在SIM卡基础上实现漫游。漫游是移动通信的重要特征,它标志着用户

可以从一个网络自动进入另一个网络。GSM系统可以提供全球漫游,当

然也需要网络运营者之间的某些协议,例如计费。

2 嵌入式系统开发概述

本章主要描述嵌入式系统的特点及相关开发技术。

2.1 嵌入式系统的特点

由于嵌入式系统是应用于特定环境下,针对特定用途来设计的系统,所以不同于通用计算机系统。同样是计算机系统,嵌入式系统是针对具体应用设计的“专用系统”。它的硬件和软件都必须高效率地设计、“量体裁衣”、去除冗余,力争在较少的资源上实现更高的性能。它与通用的计算机系统相比具有以下显著特点:

2.1.1 嵌入式系统通常是面向特定任务的

嵌入式系统通常是面向特定任务的,而不同于一般通用PC计算平台,是“专用”的计算机系统。嵌入式系统微处理器大多非常适合于工作在为特定用户群所设计的系统中,称为“专用微处理器”,它专用于某个特定的任务,或者是很少几个任务。

具体的应用需求决定着嵌入式处理器的性能选型和整个系统的设计。如果要更改其任务,就可能要废弃整个系统并重新进行设计。

2.1.2 嵌入式系统运行环境差异很大

嵌入式系统无所不在,但运行环境也差异很大,可运行在飞机上、冰天雪地的两极中、骄阳似火下的汽车里、要求温湿度恒定的科学实验室等。特别是在恶

劣的环境或突然断电的情况下,要求系统仍然能够正常工作。

这些情况对设计人员来说意味着要同时考虑到硬件与软件。“严酷的环境”一般意味着更高的温度与湿度。军用设备标准对嵌入式元器件的要求非常严格并且在价格上和商用、民用差别很大。比如英特尔公司的8086,当它用在火箭上时,单价竟高达几百美元。

2.1.3 嵌入式系统比通用PC系统资源少得多

通用PC系统有数不胜数的系统资源,可以轻松完成各种工作。你可以在自己的PC机上编写程序的同时播放MP3、CD、下载资料等等。因为个人PC拥有512MB内存、80GB硬盘空间并且在SCSI卡上连接着软驱和CD-ROM驱动器已是目前非常普遍的配置了。而控制GPS接收机的嵌入式系统,由于是专门用来执行很少的几个确定任务,它所能管理的资源比通用PC系统少得多。当然这主要是因为在设计时考虑到经济性,不能使用通用CPU。这就意味着所选用的CPU只能管理很少的资源,它的成本更低、结构更简单。

2.1.4 低功耗、体积小、集成度高、成本低

嵌入式系统“嵌入”到对象的体系中,对对象、环境和嵌入式系统自身具有严格的要求,一般的嵌入式系统具有低功耗、体积小、集成度高、成本低等特点;

通用PC有足够大的内部空间提供良好的通风能力,但是系统中的奔腾或AMD处理器均配备庞大的散热片和冷却风扇进行系统散热。 而许多嵌入式系统就没有如此充足的电能供应,尤其是便携式嵌入式设备,即便是有足够的电源供应,散热设备的增加也往往是不方便的。因此嵌入式系统设计时应尽可能的降低功耗。整个系统设计有严格的功耗预算,系统中的处理器大部分时间必须工作在降低功耗的“睡眠模式”下,只有在需要任务处理时它才会“醒来”。软件必须围绕这种特性进行设计。因此一般的外部事件通过中断“驱动”、“唤醒”系统工作。功耗约束影响了系统设计决策的方方面面,包括处理器的选择、内存体系结构的设计等。系统要求的功耗约束很有可能决定软件是用汇编语言编写,还是用C或C++语言编写,这是由于必须在功耗预算内使系统达到最高性能。功耗需求由CPU时钟速度以及使用的其他部件(RAM,ROM,I/O设备等)的数量决定。因此,从软件设计人员的观点看来,功耗约束可能成为压倒性的系统约束,它决定了软件工具的选择、内存的大小和性能的高低。

能够把通用CPU中许多由板卡完成的任务集成在高度集成的SoC系统芯片内部,而不是微处理器与分立外设的组合,就能节省许多印制电路板、连接器等,使系统的体积、功耗、成本大大降低,也能提高移动性和便携性,从而使嵌入式系统的设计趋于小型化、专业化。

嵌入式系统的硬件和软件都必须高效率地设计,在在保证稳定、安全、可靠的基础上量体裁衣,去除冗余,力争用较少的软硬件资源实现较高的性能。这样,才能最大限度地降低应用成本,从而在具体应用中更具有市场竞争力。

2.1.5 高效、可靠、稳定

建立完整的嵌入式系统的系统测试和可靠性评估体系,保证嵌入式系统高效、可靠、稳定工作;嵌入式应用的复杂性、繁杂性要求设计的代码应该是完全没有错误的,怎样才能科学、完整的测试全天候运行的嵌入式复杂软件呢?首先,需要有科学的测试方法,建立科学的系统测试和可靠性评估体系,尽可能避免因为系统的不可靠造成巨大损失。其次,引入多种嵌入式系统测试方法和可靠性评估体系。在大多数嵌入式系统中一般都包括一些机制,比如看门狗定时器,它在软件失去控制后能使之重新开始正常运行。总之,嵌入式软件测试和评估体系是非常复杂的一门学科。

2.1.6 具有较长的生命周期

嵌入式系统是和实际具体应用有机结合的产物,它的升级换代也是和具体产品同步进行的。因此,一旦定性进入市场,一般具有较长的生命周期。

2.1.7 目标代码通常是固化在非易失性储器中

嵌入式系统的目标代码通常是固化在非易失性储器(ROM/EPROM/EPROM/FLASH)中;

嵌入式系统开机后,必须有代码对系统进行初始化,以便其余的代码能够正常运行,这就是建立运行时的环境,比如初始化RAM放置变量、测试内存的完整性、测试ROM完整性以及其他初始化任务。为了系统的初始化,几乎所有的系统都要在非易失性存储器(现在普遍使用Flash)中存放部分代码(启动代码)。为了提高执行速度和系统可靠性,大多数嵌入式系统也常常把所有的代码(也常常使用所有代码的压缩代码)固化、存放在存储器芯片或处理器的内部存储器件中,不使用外部的磁盘等存储介质。

2.1.8 一般是实时操作系统(RTOS),系统有实时约束

嵌入式系统往往对时间的要求非常严格,嵌入式操作系统一般是RTOS。嵌入式实时操作系统随时都要对正在运行的任务授予最高优先级。嵌入式任务是时间关键性约束,它必须在某个时间范围内完成,否则由其控制的功能就会失效。比如控制飞行器稳定飞行的控制系统如果因反馈速度不够,其控制算法就可能会失效,飞行器在空中飞行会出问题。

2.1.9 嵌入式软件开发走向标准化

嵌入式系统的应用程序可以没有操作系统直接在芯片上运行。为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS(Real-Time Operating System)开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。

2.1.10 需要专用开发工具和方法进行设计

从调试的观点看,代码在ROM中意味着调试器不能在ROM中设置断点。要设置断点,调试器必须能够用特殊指令取代用户指令,嵌入式调试己经发展出

支持嵌入式系统开发过程的专用工具套件。

2.1.11 嵌入式微处理器通常包含专用调试电路

嵌入式系统一般是专用系统,而PC是通用计算平台

嵌入式系统的资源比PC少得多

嵌入式系统软件故障带来的后果比PC机大得多

嵌入式系统一般采用实时操作系统

嵌入式系统大都有成本、功耗的要求

嵌入式系统得到多种微处理体系的支持

嵌入式系统需要专用的开发工具

2.2 嵌入式系统的组成结构

嵌入式系统的硬件是嵌入式系统软件环境运行的基础,它提供了嵌入式系统软件运行的物理平台和通信接口;嵌入式操作系统和嵌入式应用软件则是整个系统的控制核心,控制整个系统运行、提供人机交互的信息等。由于嵌入式系统和实际应用对象密切相关,而实际应用非常繁杂,应用也日新月异,很难用一种构架或模型加以描述。

2.2.1 硬件基本结构

嵌入式系统的硬件架构如图2-1下半部分所示,是以嵌入式处理器为中心,配置存储器、I/O设备、通信模块以及电源等必要的辅助接口组成。

图2.1 典型的嵌入式系统组成 实时操作系统(RTOS) 输入输出接口SRAM 处理器/ARM核 门人机交互接口LCD/触摸屏、键盘、

嵌入式系统是“量身定做”的“专用计算机应用系统”,又不同于普通计算机组成,在实际应用中的嵌入式系统硬件配置非常精简,除了微处理器和基本的外围电路以外,其余的电路都可以根据需要和成本进行“裁剪”、“定制化”(Customize),非常经济、可靠。

嵌入式系统硬件核心是嵌入式微处理器,有时为了提高系统的信息处理能力,常常外接DSP和DSP协处理器(也可内部集成)完成高性能信号处理。

随着计算机技术、微电子技术、应用技术的不断发展和纳米芯片加工工艺技术的发展,以微处理器为核心的集成多种功能的SoC系统芯片已成为嵌入式系统的核心,在嵌入式系统设计中,要尽可能的选择能满足系统功能接口的SoC芯片,这些SoC集成了大量的外围USB、UART、以太网、AD/DA、IIS等功能模块。

可编程片上系统SOPC( System On Programmable Chip ) 结合了SoC和PLD、FPGA各自的技术优点,使得系统具有可编程的功能,是可编程逻辑器件在嵌入式应用中的完美体现,极大的提高了系统的在线升级、换代能力。•

以SoC/SOPC为核心,可以用最少的外围部件和连接部件构成一个应用系统,满足系统的功能需求,也是嵌入式系统发展的一个方向

因此现代嵌入式设计是以处理器/SoC/SOPC为核心,完成系统设计的,其外围接口包括存储设备、通信接口设备、扩展设备接口和辅助的机电设备(电源、连接器、传感器等)构成硬件系统。对于嵌入式硬件的各个模块将在第三部分作全面介绍。

2.2.2 软件的层次结构

当设计一个简单的应用程序时,可以不使用操作系统;但是当设计较复杂的程序时,可能就需要一个操作系统(OS)来管理、控制内存、多任务、周边资源等等。依据系统所提供的程序界面来编写应用程序,可以大大的减少应用程序员的负担。

对于使用操作系统的嵌入式系统来说,嵌入式系统软件结构一般包含四个层面:设备驱动层、实时操作系统(RTOS)、应用程序接口(API)层、实际应用程序层。

有些资料将应用程序接口API归属于OS层,如图1-1的上半部分所示的嵌入式系统的软件结构,是按三层划分的。由于硬件电路的可裁减性和嵌入式系统本身的特点,其软件部分也是可裁减的。

对于功能简单仅包括应用程序的嵌入式系统一般不使用操作系统,仅有应用程序和设备驱动程序。

现代高性能嵌入式系统应用越来越广泛,操作系统使用成为必然发展趋势。

2.2.3 BootLoader

对于PC机,其开机后的初始化处理器配置、硬件初始化等操作是由BIOS(Basic Input /Output System)完成的,但对于嵌入式系统来说,出于经济性、价格方面考虑一般不配置BIOS,因此我们必须自行编写完成这些工作的程序。这就是所需要的开机程序,在嵌入式中称为BootLoader程序。

系统加电复位后,几乎所有的 CPU都从由复位地址上取指令。比如,基于 ARM7TDMI核的CPU在复位时通常都从地址 0x00000000取它的第一条指令。

而以处理器为核心的嵌入式系统通常都有某种类型的固态存储设备(比如EEPROM、FLASH等)被映射到这个预先设置好的地址上。因此在系统加电复位后,处理器将首先执行 Boot Loader 程序。BootLoader是系统加电后、操作系统内核或用户应用程序运行之前,首先必须运行的一段程序代码。通过这段程序,可以初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如S3C44B0),从而将系统的软硬件环境设定在一个合适的状态,以便为最终调用操作系统内核、运行用户应用程序准备好正确的环境。对于嵌入式系统来说,有的使用操作系统,也有的不使用操作系统,比如功能简单仅包括应用程序的系统,但在系统启动时都必须运行BootLoader,为系统运行准备好软硬件环境。系统启动代码完成基本软硬件环境初始化后,对于有操作系统的情况下,启动操作系统、启动内存管理、任务调度、加载驱动程序等,最后执行应用程序或等待用户命令;对于没有操作系统的系统直接执行应用程序或等待用户命令。BootLoader依赖于硬件和应用环境,因此为嵌入式系统建立一个通用、标准的BootLoader是有困难的。

系统的启动通常有两种方式:直接从Flash启动,将压缩的内存映像文件从Flash(为节省Flash资源、提高速度)中复制、解压到RAM,再从RAM启动。

当电源打开时,一般的系统会去执行ROM(应用较多的是Flash)里面的启动代码。这些代码是用汇编语言编写的,其主要作用在于初始化CPU和板上的必备硬件如内存、中断控制器等。

3 智能家居概述

本章主要讲述的是智能家居的研究背景和国内外研究现状。

3.1 研究背景

21世纪是信息技术高速发展的时代,社会的信息化唤起了人们对住宅智能化及家居智能化的要求,智能住宅己成为中国房地产市场的主流。计算机行业和家电行业、电信行业、安防监控行业的互相渗透、互相融合,使信息时代的未来家居生活逐步成为现实。建设部要求根据不同消费者的需要,推动家居数字化、建筑智能化,到2010年全国大中城市60%的住宅要实现智能化由此可见中国智能家居市场潜力巨大。

智能家居(Smart Home),又称智能住宅。通俗地说,是利用先进的计算机、嵌入式系统和网络通讯技术,将家庭中的各种设备(如照明系统、环境控制、安防系统、网络家电)通过家庭网络连接到一起。一方面,智能家居将让用户有更方便的手段来管理家庭设备,比如,通过无线遥控器、电话、互联网或者语音识别方式控制家用设备;另一方面,智能家居内的各种设备相互间可以通讯,不需要用户

控制也能根据不同的状态互动运行,从而给用户带来最大程度的高效、便利、舒适与安全。

与普通家居相比,智能家居不仅具有传统的居住功能,即提供舒适安全、高品位且宜人的家庭生活空间,还提供全方位的信息交互功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性。

3.2 国内外研究现状

3.2.1 国外研究现状

20世纪80年代初,随着大量采用电子技术的家用电器面市,开始出现了住宅电子化(HE,Home Electronics)的概念。80年代中期,将家用电器、通讯设备与安防设备的功能综合为一体,形成了家居自动化概念(HA,HomeAutomation) 。 80年代末,由于通信与信息技术的发展,出现了对住宅中各种通信、家电、安防设备通过总线技术进行连接、控制与管理的商用系统,这在美国称为智慧屋(WH,Wise Home),在欧洲称为时髦屋(SH,Smart Home)。当时日本正处于房产市场低迷时期,日本建设省在推进智能建筑概念时,抓住用于住宅总线技术的契机,提出了家庭总线系统概念(HBS,Home Bus System)。而随着技术的继续发展和生物识别技术的实用化普及,智能家居的概念才真正体现了其本意,在好莱坞科幻电影中看到的那种高度智能化的家居系统正在走进我们的生活。

日本松下公司正在把“数码家庭”的概念应用到养老院,养老院的所有房间都装有多种测量仪器、触摸式显示屏、数码摄像机等,并与局域网相连,这样每个居住者的体温、血压等多项数据可以传送到护理中心,实现远程医疗护理。美国麻省理工学院的实验室正在研究“智能房间”,通过生物传感器探测人的行为来自动控制和调节居住系统。日本大型住宅公司MISAWA HOME为解决购房者对房屋防盗系统的不满意,新近推出“保全住宅”该住宅内部采用指纹辩识门禁系统,另设有隐藏式防盗室,当遇到小偷闯入时屋主可躲进去紧急避难,防盗室设有两道厚重的门,其中内门只要从里面上锁后,外部无法靠人力打开。防盗室内装设电话专线,电话线埋在地下,另外还可在屋内放置一个机器人,亩以依歹徒恐吓的声音来反应,并出声求救,发挥报警求救功能。

3.2.2 国内研究现状

在我国,智能化住宅和智能化家居虽然起步比较晚,但发展速度很快。80年代,我国居住条件非常困难,根本谈不上智能化的问题。80年代初所建成的住宅,其电器设计内容仅在以下方面:楼房照明系统、高层供水泵控制系统和消防泵控制系统。用户电量的计量和收费,采用房管部门或住户轮流抄表收费的方式。生活用水的计量则主要是按户或按人口数收费。弱电系统也是从80年代开始才陆续设置电话配线和公用电视天线系统。80年代末90年代初,我国家庭基本实现电器

化,住宅内的弱电系统有所增加,如对讲系统等。到了90年代末,电脑、有线电视、机顶盒、移动通信等数字化通信产品开始走进家庭。

2000年9月7-8日,由信息产业部组织,在四川省绵阳市召开了国家经贸委2000年国家技术创新重点专项计划—“家庭信息化网络技术研究及产品开发”项目工作会议。2002年由建设部住宅产业化促进中心和中国建筑科学研究院主编的《居住区智能化系统配置与技术要求(审查稿)》己送审,等待批准。建设部住宅产业化促进中心正在牵头编制行业标准“居住区智能化产品应用技术要求”。 2002年建设部科学技术委员会智能建筑技术开发推广中心组织编制了《建设行业智能建筑试点项目住宅小区智能化系统工程验收评估标准》作为建设行业智能建筑试点项目住宅小区智能化系统工程验收评估标准。

西南交通大学科技公司开发了网络智能控制数据终端(Intelligent ControlNetwork Data Terminal,简称NDT)系统,是一个基于计算机网络的智能住宅控制系统,可以稳定运行在多种宽带网络平台上。它包括住宅楼宇防盗报警、贵重物品防盗报警、多重判断防误报功能、火灾报警、煤气泄露报警、紧急求助、防胁持秘密报警、小区电子公告、远程家用电器控制、电话自动报警功能、Internet电子短信、家用设备报警、水电气多表自动抄收等功能,通过计算机网络构成整个住宅小区的集中管理控制系统。

4 嵌入式Linux和嵌入式Linux开发环境

4.1 嵌入式Linux

什么是嵌入式Linux

嵌入式linux,是将日益流行的Linux操作系统进行裁剪修改使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Interlnet上无限的开放源代码资源 ,又具有嵌入式操作系统的特性 。

嵌入式Linux的特点是版权费:免费,购买费用:媒介成本, 技术支持:全世界的自由软件开发者,提供支持网络特性,免费而且性能优异,软件移植容易,代码开放,有许多应用软件支持应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能:RT_Linux,Hardhat,Linux等嵌入式Linux支持实时性能。稳定性:好。安全性:好。

嵌入式Linux有巨大的市场前景和商业机会,出现了大量的专业公司和产品,如Montavista,Lineo,Emi等。有行业协会,如Embedded Linux Consortum等,得到世界著名计算机公司和OEM板级厂商的支持,例如IBM,Motorola,Intel等传统的嵌入式系统厂商也采用了Linux策略如Lynxworks、Windriver、QNX等,还有Internet上的大量嵌入式Linux爱好者的支持。嵌入式Linux 支持几乎所有的嵌入式CPU和被移植到几乎所有的嵌入式OEM板 。

嵌入式Linux的应用领域非常广泛,主要的应用领域有:信息家电、PDA、

机顶盒、Digital Telephone、Answering Machine、Screen Phone、数据网络、Ethernet、Switches Router Bridge、Hub、Remote access servers、ATM、Frame relay、远程通信、医疗电子、交通运输、计算机外设、工业控制、航空航天领域等。

4.2 嵌入式Linux开发

图4.1 嵌入式Linux开发环境

图4.1是一个典型的嵌入式Linux开发环境:它包括主机、工作站或者PC,支持GDB的调试工具,BDI2000,目标板和网络,除了硬件环境外,还需要软件开发环境,有两种软件开发环境,一种是基于Linux的开发环境,另一种是基于Windows的开发环境。

基于Linux的开发环境包括主机上的Linux操作系统,比如RedHat Linux等嵌入式Linux交叉开发工具软件,比如HardHat Linux,支持GDB的调试工具的固件,比如BDIGDB Firmware for Linux。

基于Windows的开发环境包括主机上的Windows操作系统,比如Windows9x等。基于Windows的嵌入式Linux交叉开发工具软件,比如Insight Gnupro Xtools等,支持GDB的调试工具的固件,比如BDIGDB Firmware for Windows等。

图4.2 嵌入式linux开发流程

图4.2是嵌入式Linux开发流程图,一般的开发过程是:设计目标板,建立嵌入式Linux开发环境,编写、调试 Boot Loader,编写、调试 Linux 内核,编写、调试应用程序,编写、调试BSP Boot Loader用于初始化目标板,检测目标板和引导 Linux内核,BDM /JTAG用于目标板开发,它可以检测目标板硬件,初始化目标板,调试Boot Loader和BSP。有些BDM /JTAG比如BDI2000可以调试Linux内核源码。

在嵌入式Linux开发过程中,选择好的嵌入式Linux开发平台和BDM /JTAG调试工具可以极大地提高嵌入式Linux开发效率,嵌入式系统的特点是系统资源小,因此具体目标板的设备驱动程序:Device Driver需要定制,BDM /JTAG调试工具是开发Linux内核很好手段 BDM /JTAG调试工具利用CPU的BDM /JTAG接口,对运行程序监控,不占用系统的其它资源 。

为了缩短应用产品开发周期,可以选择同应用产品相近的嵌入式Linux软件开发平台和带嵌入式Linux软件的OEM板,它可以帮助用户在应用项目立项前,评估项目的可行性 在应用项目立项后,使软件开发和硬件开发同步进行,它能极大地缩短应用产品开发周期。

4.3 交叉开发环境

图4.3 嵌入式linux开发环境

宿主机(Host)是一台通用计算机(如PC机或者工作站),它通过串口或者以太网接口与目标机通信。宿主机的软硬件资源比较丰富,不但包括功能强大的操作系统(如Windows和Linux),而且还有各种各样优秀的开发工具,能够大大提高嵌入式应用软件的开发速度和效率。

目标机(Target)一般在嵌入式应用软件开发期间使用,用来区别与嵌入式系统通信的宿主机,它可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统,但软硬件资源通常都比较有限。嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器,其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。在采用宿主机/目标机模式开发嵌入式应用软件时,首先利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件,然后通过串口或者以网络将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试,最后目标机在特定环境下脱离宿主机单独运行。

建立交叉开发环境是进行嵌入式软件开发的第一步,目前常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链、目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境则主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler等。

4.4 交叉编译和链接

在完成嵌入式软件的编码之后,需要进行编译和链接以生成可执行代码,由于开发过程大多是在使用Intel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。

交叉编译器和交叉链接器是能够在宿主机上运行,并且能够生成在目标机上直接运行的二进制代码的编译器和链接器。例如在基于ARM体系结构的gcc交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器。通常情况下,并不是每一种体系结构的嵌入式微处理器都只对应于一种交叉编译器和交

叉链接器,比如对于M68K体系结构的gcc交叉开发环境而言,就对应于多种不同的编译器和链接器。如果使用的是COFF格式的可执行文件,那么在编译Linux内核时需要使用m68k-coff-gcc和m68k-coff-ld,而在编译应用程序时则需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。

嵌入式系统在链接过程中通常都要求使用较小的函数库,以便最后产生的可执行代码能够尽可能地小,因此实际运用时一般使用经过特殊处理的函数库。对于嵌入式Linux系统来讲,功能越来越强、体积越来越大的C语言函数库glibc和数学函数库libm已经很难满足实际的需要,因此需要采用它们的精化版本uClibc、uClibm和newlib等。

目前嵌入式的集成开发环境都支持交叉编译和交叉链接,如WindRiver Tornado和GNU工具链等,编写好的嵌入式软件经过交叉编译和交叉链接后通常会生成两种类型的可执行文件:用于调试的可执行文件和用于固化的可执行文件。

5 需求分析

在本章中,重点介绍用户需求、对用户需求的简单分析,通过分析,确定开发硬软件的基本结构,形成总体设计方案。

5.1 用户需求

系统需要完成的任务有:

接收和处理单片机发送过来的传感器信息;

处理传感器信息并通过短信发送给手机;

通过GSM接收和发送短信数据;

分析处理接收到的短信,得出相应操作信息发送给单片机并将操作反馈给手机;

在TFT-LCD上构建图形窗口,建立操作界面。

5.2 需求分析

本课题主要解决接收和发送短信并在TFT-LCD上显示。由于监控程序运行在嵌入式Linux下,这就涉及到Linux下与GSM模块通信问题。需要构建定位图形窗口,涉及到窗体应用程序的编写。

5.2.1 GSM信息接收处理

基本功能为初始化Linux串口配置,接收串口发送过来的信息,进行字符串分析处理,分离出当前信息,以备图形窗体程序使用。

5.2.2 处理信息及画面显示

基本功能包括实现直观的窗体界面,显示当前传感器状态值,显示接收到的短信,。

5.2.3 系统结构框图

根据上述分析,系统的硬件结构框图如图5.1所示:

图5.1 系统硬件结构框图

6 智能家居基本模块及解决方案

本章首先对智能家居系统的功能模块做了系统的分析,提取出四个最基本的功能模块,然后在比较国内外各种实现技术的优缺点的基础上,确定课题各模块的选型,最终提出一套自己的智能家居解决方案。

6.1 智能家居的基本功能模块

目前的智能家居行业,首先,处于一个初始发展时期,国际社会暂时还没有形成一个公认的标准;其次,智能家居的应用场所一家庭住宅或住宅小区,不同的实际环境也对智能家居提出了不同的要求与解决办法;此外,居民都希望能够对智能家居进行个性化配置,满足自身的特殊需求。这样的形势,致使开发商在实施智能家居时的方式、范围及侧重点也不尽相同。有些用户比较注重家电的智能控制,而有些用户可能更加关心家庭安全防范,还有些用户则希望建立相对全面的智能家居系统,满足多方面的需求。功能模块见下图。

图6.1 功能模块图

图6.1是根据课题充分分析现有的智能家居解决方案,结合自己的调查研究,从中提取出四个最为基本的功能模块:家庭对外通信模块、家庭网关模块、家庭安全防范模块、家庭设备自动控制模块,并在此基础上确定自己的智能家居解决方案。

传统的智能家居系统是为了满足住户方便性的要求,一般是为了实现家用电器的远程控制的目的,所以只包括“家庭对外通信模块”、“家庭网关模块”、“家庭自动控制模块”,随着近年来盗窃等现象的愈演愈烈,用户又提出了家庭安防的要求,而近年来通信、计算机、自动化等技术的不断发展使这种要求能够成为现实。所以课题的解决方案中考虑到了用户对家庭安防的需要,在传统模块划分的基础上增加了“家庭安防模块”。

下文结合国内外功能模块的实现方式,将对各模块做详细分析与评述,最终提出自己实现各个模块的技术路线。

6.2 家庭对外通信模块

智能家居的最终目的都是为“满足人们对舒适、方便、高效和符合绿色环境保护的需求”,其中“方便”要求家庭内部系统能够通过家庭对外接口,实现家庭外部的远程控制。家庭对外通信模块的作用在于此,它在智能家居系统中扮演着非常重要的角色。

具体来讲,该模块的功能是提供一个家庭内部与外部的通信链路,通信的内容是数据信息或指令信息,常用的通信媒介有电话、GSM短信、Internet等。

随着新技术的发展,家庭对外通信模块从功能和方式上得到了丰富:功能上,过去只是完成简单指令信息的单方传输,现在更多的是提供数据信息的通信,包括通信交流、商务、娱乐、教育、医疗保险等;方式上,从电话通信到Internet通信,再到GSM手机短信通信,越来越体现出通信方法的多样化和简便化。

本课题选择将GSM短信与Internet相结合的方式作为智能家居远程控制方式(这也正是本课题的特点之一),也就是将手机短信通过Internet发到能连网的家庭网关上,当然这需要用到一个中介:SP技术。

这种设计主要基于以下几点考虑:

(1) GSM短信不受环境限制,只要手机有信号的地方都可以随时随地发送,而且其成本低廉,所以应该充分利用;

(2) GSM短信控制方式,大多数设计者都是利用在家庭网关上插GPRS模块来实现家庭网关与手机之间的通信,这样做有两大缺点:一是增加GPRS模块就增加了系统的成本,二是对GPRS的驱动开发增大了开发的难度。

(3)近年来新出现的SP中介组织使短信在Internet上传输成为可能,而且它还提供方便的程序接口,帮助用户在能连网的PC机或嵌入式网关上获取短信内容,进而实现GSM短信的控制功能。同时,使用SP服务收费低、也免去了对

硬件的驱动开发。

6.3 家庭网关模块

家庭网络就是在家庭内部通过适当的组网技术把家庭网关(Residential Gateway,RG)与其他设备组成可以进行信息交换的内部网络,并通过家庭网关与外部网络相连,形成面向家庭的业务提供平台。在智能家居的实现过程中,家庭网关占据至关重要的位置。家庭网关是连接外部公网和家庭私网的关口,既负责家庭内部对公网的访问和交互,又负责用户从公网上对家庭网络的访问和控制,另外还要负责家庭内部设备的互连、互控等操作,因此,家庭网关成为智能家居研究的重点。

本课题是选择三星公司生产的S3C2410芯片作为嵌入式家庭网关,它的ARM内核是ARM920T。之所以选择该芯片是基于以下几点考虑;

(1)它带有MMU,支持Windows CE和大部分的Linux操作系统;

(2)它主频达到202MHZ,能够满足一般家庭网关数据传输的需要;

(3)它具有三通道的UART口,每个UART口都支持IrDAL0协议,为红外通信提供接口;

(4)它大约有上百个GPIO口可供用户使用,使多个家用电器的接入网关成为可能;

(5)它还有一个loom的以太网口,使家庭网关能够轻松接入Internet。

6.4 家庭安全防范模块

安全防范就是保障人们在生产、生活和一切社会活动中人身生命、财产和生产、生活设施不受侵犯,防止侵害行为的总称。智能家居在满足人们舒适、方便生活的同时,也要求为家庭提供安全防范方面的保障。它包含的内容有防止入侵、盗窃、破坏、爆炸等,它的原则是“以防为主,打防并举”,安全防范工作贯彻“人防、技防、物防”相结合的方针政策。因此,智能家居将家庭安全防范模块定义为其四个基本要素之一。课题将安全防范的内容分为两部分,分别是家庭内部环境安全、家庭对外非法入侵预防,这两方面都体现了现代技术在智能家居中的应用。

课题中,由于实验条件等的限制,并没有对安防模块进行实验。在此提出一套可行的安防方案,可供以后继续研究实践:

(1)住宅内部采用被动红外探测器、可燃气体探测器、温/湿度传感器;

(2)住宅外部可选择窗磁、门磁开关、红外探测器、玻璃破碎探测器、双鉴探测器等;

(3)住宅内外部的探测装置与报警控制器通过无线方式相连;

(4)报警控制器与中心控制器通过有线方式相连。

6.5 家庭设备自动控制模块

智能家居的初衷是解决家庭设备的自动控制问题,将更多的设备通过某种方式连接,达到统一、集中控制,为家庭生活带来方便。因此,现代智能家居的最基本的功能需求体现在家庭设备的自动控制,家庭设备自动控制模块也就成为其最基本的模块。

对不同的家庭设备,课题给出了不同的解决方案:

(1)对于电饭锅、电灯一类的开关量家庭设备,建议采用以继电器为核心的控制电路控制。具体方案为首先将继电器、二极管、三极管、限流电阻等连接成一个控制电路,然后将继电器的一个电源脚接到开发板的S3C2410芯片的一个GPIO引脚上,继电器的另一个引脚接VCC,这样,可以通过烧写在S3C2410中的程序,来控制GPH1输出高低电平,进而控制继电器的吸合、断开,然后由继电器来控制家用电器的开关。

(2)对于电视机、空调一类提供红外接口的家庭设备,通过统一的红外控制器控制;可行的方案是采用红外模块,红外模块可直接与S3C2410的UART口相连,这样由S3C2410中的程序来发送和接收红外数据。可能涉及到的程序有红外驱动程序、发送数据程序、接收数据程序等。

(3)对于信息家电,首先通过网络接口接入家庭以太网,如果信息家电支持家电生产厂商的远程服务,智能家居系统便可以减少对它的操作,如果不支持,则需要借助于信息家电提供的以太网交互命令,通过智能家居系统执行相关操作。 7 模拟实现硬件设计

本章主要介绍设计的智能家居系统方案中的硬件实现。硬件是该系统实现的基础,硬件测试是该方案是否可行的重要依据。本章是以典型的子模块为例阐述系统的整体硬件设计。首先对Embest EdukeitⅢ开发平台进行说明,由于该开发板资源丰富,内容复杂,只对实验中用到的S3 C2410的GPIO口和UART口进行阐述,其中重点阐述了GPIO口的专用寄存器GPnDAT, GPnCON, GPnUP和DART口的专用寄存器ULCONn, UCONn, UFCONn, UMCONn, UBRDIVn。然后阐述了系统硬件连接及测试的整个过程,由最基本的开发板连接、继电器模块、红外收发模块开始,直至将几个功能模块集合到一起,进行测试。

7.1 硬件选型

硬件选型是模拟实现的基础。目前的市场上,智能家居解决方案中主控系统有三种选择:(1)购置一台PC机专门用做家庭网关;(2)购置单片机,自己动手连接电路,开发家庭网关;(3)购置一款适合自己要求的嵌入式开发板做家庭网关。基于单片机的家庭网关,虽然成本低,但其控制执行的效率往往不能够满足客户需求。而嵌入式开发板不仅价格适中,而且执行效率也能满足广大家庭用户的需求。因此课题从实际情况出发,选择嵌入式开发板作为系统的控制中枢。ARM开发板是近几年来备受关注的热点,也是报着尝试和学习的态度,购买了北京博创的

Embest EdukeitⅢ(ARM9 )开发板,该开发板有着丰富的硬件资源和软件资源,同时有很多实验用例有利于二次开发者更好的理解、学习和应用。

智能插座方面,核心是采用了一个5V的电压继电器,该继电器不仅连接电路简单、易控制,同时成本低廉,经多方使用证明,该继电器适用于智能家居系统的具体实现。

红外控制方面,采用了一个USB口的红外适配器,出于成本考虑,并没有采用品牌的红外适配器,而是选用了市场上一个普通的红外适配器,这样更有利于开发通用的红外驱动,使开发成果更有广泛的应用空间。

另外,为了实现对红外适配器的控制,还配置了一个电视遥控器,该遥控器原为长虹电视遥控器,经过改造可以发出红外适配器能够接收并处理的信号。

以上硬件选型的共同原则是:稳定、操作方便、通用性强且成本低廉,前提都是能够满足模拟实现的基本要求。

7.2 硬件连接及测试

Embest EdukeitⅢ(ARM9 )开发板与PC机连接及测试

首先按照2410资料进行硬件连接。

(1)将5V电源线连到UP-NETARM2410开发板的电源接口;

(2)将串口线一端连接PC机的串口,另一端连接开发板的UARTO口;

(3)将开发板的网口插上网线,同时PC机的网口也插上网线。

其次在PC机上建立超级终端:

(1)运行WindowsXP下的开始一程序一附件一通讯*超级终端(HyperTerminal ) ;

(2)初次建立超级终端,出现询问“是否将HyperTerminal作为默认telnet程序?”,选择“否”;

(3)要求输入区号、电话号码等信息,随意输入字母或数字;

(4)出现如图4-8所示对话框,为所建超级终端取名为arm,为其选择第一个图标,单击“确定”按钮。

(5)在接下来的对话框中选择ARM开发平台实际莲接的PC机串口(COMl),按

确定后出现如图4-9所示的属性对话框,设置通信的格式和协议。波特率设为115200,数据位为8,无奇偶校验,停止位1,无数据流控制,按确定完成设置。

图7.1创建超级终端

图7.2设置串行口

然后将新建的超级终端保存在桌面上,以方便日后使用。现在在超级终端上可以看到开发板相关的输出信息了,这就说明PC机和开发板硬件连接正确,并且超级终端设置正确。

最后启动开发板。打开超级终端,打开开发板的电源开关,超级终端显示启动信息如下图所示:

图7.3连接超级终端

8 嵌入式系统平台的建立

本章介绍了在进行嵌入式系统应用开发前必需的几个步骤:嵌入式系统交叉编译环境的建立、嵌入式Linux的移植。裁剪、交叉编译Linux 2.6.14版本的内核,并或者做可读写的YAFFS2文件系统。

8.1 嵌入式系统交叉编译环境的建立

嵌入式系统开发平台是开发应用程序的基础,在运行应用程序前,首先要建立交叉编译环境,然后才能进行嵌入式操作系统的移植和应用开发等工作。

交叉编译是嵌入式开发过程中的一个重要步骤,主要特征是某机器中执行的程序代码不是在本机编译生成,而是由另一台机器编译生成。采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到PC中进行。当前交叉编译器有多种版本,本设计中使用

2.95.3和3.4.4,分别用编译Bootloader和Linux内核及应用程序,采用网上下载的交叉工具链,解压后安装即可。主机使用Fedora 7 Linux操作系统,为了可以方便的使用arm-linux交叉编译器系统,把arm-linux工具链目录加入到环境变量PATH中,如图3-1所示修改/etc/profile文件,增加部分为修改地方。

#Path manipulation

if["$EUID" = "0"];then

pathmunge /sbin

pathmunge /usr/sbin

pathmunge /usr/local/sbin

pathmunge /usr/loval/arm/3.4.4/bin //增加部分

fi

8.2 嵌入式Linux移植

8.2.1 Linux移植流程

Linux现在己经广泛应用于嵌入式平台,因此对Linux移植过程的研究已经较多,比较成熟。所以本文不对其中涉及的理论做过多描述,仅仅对其移植过程中的关键部分作描述。移植的过程分为Bootloader移植、Linux内核及设备驱动移植、文件系统制作。本系统采用2.6.14版内核。

8.2.2 Bootloader移植

选用vivi作为本系统的Bootloader, vivi是韩国mizi公司开发的Bootloader,适用于ARM9处理器,支持S3C2410A处理器,源代码可以在其公司网站上下载。和所有的Bootloader一样,vivi有两种工作模式,即启动加载模式和下载模式。启动加载模式可以在一段时间后(这个时间可更改)自行启动内核,这是vivi的默认模式。在下载模式下,vivi为用户提供一个命令行接口,通过接口可以使用提供的一些命令。

为了使移植工作更加快捷,系统采用vivi-20030929版本。它不仅提供对 ARM920T内核的支持,而且直接提供了对于S3C2410A的板级支持,这使移植工

作量相对减少,移植步骤如下:

1)与硬件相关的修改

具体与处理器平台相关的文件都存放在vivi/arch目录下,本系统使用

S3C2410A处理器,对应的目录为S3C2410。其中文件head.s是vivi启动配置代码,加电复位运行的代码就是从这里开始的。由于该文件中对处理器的配置均通过调用外部定义常数或宏来实现,所以针对不同的平台,只要是S3C2410A处理器,几乎不用修改,只要修改外部定义的初始值即可。这部分初始值都在文件vivi/include/platform/smdk2410.h中定义,包括处理器时钟、存储器初始化、通用1/0口初始化以及vivi初始配置等。

2)对NAND Flash启动的修改

本设计中启动程序以及Linux内核及根文件系统,包括图形用户界面等都存放在64M的NAND Flash中。这样,作为启动程序vivi的还需要根据实际情况来修改存放这些代码的分区。分区指定的偏移地址就是代码应该存放并执行的地址。 移植vivi的最后一步是实现Flash驱动,需要根据系统中具体的Flash芯片的型号及配置,修改驱动程序,使Flash设备能够在嵌入式系统中正常工作。 修改Flash驱动的关键一步是对文件Flash.c的修改。Flash.c是读、写和删除设备的

源代码文件。由于不同开发板中Flash存储器的种类各不相同,所以修改时需参考相应的芯片手册。

当做好上述的移植工作后,就能对vivi进行编译了。在编译vivi之前,需要根据开发板进行适当的配置。保存并退出后,执行make命令开始编译,把编译好的vivi烧到NAND Flash中。进入vivi后,在串口终端输入命令:

bon part 0 192k 1216k

把整个Flash分为四个区,其中0-192k存放vivi及参数,192k-1216k存放Linux内核,1216k到最后是存放文件系统。

8.2.3 Linux内核移植

(1)修改Makefile

在内核根目录下找到ARCH和CROSS_OMPILE,修改以下内容:

ARCH=arm

CROSS_COMPILE=arm-linux-

(2)将分区信息加入内核

修改/arch/arm/mach-S3C2410A/devs.c文件

添加头文件:

#include

#include

#include

添加分区结构:

static struct mtd_partition partition info[]={

{

name:"vivi",

size:000020000,

offset:0x00000000,

},

{

name: "param",

size: 0x00010000,

offset: 0x00020000,

},

{

name: "kernel",

size: 0x00100000,

offset: 0x00030000,

),

{

name: "root",

size: OX03eC0000,

offset: 0x00130000,

}

};

其中,

name:分区名字,任意;

size:分区大小;

offset:分区的起始地址,相对于0x0的偏移。

加入Nand Flash分区,

struct S3C2410A_nand_set nandset={

nr_partitions: 4,

partitions: partition info,

};

其中,

nr_partitions:指明partition_info中定义的分区数目;

partitions:分区信息表。

3)建立Nand Flash芯片支持

在/arch/arm/mach-S3 C2410A/devs.c文件中增加:

struct S3C2410A_platform_nand superlpplatform={

tacls:0,

twrph0:30,

twrph 1:0,

sets:&nandset,

nr_sets:l,

};

其中,

tacls,twrph0,twrphl根据S3C2410A数据手册查到,这3个值最后会被设置到NFCONF中;

sets:支持的分区集;

nr_set:分区集的个数。

(4)修改s3c_device_nand结构体变量,添加对dev成员的赋值

struct platforms_device s3c_device_nand={

name="S3C2410A-monitor"

id=-1,

num_resources = ARRAYee SIZE(s3c_nand_resource),

resource = s3c_nand_resource,

dev={

platform_data=&superlpplatform

智能家居远程监控系统毕业论文

基于ARM9的智能家居远程监控系统的设计与实现

摘要

目 录

1 绪论 ...................................................................................................................... - 6 -

1.1 目的与意义 .................................................................................................. - 6 -

1.2 研发背景 ...................................................................................................... - 6 -

1.2.1 ARM介绍 ....................................................................................... - 6 -

1.2.2 嵌入式Linux介绍 .......................................................................... - 7 -

1.2.3 GSM介绍 ........................................................................................ - 8 -

2 嵌入式系统开发概述 .......................................................................................... - 9 -

2.1 嵌入式系统的特点 .................................................................................... - 9 -

2.1.1 嵌入式系统通常是面向特定任务的 .............................................. - 9 -

2.1.2 嵌入式系统运行环境差异很大 ...................................................... - 9 -

2.1.3 嵌入式系统比通用PC系统资源少得多 ..................................... - 10 -

2.1.4 低功耗、体积小、集成度高、成本低 ........................................ - 10 -

2.1.5 高效、可靠、稳定 ........................................................................ - 11 -

2.1.6 具有较长的生命周期 .................................................................... - 11 -

2.1.7 目标代码通常是固化在非易失性储器中 .................................... - 11 -

2.1.8 一般是实时操作系统(RTOS),系统有实时约束 .................. - 11 -

2.1.9 嵌入式软件开发走向标准化 ........................................................ - 11 -

2.1.10 需要专用开发工具和方法进行设计 .......................................... - 11 -

2.1.11 嵌入式微处理器通常包含专用调试电路 .................................. - 12 -

2.2 嵌入式系统的组成结构 .......................................................................... - 12 -

2.2.1 硬件基本结构 ................................................................................ - 12 -

2.2.2 软件的层次结构 ............................................................................ - 13 -

3 智能家居概述 .................................................................................................... - 14 -

3.1 研究背景 .................................................................................................... - 14 -

3.2 国内外研究现状 ........................................................................................ - 15 -

3.2.1 国外研究现状 .................................................................................. - 15 -

3.2.2 国内研究现状 .................................................................................. - 15 -

4 嵌入式Linux和嵌入式Linux开发环境 ........................................................ - 16 -

4.1 嵌入式Linux ............................................................................................. - 16 -

4.2 嵌入式Linux开发 .................................................................................... - 17 -

4.3 交叉开发环境 ............................................................................................ - 19 -

4.4 交叉编译和链接 ........................................................................................ - 19 - 5 需求分析 ............................................................................................................ - 20 -

5.1 用户需求 .................................................................................................. - 20 -

5.2 需求分析 .................................................................................................. - 20 - 6 智能家居基本模块及解决方案 ........................................................................ - 21 -

6.1 智能家居的基本功能模块 ........................................................................ - 21 -

6.2 家庭对外通信模块 .................................................................................... - 22 -

6.3 家庭网关模块 ............................................................................................ - 23 -

6.4 家庭安全防范模块 .................................................................................... - 23 -

6.5 家庭设备自动控制模块 ............................................................................ - 23 -

7 模拟实现硬件设计 ........................................................................................................ - 24 -

7.1 硬件选型 .................................................................................................... - 24 -

7.2 硬件连接及测试 ........................................................................................ - 25 - 8 嵌入式系统平台的建立 ............................................................................................... - 27 -

8.1 嵌入式系统交叉编译环境的建立 ............................................................ - 27 -

8.2 嵌入式Linux移植 .................................................................................... - 28 -

8.2.1 Linux移植流程 ................................................................................ - 28 -

8.2.2 Bootloader移植 ................................................................................ - 28 -

8.2.3 Linux内核移植 ................................................................................ - 29 -

8.2.4 YAFFS2文件系统制作 .................................................................... - 32 -

9 模拟实现软件设计 ............................................................................................ - 32 -

9.1 获取短信内容模块 .................................................................................... - 33 -

9.1.1 接收短信模块 .................................................................................. - 33 -

9.1.2提取短信内容模块 ........................................................................... - 38 -

结 论 ...................................................................................................................... - 41 - 致 谢 ...................................................................................................................... - 42 - 参 考 文 献 ............................................................................................................ - 43 -

1 绪论

当网络席卷整个社会,带来经济飞速发展的同时,也给人们的生活带来无限的惊奇。不断更新的生活方式,使得越来越多的人追求对生活的舒适度和享受度。智能家居作为新生力量呼之欲出,自然地走进了我们的生活,随之,引领新一代的数字家庭生活。

目前,智能家居在全球都呈现良好的发展趋势。国外,智能家居在美国、德国、新加坡、日本等国都有广泛应用。目前在新加坡也有近30个住宅小区近5000户的家庭采用了“家庭智能化系统”,美国已有近4万户家庭安装了这一类的“家庭智能系统”。三星已经开始在中、韩两国同时推出起智能家居系统。统计资料显示:2004年,家庭网络市场总额可达57亿美元,国际智能家居的产品销售额可达148亿美元。在国内,智能家居已经走过了“概念期”,正是基于对智能家居市场发展前景的展望,使得智能家居不断地纳入各研发单位、房产开发公司、网络公司下期的开发计划,也是竞相销售的卖点。他们正是基于对这个难得机遇的意识,开始为研究和开发相关系统和产品进行先期的部署和规划,越来越多的企业开始介入智能家庭网络这个全新的领域。

1.1 目的与意义

本课题是基于ARM9的智能家居监控模块开发与实现,我们采用ARM9 内核的S3C2410处理器为控制芯片,再将Linux系统移植到硬件平台上,然后设计好相应的驱动程序和应用程序,最后将软件下载到硬件平台来对家电进行本地和远程控制。系统主要有GSM通讯模块和ARM9系统板两个部分组成。而系统软件主要完成各个模块之间交互通信的功能。

智能家居与普通家居相比,它不仅具有传统的居住功能,提供舒适安全、高品位且宜人的家庭生活空间,还由原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交换功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用节约资金。

智能家居是数字家庭的一部分,只有将智能控制和上网功能集成起来,才形成真正意义上的数字家庭。数字家庭涉及的领域将综合生活中的娱乐、工作、投资理财、学习、医疗、教育等,是实现家庭内部、家庭和社会的实时性沟通的综合系统。数字家庭伴随着无线而产生,也使无线技术得到了充分的应用和体现。

1.2 研发背景

下文将简单介绍一下本系统的研发背景及相关系统的情况。

1.2.1 ARM介绍

ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得 ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。

1.2.2 嵌入式Linux介绍

Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一;可运行在X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM等多种硬件平台,而且开放源代码,可以定制;可与各种传统的商业操作系统分庭抗争。越来越多的企业和研发机构都转向嵌入式Linux的开发和研究上,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式Linux的特点:

第一,Linux系统是层次结构且内核完全开放。Linux是由很多体积小且性能高的微内核系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要方便地对内核进行改造,低成本地设计和开发出满足自己需要的嵌入式系统。

第二,强大的网络支持功能。Linux诞生于因特网时代并具有Unix的特性,保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。 此外,Linux还支持ext2、fat16、fat32、romfs等文件系统,为开发嵌入式系统应用打下了很好的基础。

第三,Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。Linux也符合IEEE POSIX.1标准,使应用程序具有较好的可移植性。传统的嵌入式开发的程序调试和调试工具是用在线仿真器(ICE)实现的。它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,完成监视和调试程序;但一般价格比较昂贵,只适合做非常底层的调试。使用嵌入式Linux,一旦软硬件能够支持正常的串口功能,即使不用仿真器,也可以很好地进行开发和调试工作,从而节省一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(tool chain)。它利用GNU的gcc做编译器,用gdb、kgdb、xgdb做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。

第四,Linux具有广泛的硬件支持特性。无论是RISC还是CISC、32位还是

64位等各种处理器,Linux都能运行。Linux通常使用的微处理器是Intel X86芯片家族,但它同样能运行于Motorola公司的68K系列CPU和IBM、Apple、Motorola公司的PowerPC CPU以及Intel公司的StrongARM CPU等处理器。Linux支持各种主流硬件设备和最新硬件技术,甚至可以在没有存储管理单元(MMU)的处理器上运行。这意味着嵌入式Linux将具有更广泛的应用前景。

1.2.3 GSM介绍

GSM全名为:Global System for Mobile Communications,中文为全球移动通讯系统,俗称"全球通",是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。我国于20世纪90年代初引进采用此项技术标准,此前一直是采用蜂窝模拟移动技术,即第一代GSM技术(2001年12月31日我国关闭了模拟移动网络)。目前,中国移动、中国联通各拥有一个GSM网,为世界最大的移动通信网络。GSM系统包括 GSM 900:900MHz、GSM1800:1800MHz 及 GSM1900:1900MHz等几个频段 。GSM(全球移动通信系统)是一种广泛应用于欧洲及世界其他地方的数字移动电话系统。GSM使用的是时分多址的变体,并且它是目前三种数字无线电话技术(TDMA、GSM和CDMA)中使用最为广泛的一种。GSM将资料数字化,并将数据进行压缩,然后与其它的两个用户数据流一起从信道发送出去,另外的两个用户数据流都有各自的时隙。GSM实际上是欧洲的无线电话标准,据GSM MoU联合委员会报道,GSM在全球有12亿的用户,并且用户遍布120多个国家。因为许多GSM网络操作员与其他国外操作员有漫游协议,因此当用户到其他国家之后,仍然可以继续使用他们的移动电话。

美国著名通信公司Sprint的一个辅助部门,美国个人通信正在使用GSM作为一种宽带个人通信服务的技术。这种个人通信服务将最终为爱立信、摩托罗拉以及诺基亚现在正在生产的手持机建立400多个基站。手持机包括电话、短信寻呼机和对讲机。

GSM及其他技术是无限移动通信的演进,无线移动通信包括高速电路交换数据、通用无线分组系统、基于GSM网络的数据增强型移动通信技术以及通用移动通信服务。

(1).GSM使用上直观的特点:

GSM系统有几项重要特点:防盗拷能力佳、网络容量大、手机号码资源丰富、通话清晰、稳定性强不易受干扰、信息灵敏、通话死角少、手机耗电量低。

(2).GSM的技术特点:

 频谱效率。由于采用了高效调制器、信道编码、交织、均衡和语音编

码技术,使系统具有高频谱效率。

 容量。由于每个信道传输带宽增加,使同频复用栽干比要求降低至9dB,

故GSM系统的同频复用模式可以缩小到4/12或3/9甚至更小(模拟系统

为7/21);加上半速率话音编码的引入和自动话务分配以减少越区切换的

次数,使GSM系统的容量效率(每兆赫每小区的信道数)比TACS系统

高3~5倍。

 话音质量。鉴于数字传输技术的特点以及GSM规范中有关空中接口和话

音编码的定义,在门限值以上时,话音质量总是达到相同的水平而与无

线传输质量无关。

 开放的接口。GSM标准所提供的开放性接口,不仅限于空中接口,而且

报刊网络直接以及网络中个设备实体之间,例如A接口和Abis接口。

 安全性。通过鉴权、加密和TMSI号码的使用,达到安全的目的。鉴权用

来验证用户的入网权利。加密用于空中接口,由SIM卡和网络AUC的

密钥决定。TMSI是一个由业务网络给用户指定的临时识别号,以防止有

人跟踪而泄漏其地理位置。

 与ISDN、PSTN等的互连。与其他网络的互连通常利用现有的接口,如

ISUP或TUP等。

 在SIM卡基础上实现漫游。漫游是移动通信的重要特征,它标志着用户

可以从一个网络自动进入另一个网络。GSM系统可以提供全球漫游,当

然也需要网络运营者之间的某些协议,例如计费。

2 嵌入式系统开发概述

本章主要描述嵌入式系统的特点及相关开发技术。

2.1 嵌入式系统的特点

由于嵌入式系统是应用于特定环境下,针对特定用途来设计的系统,所以不同于通用计算机系统。同样是计算机系统,嵌入式系统是针对具体应用设计的“专用系统”。它的硬件和软件都必须高效率地设计、“量体裁衣”、去除冗余,力争在较少的资源上实现更高的性能。它与通用的计算机系统相比具有以下显著特点:

2.1.1 嵌入式系统通常是面向特定任务的

嵌入式系统通常是面向特定任务的,而不同于一般通用PC计算平台,是“专用”的计算机系统。嵌入式系统微处理器大多非常适合于工作在为特定用户群所设计的系统中,称为“专用微处理器”,它专用于某个特定的任务,或者是很少几个任务。

具体的应用需求决定着嵌入式处理器的性能选型和整个系统的设计。如果要更改其任务,就可能要废弃整个系统并重新进行设计。

2.1.2 嵌入式系统运行环境差异很大

嵌入式系统无所不在,但运行环境也差异很大,可运行在飞机上、冰天雪地的两极中、骄阳似火下的汽车里、要求温湿度恒定的科学实验室等。特别是在恶

劣的环境或突然断电的情况下,要求系统仍然能够正常工作。

这些情况对设计人员来说意味着要同时考虑到硬件与软件。“严酷的环境”一般意味着更高的温度与湿度。军用设备标准对嵌入式元器件的要求非常严格并且在价格上和商用、民用差别很大。比如英特尔公司的8086,当它用在火箭上时,单价竟高达几百美元。

2.1.3 嵌入式系统比通用PC系统资源少得多

通用PC系统有数不胜数的系统资源,可以轻松完成各种工作。你可以在自己的PC机上编写程序的同时播放MP3、CD、下载资料等等。因为个人PC拥有512MB内存、80GB硬盘空间并且在SCSI卡上连接着软驱和CD-ROM驱动器已是目前非常普遍的配置了。而控制GPS接收机的嵌入式系统,由于是专门用来执行很少的几个确定任务,它所能管理的资源比通用PC系统少得多。当然这主要是因为在设计时考虑到经济性,不能使用通用CPU。这就意味着所选用的CPU只能管理很少的资源,它的成本更低、结构更简单。

2.1.4 低功耗、体积小、集成度高、成本低

嵌入式系统“嵌入”到对象的体系中,对对象、环境和嵌入式系统自身具有严格的要求,一般的嵌入式系统具有低功耗、体积小、集成度高、成本低等特点;

通用PC有足够大的内部空间提供良好的通风能力,但是系统中的奔腾或AMD处理器均配备庞大的散热片和冷却风扇进行系统散热。 而许多嵌入式系统就没有如此充足的电能供应,尤其是便携式嵌入式设备,即便是有足够的电源供应,散热设备的增加也往往是不方便的。因此嵌入式系统设计时应尽可能的降低功耗。整个系统设计有严格的功耗预算,系统中的处理器大部分时间必须工作在降低功耗的“睡眠模式”下,只有在需要任务处理时它才会“醒来”。软件必须围绕这种特性进行设计。因此一般的外部事件通过中断“驱动”、“唤醒”系统工作。功耗约束影响了系统设计决策的方方面面,包括处理器的选择、内存体系结构的设计等。系统要求的功耗约束很有可能决定软件是用汇编语言编写,还是用C或C++语言编写,这是由于必须在功耗预算内使系统达到最高性能。功耗需求由CPU时钟速度以及使用的其他部件(RAM,ROM,I/O设备等)的数量决定。因此,从软件设计人员的观点看来,功耗约束可能成为压倒性的系统约束,它决定了软件工具的选择、内存的大小和性能的高低。

能够把通用CPU中许多由板卡完成的任务集成在高度集成的SoC系统芯片内部,而不是微处理器与分立外设的组合,就能节省许多印制电路板、连接器等,使系统的体积、功耗、成本大大降低,也能提高移动性和便携性,从而使嵌入式系统的设计趋于小型化、专业化。

嵌入式系统的硬件和软件都必须高效率地设计,在在保证稳定、安全、可靠的基础上量体裁衣,去除冗余,力争用较少的软硬件资源实现较高的性能。这样,才能最大限度地降低应用成本,从而在具体应用中更具有市场竞争力。

2.1.5 高效、可靠、稳定

建立完整的嵌入式系统的系统测试和可靠性评估体系,保证嵌入式系统高效、可靠、稳定工作;嵌入式应用的复杂性、繁杂性要求设计的代码应该是完全没有错误的,怎样才能科学、完整的测试全天候运行的嵌入式复杂软件呢?首先,需要有科学的测试方法,建立科学的系统测试和可靠性评估体系,尽可能避免因为系统的不可靠造成巨大损失。其次,引入多种嵌入式系统测试方法和可靠性评估体系。在大多数嵌入式系统中一般都包括一些机制,比如看门狗定时器,它在软件失去控制后能使之重新开始正常运行。总之,嵌入式软件测试和评估体系是非常复杂的一门学科。

2.1.6 具有较长的生命周期

嵌入式系统是和实际具体应用有机结合的产物,它的升级换代也是和具体产品同步进行的。因此,一旦定性进入市场,一般具有较长的生命周期。

2.1.7 目标代码通常是固化在非易失性储器中

嵌入式系统的目标代码通常是固化在非易失性储器(ROM/EPROM/EPROM/FLASH)中;

嵌入式系统开机后,必须有代码对系统进行初始化,以便其余的代码能够正常运行,这就是建立运行时的环境,比如初始化RAM放置变量、测试内存的完整性、测试ROM完整性以及其他初始化任务。为了系统的初始化,几乎所有的系统都要在非易失性存储器(现在普遍使用Flash)中存放部分代码(启动代码)。为了提高执行速度和系统可靠性,大多数嵌入式系统也常常把所有的代码(也常常使用所有代码的压缩代码)固化、存放在存储器芯片或处理器的内部存储器件中,不使用外部的磁盘等存储介质。

2.1.8 一般是实时操作系统(RTOS),系统有实时约束

嵌入式系统往往对时间的要求非常严格,嵌入式操作系统一般是RTOS。嵌入式实时操作系统随时都要对正在运行的任务授予最高优先级。嵌入式任务是时间关键性约束,它必须在某个时间范围内完成,否则由其控制的功能就会失效。比如控制飞行器稳定飞行的控制系统如果因反馈速度不够,其控制算法就可能会失效,飞行器在空中飞行会出问题。

2.1.9 嵌入式软件开发走向标准化

嵌入式系统的应用程序可以没有操作系统直接在芯片上运行。为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS(Real-Time Operating System)开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。

2.1.10 需要专用开发工具和方法进行设计

从调试的观点看,代码在ROM中意味着调试器不能在ROM中设置断点。要设置断点,调试器必须能够用特殊指令取代用户指令,嵌入式调试己经发展出

支持嵌入式系统开发过程的专用工具套件。

2.1.11 嵌入式微处理器通常包含专用调试电路

嵌入式系统一般是专用系统,而PC是通用计算平台

嵌入式系统的资源比PC少得多

嵌入式系统软件故障带来的后果比PC机大得多

嵌入式系统一般采用实时操作系统

嵌入式系统大都有成本、功耗的要求

嵌入式系统得到多种微处理体系的支持

嵌入式系统需要专用的开发工具

2.2 嵌入式系统的组成结构

嵌入式系统的硬件是嵌入式系统软件环境运行的基础,它提供了嵌入式系统软件运行的物理平台和通信接口;嵌入式操作系统和嵌入式应用软件则是整个系统的控制核心,控制整个系统运行、提供人机交互的信息等。由于嵌入式系统和实际应用对象密切相关,而实际应用非常繁杂,应用也日新月异,很难用一种构架或模型加以描述。

2.2.1 硬件基本结构

嵌入式系统的硬件架构如图2-1下半部分所示,是以嵌入式处理器为中心,配置存储器、I/O设备、通信模块以及电源等必要的辅助接口组成。

图2.1 典型的嵌入式系统组成 实时操作系统(RTOS) 输入输出接口SRAM 处理器/ARM核 门人机交互接口LCD/触摸屏、键盘、

嵌入式系统是“量身定做”的“专用计算机应用系统”,又不同于普通计算机组成,在实际应用中的嵌入式系统硬件配置非常精简,除了微处理器和基本的外围电路以外,其余的电路都可以根据需要和成本进行“裁剪”、“定制化”(Customize),非常经济、可靠。

嵌入式系统硬件核心是嵌入式微处理器,有时为了提高系统的信息处理能力,常常外接DSP和DSP协处理器(也可内部集成)完成高性能信号处理。

随着计算机技术、微电子技术、应用技术的不断发展和纳米芯片加工工艺技术的发展,以微处理器为核心的集成多种功能的SoC系统芯片已成为嵌入式系统的核心,在嵌入式系统设计中,要尽可能的选择能满足系统功能接口的SoC芯片,这些SoC集成了大量的外围USB、UART、以太网、AD/DA、IIS等功能模块。

可编程片上系统SOPC( System On Programmable Chip ) 结合了SoC和PLD、FPGA各自的技术优点,使得系统具有可编程的功能,是可编程逻辑器件在嵌入式应用中的完美体现,极大的提高了系统的在线升级、换代能力。•

以SoC/SOPC为核心,可以用最少的外围部件和连接部件构成一个应用系统,满足系统的功能需求,也是嵌入式系统发展的一个方向

因此现代嵌入式设计是以处理器/SoC/SOPC为核心,完成系统设计的,其外围接口包括存储设备、通信接口设备、扩展设备接口和辅助的机电设备(电源、连接器、传感器等)构成硬件系统。对于嵌入式硬件的各个模块将在第三部分作全面介绍。

2.2.2 软件的层次结构

当设计一个简单的应用程序时,可以不使用操作系统;但是当设计较复杂的程序时,可能就需要一个操作系统(OS)来管理、控制内存、多任务、周边资源等等。依据系统所提供的程序界面来编写应用程序,可以大大的减少应用程序员的负担。

对于使用操作系统的嵌入式系统来说,嵌入式系统软件结构一般包含四个层面:设备驱动层、实时操作系统(RTOS)、应用程序接口(API)层、实际应用程序层。

有些资料将应用程序接口API归属于OS层,如图1-1的上半部分所示的嵌入式系统的软件结构,是按三层划分的。由于硬件电路的可裁减性和嵌入式系统本身的特点,其软件部分也是可裁减的。

对于功能简单仅包括应用程序的嵌入式系统一般不使用操作系统,仅有应用程序和设备驱动程序。

现代高性能嵌入式系统应用越来越广泛,操作系统使用成为必然发展趋势。

2.2.3 BootLoader

对于PC机,其开机后的初始化处理器配置、硬件初始化等操作是由BIOS(Basic Input /Output System)完成的,但对于嵌入式系统来说,出于经济性、价格方面考虑一般不配置BIOS,因此我们必须自行编写完成这些工作的程序。这就是所需要的开机程序,在嵌入式中称为BootLoader程序。

系统加电复位后,几乎所有的 CPU都从由复位地址上取指令。比如,基于 ARM7TDMI核的CPU在复位时通常都从地址 0x00000000取它的第一条指令。

而以处理器为核心的嵌入式系统通常都有某种类型的固态存储设备(比如EEPROM、FLASH等)被映射到这个预先设置好的地址上。因此在系统加电复位后,处理器将首先执行 Boot Loader 程序。BootLoader是系统加电后、操作系统内核或用户应用程序运行之前,首先必须运行的一段程序代码。通过这段程序,可以初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如S3C44B0),从而将系统的软硬件环境设定在一个合适的状态,以便为最终调用操作系统内核、运行用户应用程序准备好正确的环境。对于嵌入式系统来说,有的使用操作系统,也有的不使用操作系统,比如功能简单仅包括应用程序的系统,但在系统启动时都必须运行BootLoader,为系统运行准备好软硬件环境。系统启动代码完成基本软硬件环境初始化后,对于有操作系统的情况下,启动操作系统、启动内存管理、任务调度、加载驱动程序等,最后执行应用程序或等待用户命令;对于没有操作系统的系统直接执行应用程序或等待用户命令。BootLoader依赖于硬件和应用环境,因此为嵌入式系统建立一个通用、标准的BootLoader是有困难的。

系统的启动通常有两种方式:直接从Flash启动,将压缩的内存映像文件从Flash(为节省Flash资源、提高速度)中复制、解压到RAM,再从RAM启动。

当电源打开时,一般的系统会去执行ROM(应用较多的是Flash)里面的启动代码。这些代码是用汇编语言编写的,其主要作用在于初始化CPU和板上的必备硬件如内存、中断控制器等。

3 智能家居概述

本章主要讲述的是智能家居的研究背景和国内外研究现状。

3.1 研究背景

21世纪是信息技术高速发展的时代,社会的信息化唤起了人们对住宅智能化及家居智能化的要求,智能住宅己成为中国房地产市场的主流。计算机行业和家电行业、电信行业、安防监控行业的互相渗透、互相融合,使信息时代的未来家居生活逐步成为现实。建设部要求根据不同消费者的需要,推动家居数字化、建筑智能化,到2010年全国大中城市60%的住宅要实现智能化由此可见中国智能家居市场潜力巨大。

智能家居(Smart Home),又称智能住宅。通俗地说,是利用先进的计算机、嵌入式系统和网络通讯技术,将家庭中的各种设备(如照明系统、环境控制、安防系统、网络家电)通过家庭网络连接到一起。一方面,智能家居将让用户有更方便的手段来管理家庭设备,比如,通过无线遥控器、电话、互联网或者语音识别方式控制家用设备;另一方面,智能家居内的各种设备相互间可以通讯,不需要用户

控制也能根据不同的状态互动运行,从而给用户带来最大程度的高效、便利、舒适与安全。

与普通家居相比,智能家居不仅具有传统的居住功能,即提供舒适安全、高品位且宜人的家庭生活空间,还提供全方位的信息交互功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性。

3.2 国内外研究现状

3.2.1 国外研究现状

20世纪80年代初,随着大量采用电子技术的家用电器面市,开始出现了住宅电子化(HE,Home Electronics)的概念。80年代中期,将家用电器、通讯设备与安防设备的功能综合为一体,形成了家居自动化概念(HA,HomeAutomation) 。 80年代末,由于通信与信息技术的发展,出现了对住宅中各种通信、家电、安防设备通过总线技术进行连接、控制与管理的商用系统,这在美国称为智慧屋(WH,Wise Home),在欧洲称为时髦屋(SH,Smart Home)。当时日本正处于房产市场低迷时期,日本建设省在推进智能建筑概念时,抓住用于住宅总线技术的契机,提出了家庭总线系统概念(HBS,Home Bus System)。而随着技术的继续发展和生物识别技术的实用化普及,智能家居的概念才真正体现了其本意,在好莱坞科幻电影中看到的那种高度智能化的家居系统正在走进我们的生活。

日本松下公司正在把“数码家庭”的概念应用到养老院,养老院的所有房间都装有多种测量仪器、触摸式显示屏、数码摄像机等,并与局域网相连,这样每个居住者的体温、血压等多项数据可以传送到护理中心,实现远程医疗护理。美国麻省理工学院的实验室正在研究“智能房间”,通过生物传感器探测人的行为来自动控制和调节居住系统。日本大型住宅公司MISAWA HOME为解决购房者对房屋防盗系统的不满意,新近推出“保全住宅”该住宅内部采用指纹辩识门禁系统,另设有隐藏式防盗室,当遇到小偷闯入时屋主可躲进去紧急避难,防盗室设有两道厚重的门,其中内门只要从里面上锁后,外部无法靠人力打开。防盗室内装设电话专线,电话线埋在地下,另外还可在屋内放置一个机器人,亩以依歹徒恐吓的声音来反应,并出声求救,发挥报警求救功能。

3.2.2 国内研究现状

在我国,智能化住宅和智能化家居虽然起步比较晚,但发展速度很快。80年代,我国居住条件非常困难,根本谈不上智能化的问题。80年代初所建成的住宅,其电器设计内容仅在以下方面:楼房照明系统、高层供水泵控制系统和消防泵控制系统。用户电量的计量和收费,采用房管部门或住户轮流抄表收费的方式。生活用水的计量则主要是按户或按人口数收费。弱电系统也是从80年代开始才陆续设置电话配线和公用电视天线系统。80年代末90年代初,我国家庭基本实现电器

化,住宅内的弱电系统有所增加,如对讲系统等。到了90年代末,电脑、有线电视、机顶盒、移动通信等数字化通信产品开始走进家庭。

2000年9月7-8日,由信息产业部组织,在四川省绵阳市召开了国家经贸委2000年国家技术创新重点专项计划—“家庭信息化网络技术研究及产品开发”项目工作会议。2002年由建设部住宅产业化促进中心和中国建筑科学研究院主编的《居住区智能化系统配置与技术要求(审查稿)》己送审,等待批准。建设部住宅产业化促进中心正在牵头编制行业标准“居住区智能化产品应用技术要求”。 2002年建设部科学技术委员会智能建筑技术开发推广中心组织编制了《建设行业智能建筑试点项目住宅小区智能化系统工程验收评估标准》作为建设行业智能建筑试点项目住宅小区智能化系统工程验收评估标准。

西南交通大学科技公司开发了网络智能控制数据终端(Intelligent ControlNetwork Data Terminal,简称NDT)系统,是一个基于计算机网络的智能住宅控制系统,可以稳定运行在多种宽带网络平台上。它包括住宅楼宇防盗报警、贵重物品防盗报警、多重判断防误报功能、火灾报警、煤气泄露报警、紧急求助、防胁持秘密报警、小区电子公告、远程家用电器控制、电话自动报警功能、Internet电子短信、家用设备报警、水电气多表自动抄收等功能,通过计算机网络构成整个住宅小区的集中管理控制系统。

4 嵌入式Linux和嵌入式Linux开发环境

4.1 嵌入式Linux

什么是嵌入式Linux

嵌入式linux,是将日益流行的Linux操作系统进行裁剪修改使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Interlnet上无限的开放源代码资源 ,又具有嵌入式操作系统的特性 。

嵌入式Linux的特点是版权费:免费,购买费用:媒介成本, 技术支持:全世界的自由软件开发者,提供支持网络特性,免费而且性能优异,软件移植容易,代码开放,有许多应用软件支持应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能:RT_Linux,Hardhat,Linux等嵌入式Linux支持实时性能。稳定性:好。安全性:好。

嵌入式Linux有巨大的市场前景和商业机会,出现了大量的专业公司和产品,如Montavista,Lineo,Emi等。有行业协会,如Embedded Linux Consortum等,得到世界著名计算机公司和OEM板级厂商的支持,例如IBM,Motorola,Intel等传统的嵌入式系统厂商也采用了Linux策略如Lynxworks、Windriver、QNX等,还有Internet上的大量嵌入式Linux爱好者的支持。嵌入式Linux 支持几乎所有的嵌入式CPU和被移植到几乎所有的嵌入式OEM板 。

嵌入式Linux的应用领域非常广泛,主要的应用领域有:信息家电、PDA、

机顶盒、Digital Telephone、Answering Machine、Screen Phone、数据网络、Ethernet、Switches Router Bridge、Hub、Remote access servers、ATM、Frame relay、远程通信、医疗电子、交通运输、计算机外设、工业控制、航空航天领域等。

4.2 嵌入式Linux开发

图4.1 嵌入式Linux开发环境

图4.1是一个典型的嵌入式Linux开发环境:它包括主机、工作站或者PC,支持GDB的调试工具,BDI2000,目标板和网络,除了硬件环境外,还需要软件开发环境,有两种软件开发环境,一种是基于Linux的开发环境,另一种是基于Windows的开发环境。

基于Linux的开发环境包括主机上的Linux操作系统,比如RedHat Linux等嵌入式Linux交叉开发工具软件,比如HardHat Linux,支持GDB的调试工具的固件,比如BDIGDB Firmware for Linux。

基于Windows的开发环境包括主机上的Windows操作系统,比如Windows9x等。基于Windows的嵌入式Linux交叉开发工具软件,比如Insight Gnupro Xtools等,支持GDB的调试工具的固件,比如BDIGDB Firmware for Windows等。

图4.2 嵌入式linux开发流程

图4.2是嵌入式Linux开发流程图,一般的开发过程是:设计目标板,建立嵌入式Linux开发环境,编写、调试 Boot Loader,编写、调试 Linux 内核,编写、调试应用程序,编写、调试BSP Boot Loader用于初始化目标板,检测目标板和引导 Linux内核,BDM /JTAG用于目标板开发,它可以检测目标板硬件,初始化目标板,调试Boot Loader和BSP。有些BDM /JTAG比如BDI2000可以调试Linux内核源码。

在嵌入式Linux开发过程中,选择好的嵌入式Linux开发平台和BDM /JTAG调试工具可以极大地提高嵌入式Linux开发效率,嵌入式系统的特点是系统资源小,因此具体目标板的设备驱动程序:Device Driver需要定制,BDM /JTAG调试工具是开发Linux内核很好手段 BDM /JTAG调试工具利用CPU的BDM /JTAG接口,对运行程序监控,不占用系统的其它资源 。

为了缩短应用产品开发周期,可以选择同应用产品相近的嵌入式Linux软件开发平台和带嵌入式Linux软件的OEM板,它可以帮助用户在应用项目立项前,评估项目的可行性 在应用项目立项后,使软件开发和硬件开发同步进行,它能极大地缩短应用产品开发周期。

4.3 交叉开发环境

图4.3 嵌入式linux开发环境

宿主机(Host)是一台通用计算机(如PC机或者工作站),它通过串口或者以太网接口与目标机通信。宿主机的软硬件资源比较丰富,不但包括功能强大的操作系统(如Windows和Linux),而且还有各种各样优秀的开发工具,能够大大提高嵌入式应用软件的开发速度和效率。

目标机(Target)一般在嵌入式应用软件开发期间使用,用来区别与嵌入式系统通信的宿主机,它可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统,但软硬件资源通常都比较有限。嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器,其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。在采用宿主机/目标机模式开发嵌入式应用软件时,首先利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件,然后通过串口或者以网络将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试,最后目标机在特定环境下脱离宿主机单独运行。

建立交叉开发环境是进行嵌入式软件开发的第一步,目前常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链、目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境则主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler等。

4.4 交叉编译和链接

在完成嵌入式软件的编码之后,需要进行编译和链接以生成可执行代码,由于开发过程大多是在使用Intel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。

交叉编译器和交叉链接器是能够在宿主机上运行,并且能够生成在目标机上直接运行的二进制代码的编译器和链接器。例如在基于ARM体系结构的gcc交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器。通常情况下,并不是每一种体系结构的嵌入式微处理器都只对应于一种交叉编译器和交

叉链接器,比如对于M68K体系结构的gcc交叉开发环境而言,就对应于多种不同的编译器和链接器。如果使用的是COFF格式的可执行文件,那么在编译Linux内核时需要使用m68k-coff-gcc和m68k-coff-ld,而在编译应用程序时则需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。

嵌入式系统在链接过程中通常都要求使用较小的函数库,以便最后产生的可执行代码能够尽可能地小,因此实际运用时一般使用经过特殊处理的函数库。对于嵌入式Linux系统来讲,功能越来越强、体积越来越大的C语言函数库glibc和数学函数库libm已经很难满足实际的需要,因此需要采用它们的精化版本uClibc、uClibm和newlib等。

目前嵌入式的集成开发环境都支持交叉编译和交叉链接,如WindRiver Tornado和GNU工具链等,编写好的嵌入式软件经过交叉编译和交叉链接后通常会生成两种类型的可执行文件:用于调试的可执行文件和用于固化的可执行文件。

5 需求分析

在本章中,重点介绍用户需求、对用户需求的简单分析,通过分析,确定开发硬软件的基本结构,形成总体设计方案。

5.1 用户需求

系统需要完成的任务有:

接收和处理单片机发送过来的传感器信息;

处理传感器信息并通过短信发送给手机;

通过GSM接收和发送短信数据;

分析处理接收到的短信,得出相应操作信息发送给单片机并将操作反馈给手机;

在TFT-LCD上构建图形窗口,建立操作界面。

5.2 需求分析

本课题主要解决接收和发送短信并在TFT-LCD上显示。由于监控程序运行在嵌入式Linux下,这就涉及到Linux下与GSM模块通信问题。需要构建定位图形窗口,涉及到窗体应用程序的编写。

5.2.1 GSM信息接收处理

基本功能为初始化Linux串口配置,接收串口发送过来的信息,进行字符串分析处理,分离出当前信息,以备图形窗体程序使用。

5.2.2 处理信息及画面显示

基本功能包括实现直观的窗体界面,显示当前传感器状态值,显示接收到的短信,。

5.2.3 系统结构框图

根据上述分析,系统的硬件结构框图如图5.1所示:

图5.1 系统硬件结构框图

6 智能家居基本模块及解决方案

本章首先对智能家居系统的功能模块做了系统的分析,提取出四个最基本的功能模块,然后在比较国内外各种实现技术的优缺点的基础上,确定课题各模块的选型,最终提出一套自己的智能家居解决方案。

6.1 智能家居的基本功能模块

目前的智能家居行业,首先,处于一个初始发展时期,国际社会暂时还没有形成一个公认的标准;其次,智能家居的应用场所一家庭住宅或住宅小区,不同的实际环境也对智能家居提出了不同的要求与解决办法;此外,居民都希望能够对智能家居进行个性化配置,满足自身的特殊需求。这样的形势,致使开发商在实施智能家居时的方式、范围及侧重点也不尽相同。有些用户比较注重家电的智能控制,而有些用户可能更加关心家庭安全防范,还有些用户则希望建立相对全面的智能家居系统,满足多方面的需求。功能模块见下图。

图6.1 功能模块图

图6.1是根据课题充分分析现有的智能家居解决方案,结合自己的调查研究,从中提取出四个最为基本的功能模块:家庭对外通信模块、家庭网关模块、家庭安全防范模块、家庭设备自动控制模块,并在此基础上确定自己的智能家居解决方案。

传统的智能家居系统是为了满足住户方便性的要求,一般是为了实现家用电器的远程控制的目的,所以只包括“家庭对外通信模块”、“家庭网关模块”、“家庭自动控制模块”,随着近年来盗窃等现象的愈演愈烈,用户又提出了家庭安防的要求,而近年来通信、计算机、自动化等技术的不断发展使这种要求能够成为现实。所以课题的解决方案中考虑到了用户对家庭安防的需要,在传统模块划分的基础上增加了“家庭安防模块”。

下文结合国内外功能模块的实现方式,将对各模块做详细分析与评述,最终提出自己实现各个模块的技术路线。

6.2 家庭对外通信模块

智能家居的最终目的都是为“满足人们对舒适、方便、高效和符合绿色环境保护的需求”,其中“方便”要求家庭内部系统能够通过家庭对外接口,实现家庭外部的远程控制。家庭对外通信模块的作用在于此,它在智能家居系统中扮演着非常重要的角色。

具体来讲,该模块的功能是提供一个家庭内部与外部的通信链路,通信的内容是数据信息或指令信息,常用的通信媒介有电话、GSM短信、Internet等。

随着新技术的发展,家庭对外通信模块从功能和方式上得到了丰富:功能上,过去只是完成简单指令信息的单方传输,现在更多的是提供数据信息的通信,包括通信交流、商务、娱乐、教育、医疗保险等;方式上,从电话通信到Internet通信,再到GSM手机短信通信,越来越体现出通信方法的多样化和简便化。

本课题选择将GSM短信与Internet相结合的方式作为智能家居远程控制方式(这也正是本课题的特点之一),也就是将手机短信通过Internet发到能连网的家庭网关上,当然这需要用到一个中介:SP技术。

这种设计主要基于以下几点考虑:

(1) GSM短信不受环境限制,只要手机有信号的地方都可以随时随地发送,而且其成本低廉,所以应该充分利用;

(2) GSM短信控制方式,大多数设计者都是利用在家庭网关上插GPRS模块来实现家庭网关与手机之间的通信,这样做有两大缺点:一是增加GPRS模块就增加了系统的成本,二是对GPRS的驱动开发增大了开发的难度。

(3)近年来新出现的SP中介组织使短信在Internet上传输成为可能,而且它还提供方便的程序接口,帮助用户在能连网的PC机或嵌入式网关上获取短信内容,进而实现GSM短信的控制功能。同时,使用SP服务收费低、也免去了对

硬件的驱动开发。

6.3 家庭网关模块

家庭网络就是在家庭内部通过适当的组网技术把家庭网关(Residential Gateway,RG)与其他设备组成可以进行信息交换的内部网络,并通过家庭网关与外部网络相连,形成面向家庭的业务提供平台。在智能家居的实现过程中,家庭网关占据至关重要的位置。家庭网关是连接外部公网和家庭私网的关口,既负责家庭内部对公网的访问和交互,又负责用户从公网上对家庭网络的访问和控制,另外还要负责家庭内部设备的互连、互控等操作,因此,家庭网关成为智能家居研究的重点。

本课题是选择三星公司生产的S3C2410芯片作为嵌入式家庭网关,它的ARM内核是ARM920T。之所以选择该芯片是基于以下几点考虑;

(1)它带有MMU,支持Windows CE和大部分的Linux操作系统;

(2)它主频达到202MHZ,能够满足一般家庭网关数据传输的需要;

(3)它具有三通道的UART口,每个UART口都支持IrDAL0协议,为红外通信提供接口;

(4)它大约有上百个GPIO口可供用户使用,使多个家用电器的接入网关成为可能;

(5)它还有一个loom的以太网口,使家庭网关能够轻松接入Internet。

6.4 家庭安全防范模块

安全防范就是保障人们在生产、生活和一切社会活动中人身生命、财产和生产、生活设施不受侵犯,防止侵害行为的总称。智能家居在满足人们舒适、方便生活的同时,也要求为家庭提供安全防范方面的保障。它包含的内容有防止入侵、盗窃、破坏、爆炸等,它的原则是“以防为主,打防并举”,安全防范工作贯彻“人防、技防、物防”相结合的方针政策。因此,智能家居将家庭安全防范模块定义为其四个基本要素之一。课题将安全防范的内容分为两部分,分别是家庭内部环境安全、家庭对外非法入侵预防,这两方面都体现了现代技术在智能家居中的应用。

课题中,由于实验条件等的限制,并没有对安防模块进行实验。在此提出一套可行的安防方案,可供以后继续研究实践:

(1)住宅内部采用被动红外探测器、可燃气体探测器、温/湿度传感器;

(2)住宅外部可选择窗磁、门磁开关、红外探测器、玻璃破碎探测器、双鉴探测器等;

(3)住宅内外部的探测装置与报警控制器通过无线方式相连;

(4)报警控制器与中心控制器通过有线方式相连。

6.5 家庭设备自动控制模块

智能家居的初衷是解决家庭设备的自动控制问题,将更多的设备通过某种方式连接,达到统一、集中控制,为家庭生活带来方便。因此,现代智能家居的最基本的功能需求体现在家庭设备的自动控制,家庭设备自动控制模块也就成为其最基本的模块。

对不同的家庭设备,课题给出了不同的解决方案:

(1)对于电饭锅、电灯一类的开关量家庭设备,建议采用以继电器为核心的控制电路控制。具体方案为首先将继电器、二极管、三极管、限流电阻等连接成一个控制电路,然后将继电器的一个电源脚接到开发板的S3C2410芯片的一个GPIO引脚上,继电器的另一个引脚接VCC,这样,可以通过烧写在S3C2410中的程序,来控制GPH1输出高低电平,进而控制继电器的吸合、断开,然后由继电器来控制家用电器的开关。

(2)对于电视机、空调一类提供红外接口的家庭设备,通过统一的红外控制器控制;可行的方案是采用红外模块,红外模块可直接与S3C2410的UART口相连,这样由S3C2410中的程序来发送和接收红外数据。可能涉及到的程序有红外驱动程序、发送数据程序、接收数据程序等。

(3)对于信息家电,首先通过网络接口接入家庭以太网,如果信息家电支持家电生产厂商的远程服务,智能家居系统便可以减少对它的操作,如果不支持,则需要借助于信息家电提供的以太网交互命令,通过智能家居系统执行相关操作。 7 模拟实现硬件设计

本章主要介绍设计的智能家居系统方案中的硬件实现。硬件是该系统实现的基础,硬件测试是该方案是否可行的重要依据。本章是以典型的子模块为例阐述系统的整体硬件设计。首先对Embest EdukeitⅢ开发平台进行说明,由于该开发板资源丰富,内容复杂,只对实验中用到的S3 C2410的GPIO口和UART口进行阐述,其中重点阐述了GPIO口的专用寄存器GPnDAT, GPnCON, GPnUP和DART口的专用寄存器ULCONn, UCONn, UFCONn, UMCONn, UBRDIVn。然后阐述了系统硬件连接及测试的整个过程,由最基本的开发板连接、继电器模块、红外收发模块开始,直至将几个功能模块集合到一起,进行测试。

7.1 硬件选型

硬件选型是模拟实现的基础。目前的市场上,智能家居解决方案中主控系统有三种选择:(1)购置一台PC机专门用做家庭网关;(2)购置单片机,自己动手连接电路,开发家庭网关;(3)购置一款适合自己要求的嵌入式开发板做家庭网关。基于单片机的家庭网关,虽然成本低,但其控制执行的效率往往不能够满足客户需求。而嵌入式开发板不仅价格适中,而且执行效率也能满足广大家庭用户的需求。因此课题从实际情况出发,选择嵌入式开发板作为系统的控制中枢。ARM开发板是近几年来备受关注的热点,也是报着尝试和学习的态度,购买了北京博创的

Embest EdukeitⅢ(ARM9 )开发板,该开发板有着丰富的硬件资源和软件资源,同时有很多实验用例有利于二次开发者更好的理解、学习和应用。

智能插座方面,核心是采用了一个5V的电压继电器,该继电器不仅连接电路简单、易控制,同时成本低廉,经多方使用证明,该继电器适用于智能家居系统的具体实现。

红外控制方面,采用了一个USB口的红外适配器,出于成本考虑,并没有采用品牌的红外适配器,而是选用了市场上一个普通的红外适配器,这样更有利于开发通用的红外驱动,使开发成果更有广泛的应用空间。

另外,为了实现对红外适配器的控制,还配置了一个电视遥控器,该遥控器原为长虹电视遥控器,经过改造可以发出红外适配器能够接收并处理的信号。

以上硬件选型的共同原则是:稳定、操作方便、通用性强且成本低廉,前提都是能够满足模拟实现的基本要求。

7.2 硬件连接及测试

Embest EdukeitⅢ(ARM9 )开发板与PC机连接及测试

首先按照2410资料进行硬件连接。

(1)将5V电源线连到UP-NETARM2410开发板的电源接口;

(2)将串口线一端连接PC机的串口,另一端连接开发板的UARTO口;

(3)将开发板的网口插上网线,同时PC机的网口也插上网线。

其次在PC机上建立超级终端:

(1)运行WindowsXP下的开始一程序一附件一通讯*超级终端(HyperTerminal ) ;

(2)初次建立超级终端,出现询问“是否将HyperTerminal作为默认telnet程序?”,选择“否”;

(3)要求输入区号、电话号码等信息,随意输入字母或数字;

(4)出现如图4-8所示对话框,为所建超级终端取名为arm,为其选择第一个图标,单击“确定”按钮。

(5)在接下来的对话框中选择ARM开发平台实际莲接的PC机串口(COMl),按

确定后出现如图4-9所示的属性对话框,设置通信的格式和协议。波特率设为115200,数据位为8,无奇偶校验,停止位1,无数据流控制,按确定完成设置。

图7.1创建超级终端

图7.2设置串行口

然后将新建的超级终端保存在桌面上,以方便日后使用。现在在超级终端上可以看到开发板相关的输出信息了,这就说明PC机和开发板硬件连接正确,并且超级终端设置正确。

最后启动开发板。打开超级终端,打开开发板的电源开关,超级终端显示启动信息如下图所示:

图7.3连接超级终端

8 嵌入式系统平台的建立

本章介绍了在进行嵌入式系统应用开发前必需的几个步骤:嵌入式系统交叉编译环境的建立、嵌入式Linux的移植。裁剪、交叉编译Linux 2.6.14版本的内核,并或者做可读写的YAFFS2文件系统。

8.1 嵌入式系统交叉编译环境的建立

嵌入式系统开发平台是开发应用程序的基础,在运行应用程序前,首先要建立交叉编译环境,然后才能进行嵌入式操作系统的移植和应用开发等工作。

交叉编译是嵌入式开发过程中的一个重要步骤,主要特征是某机器中执行的程序代码不是在本机编译生成,而是由另一台机器编译生成。采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到PC中进行。当前交叉编译器有多种版本,本设计中使用

2.95.3和3.4.4,分别用编译Bootloader和Linux内核及应用程序,采用网上下载的交叉工具链,解压后安装即可。主机使用Fedora 7 Linux操作系统,为了可以方便的使用arm-linux交叉编译器系统,把arm-linux工具链目录加入到环境变量PATH中,如图3-1所示修改/etc/profile文件,增加部分为修改地方。

#Path manipulation

if["$EUID" = "0"];then

pathmunge /sbin

pathmunge /usr/sbin

pathmunge /usr/local/sbin

pathmunge /usr/loval/arm/3.4.4/bin //增加部分

fi

8.2 嵌入式Linux移植

8.2.1 Linux移植流程

Linux现在己经广泛应用于嵌入式平台,因此对Linux移植过程的研究已经较多,比较成熟。所以本文不对其中涉及的理论做过多描述,仅仅对其移植过程中的关键部分作描述。移植的过程分为Bootloader移植、Linux内核及设备驱动移植、文件系统制作。本系统采用2.6.14版内核。

8.2.2 Bootloader移植

选用vivi作为本系统的Bootloader, vivi是韩国mizi公司开发的Bootloader,适用于ARM9处理器,支持S3C2410A处理器,源代码可以在其公司网站上下载。和所有的Bootloader一样,vivi有两种工作模式,即启动加载模式和下载模式。启动加载模式可以在一段时间后(这个时间可更改)自行启动内核,这是vivi的默认模式。在下载模式下,vivi为用户提供一个命令行接口,通过接口可以使用提供的一些命令。

为了使移植工作更加快捷,系统采用vivi-20030929版本。它不仅提供对 ARM920T内核的支持,而且直接提供了对于S3C2410A的板级支持,这使移植工

作量相对减少,移植步骤如下:

1)与硬件相关的修改

具体与处理器平台相关的文件都存放在vivi/arch目录下,本系统使用

S3C2410A处理器,对应的目录为S3C2410。其中文件head.s是vivi启动配置代码,加电复位运行的代码就是从这里开始的。由于该文件中对处理器的配置均通过调用外部定义常数或宏来实现,所以针对不同的平台,只要是S3C2410A处理器,几乎不用修改,只要修改外部定义的初始值即可。这部分初始值都在文件vivi/include/platform/smdk2410.h中定义,包括处理器时钟、存储器初始化、通用1/0口初始化以及vivi初始配置等。

2)对NAND Flash启动的修改

本设计中启动程序以及Linux内核及根文件系统,包括图形用户界面等都存放在64M的NAND Flash中。这样,作为启动程序vivi的还需要根据实际情况来修改存放这些代码的分区。分区指定的偏移地址就是代码应该存放并执行的地址。 移植vivi的最后一步是实现Flash驱动,需要根据系统中具体的Flash芯片的型号及配置,修改驱动程序,使Flash设备能够在嵌入式系统中正常工作。 修改Flash驱动的关键一步是对文件Flash.c的修改。Flash.c是读、写和删除设备的

源代码文件。由于不同开发板中Flash存储器的种类各不相同,所以修改时需参考相应的芯片手册。

当做好上述的移植工作后,就能对vivi进行编译了。在编译vivi之前,需要根据开发板进行适当的配置。保存并退出后,执行make命令开始编译,把编译好的vivi烧到NAND Flash中。进入vivi后,在串口终端输入命令:

bon part 0 192k 1216k

把整个Flash分为四个区,其中0-192k存放vivi及参数,192k-1216k存放Linux内核,1216k到最后是存放文件系统。

8.2.3 Linux内核移植

(1)修改Makefile

在内核根目录下找到ARCH和CROSS_OMPILE,修改以下内容:

ARCH=arm

CROSS_COMPILE=arm-linux-

(2)将分区信息加入内核

修改/arch/arm/mach-S3C2410A/devs.c文件

添加头文件:

#include

#include

#include

添加分区结构:

static struct mtd_partition partition info[]={

{

name:"vivi",

size:000020000,

offset:0x00000000,

},

{

name: "param",

size: 0x00010000,

offset: 0x00020000,

},

{

name: "kernel",

size: 0x00100000,

offset: 0x00030000,

),

{

name: "root",

size: OX03eC0000,

offset: 0x00130000,

}

};

其中,

name:分区名字,任意;

size:分区大小;

offset:分区的起始地址,相对于0x0的偏移。

加入Nand Flash分区,

struct S3C2410A_nand_set nandset={

nr_partitions: 4,

partitions: partition info,

};

其中,

nr_partitions:指明partition_info中定义的分区数目;

partitions:分区信息表。

3)建立Nand Flash芯片支持

在/arch/arm/mach-S3 C2410A/devs.c文件中增加:

struct S3C2410A_platform_nand superlpplatform={

tacls:0,

twrph0:30,

twrph 1:0,

sets:&nandset,

nr_sets:l,

};

其中,

tacls,twrph0,twrphl根据S3C2410A数据手册查到,这3个值最后会被设置到NFCONF中;

sets:支持的分区集;

nr_set:分区集的个数。

(4)修改s3c_device_nand结构体变量,添加对dev成员的赋值

struct platforms_device s3c_device_nand={

name="S3C2410A-monitor"

id=-1,

num_resources = ARRAYee SIZE(s3c_nand_resource),

resource = s3c_nand_resource,

dev={

platform_data=&superlpplatform


相关文章

  • 智能建筑毕业论文
  • 学院 毕 业 设 计(论 文) SNL/QR7.5.4-3 专 业 学生姓名 班 级 学 号 指导教师 完成日期 成绩评议 毕业设计(论文)任务书 指导教师意见 评阅教师意见 答辩小组评议意见 别墅型智能家居方案设计 摘要:智能家居是在家庭 ...查看


  • 物联网智能家居实习报告毕业实习论文
  • 河 南 理 工 大 万方科技学院 毕业实习论文 系 别: 专业班级: 学 号: 姓 名: 指导老师: 学 物联网智能家居实习报告 实习时间:2012-2-18.--------------2012-3-18 实习地点:郑州市正源测控科技有限 ...查看


  • 电子信息工程毕业设计题目大全
  • 1 压力容器液位测量 2 多功能遥控小车 3基于RS232的仓库多点温度.湿度.气 4压检测系统 5自动控制升降旗系统 6基于RS485的温度报警系统 7基于模糊算法的水温控制系统的设计 8多分机电话交换机 9简易火灾自动报警系统 10基于 ...查看


  • 智能家居单片机控制系统毕业设计.
  • 设 计(论文) (说 明 书) 题 目: 姓 名: 编 号: 平顶山工业职业技术学院 年 月 日 毕 业 毕 业 设 计 (论文) 任 务 书 姓名 专业 任 务 下 达 日 期 年 月 日 设计(论文)开始日期 年 月 日 设计(论文)完 ...查看


  • 电工技师论文
  • 技师专业论文 (宋体二号加粗) 题目:变电运行设备的自动化技术与维护工作分析 (黑体三号) 姓 名: ××× (宋体小三) 职 业: 电工 身份证号: 鉴定等级:技师(高级技师) 单 位: 二〇一三年三月三十日 变电运行设备的自动化技术与维 ...查看


  • 毕业论文_基于虚拟机的VPN实验环境设计与实现
  • 基于虚拟机的VPN 实验环境设计 1引言 在如今开放式交流日益增多的社会,Internet 成为主要的交流媒介, 随着Internet 和信息技术的快速发展,越来越多的企业职工需要将便携式 计算机随时随地连接到企业的网络,越来越多的企业建立 ...查看


  • 嵌入式系统论文 1
  • 目录 引言 . ............................................................... 3 第一章 嵌入式系统发展历史 . .............................. ...查看


  • 设施农业发展的未来
  • 设施农业发展的未来 --浅谈设施农业中现代化技术的应用前景 摘要: 随着经济的发展,近年来世界各地设施农业发展迅速,正向高科技化.智能化.自动化.网络化方向发展.面对这种新形势,本文分析了国内设施农业发展历史及现状,并结合实际情况,提出了大 ...查看


  • 毕业论文任务书 李隆均 物联网132
  • 陕西科技大学 毕业设计(论文)任务书 电信学院物联网工程专业物联网132班级学生:李隆均 题目:基于LabVIEW 和Web 的热换站远程监控系统设计 毕业设计(论文)从 2017年 2月 27日起到 2017年 6 月 18日 课题的意义 ...查看


  • 基于物联网的智能家居演示系统
  • ******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2014年春季学期 题 目:专业班级: 姓 名: 学 号: 指导教师: 成 绩: 目录 摘要............. ...查看


热门内容