国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于嵌入式Qt電紙書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)

2016-12-06 02:20李暉陳平
關(guān)鍵詞:開發(fā)板閱讀器內(nèi)核

李暉,陳平

(濟(jì)源職業(yè)技術(shù)學(xué)院,河南濟(jì)源459000)

基于嵌入式Qt電紙書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)

李暉,陳平

(濟(jì)源職業(yè)技術(shù)學(xué)院,河南濟(jì)源459000)

以嵌入式終端下的電紙書閱讀器為實(shí)例,介紹了ARM9硬件平臺(tái)的搭建和嵌入式Linux系統(tǒng)下Qt運(yùn)行環(huán)境的配置過(guò)程。經(jīng)測(cè)試,程序功能在嵌入式平臺(tái)能夠基本實(shí)現(xiàn),運(yùn)行效果良好。

嵌入式;Qt;電紙書閱讀器

D01∶10.19329/j.cnki.1673-2928.2016.06.010

近年來(lái)嵌入式系統(tǒng)發(fā)展迅速,廣泛應(yīng)用于多個(gè)領(lǐng)域,因其便攜易用的特點(diǎn)受到用戶青睞。完全遵循GPL(通用公共許可證)條款的Qt,專門為嵌入式系統(tǒng)設(shè)計(jì)圖形用戶界面和應(yīng)用程序開發(fā)而設(shè)計(jì),提供了跨平臺(tái)的工具,這使得開發(fā)變得更為速度和方便,并且便于設(shè)計(jì)出操作更方便、交互性更好的GUI和應(yīng)用程序。本設(shè)計(jì)通過(guò)對(duì)基于嵌入式Qt的電紙書閱讀器的設(shè)計(jì)和移植環(huán)境搭建進(jìn)行分析,輔之以系統(tǒng)結(jié)構(gòu)圖和搭建環(huán)境測(cè)試圖的方法來(lái)解析電紙書閱讀器的功能設(shè)計(jì)和實(shí)現(xiàn)的過(guò)程。

1 系統(tǒng)硬件平臺(tái)搭建

本設(shè)計(jì)采用北京博創(chuàng)ARM9開發(fā)板。根據(jù)平臺(tái)硬件要求,進(jìn)行了U-boot和內(nèi)核的移植以及根文件系統(tǒng)、觸摸屏及Qte庫(kù)的編輯,為基于嵌入式Qt電紙書閱讀器系統(tǒng)軟件的開發(fā)與實(shí)現(xiàn)做好準(zhǔn)備。

2 開發(fā)環(huán)境的搭建與設(shè)計(jì)

2.1 創(chuàng)建交叉編譯環(huán)境

嵌入式系統(tǒng)是對(duì)可靠性、成本、體積、功耗等方面有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。由于硬件資源非常有限,需要針對(duì)嵌入式硬件目標(biāo)板設(shè)定專門的Linux操作系統(tǒng),這就必然需要相應(yīng)的交叉開發(fā)環(huán)境。嵌入式開發(fā)過(guò)程中交叉編譯是一項(xiàng)重要的工作,通過(guò)交叉編譯器能編譯出在另外一種環(huán)境下運(yùn)行的代碼。

要進(jìn)行交叉編譯,我們需要在開發(fā)平臺(tái)建立交叉編譯工具鏈,最后用交叉編譯工具鏈編譯出在目標(biāo)平臺(tái)上可運(yùn)行的代碼。剛開始編譯U-boot是一件很頭疼的事,因?yàn)楹芏嗑幾g器都不能通過(guò),原因是U-boot是軟浮點(diǎn)編譯的,但一般的交叉編譯器用的是硬浮點(diǎn),最后通過(guò)使用3.3.2交叉編譯器才能正常編譯。本系統(tǒng)使用arm-linux-gcc 3.3.2交叉編譯工具鏈編譯U-boot和支持eabi提高編譯效率的arm-linux-gcc 4.1.2編譯Linux內(nèi)核及其應(yīng)用程序。

為了對(duì)交叉編譯器的使用方便,一般把a(bǔ)rmlinux工具鏈目錄加入到環(huán)境PATH中,如對(duì)gcc 4.1.2,在/etc/profile文件中,增加路徑export PATH= /opt/toolchains/arm920t-eabi/bin:$PATH,用命令source/etc/profile使其路徑生效。

