基于armcortex—a8内核的嵌入式智能家本科论文.doc

上传人:红**** 文档编号:91482153 上传时间:2023-05-27 格式:DOC 页数:30 大小:740KB
返回 下载 相关 举报
基于armcortex—a8内核的嵌入式智能家本科论文.doc_第1页
第1页 / 共30页
基于armcortex—a8内核的嵌入式智能家本科论文.doc_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《基于armcortex—a8内核的嵌入式智能家本科论文.doc》由会员分享,可在线阅读,更多相关《基于armcortex—a8内核的嵌入式智能家本科论文.doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、青岛农业大学毕 业 论 文(设计) 题 目: 基于ARMcortex-A8内核的嵌入式智能家 居系统的设计与开发 姓 名: 学 院: 理学与信息科学学院 专 业: 通信工程 班 级: 2010级2班 学 号: 20102825 指导教师: 刘金梅 2014年6月1日毕业论文(设计)诚信声明本人声明:所呈交的毕业论文(设计)是在导师指导下进行的研究工作及取得的研究成果,论文中引用他人的文献、数据、图表、资料均已作明确标注,论文中的结论和成果为本人独立完成,真实可靠,不包含他人成果及已获得青岛农业大学或其他教育机构的学位或证书使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明

2、确的说明并表示了谢意。论文(设计)作者签名: 日期: 年 月 日 毕业论文(设计)版权使用授权书 本毕业论文(设计)作者同意学校保留并向国家有关部门或机构送交论文(设计)的复印件和电子版,允许论文(设计)被查阅和借阅。本人授权青岛农业大学可以将本毕业论文(设计)全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本毕业论文(设计)。本人离校后发表或使用该毕业论文(设计)或与该论文(设计)直接相关的学术论文或成果时,单位署名为青岛农业大学。论文(设计)作者签名: 日期: 年 月 日指 导 教 师 签 名: 日期: 年 月 日基于ARMcortex-A8内核的嵌入式智

3、能家居系统的设计与开发摘要:随着“物联网”的发展,智能家居近年来成为家电企业研究的热点。本设计基于S5PV210芯片,采用嵌入式系统开发的方式,利用Zigbee组网技术,模拟了一套简单的智能家居系统。本系统利用Zigebee组网技术,实现对水、声、火焰、震动的远程监控,并且通过协调器与开发板实现交互,同时可以通过PC机实现对开发板的登陆。系统采用ARMcortex-A8内核,运算速度快,功耗低,体积小,能够兼容多种复杂的外设。Zigbee模块适用小型系统,支持组网无限扩展的模式。经测试,系统实现了预计功能。关键词:智能家居;嵌入式开发;Zigbee;传感器;S5PV210The Design

4、and Development of IntelligentHome System Based on ARMcortex-A8 KernelAbstract:With the development of Internet of things,intelligenthomebecomes a hot research field forhousehold electrical applianceenterprisesin recent years.This project is based on S5PV210chip. The embedded system developmentmetho

5、d is adopted and Zigbee networking technology is used to simulatea simple set ofintelligenthome system.Zigebee network technology is used to monitor water, sound, flame, shock remotely. User can communicate with development board by the coordinator or log in development board by PC machine. The ARMc

6、ortex-A8 is adopted as kernel in the system. The system has advantages such as fast operation, low power consumption, small size and can be compatible with a variety of complex peripherals. The Zigbee is a perfect choice for small system, which supports unlimited expansion mode network. By testing,

7、the system has realized expected functions.Keywords:intelligenthome;embedded development;Zigbee;sensor;S5PV210II目录前言11 系统整体分析与方案论证21.1 项目方案分析21.1.1项目需求分析21.1.2项目初步方案设计21.2 方案论证及器件选型31.2.1 最初方案论证及方案定型31.2.2 项目器件选型32 系统技术介绍52.1 ZigBee技术介绍52.1.1 ZigBee技术简介52.1.2 ZigBee技术特点52.1.3 ZigBee应用实例62.2嵌入式LINUX系

8、统介绍72.2.1 嵌入式技术介绍72.2.2 嵌入式特点72.2.3 嵌入式应用及发展前景83 系统详细设计93.1 Zigbee系统软硬件设计93.2 linux嵌入式系统搭建133.2.1 emilib 数据通信模块介绍133.2.2 环境部署以及eh_server153.2.1 QT登录界面的制作和移植183.2.1 QT登录界面的制作和移植214 总结24参考文献25致谢26基于ARMcortex-A8内核的嵌入式智能家居系统的设计与开发 前言21世纪经济快速发展,计算机技术更是取得了惊人的发展速度,科学技术也越来越多地影响着人们的生活,人们对自己的衣、食、住、行,提出了更高的要求。

