基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc

上传人:wj 文档编号:4612192 上传时间:2023-05-03 格式:DOC 页数:68 大小:5.75MB
下载 相关 举报
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第1页
第1页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第2页
第2页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第3页
第3页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第4页
第4页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第5页
第5页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第6页
第6页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第7页
第7页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第8页
第8页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第9页
第9页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第10页
第10页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第11页
第11页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第12页
第12页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第13页
第13页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第14页
第14页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第15页
第15页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第16页
第16页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第17页
第17页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第18页
第18页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第19页
第19页 / 共68页
基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc_第20页
第20页 / 共68页
亲,该文档总共68页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc

《基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc》由会员分享,可在线阅读,更多相关《基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc(68页珍藏版)》请在冰点文库上搜索。

基于ARM9的嵌入式智能家居系统毕业设计文档格式.doc

统计资料显示:

2004年,家庭网络市场总额可达57亿美元,国际智能家居的产品销售额可达148亿美元。

在国内,智能家居已经走过了“概念期”,正是基于对智能家居市场发展前景的展望,使得智能家居不断地纳入各研发单位、房产开发公司、网络公司下期的开发计划,也是竞相销售的卖点。

他们正是基于对这个难得机遇的意识,开始为研究和开发相关系统和产品进行先期的部署和规划,越来越多的企业开始介入智能家庭网络这个全新的领域。

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

智能家居是数字家庭的一部分,只有将智能控制和上网功能集成起来,才形成真正意义上的数字家庭。

数字家庭涉及的领域将综合生活中的娱乐、工作、投资理财、学习、医疗、教育等,是实现家庭内部、家庭和社会的实时性沟通的综合系统。

数字家庭伴随着无线而产生,也使无线技术得到了充分的应用和体现。

2.课题的基本内容,可能遇到的困难,提出解决问题的方法和措施

本课题的基本内容:

本课题是基于ARM9的智能家居监控模块开发与实现,我们采用ARM9内核的S3C2410处理器为控制芯片,再将Linux系统移植到硬件平台上,然后设计好相应的驱动程序和应用程序,最后将软件下载到硬件平台来对家电进行本地和远程控制。

系统主要有GSM通讯模块和ARM9系统板两个部分组成。

而系统软件主要完成各个模块之间交互通信的功能,在下面会详细讲到。

可能遇到的困难:

由于是首次接触GSM模块的开发,对其原理及应用程序的设计都还只是初步了解。

而对于GSM的信号机制也正在研究阶段。

如何将收到的信号解析,通过串口通讯显示到终端,这都是有待解决的问题。

在选用系统平台时,采用嵌入式Linux作为系统运行平台,其内核裁剪,编译,bootloader移植及文件系统的制作,需要有很大的工作量来完成,由于以前未接触过嵌入式linux系统移植工作,估计在实际操作中会遇到很多困难。

2智能家居控制器操作系统的移植及裁剪

  考虑到成本,以及系统对实时性的要求不高等因素,所以决定选用Linux操作系统。

目前发行的Linux操作系统都能支持ARM机的体系结构,所以只要根据平台的具体结构进行移植。

移植主要包括建立交叉编译环境、修改内核源码、内核裁剪和内核编译4等个环节。

2.1建立交叉编译环境

  交叉编译是指利用运行在某台计算机上的编译器编译某个源程序生成在另一种结构计算机上运行的目标代码的过程。

编译器的生成依赖于相应的函数库,而这些函数库又得依靠编译器来编译。

建立交叉编译环境就是将ARM使用的编译器(如:

arm-linux-gcc)和函数库(如:

glibc)安装到指定目录,并使用configure配置好Makefile文件。

2.2修改内核源代码

  修改内核源代码主要包括启动代码的修改、内核的链接及装入、参数传递和内核引导几个部分。

Linux内核分为体系结构相关部分和体系结构无关部分。

在Linux启动的第一阶段,内核与体系结构相关部分首先执行,它会完成硬件寄存器设置,内存映射等初始化工作。

  然后把控制权转给内核中与系统体系结构无关的部分。

在移植工作中要修改的代码主要集中在与体系结构相关的部分。

ARM芯片的体系结构在arch/arm目录下。

