基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx

上传人:b****8 文档编号:9129669 上传时间:2023-02-03 格式:DOCX 页数:28 大小:702.95KB
下载 相关 举报
基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx_第1页
第1页 / 共28页
基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx_第2页
第2页 / 共28页
基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx_第3页
第3页 / 共28页
基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx_第4页
第4页 / 共28页
基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx

《基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx》由会员分享,可在线阅读,更多相关《基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx(28页珍藏版)》请在冰豆网上搜索。

基于 Linux 嵌入式操作系统的图形化界面 河南工业大学.docx

基于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)。

头文件用来定义各种类;实现文件用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1