基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx
- 文档编号:9129669
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:28
- 大小:702.95KB
基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx
《基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx》由会员分享,可在线阅读,更多相关《基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx(28页珍藏版)》请在冰豆网上搜索。
基于Linux嵌入式操作系统的图形化界面河南工业大学
河南工业大学
论文题目:
《基于Linux嵌入式操作系统的图形化界面的
研究和实现》
学院:
信息科学与工程学院
班级:
电科1304
姓名:
学号:
2013160304
指导老师姓名:
王金峰
摘要:
随着通讯技术的发展和3G网络的推广,用户对手机的要求不在只是简单的语音、收发短信等基本功能,手机办公、手机娱乐等功能受到人们的青睐。
PDA(PersonalDigitalAssistant)正是在这种背景下产生,并且发展壮大,它不仅集成了传统手机的基本功能,同时兼容了笔记本电脑的诸多功能,真正满足了用户需求。
PDA市场潜力巨大,是个人终端技术的发展趋势。
本文以嵌入式的PDA为研究对象,论述了基于嵌入式Linux和Qt/Embedded的图形界面终端的设计与实现,最终搭建了适用于PDA的个性化人机交互系统。
论文的主要内容包括:
(1)通过对当前流行的几种嵌入式处理器、嵌入式操作系统、GUI图形支持系统优缺点的讨论,结合设备特点选择了以ARM9核心的S3C2410为本系统的硬件平台,2.4.18内核Linux和Qt为本系统的软件平台。
(2)建立硬件开发平台,对s3C2410处理器、以及外围接口部件进行了分析介绍,讲述了它们的结构及功能;
(3)对Linux系统的内核和文件系统作了深入研究。
详细分析了Linux系统bootloader的功能以及它的编译与移植;Linux内核的剪切、编译和移植;Linux文件系统的制作、编译与移植,为系统开发搭建了软件平台。
(4)在对Qt/Embedded系统分析的基础上,分别建立了Qt在PC机上的开发调试环境和Qt在cygwin上的编译移植环境。
(5)在PC机Qt开发环境下,开发了几个基于Qt/E的具有友好界面的应用软件。
利用这几个程序构建了自己的图形化界面系统,在cygwin上经过编译移植进目标板,运行稳定。
验证了Linux+Qt/Embedded+C++开发环境的有效性。
最后,开发的成果为一套精美高效,可触摸式的人机交互系统,它具有可移植性好、操作简单和易于二次开发等特性。
关键字:
PDA嵌入式处理器嵌入式LinuxQt/Embedded人机交互系统S3C2410
一、引言
1.1嵌入式系统概述
国际电气和电子工程师协会(IEEE)定义嵌入式系统为:
“用于控制、监视或者辅助设备、机器或者车间运行的装置(AnEmbeddedsystemisthedevicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants)”。
通常来说,嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序四部分组成,用于实现对其它设备的控制、监视或管理等功能。
嵌入式系统有如下特点:
(1)专用性强
为特定应用设计,专用于特定的任务,软硬件可裁剪,满足对象系统要求的最基本软硬件配置。
(2)可靠性高
代码固化、存放在存储器芯片或处理器的内部存储器件中。
(3)功耗低、体积小、集成度高、成本低
系统的硬件和软件都进行高效设计,在保证稳定、安全、可靠基础上量体裁
衣,去除冗余,用较少的软硬件资源实现较高的性能。
1.2嵌入式人机交互系统的研究现状
人机交互是研究人、计算机之间相互作用的技术。
界面是人与计算机之间交
换信息的媒介和对话接口,是计算机系统的重要组成部分。
人机交互的发展从人去适应计算机逐步过渡到计算机不断地适应人,演变过
程共经历了以下几个阶段:
(1)早期的手工作业阶段,用户(程序设计员)采用手工操作和依赖机器(二
进制代码)的方法在计算机上执行操作。
(2)作业控制语言及交互命令语言阶段,采用批处理作业语言及交互命令语
言与计算机交流,需要记忆大量命令,熟悉键盘输入方式。
(3)多通道的智能人机交互阶段,涵盖了用户表达意图、执行动作或感知反馈的各种信息交互,如言语、手势、触觉等方面。
多通道人机界面是基于视线跟踪、语音识别、手势输入、感觉反馈等的新交互技术,实现科学计算可视化、虚拟现实等,这些技术对计算机系统性能提出了更高的要求。
它允许用户利用多个交互通道以并行、非精确方式与计算机系统进行交互,旨在提高人机交互的自然性和高效性。
1.3嵌入式人机交互系统的发展趋势
当今信息时代,使得嵌入式产品获得了巨大的发展契机,为嵌入式市场展现了美好的前景,同时也对嵌入式研发提出了新的挑战。
(1)网络化要求
随着因特网技术的成熟,未来嵌入式设备为了适应网络发展,必然要求硬件上提供各种网络通信接口,软件方面系统内核要支持网络模块,实现随时随地上网。
(2)精简系统内核
设计者应尽量精简系统内核,只保留和系统功能紧密相关的软硬件,利用最低的资源实现最适当的功能。
(3)提供友好的多媒体人机界面
嵌入式设备能与用户亲密接触,最重要的因素就是它能提供非常友好的用户界面。
1.4本课题研究意义
嵌入式系统因其体积小、可靠性高、功能强等优势,已渗透到工业、农业、教育、国防、科研以及日常生活等各个领域,对各行各业的技术改造、产品更新换代、提高生产率等方面起到了极其重要的作用。
同时,嵌入式Linux操作系统以其开放源代码、易于开发、功能强大、稳定、成本低等优势迅速跻身于主流嵌入式操作系统。
基于嵌入式Linux操作系统的研究和应用具有巨大的学术和商业价值。
相对于桌面系统,人机交互技术在嵌入式系统中的研究还处于初级阶段。
嵌入式系统的终端产品在系统简洁、美观、方便好用,人性化设计等方面较桌面系统还有巨大差距,因此越来越多的人投入到嵌入式GUI的的开发当中。
本课题正是探索如何在S3C2410处理器(ARM9)上搭建和移植嵌入式Linux操作系统并在移植好的操作系统上实现GUI,同时实现基于Qt/Embedded的应用软件的开发,最后构造一个完整的PDA图形化系统。
二、嵌入式系统开发硬件平台构建
2.1硬件系统设计方案
一个应用系统的设计都是面向产品的,以产品需求来定制系统。
总的来说,在系统硬件体系结构设计时,应当遵守一定的标准,具体标准包括:
(1)先要综合了解系统各方面需求,在分析之后确定合适的解决方案,提出硬件的体系结构及系统外围各功能模块的实现。
(2)充分利用当前比较成熟的技术方案,这样可以保证电路设计的正确性和可靠性,并且可以大大缩短系统的设计时间。
硬件系统采用模块化、标准化设计,还应尽量选择典型的电路功能模块。
(3)因为硬件升级比软件升级相对复杂,所以硬件系统体系架构应该尽量使用开放模式,采用通用平台设计,以降低成本和减小开发周期,也便于将来对系统的改进与升级。
(4)嵌入式系统一般采用软硬件一体化的解决方案,在硬件设计同时进行软件开发,硬件的方案要根据软件的可行性进行考虑,而软件的设计也要根据硬件的性能进行考虑,这样在具体实现时,整个系统就可以不断的进行分析与改进,能够使系统达到最优化。
2.2系统需求分析
本系统提供了一种嵌入式PDA多种应用软件的功能。
友好的人机交互接口组成系统的控制面板,方便用户的操作。
网络通信和mp3解码播放等应用的实现使系统除了必需具有人机交互的控制功能外,还应该具有丰富的通讯、网络接口和强大的mp3解码功能。
具体需求如下:
(1)宿主机与目标板的交互接口,包括UART通用串口、JTAG烧写接口等;
(2)LCD模块及触摸屏;
(3)必须实现通用的以太网Ethernet接口,用来实现目标机的远程登录和访问;
(4)强大的处理器解码性能和可靠的音频控制器,实现mp3歌曲文件实时播放;
(5)必须具有足够的存储器空间,用来存储系统镜像和音视频文件。
2.3硬件平台
本设计使用Samsung公司S3C2410处理器的S3EB2410开发板作为硬件开发平台,用它进行ARM技术评估以及嵌入式Linux系统设计。
平台采用开放式架构设计,便于根据应用需要,进行各种功能扩展。
其硬件框图如下图所示:
(1)内核工作电压为1.8V、存储器供电电压3.3V、外部I/O设备供电电压3.3V;
(2)使用外部12MHz晶振,CPU内部倍频至200MHz;
(3)LCD接口,最大可支持4K色STN和256色TFT;
(4)4路PWM;
(5)3通道的UART串口接口;
(6)双USB2.0接口,实现与U盘、硬盘、键盘等从设备的通讯,一通道USBDEVICE;
(7)TSP触摸屏控制器;
(8)8通道10位ADC模数转换接口;
(9)10M以太网卡;
(10)IIC总线EEPROM;
(11)IIS数字音频输入/输出接口。
(12)两片32MBSDRAM,作为程序运行空间。
64MBNandFlash存储器,用于存放Linux系统。
2.3电路模块设计分析
2.3.1网络模块
S3C2410没有集成网络控制器,在嵌入式平台中需增加独立的以太网控制芯片来实现网络接口,本系统通过外接一片CS8900A芯片扩展了一个10M的以太网接口。
CS8900A是美国CIRRUSLOGIC公司生产的以太网控制器,由于其优良的性能、低功耗及低廉的价格,使其在10Mbps嵌入式网络应用中占有相当的比例。
上图为CS8900A的硬件连接示意图。
S3C2410通过数据总线与若干控制信号和CS8900A相连接,系统与外部网络通信通过以太网接口进行扩展。
以太网接口使用的是集成了网络变压器(Transformer)的RJ45网络接口,网络变压器的功能就是把PHY输出的差分信号用差模耦合的方式进行耦合滤波以增强信号,并且通过电磁场的转换,耦合到连接网线的另一端,这样使网络传输媒介和PHY之间没有物理上直接连接,隔断了信号中可能存在的直流分量,实现了在不同电平下工作的设备可以传送数据。
2.3.2LCD模块
S3C2410内部集成了LCD控制器逻辑单元,支持黑白屏LCD、STN-LCD、TFT-LCD等多种显示屏,用来将LCD图像数据从系统内存的视频缓冲区传输到外部LCD驱动器,同时产生数据传输与显示时使用的各种时钟与控制信号。
如下图所示的S3C2410的LCD控制器内部组成框图,LCD数据总线VD0~VD23用来传输16位RGB565格式数据到液晶模块显示,LCD控制线有5条:
VFRAME帧同步信号、VLINE行同步信号、VCLK位时钟信号、LEND行结束信号、VM输出数据使能信号。
LCD运行原理:
为了显示一帧图像,首先在系统的帧缓冲区中存入要显示的图像数据,然后让LCD控制器的DMA地址寄存器指向帧缓冲器的起始地址,读出帧缓冲区的数据到LCD控制器的输入FIFO队列,由于设计中采用16位方式,不需要对framebuffer帧缓冲区中的数据进行转换处理,直接把数据送到输出FIFO队列,最后将数据送到液晶模块处理,就可以驱动LCD显示图像。
2.3.3电源系统
S3C2410使用两种电压供电:
内核电压1.8V、外围电压3.3V。
存储系统的Flash和SDRAM、网络控制器CS8900A、音频控制器UDA1341TS都采用典型的3.3V的TTL电压供电,而LCD需要5V电压供电,从而系统中共需要1.8V、3.3V和5V三种不同电平的电压。
被系统的电源电路如下所示:
系统选用线性稳压源方案,输入电源使用5V/800mA的电源适配器,经过钽电容滤波后送给外围的LCD接口电路提供5V电压,同时送到LDO芯片,将5V直流变为3.3V,并经过滤波在经过一个LDO芯片,变为l.8V供处理器内核。
2.3.4宿主机接口
本系统用到的宿主机接口主要包括:
并口、UART串口。
其中,开发板的J-TAG接口通过20PIN排线与仿真器相连,仿真器再通过并口线与宿主机并口相连,J-TAG接口在本系统中用来配合EmbestIDE软件将系统的内核及文件系统烧写到NandFlash存储器,而UART串口则是系统开发时,宿主机用来操作目标板的控制台接口。
本系统目标板设计采用标准的20针接口,以方便连接各种标准的仿真器。
其JTAG接口原理图如下:
三、嵌入式系统开发软件环境构建
3.1交叉编译环境搭建
交叉编译环境的硬件支持为:
宿主机:
PC一台,安装Windows7操作系统,安装cygwin软件。
PC机有串口(或是USB转串口)和并口同目标板通信。
交叉编译软件:
从上下载cygwin,这里用1.5.1版本,在Windows7上安装。
从ftp:
//ftp.uk.1inux.org下载交叉编译工具cross-armtools-linux.tar.bz2,将其拷贝到cygwin/tmp目录下。
运行cygwin,执行以下命令完成cygwin环境下Linux交叉编译工具安装:
cd/usr
ar-xvjf/tmp/cross-armtools-linux.tar.bz2
ls
…arm-linux…
正确解压后,可以看到多了一个arm-linux目录,即交叉编译工具安装目录。
写一个shell文本set_linux.sh,来设置cygwin下程序开发的环境变量,以便搭建一个Linux开发、编译和应用程序测试的环境。
shell文本代码如下:
#!
/bin/sh
#set_linux.sh
/*交叉编译工具安装目录*/
exportCROSSDIR="/usr"
/*存放源代码和测试程序*/
exportSOURCEDIR="/tmp/edukit-2410"
/*存放vivi,linux,fs,guiandexamples(debug)*/
exportWORKDIR="/usr/local/src/edukit-2410"
/*存放可执行文件*/
exportINSTALLDIR="/home/app"
if[-d$SOURCEDIR];then
echo$SOURCEDIR
else
echo"Creatingdirectory:
"$SOURCEDIR
mkdir-p$SOURCEDIR
fi
if[-d$WORKDIR];then
echo$WORKDIR
else
echo"Creatingdirectory:
"$WORKDIR
mkdir-p$WORKDIR
fi
if[-d$INSTALLDIR];then
echo$INSTALLDIR
else
echo"Creatingdirectory:
"$INSTALLDIR
mkdir-p$INSTALLDIR
fi
exportLIBDIR="-L$CROSSDIR/arm-linux/lib/\
-L$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3"
CROSS="arm-linux-"
exportCC=$CROSS"gcc"
exportAS=$CROSS"as"
exportLD=$CROSS"ld"
exportCFLAGS="-O2-fomit-frame-pointer"
exportCPPFLAGS="-I$WORKDIR/kernel/include\
-I$CROSSDIR/arm-linux/include\
-I$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3/include"
exportLDFLAGS=$LIBDIR
exportGCCMISC="$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3/"
export
PATH="$CROSSDIR/bin:
$CROSSDIR/arm-linux/bin:
$GCCMISC:
$PATH"
echo$PATH
运行cygwin,执行以下命令:
source/tmp/edukit-2410/set_linux.sh
arm-linux-gcc–v
3.2Bootloeder的移植
Bootloader是硬件上电后执行的第一段程序,负责硬件的初始化和操作系统内核的引导。
通过这个引导程序,建立内存空间的映射,将系统的软硬件环境设置到合适的状态,最终完成操作系统引导、装载和运行。
本课题Bootloader选用vivi,因为它对S3C2410有很好的支持,其最大的优点是直接支持NandFlash。
Vivi启动详细过程:
在对VIVI进行基本的修改之后,运行以下命令进行编译:
source/tmp/edukit-2410/set_linux.sh
cd/usr/local/src/edukit-2410/vivi
makeclean
makemenuconfig
make
makemenuconfig命令对VIVI进行配置(如图3-4)。
选择LoadanalternateconfigurationFile,选择已生成的配置文件smdk2410,选择保存退出。
然后执行make命令,生成VIVI的可执行映像文件。
本项目中要把VIVI烧写进NandFlash,首先运行Flash烧写软件FlashProgrammer,选择要烧写的文件为NandFlash的配置文件,烧写芯片为NorFlash,烧写地址为0X00000000-0X00020000,对应本系统中AM29LV160DB芯片的扇区为:
1至5。
如下FlashProgrammer配置图。
烧写完成后,给目标板复位,如烧写成功,则可通过超级终端看到相关运行信息.
3.3Linux内核的移植
内核是Linux系统的核心,用来提供用户层程序和硬件之间的接口,执行发生在多任务系统中的实际任务转换,处理读写磁盘的需求,处理网络接口,以及管理内存等。
首先从ftp:
//ftp.kemel.org/pub/Linux/kernel/网站上下载内核源码包,Linux-2.4.18.tar.bz2,放进cygwin的/tmp/edukit-2410/目录下,在cygwin中执行以下命令完成Linux源代码安装:
source/tmp/edukit-2410/set_env_linux.sh
cdusr/local/src/edukit-2410
tar–xvjv/tmp/linux-2.4.18.tar.bz2
ls
···
kernel
···
正确解压后,可以看到多了一个kernel目录,即kernel源代码安装目录。
进入kernel目录,执行以下命令,为内核植入支持S3C2410的补丁:
cdkernel
patch–p1/tmp/edukit-2410/linux-2.4.18-rmk7-pxa1.tar.bz2.edukit2410.patch
编译步骤:
①进入内核目录,修改kernel目录下的Makefile文件,指定目标代码类型和编译器:
ARCH:
=armCROSS_COMPILE=arm-linux-其中ARCH:
=arm说明目标是ARM体系;CROSS_COMPILE=arm-linux-说明交叉编译器的前缀是arm-linux-。
②在cygwin中执行以下命令,完成Linux的编译过程:
source/tmp/edukit-2410/set_linux.sh
cduser/local/src/edukit-2410/kernel
makemrproper
makexconfig
执行完makexconfig命令后,本系统中对Linux内核的关键配置如下,其中[*]和<*>表示该选项加入内核编译;[]和<>表示不选择该选项;
1)增加对模块的支持
Loadablemodulesupport-->
[*]Enableloadablemodulesupport//使内核支持加载模块[*]Moduleunloading//使内核支持卸载模块
2)配置文件系统
Filesystem--><*>CompressedROMfilesystemsupport支持本系统使用的CRAMFSFileSystem
目标板上电,在超级终端可以看到vivi启动信息,输入空格键使vivi进入命令状态,然后打开EmbestIDE软件,加载下载配置文件,与目标板进行连接,连接好后点击IDE的Stop按钮,配置Debug的Download地址为0X30000000,下载的文件选择zImage,点击Download进行下载,下载完成后,点击IDE的Start按钮,在超级终端中输入:
loadflashkernelx如果烧写成功,重启目标板,vivi就可以引导Linux内核了,可通过超级终端看到相关运行信息如图所示,则说明内核己经移植成功,可以在开发板上运行了。
四、Qt图形界面的编程及实现
构建一个带QTOPIA图形界面的文件系统,需要拷贝编译产生的可执文
件、动态链接库、字库以及相关配置文件。
可按以下步骤把已编译的QTOPIA
图形界面文件加入到Linux文件系统:
(1)建立一个可用的无图形界面的cramfs,在第三章我们已经做好;
(2)把无图形界面cramfs文件系统存放于$WORKDIR/root-qtopia/目录下,
并在该目录下建立一个名为qt的文件夹用于存放QTOPIA运行文件;
(3)从/usr/arm-linux/lib/目录下拷贝程序运行所需函数库到$WORKDIR/root-qtopia/lib,替换无文件系统的lib目录;
(4)从已编译QTOPIA目录拷贝以下目录及相关文件到$WORKDIR/root-qtopia/qt/目录:
apps:
QTOPIA属性页配置文件目录
bin:
执行文件目录
etc:
程序配置及杂项文件
il8n:
语言配置目录
include:
包含文件目录
lib:
动态函数库目录
pics:
图片及应用程序图标存放目录
plugins:
动态函数库存放目录
services:
界面服务程序存放目录
sounds:
事件声音文件存放目录
五、基于Qt/Embedded的应用程序设计
使用Qt/Embedded设计程序一般需要编写三种类型的文件:
头文件(.h)、实现文件(.cpp)和主函数文件(main.cpp)。
头文件用来定义各种类;实现文件用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Linux 嵌入式操作系统的图形化界面 河南工业大学 嵌入式 操作系统 图形 界面 河南 工业大学