1、前言1984年,在美国康涅迪格州(Connecticut)特福德市建设了世界上第一幢智能建筑都市大厦,虽然当时只是对一栋破旧的大楼进行了改造,但是是采用先进的计算机技术对都市大厦内部的电梯、照明、空调等设备进行监控,并且还可以提供情报资料、电邮、语音通信等信息的服务。自此以后,在美国、欧洲、澳大利亚、韩国及新加坡等经济较发达的国家先后提出了各种智能家居控制方案,如欧洲的EIB总线、美国的C-Bus总线、新加坡的8X系统用于智能家居系统的协议,而且主要发达国家都从国家战略的高度大力推广智能家居控制系统。国外很多大型公司非常看好智能家居控制的市场前景,例如:比利时的TELETASK、美国的Hone
2、ywell、德国的Merten、新加坡NICO等国际知名公司,都在加大力度研发智能家居控制系统。而且每个公司都有其不同的特点:比利时的TELETASK重特点在于控制,其家居自动化系统质量稳定而且具有强大的升级能力,其最大的优点在于模块化结构,所有的模块接口由AUTOBUS总线相连。美国的Honeywell重点在于安防,旨在提供安全、便利、舒适等特点。其系统大多用有RS-485,CANBUS,红外遥控等技术德国的Merten智能控制系统是通过EIB工具软件ETS进行系统配置和功能设置的,Merten提供免费的产品数据库。新加坡NICO主要采用LonWorks技术,并在“智能照明控制”领域成为行业
3、的佼佼者。在进入21世纪的现代,智能家居控制系统依然成为国外流行的时尚文化,有着非常诱人的前景与巨大的市场,根据国际专家不完全统计,在未来十年内智能家居控制产品销售额能够达到328亿美元。虽然国外每家公司的策略不尽相同,但都坚信同样的信念,就连IBM公司的迈克尔.凯罗斯克说:“这是个不容IBM公司忽视的市场机会。”现阶段,智能家居控制系统在我国的研究与应用相对处于一个起步阶段,但是也呈现出蓬勃发展的趋势,在2011年5月正式提出的“十二五”规划中也明确提出了将智能住宅作为战略性新型产业培育发展,在大力扶持的物联网时代,智能家居控制系统在我国必将迎来一种热潮。然而智能家居控制系统在我国发展的近十
4、年来,一直遇到市场瓶颈,原因在于:对我国广大家庭来说,智能家居系统依然是一个概念产品,并没有在人们心中形成一种消费化的产品,市场认可度比较低。智能家居行业现状也不容乐观,出现很多问题:智能家居系统技术标准不统一,操作性差,价格昂贵,而且产品参差不齐。虽然智能家居系统在我国近十年的发展历程中小有成就,提出了很多的概念性产品,但都没有很好的满足人们的核心需求,这种问题的关键性在于:目前智能家居控制系统产品的稳定性差,并且兼容性也不成熟,以至于实际效果与人们所要求的效果有很大的差异。在我国虽然智能家居起步尚晚,技术水平处于发展阶段,但我国人口众多,人们对住宅的刚性需求很大,随着国家大力扩大内需,民众
5、的消费水平也不断提供,对生活水平质量的要求不断加大,因此在现有阶段大力扶持智能家居行业也是对我国房地产事业的发展指明了一个新的发展平台。因此现阶段我国很多IT公司有一个明确的方向:智能家居控制系统先从实用性做起,积攒一些技术手段及民众对其功能性的需求,然后逐渐开始做高端性的产品。具统计资料显示,目前我国已有70%的家庭安有网络宽带,在一线、二线城市化进程中,将有50%左右的住宅要实现智能化控制,由此看来我国智能家居控制系统前景还是可观。目前,在国内智能家居控制系统起步虽然较晚,但是国内一些知名的传统家电行业巨头如:海尔、TCL等,还有一些IT巨头如:河东企业(HDL)、上海索博、波创科技等都已
6、经涉足智能家居行业,并投入大量的资金与高端技术来研发。而先进入该领域的一些企业基本都推出了各自的产品,如海尔集团的“U-home”、TCL的“Mihome我的智能管家”、波创“EHOME智能家居远程控制系统”,都得到一定程度上的应用。在当前社会高速发展的同时,更是倡导节能减排、低碳环保,由此利用智能家居控制设备的优点,其悄然已经成为房地产行业、住宅建设、IT技术行业发展的重点。随着生活节奏的加快,人们更感受到时间、生活的便捷、安全的重要性,并且对生活质量的追求也越来越强烈,因此将智能化系统应用于家庭住宅中,有着重要的意义,也同时满足广大民众的愿望。 由此可见智能家居控制系统有着非常广阔的前景。
7、目录第1章 方案论证11.1智能家居控制系统结构设计11.2智能家居控制系统方案框图2第2章 硬件系统设计32.1处理器芯片的选择32.1.1电源电路设计32.1.2复位电路设计42.1.3时钟电路设计52.1.4串口电路设计62.1.5 JTAG电路设计62.1.6 SDRAM电路设计72.1.7 FLASH电路设计82.2 ZigBee接口电路设计112.3 WIFI接口电路设计122.4 3G接口电路设计132.5 温度接口电路设计142.6 烟雾传感器接口电路设计15第三章 应用软件设计173.1交叉编译环境的搭建173.2 U-Boot的移植173.3 Linux 内核的移植183.
8、4 YAFFS2文件系统移植193.5 ZigBee模块驱动软件设计203.6 3G模块驱动软件设计223.7 WiFi模块驱动软件设计23第4章 小结25参考文献26第1章 方案论证1.1智能家居控制系统结构设计 经过对用户所需功能以及现有市场产品做出分析,本论文设计主要将智能家居控制系统主要分五个部分组成:电源部分、中央控制器S3C2410A核心板、各个功能子模块、智能家居控制系统内部通信以及智能家居控制系统外部通信。电源部分:电源部分是为整个智能家居控制系统供电,因此是硬件设计的重点,在控制设备设计两种电源控制方案,其一是用直流开关电源接220V电压来接入设备为系统供电,其二是采用干电池
9、直接对系统供电。中央控制器核心板:中央控制器是整个智能家居控制系统的核心,本设计采用Samsung公司的嵌入式ARM-S3C2410A芯片,首先绘制其最小系统原理图,PCB板制作成插针形式,预留一些I/O接口来连接其它功能子模块,并可以在客户需要其他功能时做出设备的扩展。其主要完成以下工作:接收各个功能子模块所采集的数据信息进行分析,对分析结果和客户所需要实现的功能,然后发送指令对家居设备进行控制;并以嵌入式系统设定网关,对通过网络访问家居设备时提供安全机制保障。功能子模块:功能子模块以中央控制器为核心,实现系统所需的特定功能,比如:智能灯光的控制、家庭电器设备的控制、窗户以及门禁系统控制、室
10、内温度及气体的采集、远程控制等。每个模块的实现功能都是由中央控制器来发送指令。智能家居控制系统内部通信:其主要实现的功能是完成中央控制器与功能子模块之间的信息传递。经过前面对有线与无线通信方式的分析与研究,本次设计采用无线通信方式作为智能家居控制系统的内部通信方式,并结合无线通信特点,本设计采用ZigBee+WIFI作为内部通信方式。智能家居控制系统外部通信:主要功能是实现用户通过Internet远程操作与控制家居设备,随着我国目前宽带网络的发展日趋完善,技术的不断成熟,现阶段我国常用的宽带接入方式有两种:ADSL、无线上网及常说的WiFi,因此在控制系统中采用这两种方式,添加DM9000模块
11、以有线方式接入,并将WiFi作为其外部通信,以此来降低系统成本及复杂度,系统中也添加3G模块,当家庭电器出现状况或发生危险情况是,实现通过3G网络以手机短信方式来告知用户。1.2智能家居控制系统方案框图经过对智能家居控制系统方案的选择及技术手段的选定,下图2-4给出本次控制系统方案框图。由图可见,本次论文设计旨在实现的功能有:家居照明控制系统、家庭安防控制系统(指纹识别和RFID射频卡相结合的门禁系统、火灾、煤气泄露)、通过温度传感器采集各个房间的温度、通过气体传感器采集空气湿度与有害气体、视频实时视频监控系统、采用256色LCD来显示小区信息、通过无线网络实现智能家居统控制系统同Intern
12、et网络连接,并通过3G网络实现与手机的对接。图1-1 智能家居控制系统框图第2章 硬件系统设计2.1处理器芯片的选择S3C2410A处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用FBGA封装,采用0.18um制造工艺的32位微控制器。该处理器拥有:独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2个USB主机,1个USB设备,SD主机和MMC接口,
13、2路SPI。S3C2410处理器最高可运行在203MHz。2.1.1电源电路设计现在的ARM处理器为了减少系统的功耗、便于电源管理,采取多组电源供电的方式来工作。一般都有CPU核心电压VCC_CORE、外围接口部分供电VCC_IO、内存接口部分供电电压VCC_MEM等多路供电电压。本设计采用Samsung公司的S3C2410A处理器,考虑其应用场合以及电源管理部分的内部设计,采用多个分离原件来设计电源电路部分。S3C2410A所需电压为2组:一组为核心电压VCC_CORE为1.25V,用带固定输出的PJ1134调节分压电阻得到1.25V,另外一组为其片内功能模块及I/O引脚电压,分别为1.8V
14、和3.3V。如图2-1所示电路图:图2-1 S3C2410A内核电压IO引脚电压VCC_IO为3.3V,此外还包括:ZigBee模块、WiFi模块、3G模块、温度采集模块等,所需均为3.3 V。电路设计如图2-2所示电路图,5V经LM1117-33转换成3.3V。图2-2 5V转3.3V电路设计USB、GPS、烟雾传感器等所需电压均为5V,电路设计如图2-3所示,由LM2576经外接12V直流开关电源转换成5V,LM2576芯片有较强的输出电流驱动能力,具有可靠的工作性能、较高的工作效率和较强的输出电流驱动能力,从而为MCU的稳定、可靠工作提供了强有力的保证。图2-3 12V转5V电路设计2.
15、1.2复位电路设计本设计在采用分离式芯片的设计中,同时采用门电路来实现复位电路,电路设计如图2-4所示,采用电阻电容电路及SN74LV14D组成了一个复位信号输出电路。带有RESET和nRESET两个复位信号输出,S3C2410A复位为低电平有效。图2-4 复位电路设计2.1.3时钟电路设计Samsung公司的S3C2410A处理器内部带有DPLL、APLL电路,所以外部一般都接频率比较低的12MHz或13MHz的有源晶振或晶体振荡器;由于S3C2410A内部带有RTC电路,还需外接32.768KHz的晶体振荡器,具体接法如图2-5所示。C20、C22一般选用15pF的电容,VSS的引脚需要注
16、意接到离晶体最近的VSS。C21、C23一般选用22pF的电容,如果外部采用有源晶振的话,直接把时钟信号接到OSC32K_IN,而OSC32K_OUT引脚可以悬空,这个时候需要注意OSC32K_CTRL引脚,这个引脚是来OMAP确定使用内部晶体振荡器还是使用外部振荡器的。在设计PCB的时候,振荡器电路走线要尽量近,晶体摆放位置要离ARM的时钟输入引脚近,而且最好在摆放晶体的表层铺上一层地信号铜箔,把晶体的时钟信号围起来。图2-5 时钟电路设计2.1.4串口电路设计S3C2410A系统为了与PC机之间进行通信,因此需要串口模块,采用RS-232,是一种全双工的串行接口,传输速率为20Kbps。由
17、于RS-232采用标准电平信号与S3C2410A采用的不同,因此两者之间进行通信必须经行信号电平转换,本次串口电路设计采用MAXIM公司的MAX3232芯片进行电平转换。电路设计如图2-6所示。图2-6串口电路设计2.1.5 JTAG电路设计TAG是Joint Test Action Group的缩写,是一种国际标准测试协议,主要用于芯片内部测试,以及对系统进行仿真、调试。标准的JTAG接口是4线:测试数据输入TDI、测试数据输出TDO、测试模式选择TMS、测试时钟TCK。在ARM最小系统中,JTAG主要实行对各个器件的测试,主要目的是调试BootLoader,一旦在集成开发环境下成功下载Bo
18、otLoader后,开发工作就可以脱离JTAG接口,直接使用BootLoader和ARM处理器的外围接口来下载内核和文件系统了,另外还可以通过JTAG接口对Flash芯片烧写。本设计采用20pins插针形式的JTAG接口电路设计。如果在nRESET与nTRST这两个引脚信号不用时,要将这两个引脚上接1K的上拉电阻,不然在进行调试时,这两个JTAG信号就不确定了,造成不能正常连接ARM系统;JTAG上的输出信号都要接10K的电阻拉高,20pins的JTAG电路设计如图2-7所示:图2-7 JTAG接口电路设计2.1.6 SDRAM电路设计在上面几个小部分介绍的电源电路设计、复位电路设计、时钟电路
19、设计、JTAG电路设计等几个部分,已经组成了基于ARMS3C2410A处理器的最小系统硬件设计。然而在本课题设计的智能家居手持设备,需采集、处理大量信息,还需要移植Linux,光是片内的SDRAM是不够的,还是需要外扩SDRAM,因此在本次控制系统设计时,需要设计大容量的存储器。SDRAM多用于设备内存区,虽然掉电之后数据不能保存,但是它具有快速的读取与写入特性,而且速度远远大于Flash这样掉电不失数据的存储设备,这样使它非常适合用于作为程序的运行空间,存放运行时所需的数据和堆栈区。对于嵌入式设备系统的启动过程来说,当系统刚上电的时候CPU会从0x0地址读取启动代码,然后对系统硬件进行简单必
20、要的初始化,然后把后续的代码移入SDRAM,然后跳到SDRAM继续执行,这样就会在很大程度上提高系统的启动速度。几乎所有的嵌入式设备都会用到SDRAM,可见它的应用之广,SDRAM不但价格上便宜,而且它的单位空间存储量也大。由于本次设计的中央控制器是SC32410A,其片内具有独立的SDRAM刷新控制逻辑,可以方便地与SDRAM接口。目前市场上最为常用的是16位数据带宽的SDRAM,工作电压为3.3V。本次设计采用2片16位的SDRAM扩展为32位数据带宽的SDRAM。采用Samsung公司16位数据带宽的SDRAM器件K4S561632C-TC75(32MB),采用高性能CMOS技术,按4M
21、16位4组织方式,电路设计如图2-8所示:图 2-8 SDRAM电路设计2.1.7 FLASH电路设计Flash存储器是一种在系统可编程期间,存储的信息在系统掉电后不会丢失。Flash在嵌入式设备中应用非常广泛,它具有容量大、读写速度快、低功耗、可整片或分扇区在系统编程(烧写)或擦除等特点,所有对芯片的操作都是根据它自己的内部嵌入的算法完成的。它相比RAM等易失性存储器具有掉电不会失去数据的特点,所以很多时候我们用它来存放系统的重要数据,比如BootLoader,内核、程序代码等。当前Flash主要分成两种:Intel公司开发的NOR Flash和TOSHIBA开发的NAND Flash o
22、NOR Flash容量小、成本高、但读速度要快,NAND Flash相比NOR Flash容量大、成本低、但不适用与频繁读写,因此NOR Flash适合用来存储少量程序代码,NAND Flash则是高数据存储密度的理想方案。NOR Flash采用AMD公司生产的AM29LV 160DB,其采用COMS高性能结构,2Mx8-Bit结构。AM29LV 160DB是一款常见的Flash存储器,单片存储容量为16MB,工作电压为2.7-3.6V, AM29LV160DB具有16位数据宽度,并以16位(字模式)数据宽度的方式工作。通过对其内部的命令寄存器写入标准命令序列,可对Flash进行编程、整片擦除
23、以及其他操作。电路设计如图2-9所示:图2-9 NOR Flash电路设计AM29LU160DB第47脚是BYTE#脚,如果采用数据位为16位,BYTE#需要接接高电平时:或者采用数据位为8位,BYTE#就需要接低电平。本设计接VCC,采用16位数据带宽,A0-A19是地址线,D0-D15作为数据输入输出口。因为数据位是16位,AO-A19可以选择220=1M*2byte = 2Mbyte,正好是AM29LV160DB的容量。上图中AM29LV160DB的A20,A21是空脚,分别接的是LADDR21,LADDR22,这是为了以后方便扩展NOR Flash的容量。 NAND Flash进行擦除
24、和写操作的效率更高,并且容量更大,用十存储数据。NAND Flash一般都采用Samsung公司的K9FXX08系列,有16M ( K9F2808 ), 32M(K9F5608 ), 64M ( K9F1208 ), 128M (K9F1G08),它们的封装与原理图一致,只需要在软件编程中稍加修改,本设计采用K9F1G08,存储空间为128M 。图2-10 NAND Flash电路设计S3C2410A芯片内集成NAND Flash控制器,因此电路设计相对简单,K9F1G08 和S3C2410A的连线包括,8个IO引脚连接S3C2410A的低8位数据总线LADTA7-LDATAO , 5个使能信
25、号(nWE, ALE, CLE, nCE, nRE), 1个状态引脚(R/B) , 1个写保护引脚(nWP,直接连接3.3V电压拉高。地址、数据和命令,是在这_5个使能信号的配合下,通过8个IO引脚传输。写地址、数据、命令时,nCE, nWE信号必须设为低电平,它们在nWE信号的上升沿被锁存:命令锁存使能信号CLE和地址锁存使能信号ALE用来区别IO引脚上传输的是命令还是地址。需要注意的是RnB信号是OC门输出,因此需要外部的10K欧姆上拉电阻。电路设计如图2-10所示。2.2 ZigBee接口电路设计图 2-11 ZigBee接口电路考虑目前市场上的ZigBee产品以及技术方面的原因,因此采
26、用TI公司的CC2530系列嵌入式无线通信模块。CC2530是用于IEEE 802.15.4, ZigBee和RF4CE应用的一个真正的片上系统(SOC)解决方案。CC2530集成单片机、ADC、无线通信模块十一体,大大提高了单片机与无线通信模块组合时的可靠性,同时也减小了节点的体积与质量。 CC2530支持最新的ZigBee协议-ZigBee 2007/PRO, ZigBee 2007/PRO相对十以前的协议栈具有更好的互操作性、节点密度管理、数据负荷管理、频率捷变等方面有重大进步,并且支持网状网络,而且其相对十以前的版本,具有功耗低的优点。这就使得运用CC2530设计出来的节点通信距离更远
27、,组网性能更稳定可靠。 CC2530目前常用的有四种,分别是不同的Flash版本:CC2530F32/64/128/256,分别具有32/64/128/256KB的闪存。ZigBee接口电路设计如图 2-11所示,描述的是CC2530模块上各引脚的连接状况,当使用诸如单极子的一个不平衡的天线,应该使用一个巴伦来最优化性能。巴伦可以使用低成本的分立电感和电容实现。巴伦包括C38, L3, C46和Loo32MHz晶振使用了一个外部32MHz振荡器XTAL1和两个负载电容(C49和Cs0);XTAL2是一个可选的32.768kHz晶振,有两个负载电容(C_53和C_54)用十32.768kHz晶振
28、,32.768kHz晶振用十要求非常低的睡眠电流消耗和精确唤醒时间的应用。CC2530与ARM-S3C2410A采用SPI接口形式,来进行通信,在S3C2410A作为主机时,SSEL引脚要接10K欧姆的上拉电阻,用一个GPIO口来接CC2530的使能端CSN,用四个中断EINT1, EINT3, EINT4, EINTS分解连接CC2530的四个中断输出引脚。电路连接如图2-12所示: 图2-12 S3C2410A与CC2530接口连接设计2.3 WIFI接口电路设计 WiFi模块采用上海汉枫电子科技有限公司推出的全新的第二代嵌入式Uart-WiFi模块产品HF-A11x o Uart-WiF
29、i是基十Uart接口的符合WiFi无线网络标准的嵌入式模块,通过FCC, CE, RoHS认证,内置无线网络l办议IEEE802.11协议栈以及TCP/IP协议栈,支持频率范围:2.412-2.484GHz,能够实现用户串口或TTL电平数据到无线网络之间的转换。 图2-13 HF-A 11 x电路设计处理器S3C2410A的串口直接与HF-A 11 x的串口相连,进行通信,电路设计连接如图2-13所示,S3C2410A的3个GPIO口控制其WiFi状态指示(nLink、模块启动状态指示(nReady)、模组复位(nRST),电源为S3C2410A外部接口电源3.3V。2.4 3G接口电路设计3
30、G模块采用ZTE中兴公司的MF210模块,MF210是一款PCI Express Mini C and接口的HSUPA无线上网模块,MF210模块具有许多功能特点。模块产品MF210和S3C2410A连接时时,主要分为以下信号组:USB信号、SIIVI Card信号、射频开关控制信号W_DISABLE_N、整机复位信号PERST_N、电源和地。工作状态指示灯信号WWAN_LED_N经过一个限流电阻后直接接电源3.3V。 W_DISABLE_N信号(管脚号:20)为MF210的输入信号,低电平有效,由与在MF210内部由150K欧姆电阻上拉到3.3V,因此系统对此电路不做上拉处理。PERST_N
31、信号(管脚号:22)号为MF210的系统复位信号,低电平有效。MF210具有高速USB2.0接口,支持全速和高速模式,其经过PCI-E接口引出连接到控制器S3C2410A,管脚为36 (USB_DM), 38 (USB_DP)。电路设计如图2-14:图2-14 3G模块接口电路设计 本产品的射频天线接口有两个:一个是主天线接口(PCB上有“MAIN”标识),一个是分集(GPS)天线(分集和GPS都可选,但不能同时支持)接口(PCB上有“AUX”标识)。天线接口采用的射频座均为HRS公司U.FL-R-SMT(10),对应十射频接口的线缆,建议选用HRS公司的U.FL_ LP_ 088。2.5 温
32、度接口电路设计 结合本次控制系统的实际情况,由于需要采集家庭内部的温度,具有分散性,因此本系统设计采用DALLAS公司的DS 18B20,它具有进行多点温度采集的特点。DS 18B20是采用“单总线”形式的数字温度传感器,它具有结构简单、体积小、功耗低、无须外接元件等特点,而且用户还可以自己设定预警上下限温度。 DS 18B20其测量温度范围为-55到+125摄氏度,支持3-5.5V电压供电,因此本次系统电源的设计完全满足其供电模式。DS 18B20主要由四部分组成:64位光刻ROM,温度传感器、配置寄存器和非易失性温度报警触发器。ROM中的64位序列号出厂前已光刻固化,每个传感器的序列号都是
33、唯一的,因此可以在一根总线上挂接多个DS 18B20,能极大减少I/O口的占用,在使用中不需要任何外围元件,传感器与CC2530的连接形式如图2-15所示:图2-15温度接口电路设计2.6 烟雾传感器接口电路设计 烟雾传感器主要是利用气敏元件的气敏特性,将其作为电路中的气-电转换元件,并配以相应的电路、指示仪表或声光显示部分fn组成的气体检测仪器。本论文设计采用MQ-N 10进行敏感气体的密度采集。MQ-N 10的敏感材料是活性很高Sn02,其工作原理为:当Sn02在空气中被加热到一定温度时,Sn02会吸附空气中的氧,因此其电子会转移到所吸附的氧上,导致氧原子变为氧负离子,由于这种电子的转移,
34、会在Sn02表面生成一个正的空间电荷层,从而导致表面势垒升高,这样会阻碍电子流动,导致电导率的变化。 MQ-N10具有很长的使用寿命,可靠的稳定性、快速的响应恢复特性。因此在家庭,工厂以及大型商场中得到了广泛应用,MQ-N 10电路设计如图2-16所示: 图2-16 MQ-N10烟雾传感器接口电路设计MQ-N10烟雾传感器电路设计采用两部分:烟雾传感器部分与模拟放大电路部分,系统将采集的烟雾信号首先转化为模拟信号,然后将模拟信号经过S3C2410A中的A/D转换器,转化为数字信号,这样S3C2410A就能够把所采集到的信号进行分析与判断,电路设计中ADC_AIN1与ADC_AIN1两个信号连接
35、S3C2410A的ADC通道上。第三章 应用软件设计3.1交叉编译环境的搭建 先将安装包linux中的arm-linux-gcc-3 .4.1. tgz拷贝到某个目录文件火下,如tmp,然后进入到该目录,执行解压命令: #cd /tmp #tar xvzf arm-linux-gcc-3.4.l.tgz -C #mkdir -p /opt/HY2410 然后运行命令: #gedit /root/.bashrc 编辑/root/.bashrc文件,在最后一行export PATH=$PATH:/usr/local arm/3.4.1/bin 编辑完成后,需要重新登入系统(不必重启机器,开始一lo
36、gout即可),以便使设置生效,然后在终端界面下的命令行输入arm-linux-gcc -v,则交叉编译环境已经成功建立。3.2 U-Boot的移植本系统设计移植U-Boot的具体步骤如下:1)从U-Boot的官方网站ftp:/ftp.denx.de/pub/u-boo“上获得最新版本的 U-Boot-1.3.4,也是bzip2的压缩格式。2)建立自己项目名称SmartHome2410,修改U-Boot - 1.3.4目录下的 Makefile文件,修改如下: SmartHome2410_config:unconfig ./(MKCONF IG)$(:_config=)arm arm920t
37、SmartHome2410 NULL S3c24x03)在board子目录中建立SmartHome2410 ubootmenglingxu uboot#cp rf board/s3c2410 board/ SmartHome2410 ubootmenglingxu uboot#cd board/ SmartHome2410 ubootmenglingxu SmartHome2410#mv s3c2410.c SmartHome2410.c4)在include/configs中配置头文件 先复制S3C2410A核心板的配置文件,在修改: ubootmenglingxu uboot#cp incl
38、ude/configs/s3c2410.h include/configs/SmartHome2410.h5)配置S3C2410A核心板 ubootmenglingxu SmartHome2410#make SmartHome2410_ config6)编译U-Boot 执行#make CROSS_COMPILE=arm-linux一命令,如果编译成功可以得到U-Boot映像。7)将U-Boot通过JTAG接口,烧写入NAND Flash 。3.3 Linux 内核的移植内核移植过程:1)从http:/www.kernel.org/pub/linux/kernel/v2.6/linux-2.6
39、.39.tar.xz下载 linux-2.6.39.2内核代码,把内核代码放到自己所建立的目录文件下,并 解压: rootmenglingxu linux2.6.39# cd /home/arm/s3c2410/Kernel rootmenglingxu linuxt2.6.39 kernel#tar xzvflinux2.6.39.2.tar.gz -c/ rootmenglingxu linuxt2.6.39 kernel# cd linux2.6.392)清理内核配置文件信息,执行如下命令: rootmenglingxu linux2.6.39 kernel#make distclean
40、 然后重新启动。3)Flash分区 本论文设计采用的是NAND Flash,因此需要把NAND Flash分为bootloader, kernel, root, user四个区。4)确定核心板微处理器的类型S3C2410A、网卡类型DM9000, TCP/IP协议等,要结合实际所做的目标板来配置。5)配置内核 对十本次核心板S3C2410A核心板开发来说,Liunx内核中,有很多不需要的功能,为了项目设计时能够减少编译出来的内核体积,因此在配置内核的时候,就需要对所需功能进行配置,并删除不需要的模块,因此需要配置内核产生.config文件 rootmenglingxu linux2.6.39#
41、cp arch/arm/configs/ SmartHome2410_ defconfig .config rootmenglingxu linux2.6.39#make menuconfig 保存退出,产生.config文件,.config文件能从提供linux-2.6.39.2的内核中找到,文件名为config.back 。6)编译内核 rootmenglingxu linux2.6.39#make zImage 编译内核完成后,会生成uImage,其位于/arch/ arm/boot目录下。7)加载内核模块 rootmenglingxu linux2.6.39#make modules_
42、 install 将编译好的内核模块从内核代码目中找到,并cope到/lib/modules目录下。8)制作init ramdisk rootmenglingxulinux2.6.39#mkinitrd initrd-$version $version3.4 YAFFS2文件系统移植1)从http:/www.alephl .co.uk/cgi-bin/viewcvs.cgi/下载最新的YAFFS2代 码,点击“Download GNU tarball,下载后出现cvs-root.tar.gz压缩包并解压。2)给内核打YAFFS2文件系统的补丁 cd /opt/stdudyarm/source
43、tar一zxvf cvs-root.tar.gz一C /opt/studyarm cd /opt/stdudyarm/cvs/yaffs2/ ./patch-ker.sh c /opt/studyarm/linux-2.6.39.2/3)下面完成二件事: 1.修改内核fs/Kconfig 增加一行:source fs/yaffs2/Kconfig 增加一行:ojb-$(CONFIG_ YAFFS_ FS) +=yaffs2/ 2.在内核fs/目录下创建yaffs2目录 将yaffs2源码目录下面的Makefile.kernel文件复制为内核 fs/yaffs2/Makefie; 将yaffs2
44、源码目录的Kconfig文件复制到内核fs/yaffs2目录下; 将yaffs2源码目录下的*.c *.h文件复制到内核fs/yaffs2目录下. 4)配置Linux内核,选择支持yaffs2文件系统 进入Linux内核目录linux2.6.29.2 make modules ARCH=arm CROSS COMPILE=arm-linux-5)编译并安装yaffs2 make ARCH=arm CROSS COMPILE=arm一linux-make install3.5 ZigBee模块驱动软件设计 cc2so与S3C2410A的接口主要是SPI的四线接口,其实用到就是二个。在编写CC2s
45、30的驱动程序前,先写一个驱动程序的框架,接着就可以在后面的开发过程中添加有关CC2s30操作的代码了。 struct file_operations这个数据结构提供文件系统的入口点函数,也就是访问设备驱动的函数,包括设备的读写操作,初始化操作等。file_ operations在定义。static struct file_ operations spi_fops=.owner=ZIGBEE_MODULE,.open=spi_open,.read=spi_read,.write =spi_write, ; Spi_init函数是在驱动模块加载时调用的,它是最先被执行的一个函数。在这里一般会进行
46、一些设备的初始化工作,例如注册设备,端口映射。 Static int spi_init(void) printk(KERN_ALERT zigbee_ spi一us init okn); if(SPI MAJOR) SPI DEV=MKDEV(SPI MAJOR, SPI MINOR); retvalue=register_chrdev_region(SPI DEV, 0, SPI NAME); elseretvalue=alloc_chrdev_region(&SPI DEV, 0, 1,SPI NAME); SPI MAJOR=MAJOR(SPI DEV); if(-1= retvalue) printk(KERN_ERR zigbee module device register failure din); return retvalue; SPI CDEV=cdev_alloc(); if (SPL CDEV!=NULL) cdev_init(SPI CDEV, &spi_fops); SPI CDEV-ops=&spi_fops; SPI CDEV-owner-ZIGBEE_MODULE;