9、智能化无疑是出现频率最高的词汇,如智能手机、智能汽车、智能交通等等,无一不体现出人们对智能化生活的迫切向往。于是,“智能家居”这样一个更加贴切人们生活的词汇被提及出来。“智能家居”最早是在美国康捏狄克州被提出。CityPlace-Building的建成拉开了人们对智能家居项目投入的序幕。近年来随着“物联网”的发展,无论是物联网技术的成熟,还是智能移动终端的普及,都使得智能家居获得了长足的发展,智能家居行业也达到了以前从未有过的高度。技术的成熟、成本的降低、功能的丰富人性化,都使智能家居从原来的高处不胜寒完成了到“飞入百姓家”的跨越。同时因为芯片也朝着更小、更快、更低耗的方向发展,于是越来越多的

10、智能芯片被嵌入到晓得电子商品中,并且添加更多、更好的外设变成了可能。智能家居系统无疑变成了最大的受益者之一。本次毕业设计应用了三星公司生产的S5PV210芯片,其内核cortex-A8 是ARM家族中最高级系列中的芯片,开发板搭载了十分丰富的外设资源供开发者使用,并且接口资源丰富。使用串口与Zigbee连接,实现了信息的交互和控制。通过Zigbee组网技术,多个节点包括火焰节点、震动节点、湿度节点、烟雾节点也可以触发警报,发送到协调器,最后反映到开发板中,并在已经移植好的QT界面中得以体现。同时用户可以通过PC的应用进程登陆系统,获取信息并控制继电器来实现远程对家电的控制,虽然离现实的成熟的智

11、能家居系统无论是功能上,还是制作上都存在一定差距,但是初步体现出智能家居的思想,达到展示的效果,并且体现一定的实用价值。11基于ARMcortex-A8内核的嵌入式智能家居系统的设计与开发1 系统整体分析与方案论证1.1 项目方案分析1.1.1项目需求分析结合现实生活中的实际需要,以及现在人们对智能家居的理解,确定了一下该智能家居项目应该实现的功能,最终定下功能目标主要分为四大部分:一、能过利用Zigbee组网对家庭内的震动、声音、火焰、烟雾进行监控。二、在开发板中移植QT程序实现良好的人机交互界面。三、能够实现Zigbee协调器与开发板之间的交互控制。四、用户可以通过GPRS模块接受来自开发

12、板汇集的信息,并且实现反向控制。1.1.2项目初步方案设计结合最初设定的四大基本功能,以及现在所掌握的知识能力,初步的构建一套设计方案如图1-1所示。Zigebee协调器S5PV210火焰节点烟雾节点震动节点声音节点 GPRS图1-1 系统设计方案1.2 方案论证及器件选型1.2.1 最初方案论证及方案定型由于GPRS模块后期需要交费,投入过大,所以舍弃了该方案。更改了最后用户交互方式,改为PC机直接用网线连接,并且可以登录QT界面,实现交互。S5PV210Zigbee协调器 ZigebeeZigbee节点同时为了演示智能家居项目的反控制效果,在Zigbee中加入了继电器控制白炽灯的小模块,协

13、调器可以接受来自开发板串口的命令,将远处的Zigbee一个IO管教拉高,通过继电器控制白炽灯的开关,以此达到演示控制任意家用电器的功能。最后设计方案更改如图1-2。 继电器PC机 白炽灯图1-2 设计方案更改图1.2.2 项目器件选型Zigbee 组网方面采用了CC2530,采用这款Zigbee的考虑主要是看中了其体积小,重量轻,且引出了全部的IO引脚能够允许接入丰富的传感器资源。CC2530使用的是频率达到2.4G的全方位天线,地面无阻碍稳定传输可以达到200多米,自动重连距离达到了110米,完全能够满足家庭内的组网。嵌入式开发平台,是选用了S5PV210的板子,平台内核为ARM Corte