首先根据芯片手册修改boot/init.S文件中的:

片选组基地址寄存器、DRAM存储配置寄存器、DRAM片选寄存器、中断屏蔽寄存器等。

然后修改内核的链接及装入ELF。

最后将系统中可用页面的数目、文件系统大小等信息以参数形式从启动代码传给内核,完成设置陷阱,初始化中断,初始化计时器,初始化控制台等一系列操作而使内核正常启动。

2.3内核裁剪和编译

  内核裁剪是根据控制系统的要求将不需要的模块从内核中裁剪了,Linux内核的裁剪有好几个版本,可以使用命令makemenuconfig对系统进行裁剪。

  内核裁剪之后,最后要进行交叉编译生成内核映象文件zImage。

具体命令如下:

  makeclean//清理编译环境

  makedep//编译依赖文件

  makezImage//编译内核

3.课题拟采用的研究手段(途径)和可行性分析

研究途径:

  在设计智能家居控制器时,考虑到系统的稳定性和扩展性,因此将控制器硬件设计成核心板和控制板2部分。

核心板主要用来构成一台嵌入式计算机系统,控制板主要是一些外围接口。

系统硬件如图1所示。

图1智能家居硬件结构图

  根据图1所示核心板采用三星公司生产的S3C2410微处理器。

ROM采用SAMSUNGK9F1208芯片构成64MNANDFLASH,将FLASH芯片连接到系统的nGCS0,所以它的起始地址为:

0x00000000。

  RAM采用2片HY57V561620AT-H构成64M,将它连接到系统nGCS6,所以它的起始地址为:

0x03000000。

为了让系统从NANDFLASH启动,要将S3C2410的OM0和OM1引脚都接地。

最后将S3C2410处理器的串口控制信号、USB主机控制信号、LCD控制信号、触摸屏信号、数据总线、地址总线、控制总线、外部中断等信号全部连接到核心板上的200芯插座上。

  GPRS模块采用SIMCOM公司生产的SIM100-E芯片。

通过第三个串口信号线TXD2和RXD2和处理器相连接。

  LCD直接由CPU来控制,不过要增加驱动电路。

  触摸屏采用4线电阻式,直接将它和CPU的nYPON、YMON、nXPON、XMON相连。

  传感器接口的输出信号连接到CPU的EINT9外部中断引脚上,当传感器接收到某个信号时,就可以通过外部中断引脚向CPU申请服务。

  家电控制接口的输入控制信号连接到CPU的GPIO端口,当要对某个家电进行控制时,只需向指定的端口写入0或1,然后再由家电控制接口发遥控信号去控制相应的家电。

应用程序的设计

  为了提高应用程序的运行速度,以及程序运行的稳定性,所以将应用程序设计成多线程结构,如图2所示。

应用程序由7个线程和一个共享数据结构组成。

图2应用程序结构框图

共享数据主要用于存放家电开启和关闭时间,发送短信的电话号和短信内容等信息。

共享数据是通过2个设置线程来修改的。

家电控制线程主要是根据控制数据、检测短信线程的内容和操作线程的内容来进行操作。

发送短信线程主要是根据控制数据、检测传感器线程的内容和操作线程的内容来进行操作。

应用程序的具体内容如下。

#include<

pthread.h>

//线程库头文件

intmain()

{┅

pthread_creat(&

th_a,NULL,send_msg,0);

//创建发送短信线程

th_b,NULL,control_driver,0);

//创建家电控制线程

pthread_join(th_b,&

retval);

//等待家电控制线程结束

pthread_join(th_a,&

//等待发送短信线程结束

┅}

/*发送短信线程*/

intsend_msg()

tty_init();

//初始化串口

gprs_init();

//初始化GPRS模块

tty_writecmd(“at”,strlen(“at”));

//发送AT命令

tty_writecmd(“at+cmgf=1”,strlen(“at+cmgf=1”));

//发送修改字符集命令

tty_write(“at+cmgs=”,strlen(“at+cmgs=”));

//发送短信命令

tty_writecmd(msg.send_tel,strlen(msg.send_tel));

//发送电话号码

tty_writecmd(msg.send_text,strlen(msg.send_text));

//发送短信内容

tty_end();

