基于嵌入式Qt电纸书阅读器的设计与实现

  • 格式:pdf
  • 大小:767.30 KB
  • 文档页数:5

2016年11月 

第15卷第6期(总第84期) 安阳工学院学报 

Journal of Anyang Institute of Technology Nov,2016 Vo1.15 No.6(Gen.No.84) 

D01:10.19329/j.cnki.1673-2928.2016.06.010 

基于嵌入式Qt电纸书阅读器的设计与实现 

李晖,陈平 

(济源职业技术学院,河南济源459000) 

摘要:以嵌入式终端下的电纸书阅读器为实例,介绍了ARM9硬件平台的搭建和嵌入式Linux系统下Qt运行环境的 配置过程。经测试,程序功能在嵌入式平台能够基本实现。运行效果良好。 

关键词:嵌入式;Qt;电纸书阅读器 

中图分类号:TP391.1 文献标志码:A 文章编号:1673—2928(2016)06—0030—05 

近年来嵌入式系统发展迅速,广泛应用于多 

个领域,因其便携易用的特点受到用户青睐。完 

全遵循GPL(通用公共许可证)条款的Qt,专门为 

嵌入式系统设计图形用户界面和应用程序开发而 

设计,提供了跨平台的工具,这使得开发变得更为 

速度和方便,并且便于设计出操作更方便、交互性 

更好的GUI和应用程序。本设计通过对基于嵌入 

式Qt的电纸书阅读器的设计和移植环境搭建进行分 

析,辅之以系统结构图和搭建环境测试图的方法来解 析电纸书阅读器的功能设计和实现的过程。 

1系统硬件平台搭建 

本设计采用北京博创ARM9开发板。根据平台 

硬件要求,进行了U—boot和内核的移植以及根文件 

系统、触摸屏及Qte库的编辑,为基于嵌入式0t电纸 

书阅读器系统软件的开发与实现做好准备。 

2开发环境的搭建与设计 

2.1创建交叉编译环境 

嵌入式系统是对可靠性、成本、体积、功耗等 

方面有严格要求的专用计算机系统。由于硬件资 源非常有限,需要针对嵌入式硬件目标板设定专 

门的Linux操作系统,这就必然需要相应的交叉开 

发环境。嵌入式开发过程中交叉编译是一项重要 的工作,通过交叉编译器能编译出在另外一种环 

境下运行的代码。 

要进行交叉编译,我们需要在开发平台建立 

交叉编译工具链,最后用交叉编译工具链编译出 

在目标平台上可运行的代码。刚开始编译U—boot 

是一件很头疼的事,因为很多编译器都不能通过, 

原因是U—boot是软浮点编译的,但一般的交叉编 

译器用的是硬浮点,最后通过使用3.3.2交叉编译 

器才能正常编译。本系统使用arm—linux—gcc 3.3.2 

交叉编译工具链编译U—boot和支持eabi提高编译 效率的arm—linux—gec 4.1.2编译Linux内核及其应 用程序。 

为了对交叉编译器的使用方便,一般把arm— linux工具链目录加人到环境PATH中,如对gcc 

4.1.2,在/etc/profile文件中,增加路径expo ̄PATH= 

/opt/toolchains/arm920t—eabi/bin:¥PATH,用命令 

source/etc/profile使其路径生效。 

2.2 Qt运行环境配置 

Qt/Embedded具有良好的与平台无关GUI编 

程接口,在嵌入式系统中有着相当多的应用[il。运 行环境配置步骤如下: 

1)建立Linux开发环境。 

在Windows系统下安装虚拟机软件VMware 

Workstation,并在虚拟机软件上安装Linux操作系统。 

2)安装开发工具Qt,分为两部分。 

①安装LinuxPC机上的开发工具Ot。 ②搭建QTE—arm环境并移植QtE到博创 

¥3C2410开发板。 交叉编译器安装成功后,解压tslib1.4.tar.gz并 

编译,步骤如下:打开文件所在目录,解压文件后 

进入解压目录,修改脚本gedit build.sh,然后保存 

退出并执行./build.sh。 编译并成功安装 ̄1]/usr/local/tslib目录,tslib1.4 

编译成功后开始编译安装qte4.6.3一arm,具体步骤 

如下:进入文件所在目录,解压并修改错误文件, 

用make install命令编译执行,则成功安装。 

2.3 BootLoader的移植 

本设计采用了通用性很强的U—boot作为Boot— 

loader。U—boot是以硬件为基础的引导程序,其作 

用就是对硬件设备初始化,预先设置软件环境,最 

后调用到内核。U—boot移植是嵌入式系统软件开 

发的首要环节,U—boot运行情况决定着应用程序 

收稿日期:2016—03—22 作者简介:李晖(1982一),男,河南新乡人,济源职业技术学院助教,研究方向:嵌入式开发。

 第六期 李晖,陈平:基于嵌入式Ql电纸书阅读器的设计与实现 31 

运行环境的构建和内核启动的正常与否 。 

U—boot的移植方法:在ARM9平台上进行u— 

boot移植。对U—Boot源码包解压并编辑,这样就 

可以从Flash启动和支持NAND DM9000网卡;执 

行命令: 

#make smdk2410—.config 

#make 生成u—boot.bin目标文件。 2.4 Linux内核的配置 

U—boot正常启动后进行Linux内核的移植。 

1)准备源码包及文件:“linux一2.6.24.4.tar. 