14、x-A8高性能处理器,A系列也是现在ARM家族中的最高系列,同时也是基于ARMV7的体系结构,使用精简指令集。虽然嵌入式微处理器的体系架构如今已经非常丰富,包括MCS5196、Intel80x86、MIPS、POWERPC、ARM,但是ARM以其运算速度快,体积小,功耗低的特点,已经在如今的嵌入式移动终端设备中大展拳脚,使它成为移动终端设备中的宠儿。选用S5PV210的开发板,也主要看中了其稳定,以及外设资源丰富的特点,更有利于人们去认识了解,进而开发嵌入式项目。开发板的温度传感器选用的是DS18B20,其体积小且精度高的特点是其常常被选用的原因。接线方便,只需一条IO线即可与未处理前相连,实

15、现双向通信。且封装形式多样能够适应各种环境。25 2 系统技术介绍2.1 ZigBee技术介绍2.1.1 ZigBee技术简介现在Zigbee技术以及成为应对近距离、低复杂度和低功耗、低成本的双向通信的佼佼者。其应用领域广泛,特别是一些要求功耗低且对传输距离要求不长的设备通信,Zigbee技术备受青睐。Zigbee这个名字其实是来源于蜜蜂一种用来传递信息的舞蹈,人们形象的将Zigbee的名字赋予了这项通信技术。之前这项通信技术也被称作HomeRF Lite、RF- EasyLink或fireFly无线电技术。与CDMA和GSM技术一样,Zigbee也是一种无线的数据传输技术,虽然无法像前者一样

16、发送视频数据,但是其稳定性高且成本低廉。ZigBee数传模块可以看做我们生活中的那些移动公司建立的基站一样。然后通过多个ZigBee实现传输距离的无限延长,达到理想的传输距离1。2.1.2 ZigBee技术特点ZigBee说到底是一种可以工作在三个频段上的无线传输技术,分别是全球通用的2.4GHz、欧洲支持的868MHz和能在美国使用的915 MHz3上, 分别能够达到最高250kbit/s、20kbit/s和40kbit/s的传输速率。作为一种无线通信技术,ZigBee具有如下优点2:(1) 低功耗:Zigbee的技术特点就是传输速度低,因此其对发着功率的要求也很低仅为1mW。并且Zigbe

17、e能够实现休眠模式,功耗再一次被降低,于是经过测试,仅一节5号电池就可以支持Zigbee工作长达半年之久,这是其他通信技术无法匹及的。(2)低成本:随着技术的成熟现在Zigbee的成本价大约是8-10元人民币,这也得益于Zigbee技术是没有专利费用的,低成本对于ZigBee也是一个重要的指标。(3)时延短:所谓时延短是指设备搜索设备到激活设备到最后信道接入的总时间,Zigbee的时延大约为45ms。因此Zigbee技术非常适合被用在对时延要求苛刻的无线控制场合(如工业现场)。(4)网络容量大:Zigbee可以支持多种组网方式,容量最大的是星形结构最多可以容纳256个设备, 一片区域内可以同时

18、最多容纳100个ZigBee网络, 而且组网灵活。(5)可靠性强:如果传输过程中出现问题同样具有重发机制。(6)安全度高:ZigBee提供了基于循环冗余校验(CRC)的数据包完整性检查功能,支持鉴权和认证,采用了AES-128的加密算法,每个应用可以确定其安全属性的高低3。2.1.3 ZigBee应用实例ZigBee模块是一种多应用在物联网无线数据传输的终端,利用ZigBee网络来实现无线数据传输。如今在物联网产业链中Zigbee技术已经被广泛应用,如智能电网、智能交通、智能家居、金融、移动POS终端、供应链自动化、工业自动化、智能建筑、消防、公共安全等领域4。2.2嵌入式LINUX系统介绍2

19、.2.1 嵌入式技术介绍嵌入式系统的核心是嵌入式计算机系统,由硬件层、中间层、系统软件层和应用软件层组成。执行装置又被叫做被控对象,可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。执行装置可以很简单,如MP3上的菜单键,可以切换歌曲;也可以很复杂,如谷歌眼镜,上面集成了多个微小型控制电机和多种传感器,从而可以执行各种复杂的动作和感受各种状态信息.2.2.2 嵌入式特点(1)可裁剪性强。可以根据功能要求,裁剪设备功能。(2)实时性强。EOS实时性一般较强,可用于各种设备控制中。(3)接口统一。提供统一的设备驱动接口。(4)操作方便、简单、提供友好人机交互界面,追求易学易用。提供强

20、大的网络功能,支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。(5)强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。(6)固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。(7)更好的硬件适应性,也就是良好的移植性5。 (8)嵌入式系统和具体应用有机地结合在一起,嵌入式的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有