2.2 Qt運(yùn)行環(huán)境配置

Qt/Embedded具有良好的與平臺(tái)無(wú)關(guān)GUI編程接口,在嵌入式系統(tǒng)中有著相當(dāng)多的應(yīng)用[1]。運(yùn)行環(huán)境配置步驟如下:

1)建立Linux開發(fā)環(huán)境。

在Windows系統(tǒng)下安裝虛擬機(jī)軟件VMware Workstation,并在虛擬機(jī)軟件上安裝Linux操作系統(tǒng)。

2)安裝開發(fā)工具Qt,分為兩部分。

①安裝LinuxPC機(jī)上的開發(fā)工具Qt。

②搭建QTE-arm環(huán)境并移植QtE到博創(chuàng)S3C2410開發(fā)板。

交叉編譯器安裝成功后,解壓tslib1.4.tar.gz并編譯,步驟如下:打開文件所在目錄,解壓文件后進(jìn)入解壓目錄,修改腳本gedit build.sh,然后保存退出并執(zhí)行./build.sh。

編譯并成功安裝到/usr/local/tslib目錄,tslib1.4編譯成功后開始編譯安裝qte4.6.3-arm,具體步驟如下:進(jìn)入文件所在目錄,解壓并修改錯(cuò)誤文件,用make install命令編譯執(zhí)行,則成功安裝。

2.3 BootLoader的移植

本設(shè)計(jì)采用了通用性很強(qiáng)的U-boot作為Boot?loader。U-boot是以硬件為基礎(chǔ)的引導(dǎo)程序,其作用就是對(duì)硬件設(shè)備初始化,預(yù)先設(shè)置軟件環(huán)境,最后調(diào)用到內(nèi)核。U-boot移植是嵌入式系統(tǒng)軟件開發(fā)的首要環(huán)節(jié),U-boot運(yùn)行情況決定著應(yīng)用程序

運(yùn)行環(huán)境的構(gòu)建和內(nèi)核啟動(dòng)的正常與否[2]。

U-boot的移植方法∶在ARM9平臺(tái)上進(jìn)行uboot移植。對(duì)U-Boot源碼包解壓并編輯,這樣就可以從Flash啟動(dòng)和支持NAND DM9000網(wǎng)卡;執(zhí)行命令:

#make smdk2410_config #make

生成u-boot.bin目標(biāo)文件。

2.4 Linux內(nèi)核的配置

U-boot正常啟動(dòng)后進(jìn)行Linux內(nèi)核的移植。

1)準(zhǔn)備源碼包及文件:“l(fā)inux-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目錄內(nèi)執(zhí)行命令:

#./patch-ker.sh c../linux-2.6.24.4/

3)編輯Makefile文件執(zhí)行命令:

#gedit Makefile

在打開的文件中找到下面兩行并修改:ARCH ?= arm

CROSS_COMPILE?= arm-linux-

4)得到.config文件:

#cp arch/arm/configs/s3c2410_defconfig.config

5)修改Nand Flash分區(qū),之后在打開文件中修改分區(qū)信息結(jié)構(gòu)體:

6)禁止ECC校驗(yàn)

通過(guò)U-Boot和內(nèi)核產(chǎn)生的ECC校驗(yàn)碼的一致性由禁止內(nèi)核ECC校驗(yàn)解決。

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

chip->ecc.mode=NAND_ECC_NONE

7)添加 LCD支持:#gedit arch/arm/machs3c2410/mach-smdk2410.c在打開的文件中添加兩個(gè)頭文件:

#include<asm/arch/fb.h>

#include<linux/platform_device.h>

然后在“smdk2410_init”函數(shù)的最后一行添加添加結(jié)構(gòu)體:

s3c24xx_fb_set_platdata(&smdk2410_fb_info)

8)添加網(wǎng)卡驅(qū)動(dòng):#gedit arch/arm/machs3c2410/mach-smdk2410.c

在打開文件中添加2個(gè)結(jié)構(gòu)體來(lái)定義端口地址和中斷號(hào),以及設(shè)備的其他信息。然后加入網(wǎng)卡數(shù)據(jù):

