基于ARMcortex-A8内核的嵌入式智能家毕业论文_第1页
基于ARMcortex-A8内核的嵌入式智能家毕业论文_第2页
基于ARMcortex-A8内核的嵌入式智能家毕业论文_第3页
基于ARMcortex-A8内核的嵌入式智能家毕业论文_第4页
基于ARMcortex-A8内核的嵌入式智能家毕业论文_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

系统整体分析与方案论证1.1项目方案分析1.1.1项目需求分析结合现实生活中的实际需要,以及现在人们对智能家居的理解,确定了一下该智能家居项目应该实现的功能,最终定下功能目标主要分为四大部分:一、能过利用Zigbee组网对家庭内的震动、声音、火焰、烟雾进行监控。二、在开发板中移植QT程序实现良好的人机交互界面。三、能够实现Zigbee协调器与开发板之间的交互控制。四、用户可以通过GPRS模块接受来自开发板汇集的信息,并且实现反向控制。1.1.2项目初步方案设计结合最初设定的四大基本功能,以及现在所掌握的知识能力,初步的构建一套设计方案如图1-1所示。ZZigebee协调器S5PV210火焰节点烟雾节点震动节点声音节点GPRS图1-1系统设计方案1.2方案论证及器件选型1.2.1最初方案论证及方案定型由于GPRS模块后期需要交费,投入过大,所以舍弃了该方案。更改了最后用户交互方式,改为PC机直接用网线连接,并且可以登录QT界面,实现交互。S5PV210Zigbee协调器ZigebeeZigbee节点同时为了演示智能家居项目的反控制效果,在Zigbee中加入了继电器控制白炽灯的小模块,协调器可以接受来自开发板串口的命令,将远处的Zigbee一个S5PV210Zigbee协调器ZigebeeZigbee节点继电器PC机继电器PC机白炽灯白炽灯图1-2设计方案更改图1.2.2项目器件选型Zigbee组网方面采用了CC2530,采用这款Zigbee的考虑主要是看中了其体积小,重量轻,且引出了全部的IO引脚能够允许接入丰富的传感器资源。CC2530使用的是频率达到2.4G的全方位天线,地面无阻碍稳定传输可以达到200多米,自动重连距离达到了110米,完全能够满足家庭内的组网。嵌入式开发平台,是选用了S5PV210的板子,平台内核为ARMCortex-A8高性能处理器,A系列也是现在ARM家族中的最高系列,同时也是基于ARMV7的体系结构,使用精简指令集。虽然嵌入式微处理器的体系架构如今已经非常丰富,包括MCS51—96、Intel80x86、MIPS、POWERPC、ARM,但是ARM以其运算速度快,体积小,功耗低的特点,已经在如今的嵌入式移动终端设备中大展拳脚,使它成为移动终端设备中的宠儿。选用S5PV210的开发板,也主要看中了其稳定,以及外设资源丰富的特点,更有利于人们去认识了解,进而开发嵌入式项目。开发板的温度传感器选用的是DS18B20,其体积小且精度高的特点是其常常被选用的原因。接线方便,只需一条IO线即可与未处理前相连,实现双向通信。且封装形式多样能够适应各种环境。2系统技术介绍2.1ZigBee技术介绍2.1.1ZigBee技术简介现在Zigbee技术以及成为应对近距离、低复杂度和低功耗、低成本的双向通信的佼佼者。其应用领域广泛,特别是一些要求功耗低且对传输距离要求不长的设备通信,Zigbee技术备受青睐。Zigbee这个名字其实是来源于蜜蜂一种用来传递信息的舞蹈,人们形象的将Zigbee的名字赋予了这项通信技术。之前这项通信技术也被称作HomeRFLite、RF-EasyLink或fireFly无线电技术。与CDMA和GSM技术一样,Zigbee也是一种无线的数据传输技术,虽然无法像前者一样发送视频数据,但是其稳定性高且成本低廉。ZigBee数传模块可以看做我们生活中的那些移动公司建立的基站一样。然后通过多个ZigBee实现传输距离的无限延长,达到理想的传输距离[1]。2.1.2ZigBee技术特点ZigBee说到底是一种可以工作在三个频段上的无线传输技术,分别是全球通用的2.4GHz、欧洲支持的868MHz和能在美国使用的915MHz3上,分别能够达到最高250kbit/s、20kbit/s和40kbit/s的传输速率。作为一种无线通信技术,ZigBee具有如下优点[2]:低功耗:Zigbee的技术特点就是传输速度低,因此其对发着功率的要求也很低仅为1mW。并且Zigbee能够实现休眠模式,功耗再一次被降低,于是经过测试,仅一节5号电池就可以支持Zigbee工作长达半年之久,这是其他通信技术无法匹及的。(2)低成本:随着技术的成熟现在Zigbee的成本价大约是8-10元人民币,这也得益于Zigbee技术是没有专利费用的,低成本对于ZigBee也是一个重要的指标。(3)时延短:所谓时延短是指设备搜索设备到激活设备到最后信道接入的总时间,Zigbee的时延大约为45ms。因此Zigbee技术非常适合被用在对时延要求苛刻的无线控制场合(如工业现场)。(4)网络容量大:Zigbee可以支持多种组网方式,容量最大的是星形结构最多可以容纳256个设备,一片区域内可以同时最多容纳100个ZigBee网络,而且组网灵活。(5)可靠性强:如果传输过程中出现问题同样具有重发机制。(6)安全度高:ZigBee提供了基于循环冗余校验(CRC)的数据包完整性检查功能,支持鉴权和认证,采用了AES-128的加密算法,每个应用可以确定其安全属性的高低[3]。2.1.3ZigBee应用实例ZigBee模块是一种多应用在物联网无线数据传输的终端,利用ZigBee网络来实现无线数据传输。如今在物联网产业链中Zigbee技术已经被广泛应用,如智能电网、智能交通、智能家居、金融、移动POS终端、供应链自动化、工业自动化、智能建筑、消防、公共安全等领域[4]。2.2嵌入式LINUX系统介绍2.2.1嵌入式技术介绍嵌入式系统的核心是嵌入式计算机系统,由硬件层、中间层、系统软件层和应用软件层组成。执行装置又被叫做被控对象,可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。执行装置可以很简单,如MP3上的菜单键,可以切换歌曲;也可以很复杂,如谷歌眼镜,上面集成了多个微小型控制电机和多种传感器,从而可以执行各种复杂的动作和感受各种状态信息.2.2.2嵌入式特点(1)可裁剪性强。可以根据功能要求,裁剪设备功能。(2)实时性强。EOS实时性一般较强,可用于各种设备控制中。(3)接口统一。提供统一的设备驱动接口。(4)操作方便、简单、提供友好人机交互界面,追求易学易用。提供强大的网络功能,支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。(5)强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。(6)固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。(7)更好的硬件适应性,也就是良好的移植性[5]。(8)嵌入式系统和具体应用有机地结合在一起,嵌入式的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。2.2.3嵌入式应用及发展前景嵌入式控制期间基本上囊括了生活的方方面面,比如消费mp3、手机、电梯、汽车、数字电视、微波炉、数码相机、空调、交换机、路由器...卫星、航天飞机、月球探测仪、控制主机,智能监控[6]。计算机系统是由硬件和软件系统组成的,并且软、硬件均可裁剪的但必须具备最小系统要求[7]。现在特别是随着消费电子类产品的智能化,嵌入式的重要突显了出来[8]。3系统详细设计3.1Zigbee系统软硬件设计由于资金有限,无法购置大量的Zigbee模块,这里采用两个Zigbee,并将四个传感器搭载到一个Zigbee模块上,模拟组网系统。即一个Zigbee上分别搭载了火焰、震动、水滴、声音传感器。一个Zigbee与开发板相连作为协调器。然后将写好的程序分别下载到两个Zigbee中,这样实现了家庭内信息收集,以及对家庭内电器的控制。Zigbee程序是独立编写和调试并且通过串口能够接受和发送相关命令。以下是Zigbee模块部分代码的详解:首先是发送函数appSwitch();if(basicRfInit(&basicRfConfig)==FAILED){HAL_ASSERT(FALSE);}InitSensor();basicRfReceiveOff();while(TRUE){pTxData[0]=KeyScan();//键值扫描if(pTxData[0]!=0){basicRfSendPacket(LIGHT_ADDR,pTxData,APP_PAYLOAD_LENGTH);halIntOff();halIntOn();}} 这段程序可以说,是发送模块的精华,或者说是核心。Appswich()函数进来之后,首先是一个错误返回机制,如果两个Zigbee连接不成功,会返回fail。连接成功后,Zigbee会打开发送函数,做好发送准备。同时关闭接收功能,保证模块的运行速度和稳定性。接下来程序会进入while()循环,只要Zigbee保持连接,发送模块就会一直处准备在发送模式或者正在发送模式。由于使用的是四个开关量传感器,这里作为四个按键,不停地对连接了四个传感器的IO关键进行按键扫描,获取相应的键值,并赋值给Pxdata[]数组,并使用系统调用函数basicRfSendPacket()将信息发送出去。basicRfSendPacket这个函数也是整段程序的核心,只有调用这个函数才能将IO口接收到的数据有序的发送出去,完成信息的远程传输[9]。下面再来看一下接收模块的核心代码。basicRfConfig.myAddr=LIGHT_ADDR;if(basicRfInit(&basicRfConfig)==FAILED){HAL_ASSERT(FALSE);}basicRfReceiveOn();UartInitial();while(TRUE){while(!basicRfPacketIsReady());if(basicRfReceive(pRxData,APP_PAYLOAD_LENGTH,NULL)>0){{Delayms1(500);halLedToggle(1);UartSend_String(Lcddata,5);UartSend_String(pRxData,1);UartSend_String(Reddata,2);}}}这段程序和发送程序的主体架构是一样的,不过是使用了调用函数basicRfReceive,来接受发送函数发送过来的数据,同时初始化了Zigbee模块的UART1,将来自发送模块的数据打包处理后通过串口发送出去,并可以通过超级终端看到所接收到的数据,通过接受到的具体数据查看到底是触发了什么节点,触动警报。下图3-1为超级终端接受传感器信号的数据[10]。图3-1超级终端截图同时Zigbee也可以接受来自超级终端的数据(在这里超级终端作为开发板的一个替代品),如图3-2在超级终端发送ledon命令,Zigbee的一个IO管教被拉高,led灯亮发送ledoff,led灯灭如图3-2。图3-2Zigbee控制效果图Zigbee的接收终端数据程序其实也非常简单,是使用串口中断来做的,即只要串口检测收有数据接收,就会产生中断,注册标志位,然后拉高相应管脚,实现对led灯的控制。代码如下:#pragmavector=URX0_VECTOR__interruptvoidUART0_ISR(void){URX0IF=0;if(U0DBUF>0){P1_4=~P1_4;temp=U0DBUF;}}整个Zigbee模块的程序架构,如图3-3。图3-3Zigbee代码工程结构图3.2linux嵌入式系统搭建首先需要说明的是本次嵌入系统,是基于前人原有的开源代码消化吸收后,然后添加的驱动代码最终实现的,这里也是充分的发挥了linux嵌入式的开源性。本嵌入式系统结构主要分为了三大块,分别是:1、emilib:抽象数据通信。2、Hmanager:基于QT的PC端图形控制程序。3、Bdehmanager:基于QT的开发板图形控制程序。3.2.1emilib数据通信模块介绍1、Emilib工作原理 消息接受者首先需要完成注册,所谓注册即通过socket连接本地emi_core进程,将本进程进程号以及要注册的消息发送给emi_core。Emi_core收到消息后,需要在内部表记录了(消息号,进程号)之间的关系。每一个注册消息的进程只要成功注册了,就会在表里新增一个项,记录该进程注册的消息号和进程号。然后当发送端给emi_core发消息时,emi_core会把消息好在表里进行匹配,如果是正常情况,那么其会找到注册进程的进程号,此时emi_core会给该进程发送一个USER2信号,同时附加数据放到共享的内存中。而接受进程接收到这个信号之后,就会触发信号处理函数,其实这个原理个人认为其实完全可以理解为一个中断向量表的工作原理,不过它可以同时处理多个进程。最后在信号处理函数内部从emi_core提供的共享内存中读取发送端发来的信息。如此就完成了一次数据通信。2、Emilib的使用方法首先来介绍下,刚才提到的emi_core。emi_core相当于一个中介或者说就是一个电话接线员,主要完成了两部分的工作。首先是接注册类的消息,并把消息和一个函数绑定。然后是接收发送类型消息,查找到已经被绑定的消息函数对,匹配出相同的消息,最后运行对应的函数。Emilib中包含了libemi.so库。主要工作就是提供进程需要的函数,来实现具体功能,接收进程调用库中的函数进行消息好和函数的绑定注册,而发送进程调用库中的函数进行消息发送。下面列出的是libmi.so中常用的函数(1)初始化函数Intemi_ini(void);这绝对是最常用也是最重要的函数,因为它必须在注册消息之前运行,但是每个进程只需要运行一次。(2)消息注册函数Intemi_msg_register_exclusice(eu32msg,emi_funcfunc);返回值为0时代表成功,负数代表失败,两个参数分别代表要注册的消息号,和一个指向结构体的结构体指针,当然要求其提前被写好。(3)发送消息函数Intemi_msg_send_highlevel_blockreturn(char*ipaddr,intmsgnum,intsend_size,void*send_data,intret_size,void*ret_data,eu32cmd)返回值为0代表发送成功,负数代表失败。参数ipaddr表示接受平台的ip。参数msgnum表示要发送的消息号。参数send_size以及send_data分别代表附加数据的长度和附加数据的首地址,如果没有那么就应该设置为0和NULL。参数ret_size和ret_data表示返回数据的大小和首地址。参数cmd,表示发送者要发送给接受者的命令。3、Emilib的测试首先需要进入emitest目录,先建两个emi测试源文件分别用于发送和接受,来模拟通信过程。#cdemitest#vimsender.c#vimreceiver.c以下是在实验中对于emilib所做测试的一部分核心代码。添加到sender.c源文件的核心代码。charhello[20]="hello";

charbuf[5]={0};

emi_msg_send_highlevel_blockreturn("",12345678,6,hello,4,buf,5);

printf("%s\n",buf);添加到receiv.c源文件的核心代码:inttest_func(structemi_msg*msg){printf("msg->cmd%d,msg->data%s\n",msg->cmd,msg->data);returnemi_msg_prepare_return_data(msg,"hel",4);}Main函数代码如下:emi_init();

emi_msg_register_exclusive(12345678,test_func);

while(1){

sleep(1);

}

然后编译sender.c以及receiver.c:#gccreceiver.c-oreceiver-L../bs/pclib/lib-lemi-I../libs/pclib/include

#gccsender.c-osender-L../libs/pclib/lib-lemi-I../libs/pclib/include

编译完成之后生成了可执行文件接着运行测试,首先启动PC机的emi_core程序,然后分别在两个终端启动sender和receiver。

#sudo../libs/pclib/bin/emi_core-d

(一个终端)#./reciever

(另一终端)#./sender

最后的运行结果为运行结果。

在发送终端会显示:

hello在接收终端会显示:

msg->cmd5,msg->datahello证明收发消息成功。3.2.2环境部署以及eh_server下面来大体介绍下eh_server,eh_serve主要实现了两个功能,即便利指定的文件夹,找到以.so结尾的文件,并生成一个列表,调用.So文件里的函数。然后我们根据实际操作来编译和实现eh_server1、在用户home目录下新建空项目目录ehome。 #mkdirehome2、将原项目目录中的rootfs复制到ehome下。 #cp-avuser/rootfsehome/3、修改rootfs/etc/init.d/rcS,删除mount/dev/mtdblock6一行。4、在ehome/rootfs/home目录内新建bin,etc,lib,receiver,trigger等目录。 #cdehome/rootfs/home/ #mkdir-pbinetclibreceivertriggerbin将存放开发板项目应用程序eh_server,emi_core等程序;etc存放项目相关脚本以及配置文件;lib存放项目运行库;receiver,trigger存放eh_server所需插件。5、在rootfs/home/etc目录下新建空脚本文件rcS,用于将来自启动配置,并将rcS配置成可执行属性。 #virootfs/home/etc/rcS修改该rcS文件,添加exportLD_LIBRARY_PATH=/home/lib以及exportPATH=\$PATH:/home/bin #exportLD_LIBRARY_PATH=/home/lib #exportPATH=\$PATH:/home/bin #sudochmod755rcS6、复制原项目目录的emilib-read-only到新项目目录下: #cd #cp-avuser/emilib-read-onlyehome/7、进入到该目录,运行命令编译开发板以及PC机使用的emilib函数库:#cdehome/emilib-read-only#make-fMakefile.armclean#make-fMakefile.arm#make-fMakefile.arminstall#make-fMakefile.pcclean#make-fMakefile.pc#mkdir-p../libs/pclib/bin../libs/pclib/include../libs/pclib/lib#make-fMakefile.pcinstall此时,新项目根目录的libs子目录下就包含了PC和开发板上emilib相关文件。8、进入新项目根目录,新建eh_server相关文件夹。#cd~/ehome/#mkdir-peh_servereh_server/plugins开发板服务程序以及相关插件会被放置在该目录下。9、复制libs/bin/下的emi_core到开发板根文件系统中。#cplibs/bin/emi_corerootfs/home/bin/#cplibs/lib/libemi.sorootfs/home/lib到此为止我们具体完成了eh_server的实现,接下来需要对具体功能进行测试1、启动NFS,挂在~/ehome/rootfs目录下的根文件系统,因此需要修改/etc/exports文件。

#sudovim/etc/exports在该文件中添加一行内容:/home/workdir/ehome/rootfs*(rw,no_root_squash,no_subtree_check,sync)2、重启NFS服务:

#/etc/init.d/nfs-kernel-serverrestart3、启动开发板,修改开发板的启动选项,使用原有内核启动nfs根文件系统。tarena#setenvbootcmdtftpc0008000zImage\;bootmc0008000tarena#setenvbootargsnoinitrdroot=/dev/nfsconsole=ttySAC0init=/linuxrcnfsroot=:/home/tarena/workdir/tools/ehome/rootfsip=:::::eth0:ontarena#saveenv4、第二天的实验代码复制到该项目源码中:

#cp-av~/user/emitest/~/ehome/

#cd~/ehome/emitest/5、将receiver.c源文件编译使用arm-linux-gcc重新编译:

#arm-linux-gccreceiver.c-oreceiver-L../libs/lib-lemi-I../libs/include6、将receiver文件复制到rootfs/home/bin目录下,该目录对应开发板的/home/bin。

#cp-avreceiver~/ehome/rootfs/home/bin7、在开发板中一次运行emi_core和receiver程序:(开发板)#source/home/etc/rcS(开发板)#emi_core-d

(开发板)#receiver8、利用修改PC机的sender.c文件,将原来IP地址""字符串修改成开发板IP地址,然后按照PC的编译方法进行编译,然后利用编译完成的sender程序进行测试。sender.c代码修改后如下:emi_msg_send_highlevel_blockreturn("",12345678,6,hello,4,buf,5);修改后,重新编译一下,过程如下:

#gccsender.c-osender-L../libs/pclib/lib-lemi-I../libs/pclib/include编译完后,运行该程序:

#sender9、开发板看到的现象应该和PC机收发程序看到的现象一致,表示开发环境搭建完成。3.2.1QT登录界面的制作和移植1、QT界面制作准备工作:在项目根目录下的rootfs/home/etc下新建passwd文件,用来保存初始密码。实现Qt的登陆界面ui类,继承QDialog类。包含一个取消按钮,一个确定按钮,一个ip地址输入框和一个密码输入框。给确认按钮编写槽函数,从密码输入框收集用户输入的密码,从ip地址输入框收集用户输入的IP地址,将IP地址保存为全局量,其他消息都使用此IP通信。同时给开发板发送登陆消息,将密码发送给开发板。编写开发板插件,等待开发板比对后的认证结果。开发板受到Qt传来的密码,跟预先保存在本地文件中的密码进行比较,如果一致,则说明认证成功,将成功结果返回给Qt程序,否则认证失败。Qt程序如果收到了认证成功,调用QDialog::accept()函数返回。修改main.cpp程序:LoginDialogw; w.show();if(w.exec()==QDialog::Accepted){MainWindowmainwindow;mainwindow.show();returna.exec();}else{return-1;}2、QT的移植(1)在项目源码目录下新建qtlib文件夹,将build-qt.tar.gz和build-tslib.tar.gz解压到该文件夹内,此时文件夹中会多出两个子文件夹:build-qtbuild-tslib。(2)使用root身份修改/usr/share/qt4/mkspecs/qws/linux-arm-g++/qmake.conf文件内容。在load(qt_config)之前添加两行:

QMAKE_INCDIR_QT=/home/tarena/ehome/qtlib/build-qt/includeQMAKE_LIBDIR_QT=/home/tarena/ehome/qtlib/build-qt/lib/home/ehome/qtlib/build-tslib/lib/(3)进入到pc目录下的qt源码目录内,复制原有的qt项目工程文件为,编辑该文件,修改INCLUDEPATH以及LIBS两行为:

INCLUDEPATH+=../../libs/include/../../eh_server/

LIBS+=-L../../libs/lib/-lemi-lts 同时添加:

DEFINES+="ONBOARD" 修改原来的TARGET变量:

TARGET=bdehmanager 该变量决定了编译完成的程序叫什么名字。(4)在当前目录下运行:

qmake-spec/usr/share/qt4/mkspecs/qws/linux-arm-g++/(5)此时会生成开发板qt中使用的Makefile,运行make命令生成开发板qt界面程序。(6)由于开发板环境与PC环境的不同,开发板程序虽然可以直接编译运行,体验很差。因此,需要修改Qt源代码,修改main.cpp:

#ifdefONBOARDstrcpy(global_ip,"");

MainWindowmainwindow;mainwindow.setWindowFlags(Qt::FramelessWindowHint);

mainwindow.show();

mainwindow.setGeometry(0,0,800,480);

imFrame*im=newimFrame;

QWSServer::setCurrentInputMethod(im);

#elseLoginDialogw;

w.show();

if(w.exec()==QDialog::Accepted){MainWindowmainwindow;

mainwindow.show();returna.exec();

}else

{return-1;

}

#endif到此为止项目的架构已经基本上搭建完成,下面需要对整个项目进行整合3.2.1QT登录界面的制作和移植1、准备工作。自启动脚本的实现:由于之前一直是NFS环境下调试程序,程序都是手动启动的,项目的整合阶段需要让程序能够自启动。编辑新项目根目录下的rootfs/home/etc/rcS文件,删除原来的内容,修改成:

source/home/etc/profile

if[-n`ifconfig|grepeth0`]

then

ifconfigeth0`/bin/cat/home/etc/netconfig`

ifconfigloup

find/home/modules/-name*ko-execinsmod{};

/home/bin/emi_core-d

/home/bin/eh_server&

/home/bin/bdehmanager-qws&由于开发板在启动的时候需要有一个默认IP地址,因此,结合上述脚本,需要在开发板的/home/etc/目录下建立一个名为netconfig的文件,将想要设置的默认IP地址保存到该文件中:比如,假设开发板默认IP地址为:#echo"">~/ehome/rootfs/home/etc/netconfig同时,开发板使用的驱动程序也需要在自启动时加载,因此结合上述脚本,需要把驱动程序存放到开发板/home/modules/目录下。驱动程序复制完后,准备工作就完成了。2、ramdisk映像制作。使用普通用户身份在新项目根目录下建立images文件夹:

#mkdirimages如果需要生成映像,不采用NFS形式调试程序,需要将开发板中的根文件系统与应用程序文件系统分开制作。同时为了保证在开发板中实际运行的时候,根文件系统能够成功挂载应用程序文件系统,根文件系统的启动脚本需要添加一行。打开rootfs/etc/init.d/rcS文件,将mount/dev/mtdblock6/home添加到exec/home/etc/rcS之前。使用root身份运行如下命令:#ddif=/dev/zeroof=images/ramdisk.imgcount=8bs=1024k#mkfs.ext2images/ramdisk.img#mkdir-p/tmp/tmpram#mountimages/ramdisk.img/tmp/tmpram#cp-arootfs/*/tmp/tmpram/#rm-rf/tmp/tmpram/home/*#umount/tmp/tmpram这样就可以生成根文件系统映像。3、生成应用程序文件系统映像。首先复制工具:#mkdir–p~/ehome/tools/#cp~/user/tools/mkyaffs2image~/ehome/tools然后使用该工具将rootfs的home目录下的程序生成yaffs文件系统映像:#~/ehome/tools/mkyaffs2image~/ehome/rootfs/home/images/app.img#chmod666images/app.imgapp.img就是的应用程序文件系统。4、烧写配置。按照设计,这个文件系统映像需要被烧写到开发板mtdblock6对应的分区中才能在启动时被自动挂载到开发板/home下。于是需要修改uboot的启动选项:(uboot)#setenvbootargsroot=/dev/ram0console=ttySAC0,115200initrd=0x50800000,0x800000mtdparts=s5pv210-nand:(bios)1m(params),1m(logo),5m(kernel),8m(data),8m(ramdisk)ro,-(home)将ramdisk.img和app.img烧写到相应的位置中:

ramdisk.img:(uboot)#tftp50008000ramdisk.img(uboot)#nanderase0x10000000x800000(uboot)#nandwrite500080000x10000000x800000

app.img:(uboot)#tftp50008000app.img(uboot)#nanderase0x1800000(uboot)#nandwrite.yaffs500080000x1800000$(filesize)如果因为某种原因,项目的linux内核被擦除了,需要重新烧写内核。否者,内核无需重写。最后,修改一下uboot的自启动选项,实现打开开发板自动启动系统以及服务:(uboot)#setenvbootcmd'nandread50008000300000500000;nandread508000001000000800000;bootm5000804总结本系统主要研究智能家居系统软、硬件电路设计问题,生成的电路离形成产品还有很大差距,只是一个小型的模型,但是具备智能家居的基本功能。同时因为时间的问题系统的一个串口通信的功能没有能够实现,智能通过超级终端来模拟现实是个不小的遗憾。当时在实验的时候就会想项目如何能够体现出智能两个字呢,当时作为一个嵌入式初学者,刚刚接触ARM会是这么想,所谓智能,就是程序员通过编程,让芯片去对现实的情况作出分析和处理,帮助人来完成某一些工作。而选择基于S5PV210开发平台,主要是出于一个学习的目的,因为这样一个系统的项目能够提高在linux下编程,同时能够更好地熟悉linux系统的开机启动和工作流程。当然在项目制作过程中还是遇到了非常多的问题。在项目制作之初,为了更好地熟悉linux系统,所以在笔记本上安装了linux系统,但是发现由于安装软件的问题上面缺少很多软件,随着项目的进展,基本上每天都会遇到编译不过的情况,然后再上网查资料,安装必要的软件,然后再编译这可以说是浪费了非常多的时间,但是也收获了很多。然后是在QT制作编译的环节,因为不了解屏幕,每次都需要反复的烧写,看效果根据效果,在修改,如此往复才到了现在的效果。但是通过这开发我对7寸触摸屏的无论是驱动还是QT的UI界面制作都有了更新的认识。接着是zigbee的调试部分,因为经费有限,需要在一个zigbee中安装多个传感器。我本来的思想认为这是一项很简单的中断的程序编写,然后在实际操作过程中我发现中断无法解决多个传感器同时工作的问题,最后采用了键盘扫描的方式实现了功能。最后很遗憾的是没能解决S5PV210的驱动问题,没有实现鱼zigbee的通信,但是不会放弃,会继续调试直到成功。参考文献[1]张毅刚.单片机原理及接口技术.北京:人民邮电出版社,2011,5-35[2]达新宇等.现代通信新技术.西安:西安电子科技大学出版社,2001,11-30[3]赵丽清.51单片机开发与应.东营:中国石油大学出版社.2009,5-20[4]李明亮,刘小龙,徐宪情.基于ARM11的智能家居设计与实现.北京:北京航空航天大学出版社,2013,5-15[5]杜春雷.ARM体系结构与编程.北京:清华大学出版社,2003,2-1[6]杨宗德.Linux高级程序设计.北京:人民邮电大学出版社,2008,1-15[7]王薪宇,郑淑军,贾玲.CC430无线传感网络单片机原理与应用.北京:北京航空航天大学出版社,2011,1-15[8]石磊.AltiumDesigner8.0中文版电路设计.北京:清华大学出版社,2009,5-233[9]胡大可.MSP430系列单片机C语言程序设计与开发.北京:北京航天航空大学出版社,2003,5-20[10]谭浩强.C程序设计.北京:清华大学出版社,2005,3-18

致谢经过四个周的紧张实施,毕业设计基本上达到了本人的设计要求,在项目设计期间得到了老师,同事以及论坛高手的热心帮助,他们都对项目的顺利完成提供了宝贵的意见,在这里对他们表示感谢。首先感谢我的指导教师刘金梅老师以及通信专业负责人李吉忠老师,刘金梅老师在毕业设计期间,一直是传达着学校、学院的安排,在老师的督促下我提前完成了毕业设计的工作,并听取了我对毕业设计的讲解,并提出了宝贵的意见,而李吉忠老师是大二将我带进了通信实验室,那时候的我虽然成绩不理想但是李老师本着对同学负责的态度,在看到我对硬件开发有着浓厚兴趣的前提下,坚持将我带到了通信实验室。在那里我接触到了51单片机,接触到了ARM,学习了很多宝贵的知识,李老师可以说是我在实验室的领路人。在这里我对两位老师表示深深的感谢。然后我要感谢的是公司领导,以及薛冰大哥对我的支持。无论是技术上还是生活上他们都给于我了巨大的支持和理解。薛哥在项目规划之时对我整个系统的设计和开发流程提供了宝贵的技术支持,在方案论证期间,薛哥无私的向我提供了帮助。在这里我要感谢你们对我的帮助最后我要感谢linux创造者,linux的开发者们,谢谢你们,是你们的开源的精神,分享的精神帮助我完成了本次设计,如果不是你们的开源精神,今天也不会有这样的一个设计,我也会在日后的开发中继承这样的精神,将开源精神发扬光大。最后我要感谢在大学四年传授我们知识的老师,感谢学院开放的实验室,给了我一个学习、开发创作的平台。感谢学校对我的培养,走出校门,参加工作之后我会继续保持这一颗积极向上的状态,面对生活,面对未来。 基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发基于Cygn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论