21、较长的生命周期。2.2.3 嵌入式应用及发展前景嵌入式控制期间基本上囊括了生活的方方面面,比如消费mp3、手机、电梯、汽车、数字电视、微波炉、数码相机、空调、交换机、路由器.卫星、航天飞机、月球探测仪、控制主机,智能监控6。计算机系统是由硬件和软件系统组成的,并且软、硬件均可裁剪的但必须具备最小系统要求7。现在特别是随着消费电子类产品的智能化,嵌入式的重要突显了出来8。3 系统详细设计3.1 Zigbee系统软硬件设计由于资金有限,无法购置大量的Zigbee模块,这里采用两个Zigbee,并将四个传感器搭载到一个Zigbee模块上,模拟组网系统。即一个Zigbee上分别搭载了火焰、震动、水滴、

22、声音传感器。一个Zigbee与开发板相连作为协调器。然后将写好的程序分别下载到两个Zigbee中,这样实现了家庭内信息收集,以及对家庭内电器的控制。Zigbee程序是独立编写和调试并且通过串口能够接受和发送相关命令。以下是Zigbee模块部分代码的详解:首先是发送函数 appSwitch() ; if(basicRfInit(&basicRfConfig)=FAILED) HAL_ASSERT(FALSE); InitSensor(); basicRfReceiveOff(); while (TRUE) pTxData0 = KeyScan(); / 键值扫描 if(pTxData0!= 0)

23、 basicRfSendPacket(LIGHT_ADDR,pTxData,APP_PAYLOAD_LENGTH) ; halIntOff(); halIntOn(); 这段程序可以说,是发送模块的精华,或者说是核心。Appswich()函数进来之后,首先是一个错误返回机制,如果两个Zigbee连接不成功,会返回fail。连接成功后,Zigbee会打开发送函数,做好发送准备。同时关闭接收功能,保证模块的运行速度和稳定性。接下来程序会进入while()循环,只要Zigbee保持连接,发送模块就会一直处准备在发送模式或者正在发送模式。由于使用的是四个开关量传感器,这里作为四个按键,不停地对连接了四

24、个传感器的IO关键进行按键扫描,获取相应的键值,并赋值给Pxdata数组,并使用系统调用函数basicRfSendPacket()将信息发送出去。basicRfSendPacket这个函数也是整段程序的核心,只有调用这个函数才能将IO口接收到的数据有序的发送出去,完成信息的远程传输9。下面再来看一下接收模块的核心代码。 basicRfConfig.myAddr = LIGHT_ADDR; if(basicRfInit(&basicRfConfig)=FAILED) HAL_ASSERT(FALSE); basicRfReceiveOn(); UartInitial(); while (TRUE

25、) 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,将来自发送模块的数据打包处理后通

26、过串口发送出去,并可以通过超级终端看到所接收到的数据,通过接受到的具体数据查看到底是触发了什么节点,触动警报。下图3-1为超级终端接受传感器信号的数据10。图3-1 超级终端截图同时Zigbee也可以接受来自超级终端的数据(在这里超级终端作为开发板的一个替代品),如图3-2在超级终端发送ledon 命令,Zigbee的一个IO管教被拉高,led灯亮发送ledoff,led灯灭如图3-2。 图3-2 Zigbee控制效果图Zigbee的接收终端数据程序其实也非常简单,是使用串口中断来做的,即只要串口检测收有数据接收,就会产生中断,注册标志位,然后拉高相应管脚,实现对led灯的控制。代码如下:#p

27、ragma vector = URX0_VECTOR_interrupt void UART0_ISR(void) URX0IF = 0; if(U0DBUF 0) P1_4=P1_4; temp = U0DBUF; 整个Zigbee 模块的程序架构,如图3-3。 图3-3 Zigbee代码工程结构图3.2 linux嵌入式系统搭建首先需要说明的是本次嵌入系统,是基于前人原有的开源代码消化吸收后,然后添加的驱动代码最终实现的,这里也是充分的发挥了linux嵌入式的开源性。本嵌入式系统结构主要分为了三大块,分别是:1、emilib : 抽象数据通信。2、Hmanager:基于QT的PC端图形控制

