基于ARM CONTEX A8的智能家居系统设计_第1页
基于ARM CONTEX A8的智能家居系统设计_第2页
基于ARM CONTEX A8的智能家居系统设计_第3页
基于ARM CONTEX A8的智能家居系统设计_第4页
基于ARM CONTEX A8的智能家居系统设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

济南大学毕业设计济南大学泉城学院毕业设计2-2-济南大学毕业设计题目基于ARMContexA8智能家居系统设计学院工学院专业电气工程及其自动化班级学生学号指导教师二〇一六年五月二十日济南大学毕业设计PAGE44-摘要随着“物联网”的发展,智能家居近年来成为家电企业研究和转型的热点。智能家居对当前的发展形式难以适应,同时智能家居技术在我国处于起步阶段,许多技术标准都未标准化,因此加强智能家居应用层方面的研究,通过选取合适的芯片和技术,提出合理的设计方案,组建一种符合我国市场的、具有自主知识产权的智能家居系统己成为当前智能家居研究领域中极富经济价值和科技价值的课题。该项目使用ARMcortex-A8芯片是三星一款精典的处理器,它内核运算速度快,体积小,功耗低,可以够兼容各种复杂的外设,可扩展性高。初步的构建功能,功能人机交互界面。实现了检测用并显示浮点的格式当前的室内温度并用曲线显示温度随时间的变化,还可以查看升级进度实现软件在线升级,实现音乐播放器,蜂鸣器,开关LED灯和实现动态界面的显示和摄像头采集视频的显示,移植了游戏和计算器供用户娱乐。本设计基于S5PV210芯片,采用嵌入式linux系统开发,模拟了一套功能齐全,用户体验度高的智能家居系统。关键词:智能家居;嵌入式开发;S5PV210ABSTRACTWith

the

development

of

Internet

of

things,

smart

home

has

become

a

hot

research

and

transformation

of

household

electrical

appliance

enterprises

in

recent

years.

Intelligent

home

of

the

current

form

of

development

difficult

to

adapt

to,and

smart

home

technology

in

our

country

in

the

initial

stage,

many

of

the

technical

standards

are

not

standardized.

Therefore,

strengthening

the

study

of

intelligent

home

application

layer,

by

selecting

the

appropriate

chip

and

technology,put

forward

the

reasonable

design,

established

one

kind

to

conform

to

our

country

market,

with

independent

intellectual

property

rights

of

the

smart

home

system

has

become

the

current

topic

of

smart

home

in

the

research

field

of

highly

economic

value

and

the

value

of

technology.The

project

use

the

ARM

cortex-A8

chip

processor

is

a

classic

of

Samsung,

its

kernel

computing

speed,

small

volume,low

power

consumption,

can

enough

compatible

peripherals

of

avariety

of

complex,

high

scalability.

Preliminary

build

function,

function

man-machine

interaction

interface.

The

detection

and

display

the

current

the

floating-point

format,

the

indoortemperature

and

curvedisplay

temperature

changes

with

time,

youcan

also

check

the

progress

of

your

upgrade

the

software

online

upgrade,

realizing

that

the

music

player,

buzzer,

switchLED

lights

andrealize

dynamic

interface

display

and

camera

production

video

display,

Transplant

Games

and

calculator

for

recreational

users.This

design

based

on

S5PV210

chip,

using

embedded

Linux

system

development,

simulation

of

a

set

of

complete

functions,

the

user

experience

a

high

degree

of

intelligent

home

system.Keywords:intelligent

home;

embeddeddevelopmentsensor;