&s3c_device_dm9ks[3]。

9)配置內(nèi)核

進(jìn)入內(nèi)核配置界面,進(jìn)行內(nèi)核配置:

#make menuconfig

10)編譯內(nèi)核,內(nèi)核源碼目錄執(zhí)行以下命令:

#make clean

#make

完成后就生成了所需要的要燒寫到開發(fā)板上的內(nèi)核映像文件uImage

2.5 根文件系統(tǒng)的配置

1)主機(jī)環(huán)境

準(zhǔn)備cramfs-1.1.tar.gz和busybox-1.12.2.tar.bz2源碼包,解壓后,進(jìn)入cramfs-1.1目錄。

#apt-get install zlib1g-dev

#make

得到用來(lái)生成cramfs映像的mkcramfs工具。

2)Busybox配置

①解壓busybox-1.12.2.tar.bz2。

②使用shell腳本創(chuàng)建根文件系統(tǒng)的目錄結(jié)構(gòu),并運(yùn)行此腳本。

③修改拷貝過(guò)來(lái)的profile文件。

④創(chuàng)建空的mdev.conf文件。

⑤復(fù)制shadow、group和passwd文件,將passwd文件中首末兩行的bash改成ash。

⑥復(fù)制在busybox安裝目錄下的所有文件到根文件系統(tǒng)目錄。

#cp-rfv/home/root/busybox-1.12.2/_install/*/ home/root/rootfs

⑦生成cramfs映像

#./mkcramfs rootfs rootfs.cramfs

3)測(cè)試根文件系統(tǒng)是否配置成功。

①開啟tftp服務(wù)器,設(shè)置環(huán)境變量,確保開發(fā)板和windows在同一網(wǎng)段及開發(fā)板的tftp服務(wù)器的IP為windows的IP。

②下載并到nandflash文件系統(tǒng)對(duì)應(yīng)的分區(qū)中。

③設(shè)置啟動(dòng)參數(shù),此項(xiàng)是內(nèi)核自動(dòng)啟動(dòng)的參

數(shù),如果已設(shè)置,就不用再重新設(shè)置。

④重啟開發(fā)板:[up-class2410#]reset,啟動(dòng)目標(biāo)板,串口輸出顯示根文件系統(tǒng)已經(jīng)加載成功。

2.6 觸摸屏軟件Tslib的移植

觸摸屏的軟件驅(qū)動(dòng)程序移植后(基于內(nèi)核的移植),一般有配套的tslib通過(guò)用戶層對(duì)觸摸屏上的數(shù)據(jù)濾波和修正,同時(shí)也可以給大多數(shù)GUI應(yīng)用的tslib接口支持。本系統(tǒng)tslib-1.4矯正觸摸屏,具體步驟如下:

1)進(jìn)入tslib-1.4解壓目錄修改:gedit build.sh腳本。

2)執(zhí)行./build.sh編譯并安裝。

3)執(zhí)行腳本:./touch.sh,屏幕上出現(xiàn)校準(zhǔn)程序,點(diǎn)擊十字架開始校準(zhǔn),成功移植tslib1.4。

3 系統(tǒng)設(shè)計(jì)

3.1 功能模塊設(shè)計(jì)

為了讀者的閱讀方便,電紙書閱讀器共有以下幾個(gè)功能。

①打開電紙書:提供了供你選擇的文件,你可以選擇你想打開的文件或電紙書閱讀器。②新建:可以打開一個(gè)新的頁(yè)面。③退出:退出打開的界面。④關(guān)于作者:顯示作者基本信息。⑤關(guān)于Qt:顯示關(guān)于Qt的簡(jiǎn)介。⑥字體:你可以根據(jù)你的需要而設(shè)置你打開的電紙書閱讀器的字體的類型和大小。⑦顏色:電紙書閱讀器背景界面的默認(rèn)為白色,可打開顏色選項(xiàng)卡來(lái)選擇適合顏色。⑧打印:通過(guò)打印選項(xiàng)來(lái)選擇打印機(jī)進(jìn)行打印。⑨查找:可以輸入查找內(nèi)容。

3.2 Qt功能的實(shí)現(xiàn)

