• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2016-12-06 02:20:08李暉陳平
      安陽工學院學報 2016年6期
      關鍵詞:電紙開發(fā)板閱讀器

      李暉,陳平

      (濟源職業(yè)技術學院,河南濟源459000)

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

      李暉,陳平

      (濟源職業(yè)技術學院,河南濟源459000)

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

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

      D01∶10.19329/j.cnki.1673-2928.2016.06.010

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      2.3 BootLoader的移植

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

      運行環(huán)境的構建和內(nèi)核啟動的正常與否[2]。

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

      #make smdk2410_config #make

      生成u-boot.bin目標文件。

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

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

      1)準備源碼包及文件:“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ū)信息結構體:

      6)禁止ECC校驗

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

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

      chip->ecc.mode=NAND_ECC_NONE

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

      #include<asm/arch/fb.h>

      #include<linux/platform_device.h>

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

      s3c24xx_fb_set_platdata(&smdk2410_fb_info)

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

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

      &s3c_device_dm9ks[3]。

      9)配置內(nèi)核

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

      #make menuconfig

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

      #make clean

      #make

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

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

      1)主機環(huán)境

      準備cramfs-1.1.tar.gz和busybox-1.12.2.tar.bz2源碼包,解壓后,進入cramfs-1.1目錄。

      #apt-get install zlib1g-dev

      #make

      得到用來生成cramfs映像的mkcramfs工具。

      2)Busybox配置

      ①解壓busybox-1.12.2.tar.bz2。

      ②使用shell腳本創(chuàng)建根文件系統(tǒng)的目錄結構,并運行此腳本。

      ③修改拷貝過來的profile文件。

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

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

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

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

      ⑦生成cramfs映像

      #./mkcramfs rootfs rootfs.cramfs

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

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

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

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

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

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

      2.6 觸摸屏軟件Tslib的移植

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

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

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

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

      3 系統(tǒng)設計

      3.1 功能模塊設計

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

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

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

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

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

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

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

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

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

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

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

      退出功能實現(xiàn)通過調(diào)用this->close()來實現(xiàn),this代表當前窗口部件對象地址,close表示關閉。

      4)關于作者功能的實現(xiàn)

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

      5)關于Qt功能的實現(xiàn)

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

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

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

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

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

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

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

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

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

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

      4 系統(tǒng)測試

      4.1 U-boot的測試

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

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

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

      1)確認Linux虛擬機的IP地址。

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

      ②通過“setenv serverip+ip地址”來指定tftp服務器IP。

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

      ①tftp 0x30008000 uImage

      ②nand erase 0x80000 0x200000

      ③nand write 0x30008000 0x80000 0x200000

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

      4.3觸摸屏的測試

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

      4.4 電紙書閱讀器功能測試

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

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

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

      3)設置文件6的權限:chmod 777 6。

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

      這時電紙書閱讀器就會在UP-2410平臺上顯示,如圖3所示。

      圖1 U-boot移植測試圖

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

      圖3 電紙書閱讀器圖

      5 結束語

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

      [1]穆煜.嵌入式應用程序設計[M].北京:人民郵電出版社,2009.

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

      [3]譚浩強.C語言程序設計[M].北京:清華大學出版社,2008.

      [4]王浩南,劉益成.基于嵌入式Linux系統(tǒng)的下的Qt開發(fā)[J].電腦開發(fā)與應用,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

      (責任編輯:周小露)

      2016-03-22

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

      猜你喜歡
      電紙開發(fā)板閱讀器
      基于反向權重的閱讀器防碰撞算法
      一種高效的RFID系統(tǒng)冗余閱讀器消除算法
      Microchip最新推出兩款PIC32 Curiosity開發(fā)板
      淺析單片機開發(fā)板的設計與制作
      電子制作(2017年22期)2017-02-02 07:10:14
      一種RFID網(wǎng)絡系統(tǒng)中消除冗余閱讀器的高效算法
      Mouser為您呈上開發(fā)關鍵之STMicroelectronics Nucleo開發(fā)板
      Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
      盲人閱讀器
      市場快報
      電紙書,原來如此!漢王電紙書N618親測記
      彭阳县| 隆尧县| 汕尾市| 大足县| 内黄县| 东乡| 民丰县| 南昌县| 张家口市| 开江县| 巴中市| 黄大仙区| 南康市| 岳阳市| 松桃| 南平市| 绿春县| 邯郸市| 福鼎市| 丽水市| 普陀区| 潮州市| 南澳县| 定兴县| 绥江县| 乌拉特前旗| 台南市| 望江县| 东山县| 萨嘎县| 五莲县| 罗平县| 商水县| 博白县| 鄱阳县| 朝阳市| 连云港市| 宁化县| 垦利县| 固始县| 通榆县|