S5PV210目录TOC\o"1-3"\h\u12940摘要 I32326ABSTRACT II246351前言 1240981.1智能家居研究背景及意义 1244561.2国内外发展现状 1303891.3课题研究的内容 232691.4嵌入式系统的特点 333312系统的总体方案设计 488732.1系统设计思路 4313312.2系统方案设计 4248252.3项目实现功能 5183133基于S5PV210的智能家居系统硬件设计 6327233.1芯片的选型 687573.1.1SPV210的功能特点 7275793.1.2ARMCONTEXA8开发板的配置 714973.1.3智能家居项目硬件配置 8310683.2DS18B20温度传感器的工作原理及结构图 8100913.3LED原理和电路图 9227633.4TFT触摸屏原理和电路 9207593.5报警电路 10172803.5.1蜂鸣器报警的原理 1063143.5.2蜂鸣器报警电路图 1172713.5.3开发板音频部分原理图 11118274系统环境搭建 12280874.1搭建嵌入式linux系统环境 1262984.2编译器 1278164.3嵌入式linux软件组成部分及其功能 13269394.3.1bootloader作用 13136464.3.2UBOOT移植 13265594.3.3linux内核组成 14132654.3.4内核移植 1494514.3.5根文件系统rootfs作用 14243424.3.6根文件系统制作 14293434.4.Tslib移植 16293374.4.1.tslib作用 162174.4.2.tslib移植 16127404.5QT移植 17147004.5.1QT介绍 1727904.5.2安装中文字体库 17302304.5.3QT界面制作 1727875基于CONTEXA8智能家居软件设计 19107065.1通过界面实现开关灯 19214225.2实现DS18B20的温度显示 1997455.2.1编写DS18B20设备驱动程序 19212985.2.2编写硬件操作库函数 20251845.2.3编写ehome图形界面软件,添加温度显示 2099375.3在线升级 2088295.3.1升级方案 21142545.3.2TPAD的linux系统识别U盘 21301955.3.3TPAD在linux系统擦和写Nand 21159505.3.4升级zImage 2196475.4.ehome添加MP3播放器功能 2241945.5附加功能 2218446系统的调试与测试 23291066.1集成测试简介 23108246.2硬件和软件测试 24106236.2.1环境搭建测试 24157136.2.2tslib测试 24265836.2.3QT测试 2497496.2.4测试LED灯驱动和硬件操作库 2488796.2.5温度传感器测试 25302896.2.6在线升级功能测试 2542986.3智能家居文件的编译 26276997总结与展望 2722695参考文献 2822962致谢 2931351附录一主界面程序 303323附录二在线升级代码 3212694附录三音乐播放器程序 3324319附录四温度曲线和显示程序 3513836附录五主控制芯片S5PV210的外接方式电路图 4416439附录六主控芯片S5PV210硬件电路图 451前言1.1智能家居研究背景及意义21世纪经济快速发展,计算机技术更是取得了惊人的发展速度,科学技术也越来越多地影响着人们的生活,人们对自己的衣、食、住、行,提出了更高的要求[6]。智能化于是就成了出现频率最高的词汇,像智慧城市、智能汽车、智能景区,智能控制,智能交通等等,都体现出人类对智能化生活的迫切追求。家庭是社会的细胞,唯有家庭实现了信息化,才能真正实现社会的信息化,研究开发智能家居系统是实现室内信息化的必要过程[6]。“智能家居”这样一个更加贴切人们生活的词汇最早的时候是在西方康捏狄克州被提出来,随后对智能家居项目投入拉开了序幕,智能家居系统成了科技进步的最大受益者之一[1]。现在特别是消费电子类产品智能化发展,嵌入式控制器件基本上应用于了生活的方方面面,比如收音机、智能手机、小区电梯、汽车电子、数字电视、工业控制、数码相机、空调、交换机、路由器、卫星、航空航天、月球探测仪、智能监控、医疗器械,嵌入式的重要作用越突显出来。近年来随着“物联网”的发展,物联网技术的成熟和智能移动人机交互终端的普及,使得智能家居行业获得了长足的发展,达到了前所未有的程度[12]。随着智能家居技术的日益成熟、制造成本逐渐降低、用户功能的人性化,使得智能家居“飞入寻常百姓家”,而不再是原来的高处不胜寒。最近几年,随着信息通信和计算机的发展,智能家居控制系统在房地产领域得到了一定程度的推广,智能家居作为一个智能化和物联化的新型领域,对现在家居安防和家居智能化的管理具有很重要的价值[16]。1.2国内外发展现状由于芯片朝着体积更小、运算更快、功耗更低的方向发展,所以越来越多的智能化芯片被运用到日常电子商品里,而且可以添加更多的外设和更好的功能。比如,诺基亚1050手机只能打电话,发个信息,而iphone手机可以打电话,发信息,WIFI,BT,TP等,软件随着硬件的改变而改变。不同的产品,它们的功能不一样,可靠性也不一样,成本不一样,体积和功耗都,有可能不一样,但是本质同样的东西都会满足。根据不同用户的需求,诺基亚1050:功能单一,可靠性高,成本低,体积小,功耗小,而iphone手机功能强大,可靠性差,成本高,体积大,功耗高。可以得出结论,将来做产品可以做低端和高端,像智能家居就属于满足用户需求的高端产品,然而高端行业会出现后劲不足。同时,尽管大量与智能家居有关的技术逐渐兴起,而当前智能家居系统还并未发展成熟,存在诸多问题,如布线繁杂、不美观、功耗大、对互联网的依赖性强。到目前国内的研究还没有建立一个完整的智能家居理论体系,对智能家居的理解也存在着各种的差异;当前国内的智能家居产品大都功能贫乏,系统设计不规范、可扩展性差,对当前的发展形式难以适应,同时智能家居技术在我国处于起步阶段,许多技术标准都未标准化,还有很多工作需要做。因此加强智能家居应用层方面的研究,通过选取合适的芯片和技术,提出合理的设计方案,组建一种符合我国市场的、具有自主知识产权的智能家居系统己成为当前智能家居研究领域中极富经济价值和科技价值的课题[5]。如果对国内外智能家居系统的深入研究,针对国内现状,本系统的设计和使用,如果得到广泛的应用,可以极大地提高人们的生活质量,真正的实现住宅智能化,这也为将为推动中国物联网的发展起到一定推动作用。如图1.1所示,物联网智能家居的体现,体现了万物互联的主题。图1.1物联网的智能家居1.3课题研究的内容本次智能家居项目使用了韩国三星公司研发的S5PV210芯片,它的内核cortex-A8是ARM处理器最高级系列中的芯片,而且开发板接口资源丰富,搭载了相当丰富的外设串口供开发者使用。虽然离现实的成熟的智能家居系统无论是功能上,还是制作上都存在一定差距,但是初步体现出智能家居的思想,达到展示的效果,并且体现一定的实用价值[7]。结合国内外现有的相关研究成果及现有的成熟技术,项目安排的主要内容有:一、前言。简要介绍了智能家居课题的研究背景及意义、研究内容、国内外发展和现状、嵌入式系统的特点和课题所要达到技术要求以及功能的实现方法。二、系统整体方案设计及相关技术。主要包括智能家居系统的设计思路,设计方案和系统实现功能。三、智能家居系统硬件设计。这部分内容主要包括系统主要芯片结构、各模块的功能介绍和各模块硬件电路图等。系统环境搭建。主要包括系统的UBOOT烧写,内核移植,根文件系统制作,tslib移植,QT移植和校正。智能家居系统软件设计。软件设计部分包括系统13238通过界面实现开关灯,13238实现温度显示,在线升级,音乐播放器。系统的调试与测试。这部分内容主要包括测试简介,软件测试和硬件测试。1.4嵌入式系统的特点嵌入式系统的核心是嵌入式计算机系统,它分为系统硬件层、系统软件层,应用软件层和中间层。嵌入式系统是以用户需求为中心,并且软、硬件均可裁剪的但必须具备最小系统要求,软硬件为可以根据用户的需求而裁剪[8]。可以接受嵌入式计算机系统发出的控制命令的可以执行装置又被叫做被控对象,由它来它执行所规定的操作或任务。执行装置功能可以很简单,如MP3上的按钮键,可以上下左右切换歌曲;也可以功能很复杂,如谷歌眼镜,上面集成了多种传感器和各种微型机器,从而可以执行各种复杂的机器动作并感受各种外界的状态信息。具有极佳的运算处理性能、极低的功耗、极其丰富的外设接口,并且具有防复制保护,使得智能家居可以应用到很多场合。可裁剪性强。可以根据功能要求,裁剪设备功能。实时性好。实时性一般较好,在各种设备控制中可以应用。接口统一。提供统一的设备驱动接口。操作方便、提供良好人机交互界面,容易学会。提供强大的网络功能,支持TCP/IP等各种协议,提供各种协议支持及统一的MAC访问层的访问接口,为各种计算设备预留接口。强稳定性,弱交互性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的NAND上。很好的硬件适应性,具有良好的移植功能。嵌入式系统会和具体需求有机地结合在一起,嵌入式的升级更新也是和具体产品同步进行,具有较长的生命周期。60542系统的总体方案设计317322.1系统设计思路基于contexA8的智能家居系统设计思路是:当人在室内时,增加用户体验,可以操作一块室内控制器的触屏来控制室内的器件,进行人机交互的控制。实现了检测用并显示浮点的格式当前的室内温度并用曲线显示温度随时间的变化,还可以查看升级进度实现新版本软件的在线升级,实现音乐播放器,蜂鸣器,开关LED灯,视屏监控和实现动态界面的显示和摄像头采集视频的显示,移植了游戏和辅助功能的计算器,供用户娱乐这样一来,用户可以实现操作触摸屏,就能做自己想做的事。本设计基于S5PV210芯片,采用嵌入式linux系统开发,模拟了一套功能齐全,用户体验度高和可扩展性强的智能家居系统[9]。如图2.1所示,本次采用的开发板全景图,中间内含有处理器S5PV210芯片。 图2.1ARMCONTEXA8开发板292432.2系统方案设计基于contexA8的智能家居系统设计目的是设计出一种用户体验良好,功能齐全,实现人与室内和谐的氛围。要求设计的操作QT界面进行操作实现触屏式操作。综合电路各模块设计、环境搭建,软件设计、系统的可靠性以及可扩展性等各方面的考虑与分析,最终决定该系统将选用三星S5PV210热释电红外传感器进行人体红外信号采集,然后通过S5PV210芯片处理之后传给外设作出一系列相应的操作,例如控制mp3和蜂鸣器的开与关,并且采用LCD液晶显示屏将时间显示出来。经过资料的查询以及各方面的综合考虑、分析、研究和比较,认为该方案的设计能够很好得完成该系统所要实现的一系列功能,该系统的总体方案设计框图如图2.2所示。图2.2系统的设计框图2.3项目实现功能结合最初设定的基本功能,以及现在所掌握的知识能力,初步的构建功能。功能人机交互界面如图2.3所示。(1)实时检测当前的室内温度,并用曲线显示温度随时间的变化,每隔1s刷新一次,同时用浮点的格式显示出来温度的值,单位摄氏度。(2)实现软件在线升级,也能查看升级进度。(3)实现音乐播放器功能,上一首,下一首,暂停和播放音乐。(4)可以通过操作界面点响蜂鸣器,或者用蜂鸣器作为报警声。(5)可以开关LED灯和切换界面,模拟室内控制电灯。(6)实现动态界面的显示和摄像头采集视频的显示。(7)能够在业余时间玩一些游戏(2048和贪吃蛇),还有一些辅助功能,如计算器,登陆界面,日历,图片查看器等。图2.3智能家居功能人机交互界面118823基于S5PV210的智能家居系统硬件设计62003.1芯片的选型结合现实生活中的实际需要,以及现在人们对嵌入式的理解,最终定下功能目标主要分为四大部分:嵌入式以用户需求为中心(产品要满足和符合用户的需求),用户需求不同,最终造成产品硬件不同,产品的硬件不同,硬件可裁剪,本质还是用户需求。三星S5PV210核心板的三大件:CPU,闪存K9K8G08U0B(8G小b),内存K4T1G084QF(1G大B)。三星S5PV210具有可扩展性能强,可以为将来软件升级提供充分的资源,而STC89C52等单片机就不能提供高清视频输出,视频播放,视频采集等功能[4]。如图3.1所示,S5PV210处理器芯片。图3.1S5PV210处理器芯片179663.1.1SPV210的功能特点S5PV210包含很多强大的硬件编解码功能,内建MFC(MultiFormatCodec),支持MPEG-1/2/4,H.263,H.264等格式视频的编解码,支持模拟/数字TV输出。JPEG硬件编解码,最大支持8000x8000分辨率,支持2D/3D图形加速,其多边生成率为2800万多边形/秒,像素填充率可达2.5亿/秒,可支持DX9,OpenGL2.0等PC级别的显示技术,在3D和多媒体方面比以往大幅提升。可以录制高质量的视频文件,支持30帧每秒的19201080像素的视屏文件,支持HDMIv1.3高清显示。具有总共五种定时器功能:接通延时型定时器,保持型接通延时定时器,脉冲型定时器,断开延时型定时器和扩张型脉冲定时器。系统构架:图3.2系统构架图179663.1.2ARMCONTEXA8开发板的配置核心板的底板:外围接口;网卡;USB口(4大1小):连接USB设备;串口(2个,9针串口座);音频输入和输出;视频输出口(三个);HDMI(1个);按键(8个):人机交互;蜂鸣器(1个):报警;LCD屏接口(LCD屏分辨率800*480);JTAG口;SD卡;拨码开关;TF卡;SPI接口;摄像头接口;485接口。 3.1.3智能家居项目硬件配置CPU:S5PV210;内存:1G;闪存:SLC1GNand;网卡:DM9000,100M;串口:2个,调试和数据通信;USB:4个,外接U盘和移动硬盘;DS18B20:温度传感器(单总线接口1-Wire);HIMD:摄像头(一个);ADC:模数转换器,分辨率10位或者12位;独立式按键:8个;LED灯:2个;蜂鸣器:1个;AT24C02:EEPROM存储器,容量256字节;LCD显示屏:分辨率800*480;电容触摸屏:GT811。152573.2DS18B20温度传感器的工作原理及结构图DS18B20的读写时序和烟雾传感器相同,只是得到的温度值的位数因分辨率不同。金属在环境温度变化时会产生相应的延伸。它的工作流程首先初始化时序,然后写时序,读时序,然后将高低位字节传到寄存器并乘以位转换精度,得到温度值,温度传感器可以用不同的方式来对这种情况进行转换。以读取DS18B20检测的温度值为例,它的具体具体的操作流程:(1)CPU发送初始化信号(2)CPU发送SKIPROM命令0xCC(3)CPU发送CONVERTT温度转换命令0x44,温度转换以后,二进制温度值保存 在byte0和byte1中(4)CPU发送初始化信号(5)CPU发送SKIPROM命令0xCC(6)CPU发送READRAM命令0xBE(7)CPU读取byte0和CPU读取byte1(8)CPU发送初始化信号(9)实际温度值=(byte1<<8|byte0)*625(10)应用程序要将实际温度值/10000DS18B20测温传感器电路如图3.3所示,读写时序图如图3.4所示。图3.3传感器电路图图3.4读写时序图168973.3LED原理和电路图LED发光二极管是利用通电时正向导通反向截止的办法来实现灯的开与关。用LED来模拟智能家居中室内电灯,通过触摸屏幕上面的开关按键可以实现开关灯。开发板LED的原理图如图3.5所示。图3.5LED电路图168973.4TFT触摸屏原理和电路我们来探讨LCD运作原理。LCD本身是不发光的,显示屏两边没有作为发光的灯管,同时在显示屏背面有一块由荧光物质组成的背光板和反光膜,其主要作用是提供背景光源,液晶层中的细小水晶被包含在细小的单元格中;然后用电路控制哪些地方亮与不亮,液晶材料相当于一个小小的光阀,控制光的通过与不通过。液晶显示屏通过DVI接口来接受数字信号,这些信号通过数据线来控制电路,由电路来调节显示器的晶体管和透明电板,从而控制液晶的通光与否,这就是论文里使用的TFT屏幕的原理,如图3.6是TFT屏幕的电路图和图3.7视频模块。图3.6TFT触屏模块图3.7视屏播放器电路模块7313.5报警电路3.5.1蜂鸣器报警的原理蜂鸣器为发生元件,可分为有源蜂鸣器和无源蜂鸣器,这里所说的“源”是震荡源,无源蜂鸣器的内部是没有震荡源的,有源蜂鸣器其内部带有震荡源,它的程序控制时比较的方便,只要通电蜂鸣器就会鸣叫。如果使用时直流信号无法使蜂鸣器鸣叫,那么就要用2-5K的方波来驱动。鉴于蜂鸣器工作电流较大,在一般情况下使用三极管就可以来放大电流,使得嵌入式的I/O口无法直接驱动蜂鸣器,此时便要使用放大电路来驱动。蜂鸣器的驱动电路一般情况下包含有一个三极管,一个电源滤波电容,一个蜂鸣器和一个续流二极管。3.5.2蜂鸣器报警电路图该系统采用蜂鸣器作为该系统的报警模块,在淋浴时当温度高于温度阀值应范围30摄氏度时,此时蜂鸣器响应单片机进行报警,低于这个温度值蜂鸣器也将停止报警。蜂鸣器的报警原理是比较简单,实现了报警的功能,蜂鸣器的电路如图3.8所示。图3.8蜂鸣器电路图3.5.3开发板音频部分原理图在点击一首歌曲时,CPU就会发送一个信号给存储器,然后磁头受到信号就搜索磁道上的信息,然后把音乐的文件数据从磁信号变成电信号在传送到内存条再传送到CPU上,经过处理器的计算,再分配到喇叭输出接口,音频部分电路图如图3.9所示,实现音乐播放器的上下音量控制,左右曲目控制。图3.9开发板音频电路4系统环境搭建4.1搭建嵌入式linux系统环境安装纯linux系统,然后给linux系统安装,使用本地安装或网络安装纯linux软件,安装包名为sudoapt-getinstall。安装和配置vim:sudoapt-getinstallvim,拷贝目录和配置插件 /home/tarena/.vimrc安装串口终端工具:sudoapt-getinstallkermit远程登录软件:sudoapt-getinstallopenssh-server,并重启 sudo/etc/init.d/sshrestartTftp网络服务安装:sudoapt-getinstalltftpd-hpa,配置tftpd-hpa时关闭WIFI,并且sudo/etc/init.d/nfs-kernel-servicerestart配置nfs相关服务:sudoapt-getinstallnfs-kernel-server//nfs配置网络服务sudo/etc/init.d/nfs-kernel-serverrestart源码阅读工具安装:sudoapt-getinstallctags/cscopewindows:源码阅读工具sourceinsight,linux编辑查看源码工具ctags的使用进入要查看的源码根目录,cd/opt/arm/文件夹名,将所有源码生成数据库文件tags:ctags-R*,lstags-lh,所在目录不能改变,找不到tags数据库:vimmain.c,将光标移动到对应的位置uart_init,够实现函数或者变量的自动补全:ctrl+nubuntu编译软件的安装搜索“ubuntu编译软件”,gcc编译器软件安装:sudoapt-getinstallgcc,C++编译软件安装:sudoapt-getinstallg++,自动换行软件的安装:sudoapt-getinstallautomake(9)安装QT图形界面开发软件:sudoapt-getinstallqt相关的安装包。(10)掌握sourceinsight软件操作使用,下载sourceinsight软件并安装,启动sourceinsight软件,将来拿到代码,立即用SI创建源码功能。4.2编译器采用官方交叉编译器:编译器版本:4.4.6,编译器路径:/home/tarena/workdir/toolchain/opt/S5PV210-crosstools/4.4.6,设置交叉编译器环境变量:sudovim/etc/environment,在“PATH”中添加如下信息:添加之前:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games添加之后:/home/tarena/workdir/toolchains/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games启动交叉编译器环境变量source/etc/environment,查看是否是4.4.6版本编译器验证:arm-linux-gcc–v4.3嵌入式linux软件组成部分及其功能嵌入式linux系统是由Bootloader,linux内核(kernel),根文件系统(rootfs)组成,uboot启动加载内核到内存,然后由zImage挂接根文件系统,最后由根文件系统挂用户可以使用的文件,它的它的启动过程如图4.1所示。图4.1嵌入式linux系统启动过程4.3.1bootloader作用Bootloader的作用是初始化硬件(CPU,DDR,Nand,UART等),将内核加载到内存,给内核传递启动参数和启动内核[6]。4.3.2UBOOT移植采用官方UBOOT源码,源码包u-boot_CW210_1.3.4.tar.bz2,源码存放路径:/opt/uboot/,源码操作:解压源码:tar–xvfu-boot_CW210_1.3.4.tar.bz2。清除源码配置文件和目标文件:makedistclean,配置源码:makecw210_configmakeall,USB烧写固化u-boot.bin,Linux内核移植[17]。4.3.3linux内核组成包括7大子系统(1)进程管理:负责进程的创建,切换,调度,销毁(2)内存管理:负责内存的分配,销毁,映射(3)系统调用:open/read/write/close/fork/sbrk/等(4)网络协议栈:TCP/IP协议(5)驱动程序:外设的驱动程序(6)文件系统:NTFS,FAT32,EXT4,cramfs,ramdisk,nfs...(7)平台相关:linux内核支持ARM,POWERPC,MIPS,X86异常向量表的代码。4.3.4内核移植源码包采用官方源码:Kernel__CW210_for_Linux_v1.0.tar.gz,源码存放路径:/opt/kernel,然后Kernel__CW210_for_Linux_v1.0.tar.gz解压源码。清除源码配置文件和目标文件:cd/opt/kernel&&makedistclean,配置源码:cpconfig_CW210_linux_V1.0.config,保存退出:makemenuconfig并编译makezImage最后拷贝到tftpboot中:cparch/arm/boot/zImage/tftpboot/。4.3.5根文件系统rootfs作用rootfs作用是给给用户提供基本的命令和程序使用的动态库,常见的动态库例如:ls/cd/mkdir/cp/...libc.so/libm.so/libstdc++.so/libpthread.so等4.3.6根文件系统制作采用busybox开源软件制作busybox,源码包:busybox-1.21.1.tar.bz2,源码存放目录:/opt/busybox/,进行解压源码:tar–jxvfbusybox-1.21.1.tar.bz2,进入cdbusybox-1.21.1并配置源码:makemenuconfig,重新定制模块操作命令:LinuxModuleUtilities,去掉Simplifiedmodutils(NEW),同时添加insmod,rmmod,lsmod,modprobe,Blacklistsupport,depmod命令。取出闪存flash操作命令,去掉nandwrite(NEW)和nanddump(NEW),然后保存退出[9]。修改Makefile文件,vimMakefile:将CROSS_COMPILE=修改为CROSS_COMPILE=arm-linux-,将ARCH=$(SUBARCH)修改为ARCH=arm,最后编译和安装make&&makeinstall,默认安装当前目录的_install目录:ls_install用file命令检查编译结果busybox可执行文件的属性:file_install/bin/busybox,打印信息如下:ELF32-bitLSBexecutable,ARM,version1(SYSV),dynamicallylinked(usessharedlibs),stripped//红色字体的内容必须为ARM,进入安装目录:cd_install。创建目录:mkdirdevlibetc/init.dprocsyshomemntvartmproot-p(1)添加系统启动配置文件,vimetc/inittab时添加如下内容后保存退出。::sysinit:/etc/init.d/rcS::respawn:-/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount-a–r(2)添加文件系统配置文件vimetc/fstab然后添加如下内容后保存退出。proc/procprocdefaults00tmpfs/tmptmpfsdefaults00sysfs/syssysfsdefaults00tmpfs/devtmpfsdefaults00添加系统启动服务配置脚本,vimetc/init.d/rcS后添加内容如下保存退出。/bin/mount-a,mkdir/dev/pts,mount-tdevptsdevpts/dev/pts,echo/sbin/mdev>/proc/sys/kernel/hotplug,mdev–s。添加完成后,修改rcS文件权限:chmod777etc/init.d/rcS并添加busybox运行时所需动态库,动态库添加原则:应用软件需要哪些动态库,就添加,不相关不做添加,以便节省闪存空间。应用软件编译连接需要的动态库在交叉编译器中获取,动态库路径如下:/home/tarena/workdir/toolchains/opt/S5PV210-crosstools/4.4.6/arm-concenwit-linux-gnueabi/lib/拷贝所需动态库到根文件系统lib目录。拷贝标准C库find/home/tarena/workdir/toolchains/opt/S5PV210-crosstools/4.4.6/arm-concenwit-linux-gnueabi/lib/\(-name"libc-*"-o-name"libc.so*"\)-execcp-frd{}lib/\;拷贝数学运算库findhome/tarena/workdir/toolchains/opt/S5PV210-crosstools/4.4.6/arm-concenwit-linux-gnueabi/lib/\(-name"libm-*"-o-name"libm.so*"\)-execcp-frd{}lib/\;拷贝动态链接库find/home/tarena/workdir/toolchains/opt/S5PV210-crosstools/4.4.6/arm-concenwit-linux-gnueabi/lib/\(-name"ld-*"\)-execcp-frd{}lib/\;测试制作好的根文件系统备份原有的根文件系统rootf:mv/opt/rootfs/opt/rootfs_bak,cp_install/opt/rootfs–frd将安装制作好的根文件系统_install拷贝为/opt/rootfs,注意添加NFS网络服务的支持:sudovim/etc/exports添加如下语句:/opt/rootfs*(rw,sync,no_root_squash),保存退出,这时候重启网络服务sudo/etc/init.d/nfs-kernel-serverrestart.uboot中设置NFS网络启动参数:setenvbootargsroot=/dev/nfsnfsroot=:/opt/rootfsip=10:::::eth0:oninit=/linuxrcconsole=ttySAC0,115200,保存saveenv。4.4.Tslib移植4.4.1.tslib作用在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用(例如QT)提供了一个统一的接口[3]。4.4.2.tslib移植源码存放目录:/opt/project/source/,进入源码目录:cd/opt/project/source,解压源码:tar–xvftslib.tar.gz,cdtslib后执行./autogen.sh生成配置文件configure执行echo"ac_cv_func_malloc_0_nonnull=yes">tmp.cache。指定安装的目录为/opt/project/tslib目录执行./configure--host=arm-linux--cache-file=tmp.cache--prefix=/opt/project/tslib执行make&&makeinstall,编译安装后修改tslib的配置文件ts.conf。打开配置文件vimetc/ts.conf,进行如下操作:在“modulepthrespmin=1”前一行添加“module_rawinput”语句。开发板测试tslib:编译tslib生成目标文件存放目录:/opt/rootfs/home/tslib/,mkdir/opt/rootfs/home/tslib/拷贝运行时配置文件cpetc/opt/rootfs/home/tslib/-frd,拷贝触摸屏测试软件cpbin/opt/rootfs/home/tslib/-frd,拷贝tslib动态库文件cplib/opt/rootfs/home/tslib/-frd。连接触摸屏和开发板,获取触摸屏设备文件开发板上执行hexdump/dev/input/event0,然后用手指点击触摸屏,看串口终端是否有打印信息,如果没有,event0不是触摸屏的设备文件,再执行:hexdump/dev/input/event1,同样点击屏幕看是否有打印信息,如果没有,再次更换设备文件为event2,直到找到触摸屏的设备文件,例如:hexdump/dev/input/event3,有打印信息,至此触摸屏的设备文件为/dev/input/event3。添加使用tslib时的环境变量后保存退出:打开后vim/opt/rootfs/etc/profile添加如下内容:exportTSLIBDIR=/home/tslibexportTSLIB_CONSOLEDEVICE=noneexportTSLIB_FBDEVICE=/dev/fb0exportTSLIB_TSDEVICE=/dev/input/event3exportTSLIB_CALIBFILE=$TSLIBDIR/etc/pointercalexportTSLIB_CONFFILE=$TSLIBDIR/etc/ts.confexportTSLIB_PLUGINDIR=$TSLIBDIR/lib/tsexportPATH=/home/tslib/bin:$PATHexportLD_LIBRARY_PATH=/home/tslib/lib:$LD_LIBRARY_PATH4.5QT移植4.5.1QT介绍QT是对底层图形界面的应用编程接口,面向对象化的封装,一套基于C++语言的类库,堪称艺术级别的开发工具,同时为用户和团队带来高品质的使用体验[11]。QT不局限于用户图形界面的开发,系统调用,网络编程,数据库编程,2D、3D处理,而且是跨平台的应用编程框架,支持多中操作系统linux,windows,ios,安卓,MAXOSX等,是人机交互必不可少的开发工具。4.5.2安装中文字体库字体库文件:wqy-zenhei.ttc,删除QT自带字体库:rm/opt/project/qt/lib/fonts/*-fr,安装中文字体库:cpwqy-zenhei.ttc/opt/project/qt/lib/fonts/,安装编译出来的QT库到跟文件系统/opt/rootfs中,拷贝QT库cp/opt/project/qt/lib/opt/rootfs/home/qt–frd和cp/opt/project/qt/plugins/opt/rootfs/home/qt-frd,最后添加QT运行时的环境变量,打开vim/opt/rootfs/etc/profile,添加如下内容exportQTDIR=/home/qt,ExportQWS_MOUSE_PROTO=“Tslib:/dev/input/event3”,exportQWS_SIZE=800X480,exportQT_QWS_FONTDIR=$QTDIR/lib/fonts,exportQT_PLUGIN_PATH=$QTDIR/pluginsexportQWS_DISPLAY="LinuxFB:mmWidth180:0"exportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH保存退出,重启开发板,执行env命令,查看环境变量是否生效。添加QT运行时的系统库find/home/tarena/workdir/toolchains/opt/S5PV210-crosstools/4.4.6/arm-concenwit-linux-gnueabi/lib/\(-name"libpthread-*"-o-name"libpthread.so*"\)-execcp-frd{}/opt/rootfs/lib/\;find/home/tarena/workdir/toolchains/opt/S5PV210-crosstools/4.4.6/arm-concenwit-linux-gnueabi/lib/\(-name"libstdc++-*"-o-name"libstdc++.so*"\)-execcp-frd{}/opt/rootfs/lib/\;find/home/tarena/workdir/toolchains/opt/S5PV210-crosstools/4.4.6/arm-concenwit-linux-gnueabi/lib/\(-name"librt-*"-o-name"librt.so*"\)-execcp-frd{}/opt/rootfs/lib/\;find/home/tarena/workdir/toolchains/opt/S5PV210-crosstools/4.4.6/arm-concenwit-linux-gnueabi/lib/\(-name"libgcc_s-*"-o-name"libgcc_s.so*"\)-execcp-frd{}/opt/rootfs/lib/\;4.5.3QT界面制作准备工作:在项目根目录下的rootfs/home/etc下新建passwd文件,用来保存初始密码。使用Qt制作登陆界面ui继承的类,继承QDialog类。包含一个ip地址输入框,一个确定按钮,一个取消的按钮和一个密码输入框[16]。我们对确认按钮编写槽函数,而且从密码的输入框收集使用者输入的密码,从ip地址输入框收集用户输入的IP地址,将IP地址保存为全局量,其它的消息都使用这个IP通信,同时给开发板发送登陆信息,并将密码发送给开发板[11]。编写开发板插件程序,等待开发板比对后的认证结果。开发板接收到Qt传来的密码,与预先保存在本地文件中的密码相比较,一致的话就说明认证成功并成功结果返回给Qt程序,反之认证失败。QT程序如果收到了认证成功,调用QDialog::accept()函数返回。如图4.2正在制作QT界面[8]。图4.2QT界面制作5基于CONTEXA8智能家居软件设计5.1通过界面实现开关灯创建驱动源码目录mkdir/opt/project/drivers/led-p,cd/opt/project/drivers/led,vimled_drv.c,vimMakefile,make。创建驱动目标文件的存放目录mkdir/opt/rootfs/home/drivers,cpled_drv.ko/opt/rootfs/home/drivers/。编写LED硬件操作库函数,目的是让应用开发者无需关注底层的硬件操作细节,便于软件维护。编写申明文件led.h和led.c,ledlib_test.c硬件操作库的测试用例,创建硬件操作库源码存放目录。编译灯arm-linux-gcc-shared-fpic-olibled.soled.c,arm-linux-gcc-oledlib_testledlib_test.c-L.-lled。创建动态库和测试用例的存放目录,添加硬件操作库和测试用例的环境变量,打开vim/opt/rootfs/etc/profile文件最后添加:路径一exportLD_LIBRARY_PATH=/home/applib:$LD_LIBRARY_PATH和路径二exportPATH=/home/apptest:$PATH,保存退出并重启开发板。编写QT图形界面,调用封装的硬件操作库来实现开关灯,虚拟机打开qtcreator软件,搭建qt图形界面程序的可执行文件ehome,在ehome图形界面添加操作元素,在界面源码中调用LED的硬件操作库实现开灯和关灯,打开mainwindow.h文件,添加LED的头文件,在开灯和关灯按钮对应的槽函数中调用硬件操作库实现LED的开和关,ehome图形界面软件的编译,创建ehome可执行文件的存放目录,最后在开发板测试/home/appbin/ehome-qws。5.2实现DS18B20的温度显示监测室内温度:温度传感器,也同样需要进行选型。从硬件接口,通信方式:UART接口,1-wire接口,I2C接口等,TPAD选择的1-wire(一线式)接口,芯片型号DS18B20。掌控一线式串行总线(1-wire)特性,DS18B20采用的就是一线式串行总线,这根数据线上可以挂接多个外设[13]。阅读DS18B20的芯片手册,掌控基本特性,DS18B20访问三步骤:初始化,CPU发送ROM命令,CPU发送功能性命令,DS18B20内部基本了一个64bit的ROM(只读存储器),存储每一个DS18B20芯片对应的唯一的序列码,类似I2C外设的设备地址。DS18B20内部集成了9字节的SRAM(片内寄存器):byte0:保存温度值的低位,byte1:保存温度值的高位,温度值(二进制)=byte1<<8|byte0。如果仅仅是获取温度值(二进制),只需关注byte0和byte1对应的内存,实际温度值=温度值(二进制)*0.0625=(byte1<<8|byte0)*0.0625。5.2.1编写DS18B20设备驱动程序创建驱动源码存放目录,ds18b20_drv.c驱动和ds18b20_test.c测试程序阅读和运行参考驱动:make,arm-linux-gcc-ods18b20_testds18b20_test.c.拷贝cp*.kods18b20_test/opt/rootfs/home/drivers;创建驱动文件:mkdir/opt/project/drivers/ds18b20,进入cd/opt/project/drivers/ds18b20/,vimds18b20_drv.c,vimMakefile,写完驱动和脚本之后编译make,拷贝到根文件cpds18b20_drv.ko/opt/rootfs/home/。5.2.2编写硬件操作库函数mkdir/opt/project/hwlib/ds18b20,cd/opt/project/hwlib/ds18b20,vimds18b20.h,vimds18b20.c,vimds18b20lib_test.c,编译温度函数的方式arm-linux-gcc-shared-fpic-olibds18b20.sods18b20.c和arm-linux-gcc-ods18b20lib_testds18b20lib_test.c-L.-lds18b编写ehome图形界面软件,添加温度显示利用qtcreator打开ehome工程,打开mainwindow.ui文件,添加温度显示元素,当前室内温度:25摄氏度。打开mainwindow.h文件添加#include"ds18b20.h"在类中添加成员:intds18b20_fd,利用定时器每隔1秒读取温度:QTimer*timer,在类中添加定时器超时对应的槽函数。打开mainwindow.cpp文件,构造函数中添加:ds18b20_fd=ds18b20_open();在定时器的超时以后对应的槽函数中调用库函数读温度并显示structds18b20_cmddata,ds18b20_read(ds18b20_fd,&data);data.temp就是读取的温度值,数据类型为float需要将float转换QString在QLabel形式,用QString::number,将光标移动到QString上,qtcreator按F1能够查看类的帮助。修改工程文件添加后保存退出INCLUDEPATH+=/opt/project/hwlib/ds18b20,LIBS+=-L/opt/project/hwlib/ds18b20-lds18b20,根据工程文件重新生成Makefile,/opt/project/qt/bin/qmake,编译Make,cpehome/opt/rootfs/home/appbin。如图5.1所示,为用浮点数显示温度并用曲线表示温度随曲线变化的界面。图5.1温度显示界面5.3在线升级通过ehome图形界面实现软件的在线升级,以升级zImage为例,利用U盘,将新的zImage放到U盘上,将U盘插入开发板,点击ehome升级按钮,即可完成对zImage升级工作。TPAD的linux系统如何识别U盘,TPAD的linux系统在运行的情况下(不是在uboot),如何去对Nand进行擦除和写入数据和ehome图形界面只需要对Nand进行擦和写入数据即可。5.3.1升级方案(1)网络升级:将升级的软件包放在某个服务器上,客户端(下位机)在升级时只需连接服务器,从服务器上下载要升级的软件包,最后将软件包重新烧写到NandFlash上,最后重启即可。(2)U盘升级:将升级的软件包从某个服务器上下载到U盘上,将U盘插入到TPAD,TPAD对U盘进行识别,一旦识别成功,U盘中的文件即可访问,最后对Nand进行擦和写入即可,这里采用U盘升级这种方案。5.3.2TPAD的linux系统识别U盘TPAD的linux系统识别U盘的过程,TPAD上手动玩U盘。方案一:插入U盘到TPAD,观察U盘的设备文件sda1/sdb1/sdc1。方案二:手动挂接U盘到某个目录下mount-tvfat/dev/sda1/mnt,挂接U盘sda1到/mnt目录,并且访问U盘文件指定的文件统类型为fat32,结果:将来访问mnt目录即使在访问U盘,进去后cd/mnt,U盘不再使用时,要卸载:cd/退出U盘目录umount/mnt。只需在根文件系统rootfs添加相应的配置文件即可,插入U盘如何自动挂接U盘和拔出U盘自动卸载,从ftp下载U盘自动挂接和卸载的配置文件。U盘插入执行:sd[a-z][0-9]0:0666@/home/usb/usb_insert.sh/dev/$MDEVU盘拔出执行:sd[a-z]0:0666$/home/usb/usb_remove.sh。给根文件系统添加脚本mkdir/opt/rootfs/home/usb和mkdir/opt/rootfs/mnt/usb,最后拷贝cp*.sh/opt/rootfs/home/usb并重启开发板。插入U盘以后,验证:执行mount即可,查看一下信息:"/dev/sda1on/mnt/usbtypevfat"如果有以上信息,表明挂接成功,拔出U盘,验证。继续执行mount,查看,"/dev/sda1on/mnt/usbtypevfat",如果没有以上信息,说明卸载成功。5.3.3TPAD在linux系统擦和写Nand 利用Nand相应的工具(flash_erase:擦flash,nandwrite:写flash,nanddump:读flash),获取工具对应的源码(开源软件)并对源码进行交叉编译mkdir/opt/project/mtd,cpmtd-utils-mtd-utils.tar.bz2/opt/project/mtdcd/opt/project/mtd,tar-xvfmtd-utils-mtd-utils.tar.bz2,cdmtd-utils-mtd-utils。编译make,已经指定了交叉编译器arm-linux-,结果生成arm-linux目录,这时候将flash_erase,nandwrite和nanddump拷贝到/opt/rootfs/sbin/,至此开发板的rootfs已经部署了nand相应的操作命令。5.3.4升级zImage ehome图形界面添加升级按钮,用户通过点击升级按钮来升级zImage。首先打开mainwindow.ui文件添加一个QPushButton升级按钮,点击右键,"转到槽",自动添加一个槽函数;然后打开mainwindow.h文件添加#include"update.h"。打开mainwindow.cpp文件在按钮的槽函数中调用库函数,完成升级并修改工程文件,重新生成Makefile,/opt/project/qt/bin/qmake,make编译后拷贝cpehome/opt/rootfs/home/appbin/;最后将U盘插入TPAD,/home/appbin/ehome-qws执行程序,点开二级界面进行升级。5.4.ehome添加MP3播放器功能madplay是一款MP3播放器开源软件,但是仅仅通过命令行去启动和控制,不带图形界面进行控制,ehome主要是给madplay添加图形界面(前段控制),移植源码包:project.rar/madplay.rar。madplay和ehome通信采用UDP,madplay作为服务器端,ehome作为客户端。给madplay添加前段图形界面操作,明确tpad将来运行两个进程madplay播放器(无操作界面)和ehome(有操作界面),明确madplay之前采用键盘控制改造到成通过ehome图形界面控制,然后改造madplay源码,添加服务器相关的实现代码。如图5.2所示,音乐播放器二级界面。图5.2音乐播放器界面5.5附加功能(1)计算器(2)贪吃蛇游戏和2048游戏移植(3)登陆界面和动画界面如图5.3所示,智能家居所有软件文件。图5.3智能家居软件文件6系统的调试与测试6.1集成测试简介集成测试环境系统是一个面向嵌入式软件的新一代测试工具,具有完全面向测试过程,重在观察测试过程中的数据变化情况;带有一定的调试和诊断功能;保存海量过程数据,能够为事故分析提供数据依据。集成测试环境系统在继承了传统白盒测试工具的特点,而且具备更有效的新一代测试工具的特点;加强测试主要过程为主,将测试过程所得到的数据作为使用者进行测试分析的核心依据,回放的数据采用海量的数据存储技术,为用户提供强大的、直观的程序运行回放工具,从而能够全程记录整个程序运行全过程。同

温馨提示

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

评论

0/150

提交评论