return0;

}

  其它线程的设计方法有很多相似之处。

应用程序设计完成之后,再经过交叉编译就可生成目标文件。

可行性分析:

1.技术可行性

该系统主要使用C/C++语言来完成,使用linux交叉编译环境和S3C2410开发板。

整个系统开发思路比较清晰,使用成熟的开发工具和开发环境,且国内外已有类似成熟产品上市,在技术上是完全可行的

2.经济可行性

目前,嵌入式系统的开发一般都是在单片机或者是ARM上进行,相比之下,无论在功能以及技术支持方面还是硬件资源方面,ARM都要比单片机强得多,而两者之间价格的差距却越来越小,所以,用ARM来做相关的开发,在经济上占据绝对优势。

操作系统采用免费的嵌入式linux,不需支付额外的费用。

指导教师意见(对课题的深度、广度及工作量的意见和对设计结果的预测)

指导教师(签名)

2009年01月09日

系审查意见:

系主任(签名):

年月日

毕业设计(论文)外文资料翻译

计算机工程学院

计算机科学与技术计056

任晓飞

110511623

傅阳烈(讲师)

外文出处:

附件:

1.外文资料翻译译文;

2.外文原文

指导教师评语:

签名:

2009年03月10日

嵌入式Linux概述

摘要

本文我将论述一下嵌入式Linux目前的发展趋势(状况)。

我将概述Linux是什么,嵌入式Linux系统与桌面系统有什么不同的特点。

然后,我将详细地论述六个关键领域:

•配置

•实时性

•图形用户界面

•开发工具支持

•经济性

•技术支持选项

下面,我将比较嵌入式Linux与WindowsCE的实时性,操作系统映像大小和内存需求。

然后我会讨论一些基于嵌入式Linux的零售设备并与大家讨论一下关于嵌入式Linux一些大概的评论。

简介

除非你在过去的几年里一直与世隔绝,否则毫无疑问你一定听说过Linux操作系统。

作为微软的WindowsNT在软件开源中的竞争对手,它已经在软件开发和系统管理社区,以及主流的非技术性新闻媒体上被广泛宣传和激烈的讨论。

当Linux系统首次推出的时候,它是专门针对运行在英特尔80x86或兼容的微处理器上台式电脑。

引用Linux操作系统的创始LinusTorvalds说过的一句话:

“从Linux操作系统诞生之日起,它将只会运行在拥有一块IDE硬盘的PC上”。

回首至今为止的21世纪,这句话显得非常滑稽。

如今的Linux已经被移植到许多不同的微处理器上并运行在许多并不含有硬盘的平台上。

这些设备甚至没有通用的计算机系统,也没有如网络路由器,核心监控程序和用来跟踪旋风管的数据收集单位。

正是这些类型的系统,被统称为“嵌入式Linux”。

在下一节我会关注嵌入式Linux系统和它的堂兄弟桌面Linux系统之间的区别。

然后,我要回详细描述嵌入式Linux在:

配置,实时性,GUIs,开发工具的支持,经济性,和技术支持这六个方面的特点。

然后,我将比较一下基于同样配置的嵌入式Linux内核与WindowsCE内核的大小和实时性特征。

然后,我将讨论三个基于嵌入式Linux的有趣的设备:

光学遥测系统,NetTel路由器和IBM公司的掌上电脑研究项目“itsy”。

我会再总结了一些一般性意见的作用和未来的嵌入式Linux。

是什么让Linux成为“嵌入式”?

迄今为止在这篇文章里我已经多次使用了“嵌入式Linux”,但我还没有真正确定这个词的含义。

是不是如果系统不是从硬盘上启动的就可以被称为嵌入式系统?

是不是所有从硬盘上启动的系统都不是嵌入式系统?

本节将列出五个不同的嵌入式系统,来解答这类问题。

注意,这些设备都不是专用于Linux的,但都具有嵌入式系统的普遍特征。

从历史上看,嵌入式系统的界定已经成为一个巨大的,有争议的灰色地带。

许多激烈的讨论已经涉及到某一特定系统是不是“嵌入式”-尤其是在各方自由酗酒和大量的怪胎参加。

我即将论述的这些属性特点肯定不能让所有人都满意,但它是一个通则,也足以明确区分所有的嵌入式系统,更加全面的描述是没有必要的。