28、程序。3、Bdehmanager:基于QT的开发板图形控制程序。3.2.1 emilib 数据通信模块介绍1、Emilib工作原理消息接受者首先需要完成注册,所谓注册即通过socket连接本地emi_core进程,将本进程进程号以及要注册的消息发送给emi_core。Emi_core收到消息后,需要在内部表记录了(消息号,进程号)之间的关系。每一个注册消息的进程只要成功注册了,就会在表里新增一个项,记录该进程注册的消息号和进程号。然后当发送端给emi_core发消息时,emi_core会把消息好在表里进行匹配,如果是正常情况,那么其会找到注册进程的进程号,此时emi_core会给该进程发送一个

29、USER2信号,同时附加数据放到共享的内存中。而接受进程接收到这个信号之后,就会触发信号处理函数,其实这个原理个人认为其实完全可以理解为一个中断向量表的工作原理,不过它可以同时处理多个进程。最后在信号处理函数内部从emi_core提供的共享内存中读取发送端发来的信息。如此就完成了一次数据通信。2、Emilib的使用方法首先来介绍下,刚才提到的emi_core。emi_core相当于一个中介或者说就是一个电话接线员,主要完成了两部分的工作。首先是接注册类的消息,并把消息和一个函数绑定。然后是接收发送类型消息,查找到已经被绑定的消息函数对,匹配出相同的消息,最后运行对应的函数。Emilib中包含了

30、libemi.so库。主要工作就是提供进程需要的函数,来实现具体功能,接收进程调用库中的函数进行消息好和函数的绑定注册,而发送进程调用库中的函数进行消息发送。下面列出的是libmi.so中常用的函数(1)初始化函数 Int emi_ini(void);这绝对是最常用也是最重要的函数,因为它必须在注册消息之前运行,但是每个进程只需要运行一次。(2)消息注册函数Int emi_msg_register_exclusice(eu32msg,emi_func func);返回值为0时代表成功,负数代表失败,两个参数分别代表要注册的消息号,和一个指向结构体的结构体指针,当然要求其提前被写好。(3)发送消

31、息函数 Int emi_msg_send_highlevel_blockreturn(char * ipaddr, int msgnum, int send_size, void *send_data, int ret_size,void *ret_data,eu32 cmd)返回值为0代表发送成功,负数代表失败。参数ipaddr表示接受平台的ip。参数msgnum表示要发送的消息号。参数send_size以及send_data分别代表附加数据的长度和附加数据的首地址,如果没有那么就应该设置为0和NULL。参数ret_size和ret_data表示返回数据的大小和首地址。参数cmd,表示发送者

32、要发送给接受者的命令。3、Emilib的测试首先需要进入emitest目录,先建两个emi测试源文件分别用于发送和接受,来模拟通信过程。# cd emitest# vim sender.c# vim receiver.c以下是在实验中对于emilib所做测试的一部分核心代码。添加到sender.c源文件的核心代码。 char hello20=hello;char buf5=0;emi_msg_send_highlevel_blockreturn(127.0.0.1,12345678,6,hello,4,buf,5); printf(%sn,buf);添加到receiv.c源文件的核心代码:in

33、t test_func(struct emi_msg *msg)printf(msg-cmd %d, msg-data %sn,msg-cmd, msg-data);return emi_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: # gcc receiver.c -o receiver -L./bs/pclib/lib -lemi -I./l

34、ibs/pclib/include # gcc sender.c -o sender -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-cmd 5, msg-data hello证明收发

35、消息成功。3.2.2 环境部署以及eh_server下面来大体介绍下eh_server,eh_serve主要实现了两个功能,即便利指定的文件夹,找到以.so结尾的文件,并生成一个列表,调用.So文件里的函数。然后我们根据实际操作来编译和实现eh_server1、在用户home目录下新建空项目目录ehome。 # mkdir ehome 2、将原项目目录中的rootfs复制到ehome下。 # cp -av user/rootfs ehome/3、修改rootfs/etc/init.d/rcS, 删除mount /dev/mtdblock6一行。4、在 ehome/rootfs/home目录内新

36、建bin,etc,lib,receiver,trigger等目录。 # cd ehome/rootfs/home/ # mkdir -p bin etc lib receiver triggerbin将存放开发板项目应用程序eh_server,emi_core等程序;etc存放项目相关脚本以及配置文件;lib存放项目运行库;receiver,trigger存放eh_server所需插件。5、在rootfs/home/etc目录下新建空脚本文件rcS,用于将来自启动配置,并将rcS配置成可执行属性。 # vi rootfs/home/etc/rcS修改该rcS文件,添加export LD_LIB