本系統(tǒng)研究的是基于嵌入式Qt的電紙書閱讀器的設(shè)計(jì),因此需要用Qt軟件實(shí)現(xiàn)基本的功能,然后通過(guò)嵌入式在UP-2410平臺(tái)上來(lái)實(shí)現(xiàn),因此Qt功能的實(shí)現(xiàn)起著至關(guān)重要的作用。本系統(tǒng)設(shè)計(jì)的Qt電紙書閱讀器的基本功能。

1)打開電紙書功能的實(shí)現(xiàn)

功能實(shí)現(xiàn)需調(diào)用getopenfilename()函數(shù)來(lái)創(chuàng)建Open公共對(duì)話框,用戶可以指定驅(qū)動(dòng)器、目錄和文件名。

2)新建功能的實(shí)現(xiàn)

新建功能的實(shí)現(xiàn)主要用新建一個(gè)窗體,然后調(diào)用show()函數(shù)來(lái)實(shí)現(xiàn),槽函數(shù)為:

MainWindow*w=new MainWindow;//新建一個(gè)名為MainWindow的窗體。

w->show();//把這個(gè)命令傳輸給系統(tǒng)[9]。

3)退出功能的實(shí)現(xiàn)

退出功能實(shí)現(xiàn)通過(guò)調(diào)用this->close()來(lái)實(shí)現(xiàn),this代表當(dāng)前窗口部件對(duì)象地址,close表示關(guān)閉。

4)關(guān)于作者功能的實(shí)現(xiàn)

功能實(shí)現(xiàn)用QMessageBox∶information(this,tr("關(guān)于作者:"),tr("10090204**"))函數(shù);

5)關(guān)于Qt功能的實(shí)現(xiàn)

關(guān)于Qt的介紹通過(guò)調(diào)用函數(shù)QMessageBox∶∶aboutQt()來(lái)實(shí)現(xiàn),Qt提供了五種類似的對(duì)話框,要實(shí)現(xiàn)關(guān)于Qt功能需要的槽函數(shù)為:

QMessageBox∶aboutQt(this,tr("歡迎觀看電紙書閱讀器?。?!"));//""里面的為對(duì)話框的標(biāo)題。

6)字體功能的實(shí)現(xiàn)

字體的功能是通過(guò)調(diào)用函數(shù)setFont()實(shí)現(xiàn)。7)打印功能的實(shí)現(xiàn)

打印功能的實(shí)現(xiàn)需要用函數(shù) doc->print (&printer)調(diào)用打印機(jī)來(lái)實(shí)現(xiàn),其中printer是打印機(jī)的意思;

8)顏色功能的實(shí)現(xiàn)

背景顏色功能的實(shí)現(xiàn)需要函數(shù)setPalette(pal?ette)調(diào)用調(diào)色板來(lái)實(shí)現(xiàn),函數(shù)名為∶setpalette,功能∶改變調(diào)色板的顏色。

9)查找功能的實(shí)現(xiàn)

查找功能的實(shí)現(xiàn):首先需要新建一個(gè)窗體取名為findDlg,添加一個(gè)按鈕PushButton改名為查找下一個(gè),添加編輯框LineEdit用來(lái)輸入需查找文件名,調(diào)用函數(shù):

然后通過(guò)調(diào)用FindText函數(shù)來(lái)實(shí)現(xiàn)查找功能。

4 系統(tǒng)測(cè)試

4.1 U-boot的測(cè)試

在DOS對(duì)話框中進(jìn)入D盤輸入命令:sjf2410-s.exe/f∶u-boot.bin,運(yùn)行完后打開終端,重啟開發(fā)板,然后顯示如圖1所示。圖1表示u-boot已成功移植到了開發(fā)板上,可以繼續(xù)進(jìn)行內(nèi)核的移植步驟。

4.2 Linunx內(nèi)核的測(cè)試

測(cè)試內(nèi)核的具體步驟是:

1)確認(rèn)Linux虛擬機(jī)的IP地址。

①查看serverip是否與Linux虛擬機(jī)的IP地址一致。

②通過(guò)“setenv serverip+ip地址”來(lái)指定tftp服務(wù)器IP。

2)ARM開發(fā)板上運(yùn)行命令。