bz2”、“yaffs2.tar.gz”、“dm9000.h”、“dm9000.C” 

2)分别解压linux一2.6.24.4.tar.bz2和yaffs2.tar. 

gz,在yaffs2目录内执行命令: 

#./patch—ker.sh C../linux一2.6.24.4/ 3)编辑Makefle文件执行命令: 

#gedit Makefile 在打开的文件中找到下面两行并修改: 

ARCH ?= arm 

CROSS—COMPILE?=arm—linux一 4)得到.config文件: 

#cp arch/arm/configs/s3c24 1 0_defconfig.config 

5)修改Nand Flash分区,之后在打开文件中修 改分区信息结构体: 

#gedit arch/arm/plat—s3c24xx/common—smdk.C 

static struct mtd partition smdk default nand part 

口={ 

[0]={ 

.name ’’Bootloader”. 

.size=Ox80000。 

.offset=0。 

), 

}, [3]={ 

.name ”User Space”. 

.offset=0x680000, 

.size=57M. 

}, }; 6)禁止ECC校验 

通过U—Boot和内核产生的ECC校验码的一致 性由禁止内核ECC校验解决。 

修改#gedit drivers/mtd/nand/s3c2410.C文件: 

chip一>eoc.mode=NAND—ECC—NONE 7)添加LCD支持:#gedit arch/arm/mach— 

s3c2410/mach—smdk2410.C在打开的文件中添加两 个头文件: 

#include<asm/arch/fb.h> 

#include<linux/platform_device.h> 然后在“smdk2410一init”函数的最后一行添加 

添加结构体: 

s3c24xx—fb—set_platdata(&smdk2410 fb—info) 8)添加网卡驱动:#gedit arch/arm/mach— 

s3c2410/mach-smdk2410.C 在打开文件中添加2个结构体来定义端口地 

址和中断号,以及设备的其他信息。然后加入网 

卡数据: 

&s3c—device—dm9ks[3】。 

9)配置内核 

进人内核配置界面,进行内核配置: 

#make menuconfg 10)编译内核,内核源码目录执行以下命令: 

#make clean #make 完成后就生成了所需要的要烧写到开发板上 

的内核映像文件uImage 

2.5根文件系统的配置 

1)主机环境 

准备cramfs一1.1.tar.gz和busybox一1.1 2.2.tar.bz2 

源码包,解压后,进入cramfs一1.1目录。 

#apt—。get install zliblg—_dev 

#make 得到用来生成cramfs映像的mkcramfs工具。 

2)Busybox配置 ①解压busybox一1.1 2.2.tar.bz2。 

②使用shell脚本创建根文件系统的目录结 

构,并运行此脚本。 

③修改拷贝过来的profle文件。 

④创建空的mdev.conf文件。 ⑤复制shadow、group和passwd文件,将passwd 

文件中首末两行的bash改成ash。 

⑥复制在busybox安装目录下的所有文件到 

根文件系统目录。 

#cp—rfv/home/root/busybox一1.1 2.2/_install/ / 

home/root/rootfs ⑦生成cramfs映像 

#./mkcramfs rootfs rootfs.cramfs 3)测试根文件系统是否配置成功。 

①开启trip服务器,设置环境变量,确保开发 

板和windows在同一网段及开发板的trip服务器的 

IP为windows的IP。 ②下载并到nand flashilY=系统对应的分区中。 

③设置启动参数,此项是内核自动启动的参 32 安阳工学院学报 2016正 

数,如果已设置,就不用再重新设置。 

(垒)重启开发板:『up—class2410#]reset,启动目 标板,串口输出显示根文件系统已经加载成功。 

2.6触摸屏软件Tslib的移植 触摸屏的软件驱动程序移植后(基于内核的 

移植),一般有配套的tslib通过用户层对触摸屏上 

的数据滤波和修正,同时也可以给大多数GUI应用 

的tslib接口支持。本系统tslib一1.4矫正触摸屏,具 

体步骤如下: 

1)进入tslib一1.4解压目录修改:gedit build.sh 

脚本。 

2)执行./build.sh编译并安装。 

3)执行脚本:./touch.sh,屏幕上出现校准程序, 

点击十字架开始校准,成功移植tslib1.4。 

3系统设计 

3.1功能模块设计 为了读者的阅读方便,电纸书阅读器共有以 

下几个功能。 ①打开电纸书:提供了供你选择的文件,你可 

以选择你想打开的文件或电纸书阅读器。②新 

建:可以打开一个新的页面。③退出:退出打开的 

界面。④关于作者:显示作者基本信息。⑤关于 

Qt:显示关于Qt的简介。⑥字体:你可以根据你的 

需要而设置你打开的电纸书阅读器的字体的类型 和大小。⑦颜色:电纸书阅读器背景界面的默认 

为白色,可打开颜色选项卡来选择适合颜色。⑧ 

打印:通过打印选项来选择打印机进行打印。⑨ 

查找:可以输入查找内容。 

3.2 Qt功能的实现 本系统研究的是基于嵌入式Qt的电纸书阅读 

器的设计,因此需要用Qt软件实现基本的功能,然 

后通过嵌入式在uP一2410平台上来实现,因此Qt 

功能的实现起着至关重要的作用。本系统设计的 

Qt电纸书阅读器的基本功能。 

1)打开电纸书功能的实现 功能实现需调用getopenfilename()函数来创 

建Open公共对话框,用户可以指定驱动器、目录和