37、RARY_PATH=/home/lib以及export PATH=$PATH:/home/bin # export LD_LIBRARY_PATH=/home/lib # export PATH=$PATH:/home/bin # sudo chmod 755 rcS6、复制原项目目录的emilib-read-only到新项目目录下: # cd # cp -av user/emilib-read-only ehome/ 7、进入到该目录,运行命令编译开发板以及PC机使用的emilib函数库: # cd ehome/emilib-read-only # make -f Makefile.arm

38、clean # make -f Makefile.arm # make -f Makefile.arm install # make -f Makefile.pc clean # make -f Makefile.pc #mkdir-p ./libs/pclib/bin ./libs/pclib/include ./libs/pclib/lib # make -f Makefile.pc install此时,新项目根目录的libs子目录下就包含了PC和开发板上emilib相关文件。8、进入新项目根目录,新建eh_server相关文件夹。# cd /ehome/# mkdir -p eh_ser

39、ver eh_server/plugins开发板服务程序以及相关插件会被放置在该目录下。9、复制libs/bin/下的emi_core到开发板根文件系统中。 # cp libs/bin/emi_core rootfs/home/bin/ # cp libs/lib/libemi.so rootfs/home/lib到此为止我们具体完成了eh_server的实现,接下来需要对具体功能进行测试1、启动NFS, 挂在/ehome/rootfs目录下的根文件系统, 因此需要修改/etc/exports文件。 # sudo vim /etc/exports在该文件中添加一行内容:/home/workdi

40、r/ehome/rootfs *(rw,no_root_squash,no_subtree_check,sync)2、重启NFS服务: # /etc/init.d/nfs-kernel-server restart3、启动开发板,修改开发板的启动选项, 使用原有内核启动nfs根文件系统。 tarena # setenv bootcmd tftp c0008000 zImage; bootm c0008000 tarena # setenv bootargs noinitrd root=/dev/nfs console=ttySAC0 init=/linuxrc nfsroot=192.168.

41、163.5:/home/tarena/workdir/tools/ehome/rootfs ip=192.168.163.4:192.168.163.5:192.168.163.1:255.255.255.0:eth0:on tarena # saveenv4、第二天的实验代码复制到该项目源码中: # cp -av /user/emitest/ /ehome/ # cd /ehome/emitest/5、将receiver.c源文件编译使用arm-linux-gcc重新编译: # arm-linux-gcc receiver.c -o receiver -L./libs/lib -lemi -

42、I./libs/include6、将receiver文件复制到rootfs/home/bin目录下, 该目录对应开发板的/home/bin。 # cp -av receiver /ehome/rootfs/home/bin7、在开发板中一次运行emi_core和receiver程序: (开发板)# source /home/etc/rcS (开发板)# emi_core -d (开发板)# receiver8、利用修改PC机的sender.c文件,将原来IP地址127.0.0.1字符串修改成开发板IP地址, 然后按照PC的编译方法进行编译,然后利用编译完成的sender程序进行测试。sende

43、r.c代码修改后如下: emi_msg_send_highlevel_blockreturn(192.168.163.4,12345678,6,hello,4,buf, 5);修改后,重新编译一下,过程如下:# gcc sender.c -o sender -L./libs/pclib/lib -lemi -I./libs/pclib/include编译完后,运行该程序:# sender9、开发板看到的现象应该和PC机收发程序看到的现象一致, 表示开发环境搭建完成。3.2.1 QT登录界面的制作和移植1、QT界面制作准备工作: 在项目根目录下的rootfs/home/etc下新建passwd文

44、件, 用来保存初始密码。实现Qt的登陆界面ui类,继承QDialog类。包含一个取消按钮,一个确定按钮,一个ip地址输入框和一个密码输入框。给确认按钮编写槽函数,从密码输入框收集用户输入的密码,从ip地址输入框收集用户输入的IP地址,将IP地址保存为全局量,其他消息都使用此IP通信。同时给开发板发送登陆消息, 将密码发送给开发板。编写开发板插件,等待开发板比对后的认证结果。开发板受到Qt传来的密码,跟预先保存在本地文件中的密码进行比较,如果一致, 则说明认证成功,将成功结果返回给Qt程序,否则认证失败。Qt程序如果收到了认证成功,调用 QDialog:accept()函数返回。修改main.cpp程序: LoginDialog w; w.show(); if (w.exec() = QDialog:Accepted) MainWindow mainwindow; mainwindow.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