①tftp 0x30008000 uImage

②nand erase 0x80000 0x200000

③nand write 0x30008000 0x80000 0x200000

重啟ARM開發(fā)板,執(zhí)行命令“bootm”,成功移植后終端如圖2所示。

4.3觸摸屏的測(cè)試

進(jìn)行觸摸屏的測(cè)試,首先寫一個(gè)腳本touch.sh方便程序執(zhí)行,保存退出,執(zhí)行腳本:./touch.sh屏幕出現(xiàn)校準(zhǔn)程序,點(diǎn)擊十字開始校準(zhǔn),最終移植到開發(fā)板。

4.4 電紙書閱讀器功能測(cè)試

通過(guò)以上幾個(gè)測(cè)試,Qt的移植環(huán)境已搭建完成,最后,就是把設(shè)計(jì)好的Qt電紙書閱讀器成功下載到開發(fā)板上并進(jìn)行測(cè)試,具體步驟為:

1)首先啟動(dòng)tftp32.exe軟件,配置IP地址:192.168.1.126。

2)在root目錄下下載文件,命令為:tftp–r 6-g 192.168.1.126。

3)設(shè)置文件6的權(quán)限:chmod 777 6。

4)譯qt.sh文件,命令為:./qt.sh。

這時(shí)電紙書閱讀器就會(huì)在UP-2410平臺(tái)上顯示,如圖3所示。

圖1 U-boot移植測(cè)試圖

圖2 內(nèi)核移植測(cè)試圖

圖3 電紙書閱讀器圖

5 結(jié)束語(yǔ)

隨著嵌入式CPU運(yùn)算能力的不斷提高以及對(duì)外設(shè)接口支持的不斷豐富,要求具有良好交互性GUI的嵌入式Linux系統(tǒng)的應(yīng)用逐漸增多[4]。本設(shè)計(jì)重點(diǎn)介紹了Qt電紙書閱讀器的編譯安裝以及UP-2410平臺(tái)的移植,并在搭建好的環(huán)境上進(jìn)行電紙書閱讀器系統(tǒng)功能的設(shè)計(jì)和實(shí)現(xiàn),并驗(yàn)證移植的成果,結(jié)果證明設(shè)計(jì)能夠?yàn)轭愃频南到y(tǒng)開發(fā)提供參考。

[1]穆煜.嵌入式應(yīng)用程序設(shè)計(jì)[M].北京:人民郵電出版社,2009.

[2]周開,倪偉.基于Qt/E的嵌入式Linux GUI研究與實(shí)現(xiàn)[J].淮陰工學(xué)院學(xué)報(bào),2015,24(3):10-13.

[3]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2008.

[4]王浩南,劉益成.基于嵌入式Linux系統(tǒng)的下的Qt開發(fā)[J].電腦開發(fā)與應(yīng)用,2010,23(1):11-13.

Design and Implementation E-book Reader Based on Embedded Qt

LI Hui,CHEN Ping
(Jiyuan Vocational and Technical College,Jiyuan 459000,China)

This article takes the embedded terminal of E-book reader as an example,introduces the ARM9 Qt under the construction of the hardware platform and embedded Linux system running environment of the configu?ration process.The test program in the embedded platform can achieve the basic functions,operation effect is good.

embedded;Qt;E-book reader

TP391.1

A

1673-2928(2016)06-0030-05

(責(zé)任編輯:周小露)

2016-03-22

李暉(1982-),男,河南新鄉(xiāng)人,濟(jì)源職業(yè)技術(shù)學(xué)院助教,研究方向:嵌入式開發(fā)。

猜你喜歡
開發(fā)板閱讀器內(nèi)核
基于反向權(quán)重的閱讀器防碰撞算法
多內(nèi)核操作系統(tǒng)綜述①
強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
活化非遺文化 承啟設(shè)計(jì)內(nèi)核
The Magna Carta
基于STM32H7的FDCAN通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)?
Winner Takes All
Linux內(nèi)核mmap保護(hù)機(jī)制研究
淺析單片機(jī)開發(fā)板的設(shè)計(jì)與制作
ARM宣布mbed Enabled Freescale FRDM—K64F開發(fā)板通過(guò)微軟認(rèn)證