




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
青岛农业大学毕 业 论 文(设计) 题 目: 基于ARMcortex-A8内核的嵌入式智能家 居系统的设计与开发 姓 名: 学 院: 理学与信息科学学院 专 业: 通信工程 班 级: 2010级2班 学 号: 20102825 指导教师: 刘金梅 2014年6月1日毕业论文(设计)诚信声明本人声明:所呈交的毕业论文(设计)是在导师指导下进行的研究工作及取得的研究成果,论文中引用他人的文献、数据、图表、资料均已作明确标注,论文中的结论和成果为本人独立完成,真实可靠,不包含他人成果及已获得青岛农业大学或其他教育机构的学位或证书使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。矚慫润厲钐瘗睞枥庑赖。论文(设计)作者签名: 日期: 年 月 日 毕业论文(设计)版权使用授权书 本毕业论文(设计)作者同意学校保留并向国家有关部门或机构送交论文(设计)的复印件和电子版,允许论文(设计)被查阅和借阅。本人授权青岛农业大学可以将本毕业论文(设计)全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本毕业论文(设计)。本人离校后发表或使用该毕业论文(设计)或与该论文(设计)直接相关的学术论文或成果时,单位署名为青岛农业大学。聞創沟燴鐺險爱氇谴净。论文(设计)作者签名: 日期: 年 月 日指 导 教 师 签 名: 日期: 年 月 日基于ARMcortex-A8内核的嵌入式智能家居系统的设计与开发摘要:随着“物联网”的发展,智能家居近年来成为家电企业研究的热点。本设计基于S5PV210芯片,采用嵌入式系统开发的方式,利用Zigbee组网技术,模拟了一套简单的智能家居系统。残骛楼諍锩瀨濟溆塹籟。本系统利用Zigebee组网技术,实现对水、声、火焰、震动的远程监控,并且通过协调器与开发板实现交互,同时可以通过PC机实现对开发板的登陆。系统采用ARMcortex-A8内核,运算速度快,功耗低,体积小,能够兼容多种复杂的外设。Zigbee模块适用小型系统,支持组网无限扩展的模式。经测试,系统实现了预计功能。酽锕极額閉镇桧猪訣锥。关键词:智能家居;嵌入式开发;Zigbee;传感器;S5PV210The Design and Development of IntelligentHome System Based on ARMcortex-A8 Kernel彈贸摄尔霁毙攬砖卤庑。Abstract: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 developmentmethod 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 ARMcortex-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, the system has realized expected functions.厦礴恳蹒骈時盡继價骚。Keywords:intelligenthome;embedded development;Zigbee;sensor;S5PV210茕桢广鳓鯡选块网羈泪。II目录前言1鹅娅尽損鹌惨歷茏鴛賴。1 系统整体分析与方案论证2籟丛妈羥为贍偾蛏练淨。1.1 项目方案分析2預頌圣鉉儐歲龈讶骅籴。1.1.1项目需求分析2渗釤呛俨匀谔鱉调硯錦。1.1.2项目初步方案设计2铙誅卧泻噦圣骋贶頂廡。1.2 方案论证及器件选型3擁締凤袜备訊顎轮烂蔷。1.2.1 最初方案论证及方案定型3贓熱俣阃歲匱阊邺镓騷。1.2.2 项目器件选型3坛摶乡囂忏蒌鍥铃氈淚。2 系统技术介绍5蜡變黲癟報伥铉锚鈰赘。2.1 ZigBee技术介绍5買鲷鴯譖昙膚遙闫撷凄。2.1.1 ZigBee技术简介5綾镝鯛駕櫬鹕踪韦辚糴。2.1.2 ZigBee技术特点5驅踬髏彦浃绥譎饴憂锦。2.1.3 ZigBee应用实例6猫虿驢绘燈鮒诛髅貺庑。2.2嵌入式LINUX系统介绍7锹籁饗迳琐筆襖鸥娅薔。2.2.1 嵌入式技术介绍7構氽頑黉碩饨荠龈话骛。2.2.2 嵌入式特点7輒峄陽檉簖疖網儂號泶。2.2.3 嵌入式应用及发展前景8尧侧閆繭絳闕绚勵蜆贅。3 系统详细设计9识饒鎂錕缢灩筧嚌俨淒。3.1 Zigbee系统软硬件设计9凍鈹鋨劳臘锴痫婦胫籴。3.2 linux嵌入式系统搭建13恥諤銪灭萦欢煬鞏鹜錦。3.2.1 emilib 数据通信模块介绍13鯊腎鑰诎褳鉀沩懼統庫。3.2.2 环境部署以及eh_server15硕癘鄴颃诌攆檸攜驤蔹。3.2.1 QT登录界面的制作和移植18阌擻輳嬪諫迁择楨秘騖。3.2.1 QT登录界面的制作和移植21氬嚕躑竄贸恳彈瀘颔澩。4 总结24釷鹆資贏車贖孙滅獅赘。参考文献25怂阐譜鯪迳導嘯畫長凉。致谢26谚辞調担鈧谄动禪泻類。基于ARMcortex-A8内核的嵌入式智能家居系统的设计与开发 前言21世纪经济快速发展,计算机技术更是取得了惊人的发展速度,科学技术也越来越多地影响着人们的生活,人们对自己的衣、食、住、行,提出了更高的要求。智能化无疑是出现频率最高的词汇,如智能手机、智能汽车、智能交通等等,无一不体现出人们对智能化生活的迫切向往。于是,“智能家居”这样一个更加贴切人们生活的词汇被提及出来。“智能家居”最早是在美国康捏狄克州被提出。CityPlace-Building的建成拉开了人们对智能家居项目投入的序幕。嘰觐詿缧铴嗫偽純铪锩。近年来随着“物联网”的发展,无论是物联网技术的成熟,还是智能移动终端的普及,都使得智能家居获得了长足的发展,智能家居行业也达到了以前从未有过的高度。技术的成熟、成本的降低、功能的丰富人性化,都使智能家居从原来的高处不胜寒完成了到“飞入百姓家”的跨越。同时因为芯片也朝着更小、更快、更低耗的方向发展,于是越来越多的智能芯片被嵌入到晓得电子商品中,并且添加更多、更好的外设变成了可能。智能家居系统无疑变成了最大的受益者之一。熒绐譏钲鏌觶鷹緇機库。本次毕业设计应用了三星公司生产的S5PV210芯片,其内核cortex-A8 是ARM家族中最高级系列中的芯片,开发板搭载了十分丰富的外设资源供开发者使用,并且接口资源丰富。使用串口与Zigbee连接,实现了信息的交互和控制。通过Zigbee组网技术,多个节点包括火焰节点、震动节点、湿度节点、烟雾节点也可以触发警报,发送到协调器,最后反映到开发板中,并在已经移植好的QT界面中得以体现。同时用户可以通过PC的应用进程登陆系统,获取信息并控制继电器来实现远程对家电的控制,虽然离现实的成熟的智能家居系统无论是功能上,还是制作上都存在一定差距,但是初步体现出智能家居的思想,达到展示的效果,并且体现一定的实用价值。鶼渍螻偉阅劍鲰腎邏蘞。11基于ARMcortex-A8内核的嵌入式智能家居系统的设计与开发1 系统整体分析与方案论证1.1 项目方案分析1.1.1项目需求分析结合现实生活中的实际需要,以及现在人们对智能家居的理解,确定了一下该智能家居项目应该实现的功能,最终定下功能目标主要分为四大部分:纣忧蔣氳頑莶驅藥悯骛。一、能过利用Zigbee组网对家庭内的震动、声音、火焰、烟雾进行监控。二、在开发板中移植QT程序实现良好的人机交互界面。三、能够实现Zigbee协调器与开发板之间的交互控制。四、用户可以通过GPRS模块接受来自开发板汇集的信息,并且实现反向控制。1.1.2项目初步方案设计结合最初设定的四大基本功能,以及现在所掌握的知识能力,初步的构建一套设计方案如图1-1所示。Zigebee协调器S5PV210火焰节点烟雾节点震动节点声音节点 GPRS图1-1 系统设计方案1.2 方案论证及器件选型1.2.1 最初方案论证及方案定型由于GPRS模块后期需要交费,投入过大,所以舍弃了该方案。更改了最后用户交互方式,改为PC机直接用网线连接,并且可以登录QT界面,实现交互。颖刍莖蛺饽亿顿裊赔泷。S5PV210Zigbee协调器 ZigebeeZigbee节点同时为了演示智能家居项目的反控制效果,在Zigbee中加入了继电器控制白炽灯的小模块,协调器可以接受来自开发板串口的命令,将远处的Zigbee一个IO管教拉高,通过继电器控制白炽灯的开关,以此达到演示控制任意家用电器的功能。最后设计方案更改如图1-2。濫驂膽閉驟羥闈詔寢賻。 继电器PC机 白炽灯图1-2 设计方案更改图1.2.2 项目器件选型Zigbee 组网方面采用了CC2530,采用这款Zigbee的考虑主要是看中了其体积小,重量轻,且引出了全部的IO引脚能够允许接入丰富的传感器资源。CC2530使用的是频率达到2.4G的全方位天线,地面无阻碍稳定传输可以达到200多米,自动重连距离达到了110米,完全能够满足家庭内的组网。銚銻縵哜鳗鸿锓謎諏涼。嵌入式开发平台,是选用了S5PV210的板子,平台内核为ARM Cortex-A8高性能处理器,A系列也是现在ARM家族中的最高系列,同时也是基于ARMV7的体系结构,使用精简指令集。虽然嵌入式微处理器的体系架构如今已经非常丰富,包括MCS5196、Intel80x86、MIPS、POWERPC、ARM,但是ARM以其运算速度快,体积小,功耗低的特点,已经在如今的嵌入式移动终端设备中大展拳脚,使它成为移动终端设备中的宠儿。选用S5PV210的开发板,也主要看中了其稳定,以及外设资源丰富的特点,更有利于人们去认识了解,进而开发嵌入式项目。挤貼綬电麥结鈺贖哓类。开发板的温度传感器选用的是DS18B20,其体积小且精度高的特点是其常常被选用的原因。接线方便,只需一条IO线即可与未处理前相连,实现双向通信。且封装形式多样能够适应各种环境。赔荊紳谘侖驟辽輩袜錈。28 2 系统技术介绍2.1 ZigBee技术介绍2.1.1 ZigBee技术简介现在Zigbee技术以及成为应对近距离、低复杂度和低功耗、低成本的双向通信的佼佼者。其应用领域广泛,特别是一些要求功耗低且对传输距离要求不长的设备通信,Zigbee技术备受青睐。塤礙籟馐决穩賽釙冊庫。Zigbee这个名字其实是来源于蜜蜂一种用来传递信息的舞蹈,人们形象的将Zigbee的名字赋予了这项通信技术。之前这项通信技术也被称作HomeRF Lite、RF- EasyLink或fireFly无线电技术。裊樣祕廬廂颤谚鍘羋蔺。与CDMA和GSM技术一样,Zigbee也是一种无线的数据传输技术,虽然无法像前者一样发送视频数据,但是其稳定性高且成本低廉。ZigBee数传模块可以看做我们生活中的那些移动公司建立的基站一样。然后通过多个ZigBee实现传输距离的无限延长,达到理想的传输距离1。仓嫗盤紲嘱珑詁鍬齊驁。2.1.2 ZigBee技术特点ZigBee说到底是一种可以工作在三个频段上的无线传输技术,分别是全球通用的2.4GHz、欧洲支持的868MHz和能在美国使用的915 MHz3上, 分别能够达到最高250kbit/s、20kbit/s和40kbit/s的传输速率。作为一种无线通信技术,ZigBee具有如下优点2:绽萬璉轆娛閬蛏鬮绾瀧。(1) 低功耗: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.3 ZigBee应用实例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.1 Zigbee系统软硬件设计由于资金有限,无法购置大量的Zigbee模块,这里采用两个Zigbee,并将四个传感器搭载到一个Zigbee模块上,模拟组网系统。即一个Zigbee上分别搭载了火焰、震动、水滴、声音传感器。一个Zigbee与开发板相连作为协调器。然后将写好的程序分别下载到两个Zigbee中,这样实现了家庭内信息收集,以及对家庭内电器的控制。Zigbee程序是独立编写和调试并且通过串口能够接受和发送相关命令。懨俠劑鈍触乐鹇烬觶騮。以下是Zigbee模块部分代码的详解:首先是发送函数 appSwitch() ; if(basicRfInit(&basicRfConfig)=FAILED) HAL_ASSERT(FALSE); InitSensor(); basicRfReceiveOff(); while (TRUE) pTxData0 = KeyScan(); / 键值扫描 if(pTxData0!= 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-2 Zigbee控制效果图Zigbee的接收终端数据程序其实也非常简单,是使用串口中断来做的,即只要串口检测收有数据接收,就会产生中断,注册标志位,然后拉高相应管脚,实现对led灯的控制。代码如下:灭嗳骇諗鋅猎輛觏馊藹。#pragma 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端图形控制程序。3、Bdehmanager:基于QT的开发板图形控制程序。3.2.1 emilib 数据通信模块介绍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)初始化函数 Int emi_ini(void);这绝对是最常用也是最重要的函数,因为它必须在注册消息之前运行,但是每个进程只需要运行一次。(2)消息注册函数Int emi_msg_register_exclusice(eu32msg,emi_func func);视絀镘鸸鲚鐘脑钧欖粝。返回值为0时代表成功,负数代表失败,两个参数分别代表要注册的消息号,和一个指向结构体的结构体指针,当然要求其提前被写好。偽澀锟攢鴛擋緬铹鈞錠。(3)发送消息函数 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,表示发送者要发送给接受者的命令。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(,12345678,6,hello,4,buf,5); printf(%sn,buf);疠骐錾农剎貯狱颢幗騮。添加到receiv.c源文件的核心代码:int 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./libs/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证明收发消息成功。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目录内新建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_LIBRARY_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 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_server 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/workdir/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=:/home/tarena/workdir/tools/ehome/rootfs贞廈给鏌綞牵鎮獵鎦龐。 ip=::::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 -I./libs/include薊镔竖牍熒浹醬籬铃騫。6、将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地址字符串修改成开发板IP地址, 然后按照PC的编译方法进行编译,然后利用编译完成的sender程序进行测试。绅薮疮颧訝标販繯轅赛。sender.c代码修改后如下: emi_msg_send_highlevel_blockreturn(,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文件, 用来保存初始密码。鋝岂涛軌跃轮莳講嫗键。实现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.show(); return a.exec(); else return -1; 2、QT的移植(1) 在项目源码目录下新建qtlib文件夹,将build-qt.tar.gz和build-tslib.tar.gz解压到该文件夹内,此时文件夹中会多出两个子文件夹:build-qt build-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/include 俦聹执償閏号燴鈿膽賾。 QMAKE_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:榄阈团皱鹏緦寿驏頦蕴。#ifdef ONBOARD strcpy(global_ip,);MainWindow mainwindow; mainwindow.setWindowFlags(Qt:FramelessWindowHint);逊输吴贝义鲽國鳩犹騸。mainwindow.show();mainwindow.setGeometry(0,0,800,480);imFrame *im=new imFrame;QWSServer:setCurrentInputMethod(im);#else LoginDialog w;w.show();if (w.exec() = QDialog:Accepted) MainWindow mainwindow;mainwindow.show(); return a.exec(); else return -1;#endif到此为止项目的架构已经基本上搭建完成,下面需要对整个项目进行整合3.2.1 QT登录界面的制作和移植1、准备工作。自启动脚本的实现:由于之前一直是NFS环境下调试程序, 程序都是手动启动的, 项目的整合阶段需要让程序能够自启动。编辑新项目根目录下的rootfs/home/etc/rcS文件, 删除原来的内容, 修改成:source /home/etc/profileif -n ifconfig|grep eth0 then ifconfig eth0 /bin/cat /home/etc/netconfigifconfig lo upfind /home/modules/ -name *ko -exec insmod ; /home/bin/emi_core -d/hom
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中教师信息技术应用能力提升培训心得体会
- 2025年产科新生儿呼吸窘迫病例分析答案及解析
- 2025年康复医学康复计划制定与效果评估综合考察试卷答案及解析
- 2025年内分泌科学科糖尿病患者血糖监测技术考核模拟考试答案及解析
- 2025海南省老年病医院招聘员额制工作人员63人(第1号)考试备考试题及答案解析
- 冀教版小学一年级数学分层教学计划
- 2025福建武夷旅游集团有限公司应届生招聘8人考试备考题库及答案解析
- 2025年眼科青光眼诊断与治疗技术模拟考试卷答案及解析
- 2025陕西安康紫阳县特岗教师招聘递补考试模拟试题及答案解析
- 2025年康复医学截肢者康复训练计划设计测试答案及解析
- 声光电施工组织计划
- 精神活性物质所致精神障碍者的护理
- GB/T 4666-2009纺织品织物长度和幅宽的测定
- 开学第一课课件-外研版七年级英语上册
- GB/T 13912-2020金属覆盖层钢铁制件热浸镀锌层技术要求及试验方法
- 水轮发电机的基本结构课件
- 《空气动力学》配套教学课件
- 技术交流-太钢不锈钢产品介绍
- 完整版医院体检报告范本
- 彭静山针灸秘验
- 《销售管理实务》ppt课件汇总(完整版)
评论
0/150
提交评论