这五个嵌入式系统通常都有的属性是:

•无盘启动和储存

•无BIOS

•空间占用和运行内存有限

•内存管理

•针对少量特定的应用

当你第一次启动和运行嵌入式系统时自举是第一个需要解决的问题。

当给硬件供电时首先会发生什么事?

那些只关注桌面电脑系统的用户和开发者很少考虑在嵌入式系统中至关重要的议题。

大多数嵌入式系统都是从非硬盘类媒体启动的。

这些媒体可能是Flash存储器,或是读/写或只读存储器如EEPROM。

另外,这种设备可能不是从内部存储介质上启动的,而是在启动时从网络上下载操作系统映像。

内存可以在系统运行时存储数据,非易失性存储器如Flash存储器可在系统关机时存储数据。

嵌入式系统通常不使用磁盘类存储器,原因是硬盘驱动器的能耗和速度方面不符合要求。

与Flash存储器相比硬盘需要消耗更多的能源,速度也很慢。

在经济上,在每字节成本上硬盘当然比闪存低,但今天的嵌入式系统很少需要几个GB的存储,只有几百个字节的Flash存储器是一个更好的解决办法。

基本输入/输出系统(BIOS)是电脑中一个重要的软件,尽管它被大多数人所忽略。

它的作用是初始化PC的内置硬件,并提供基本的硬件操作手段。

一个典型的桌面操作系统,包括Linux,是建立在BIOS之上的,需要充分利用它。

在嵌入式系统中你没有奢侈的BIOS,在操作系统内核启动运行之前,你必须手动初始化你的硬件到一个可以运行的状态。

它似乎不是一个大问题。

很少有嵌入式硬件平台会拥有一个和PC一样复杂的主板架构,它们通常更容易配置。

通常硬件制造商们都会提供示例代码让你能很快适应并让系统启动和运行起来。

正如我们前面提到的,嵌入式系统并不需要目前大多数台式机那样的大容量内存和存储器。

一些嵌入式系统只需要几百字节的RAM和ROM就能运行,最大不超过几兆字节。

这与一个拥有看似无限资源的桌面系统相去甚远,也是一个程序员从桌面系统过渡到嵌入式系统最大的绊脚石。

内存管理是嵌入式系统另一个巨大的区别。

由于储存要求严格,而且没有存放交换文件通常需要的虚拟内存系统。

此外,嵌入式系统上运行的各种微处理器,其中一些不具备虚拟内存所必须的内存管理单元。

另外,值得注意的是,嵌入式Linux可同时满足这些要求。

任何Linux系统都可以在编译操作系统映像的时候将虚拟内存大小设置为0来消除交换文件。

此外,改良后的Linux系统不需要MMU。

uCLinux操作系统运行在多种32位微处理器上,它没有MMU并且只使用物理内存处理。

最后,嵌入式系统通常是针对一系列专门任务而设计的。

他们可能没有任何用户界面,只拥有几个指示灯。

用户无法安装和运行除了定制软件以外的任何东西,该系统的最初目的只是为了运行这几个特定的软件。

与之对比的是桌面计算机系统,用户通常可以安装和运行的自定义软件包,并能完成系统设计者从来没有考虑过的任务。

很明显我们不能忘了实时性这方面的问题。

虽然在世界上这是一个热门的话题,但是对嵌入式系统来说它并不是一个普遍的要求。

许多嵌入式系统没有任何硬件或软件上的实时要求,是能完全满足大部分用户的操作系统。

嵌入式Linux有实时子系统的选项,我们将在下面的章节里讨论。

嵌入式Linux详情

在未来数节,我们将在六个具体领域里讨论嵌入式Linux的细节。

这些领域涵盖了Linux在嵌入式系统中的各个方面的作用。

目标是解决系统从规约到维修的整个生命周期内各个阶段的问题。

其中的一些问题,如经济性和技术支持,在整个系统开发过程中,是非技术性的却又很重要的问题,

配置

能够针对特定设备定制操作系统是嵌入式系统一个非常重要的特征。

你一定不想你的系统映像中包含一个你不需要的几兆字节的图形用户界面支持代码。

将内核裁剪到能够满足所有需求的尽可能小的体积,这将是每一个设计师在硬件能够启动和运行以后所要面临的第一个任务,它将是一个非常艰难的任务。

配置嵌入式Linux系统与配置桌面Linux系统并无太大的区别。

系统构建过程中使用简单的文本文件来选择包含的组件。

安装模块用于在系统启动时装载所选子系统。

还可以在运行时动态加载和卸载模块,来定制必要的可选组件。

这种灵活的配置方式对嵌入式系统是非常有益的。

它不仅可以让你动态地添加和删除可选组件,也可以让你做部分更新。

把系统分成几个可单独加载的模块,而不是单一模块,这样就可以在不需要改变整体映像的情况下升级或添加新的模块。

特别是在你的设备连接到网络时,它能进行远程更新。

Linux安装模块有一个缺点,它有潜在的稳定性问题。

由于模块是动态整合到Linux内核,他们能充分利用操作系统的资源却不能获得内存保护。

对于没有MMU硬件的设备这不是问题。

此外,由于系统是一个闭合环路,为了更容易维护系统的完整性,用户不能在空闲时安装新的模块。

实时性

关于“实时性”有很多说法,所以我会在描述Linux的实时功能之前对它进行定义。

关于“实时”我的理解是在确定的时间界限内执行一个中断和相应的中断服务程序。

其他,如上下文切换时间和系统时钟粒度,与之相关,但不是核心问题。

一般情况下,实时的性可分为两大类:

硬实时和软实时。

硬实时意味着迟到的响应是错误的响应。

如果系统不在规定时间内响应中断,那么在可预见的时间内就有可能发生灾难性的事情。

软实时,另一种说法就是响应迟到不会有任何可怕的后果,但只有在确定的时间内响应中断才能获得最佳性能。

重要的是要记住,虽然实际数字是很重要的,但实时性的特征,实际上更多的是关于一种行为与原始速度的对比。

最基础的Linux内核不是实时的。

不能保证在确定的时间内处理中断请求,延迟有可能会很长,这取决于中断发生时系统的负载情况。

RTLinux是为具有硬实时特性硬件而设计的Linux内核。

RTLinux是由新墨西哥技术学院的MichaelBarabanov和VictorYodaiken于1997年2月最先发布,它不是一个单独的,修改后的Linux内核版本。

在通盘考虑所有可能之后,它被认为是维护性和兼容性方面的噩梦。

RTLinux被设计成一个小的、独立的实时内核,以及一套用于替换Linux内核的例程,启用和禁用中断的模块。

RTLinux的还提供了一个API,允许用户在实时内核里创建任务,并可以通过FIFOs或共享内存的方法与Linux内核里的进程通信。

图1描述了系统是如何工作的。

当Linux内核调用CLI或者STI时RTLinux会禁止启动中断,这些中断请求被传送到RTLinux的一个进程中并记住目前Linux的中断状态。

当中断发生时,他们总是由RTLinux的内核接手,然后传递给Linux内核,如果Linux内核不处理则中断启用。

这允许RTLinux在没有Linux内核阻碍的情况下能一直对每个中断都作出响应。

这也使得Linux内核无法处理嵌套中断的问题得到解决,因为RTLinux总是最先看到中断并确保内核不会重复进入内核。

RTLinux的并非是这个竞技场里唯一的成员。

实时应用程序接口(RTAI)采取了类似的做法扩展现有的Linux内核的实时功能。

他们有几个不属于RTLinux也没有广泛普及的特点,如定期定时器。

有传言说这两个产品将会在未来的某个版本里合二为一。

RTLinux和RTAI目前也有一些功能存在问题。

首先,很显然这些功能特性都是后来加上去的,而不是作为固有的组成部分而设计的。

虽然RTLinux很好地完成了它预定的目标,但它往往只是有益于某些类别的应用,如数据采集,而不是更普遍适用。

另一个问题是,RTLinux无法解决优先级倒置这一问题,可能会造成严重的错误,这种错误很难复制和跟踪。

图1:

基于模块化设计的RTLinux

图形用户界面

随着台式机电脑已经越来越依赖于GUIs,而不是基于文本格式的接口,许多嵌入式系统也已拥

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2