數(shù)碼相框論文_第1頁
數(shù)碼相框論文_第2頁
數(shù)碼相框論文_第3頁
數(shù)碼相框論文_第4頁
數(shù)碼相框論文_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、廣州大學華軟軟件學院本科畢業(yè)論文論文題目 嵌入式數(shù)碼相框的設(shè)計與實現(xiàn) 專 業(yè) 電子信息工程 班 級 11級嵌入式應(yīng)用軟件開發(fā)1班 姓 名 許家淇 學 號 1140907104 指導教師 徐禮國 廣州大學華軟軟件學院電子系2015年 4 月摘要 本設(shè)計采用搭載s3c2440芯片的TQ2440開發(fā)板作為硬件平臺,并在該硬件平臺上移植了u-boot,linux內(nèi)核,根文件系統(tǒng),構(gòu)成一個嵌入式linux操作系統(tǒng),該系統(tǒng)的最大特點就是,可以根據(jù)應(yīng)用需求對軟硬件進行裁剪,滿足應(yīng)用系統(tǒng)的功能、可靠性、成本、體積等要求,主要用途就是對軟硬件資源的調(diào)度與分配。 在搭載了linux嵌入式系統(tǒng)的TQ2440開發(fā)板上

2、,本文設(shè)計了一個界面應(yīng)用程序,該應(yīng)用程序主要功能為:用戶通過對界面的操作就可對數(shù)碼相框中圖片的瀏覽與管理,以及進行幻燈片播放功能。關(guān)鍵詞: TQ2440;嵌入式系統(tǒng);數(shù)碼相框;2ABSTRACT This curriculum designt uses the TQ2440 development board with the S3C2440 chip as the hardware platform and transplant u-boot, the hardware platform in the Linux kernel, root file system, constitute an

3、 embedded Linux operating system, the biggest feature of the system is that can be tailored to meet the hardware and software according to the demand of application, function, reliability, cost, volume requirements of application system, the main purpose is to soft hardware resource allocation and s

4、cheduling. When equipped with a TQ2440 development board Linux embedded system, this paper designed an interface application program, the main function of the application program so that the user can browse and management of the image in the digital photo frame through the interface, and a slideshow

5、 feature.KEY WORDS: TQ2440; Embedded System; Digital Photo Frame目 錄1.前 言11.1背景與研究意義11.2本論文的主要研究內(nèi)容12. 數(shù)碼相框總體設(shè)計與論證22.1數(shù)碼相框總體設(shè)計方案22.2.器件選型:32.3論證33. 嵌入式linux系統(tǒng)構(gòu)建43.1 u-boot的移植43.2 Linux內(nèi)核的移植53.2.1 準備工作63.2.2 修改內(nèi)核源碼頂層63.2.3 設(shè)置 flash 分區(qū)63.2.4 修改機器碼63.2.5 配置編譯內(nèi)核73.2.6 Linux內(nèi)核編譯與燒寫103.3制作根文件系統(tǒng)113.4.驅(qū)動的設(shè)計11

6、3.4.1關(guān)于USB驅(qū)動設(shè)計113.4.2 關(guān)于LCD驅(qū)動設(shè)計123.4.3關(guān)于觸摸屏驅(qū)動設(shè)計134. 界面應(yīng)用程序144.1程序作用簡介:144.2界面功能總框架:144.3程序主流程介紹164.4程序模塊介紹174.4.1程序模塊實現(xiàn)概述:174.4.2頁面規(guī)劃模塊:184.4.3調(diào)試模塊:184.4.4圖片解析模塊:184.4.5字體解碼模塊:194.4.6輸入模式模塊:194.4.7顯示模塊:205.系統(tǒng)分析和測試215.1系統(tǒng)分析方法簡述215.2測試215.2.1 bmp圖標顯示測試215.2.2 jpeg圖片解析測試215.2.3 u盤掛載測試235.3測試結(jié)論246. 總結(jié)25

7、參考文獻26附 錄27致 謝28III1.前 言1.1背景與研究意義 隨著PC時代數(shù)碼技術(shù)的發(fā)展,數(shù)碼相機以其低廉的價格,方便的操作成為攝影器材的發(fā)展方向。目前,很多家庭都持有數(shù)碼相機,一次拍攝下來的照片往往會有上百張,使用PC機來查看拍攝下來的圖片,過于依賴PC機。 并且眾多的數(shù)碼攝影產(chǎn)生的相片保存起來后,查看過程繁瑣不方便,要想再把這些相片都沖印出來回味、欣賞,即浪費又不環(huán)保。數(shù)碼相框?qū)氐捉夥拍切┓e壓下來的數(shù)碼相片,讓你人生中值得記憶的每一個瞬間從此不再被埋沒在硬盤里面。數(shù)碼相框可以不但可以節(jié)約了照片沖印的紙張,而且還可用來美化家居,構(gòu)造精致生活享受。分享快樂、展示成功;帶給父母,緩解思

8、念。作為數(shù)碼相機的一種附屬產(chǎn)品,數(shù)碼相框不僅具有傳統(tǒng)相框的特點,而且可以直接從數(shù)碼相機中選擇心儀的照片,隨時更新照片。數(shù)碼相框還可以擺放在家居顯眼之處,成為現(xiàn)代家庭一道靚麗的風景線。1.2本論文的主要研究內(nèi)容 本設(shè)計是以TQ2440為硬件平臺并搭載嵌入式Linux操作系統(tǒng)為基礎(chǔ),完成圖片可輪播、查看的數(shù)碼相框系統(tǒng)設(shè)計。主要研究內(nèi)容包括以下幾個方面:(1)分析數(shù)碼相框系統(tǒng)需求,對所用硬件器件選型,嵌入式系統(tǒng)的選擇,以及確定界面程序?qū)崿F(xiàn)方式。(2)在基于ARM9微處理器的TQ2440平臺上搭建嵌入式系統(tǒng)開發(fā)環(huán)境。(3)在嵌入式Linux操作系統(tǒng)平臺上完成實現(xiàn)了uboot、內(nèi)核的移植和構(gòu)建根文件系統(tǒng)

9、等工作。(4)對數(shù)碼相框的界面進行研究,通過界面程序?qū)崿F(xiàn)了友好的人機交互UI界面。282. 數(shù)碼相框總體設(shè)計與論證2.1數(shù)碼相框總體設(shè)計方案本文設(shè)計的數(shù)碼相框系統(tǒng),完成了實現(xiàn)圖片的查看、輪播功能的系統(tǒng)設(shè)計方案設(shè)計。該數(shù)碼相框系統(tǒng)依靠ARM微處理器和嵌入式Linux操作系統(tǒng)作為平臺,同時結(jié)合界面應(yīng)用程序,通過對觸摸屏的操作,在LCD屏幕上顯示圖片,實現(xiàn)數(shù)碼相框系統(tǒng)與外界的信息交互,從而能在TQ2440上實現(xiàn)數(shù)碼相框的基本功能。如圖2.1所示圖2-1 數(shù)碼相框系統(tǒng)2.2.器件選型: 本文選擇以搭載ARM處理器的三星s3c2440芯片為核心,搭建硬件平臺,主要原因是ARM處理器具有以下特點:(1)體

10、積小、低功耗、低成本、高性能。(2)支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位 器件。(3)大量使用寄存器,指令執(zhí)行速度更快。(4)大多數(shù)數(shù)據(jù)操作都在寄存器中完成。(5)尋址方式靈活簡單,執(zhí)行效率高。(6)指令長度固定。2.3論證 本課程設(shè)計采用的是linux系統(tǒng),屬于嵌入式系統(tǒng)的一種。對比開發(fā)常見的嵌入式操作系統(tǒng)WinCE、uCOS-II、VxWorks等。嵌入式linux操作系統(tǒng)用途更為廣泛,并且是開源系統(tǒng)軟件,其主要功能是分配、調(diào)度工作,控制協(xié)調(diào)并分發(fā)軟、硬件資源;該系統(tǒng)是功能模塊化的,即一個功能對應(yīng)一個模塊,添加一個功能只需要增加一個對應(yīng)模塊就可以。嵌

11、入式linux操作系統(tǒng)突出的特點是系統(tǒng)實時的高效性、移植性好、,眾多的系統(tǒng)軟件開源等。嵌入式操作系統(tǒng)與普通的計算機操作系統(tǒng)相比,除具備了一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度、同步機制、中斷處理、文件功能等,還有系統(tǒng)功能可裁剪、系統(tǒng)工具開源里面以及與嵌入式ARM微處理器兼容性好等特點。3. 嵌入式linux系統(tǒng)構(gòu)建3.1 u-boot的移植 TQ2440的啟動需要Bootloader,Bootloader是硬件啟動的引導程序,是啟動操作系統(tǒng)的根本,是在操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序運行之前運行的一段小程序。通過這段小程序,可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的

12、狀態(tài),以便為最終調(diào)用準備好環(huán)境。本課程設(shè)計采用的u-boot,全稱 Universal Boot Loader,是遵循GPL條款的開放源碼項目。簡單的說,u-boot就是開源的且通用的Bootloader。由于u-boot源代碼十分龐大,本文無法一一列出代碼,而且,移植u-boot到TQ2440開發(fā)板的過程十分的復雜與繁瑣,所以,本文只對移植u-boot關(guān)鍵部分作出說明:(1) 獲取u-boot源碼: 登錄官網(wǎng)下載u-boot-源碼 ,然后解壓:# tar xzf u-boot-2010.03.tar.bz2 此時我們就得到了u-boot 2010.03版本的源碼。(2) 根據(jù)系統(tǒng)的處理器平臺

13、選擇對應(yīng)的目標編譯項:(A)在uboot-2010.03的根目錄下面的Makefile中為TQ2440建立編譯, 以sbc2410x為模板例子。在Makefile中加上對TQ2440板子的支持,將這個編譯項命名為TQ2440:TQ2440_config : unconfig$(MKCONFIG) $(:_config=) arm arm920t TQ2440 NULL s3c24x0 各項的意思如下:arm:CPU的架構(gòu)為arm架構(gòu)。arm920t:CPU的類型為arm920t。TQ2440:開發(fā)板的型號為TQ2440。NULL:開發(fā)者/或經(jīng)銷商(vender),NULL表示沒有。s3c24x

14、0:片上系統(tǒng)為s3c24x0。(B)由于本文使用arm架構(gòu)處理器,故需要設(shè)置交叉編譯工具鏈,修改頂層Makefile的CROSS_COMPILE定義如下:CROSS_COMPILE = arm-linux-(C)仿造sbc2410x模板,在/board目錄下建立TQ2440文件夾,并在include/configs/中建立開發(fā)板的配置頭文件,拷貝sbc2410x的文件到TQ2440和include/configs/中,并將sbc2410x命名的文件和定義改為TQ2440。(3) 修改cpu/arm920t/start.S,根據(jù)S3C2440A數(shù)據(jù)手冊時鐘參數(shù),修改代碼使得u-boot從NAND

15、 Flash啟動或者從Nor flash啟動。(4) 根據(jù)TQ2440上的NAND Flash芯片手冊,增加NAND Flash讀寫函數(shù),實現(xiàn)NAND Flash的讀寫操作,實現(xiàn)加載Uboot、內(nèi)核和文件系統(tǒng)硬件到NAND Flash功能。(5) 修改u-boot代碼中對分區(qū)表的設(shè)置,使得分區(qū)表與內(nèi)核設(shè)置的一致。(6) 進入目錄配置編譯,生成相應(yīng)平臺的uboot映像: 配置#make TQ2440_config #make 編譯結(jié)果生成u-boot.bin燒入開發(fā)板(7) 把編譯生成的u-boot.bin使用OPENJTAG燒寫工具,安裝驅(qū)動程序后,把它燒寫到開發(fā)板nor flash上就可以了

16、。3.2 Linux內(nèi)核的移植 Linux是一種開源電腦操作系統(tǒng)內(nèi)核。它是一個用C語言寫成,符合POSIX標準的類Unix操作系統(tǒng),是一個一體化內(nèi)核(monolithic kernel)系統(tǒng)。“內(nèi)核”指的是一個提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件。一個內(nèi)核不是一套完整的操作系統(tǒng),還需要有配套的文件系統(tǒng)和硬件平臺才能構(gòu)成一個完整的嵌入式系統(tǒng)?;贚inux內(nèi)核的完整操作系統(tǒng)叫作Linux操作系統(tǒng),其設(shè)備驅(qū)動程序可以完全訪問硬件,且設(shè)備驅(qū)動程序可以方便地以模塊化的形式設(shè)置,即使在系統(tǒng)運行期間也可直接裝載或卸載。 linux-2.4.3 內(nèi)核已經(jīng)支持 S3C2440 處理器的多

17、種硬件開發(fā)板,由于 S3C2410 跟 S3C2440 同屬于 ARM920T 系列芯片,且寄存器等硬件電路基本一致,所以本文,參考 SMDK2410 參考板來移植linux-2.4.3 內(nèi)核到TQ 2440 開發(fā)板上。3.2.1 準備工作 在linux系統(tǒng)中,建立工作目錄,下載內(nèi)核源碼:linux-2.6.30.4.tar.bz2。步驟如下:#tar jxvf linux-2.6.30.4.tar.gz解壓后會在當前目錄下生成一個 linux-2.6.30.4 的內(nèi)核源碼目錄3.2.2 修改內(nèi)核源碼頂層修改內(nèi)核目錄樹根下的的 Makefile,指明體系結(jié)構(gòu)是 arm,交叉編譯工具是 arm-

18、linux-gcc。找到 ARCH 和 CROSS_COMPILE,修改ARCH ?= armCROSS_COMPILE ?= /usr/local/arm/4.1.2/bin/arm-linux-3.2.3 設(shè)置 flash 分區(qū)(1)修改內(nèi)核分區(qū)信息(本示例分設(shè)四個分區(qū)),讓內(nèi)核知道 NAND Flash 的分區(qū)信息,設(shè)置成跟u-boot一致, (2)修改時鐘 將archarmmach-s3c24xxmach-smdk2440.c中的s3c24xx_init_clocks(16934400);修改為:s3c24xx_init_clocks(12000000); (3)修改 NAND Fla

19、sh 的校驗方式,去掉 ECC 校驗,否則上電啟動會提示 ECC 錯誤或 者 I/O 讀取錯誤。在drivers/mtd/nand/s3c2410.c 中將 chip->ecc.mode = NAND_ECC_SOFT,改為 chip->ecc.mode = NAND_ECC_NONE;3.2.4 修改機器碼在 u-boot-2009.11 的/board/samsun/TQ2440/TQ2440.c 中定義了機器碼為 193,需要使得u-boot 和 linux 內(nèi)核的同樣類型的機器碼都為 193,那么我們就修改 kernel 的 MACH_TYPE 代碼引用部分,確定 kern

20、el 的 MACH_TYPE。 如下:在 arch/arm/mach-s3c2440/mach-smdk2440.c 中: MACHINE_START(S3C2440, "SMDK2440")修改為:MACHINE_START(SMDK2410, "SMDK2440")在 arch/arm/kernel/head.S中的ENTRY(stext)下添加如下代碼ENTRY(stext)movr0, #0movr1, #0xc1/ MACH_TYPE_SMDK2410值193換成十六進制就是 0xc13.2.5 配置編譯內(nèi)核#make s3c2410_defc

21、onfig #make menuconfig /進入設(shè)置界面,配置內(nèi)核make menuconfig命令運行后進入內(nèi)核配置主菜單,如圖3-1,這時根據(jù)自己的硬件需求對內(nèi)核進行配置,即在菜單中選擇合適的選項,對內(nèi)核的裁剪,就是使用make menuconfig命令來調(diào)出配置菜單,通過在菜單上選擇所需的選項,去掉不需要的選項的方式來裁剪。(選項前按“y”則顯示“*”表示需要此項;按n則空,不要此項)。圖3.1 配置主菜單根據(jù)開發(fā)板情況,在配置中主要考慮的有:(1)CPU類型的選擇圖3-2 cpu類型選擇(2)引導設(shè)置圖3-3 引導設(shè)置Boot options -> Default kerne

22、l command string: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200 rootfstype=jffs2說明:mtdblock2 代表第 3 個 flash 分區(qū),它是預設(shè)的 rootfs 分區(qū),console=ttySAC0,115200 使 kernel 啟動期間的信息全部輸出到串口 0 上。(3)系統(tǒng)調(diào)用方式設(shè)置如下圖3-4圖3-4 系統(tǒng)調(diào)用方式設(shè)置Kernel Features->* Use the ARM EABI to compile the kernel/防止出現(xiàn)內(nèi)核恐慌,內(nèi)核指

23、針跑飛。主菜單中選最后一項“Save an Alternate Configuration File”,按回車,進入配置文件名編輯,默認文件名,ok保存,exit退出,產(chǎn)生.config內(nèi)核配置文件,該文件會在 make 的時候被調(diào)用。 (4)文件系統(tǒng)的支持。接下來做的是針對文件系統(tǒng)的設(shè)置,本課程設(shè)計上的文件系統(tǒng)是 cramfs/ jffs2,故做如下配置,如圖3-5圖3-5Miscellaneous filesystems ->*JFFS2 XATTR support (EXPERIMENTAL)支持 jffs2 和 cramfs 文件系統(tǒng),配置如下圖3-5圖3-6Network Fi

24、le Systems ->支持 NFS 文件系統(tǒng),配置如下圖3-7 NFS client support for the NFSv3 ACL protocol extension*NFS client support for NFS version 4 (EXPERIMENTAL)<*> NFS server support圖3-73.2.6 Linux內(nèi)核編譯與燒寫 配置完成后,會在內(nèi)核目錄下生產(chǎn).config文件,然后回到內(nèi)核目錄編譯內(nèi)核,具體操作如下:#make /編譯內(nèi)核此時,在arch/arm/boot目錄下生成uImage鏡像,然后進行uImage鏡像的燒寫:打開

25、DNW軟件,在菜單Configuration中選擇Options,然后配置波特率和端口參數(shù),配置好參數(shù)后,選擇菜單Serial Port-.>Connect,然后給開發(fā)板上電,選擇菜單USB Port->Transmit,導入uImage鏡像即可。3.3制作根文件系統(tǒng) 制作基本的根文件系統(tǒng):使用busybox定制一個基本的文件系統(tǒng),使用到的軟件包有busybox和bash。其過程也是比較繁瑣,大致分為以下幾步: (A)設(shè)定工作目錄為/root/build_rootfs/,該目錄主要用來編譯busybox,bash等制作根文件系統(tǒng)的軟件。 (B)使用MDEV創(chuàng)建節(jié)點。 (C)拷貝動態(tài)

26、鏈接庫,交叉應(yīng)用程序的開發(fā)需要用到交叉編譯的鏈接庫,交叉編譯的鏈接庫是在交叉工具鏈的lib目錄下,我們在移植應(yīng)用程序到我們的目標板的時候,需要把交叉編譯的鏈接庫也一起移植到目標上。 (D)交叉編譯busybox之后,運行make menuconfig 會看到和kernel一樣的配置菜單,可以對其進行配置,大多配置項都是對一些命令支持的選擇,只需要根據(jù)菜單選項進行相應(yīng)的配置選擇即可。 (E)交叉編譯bash(交互程序) (F)建立系統(tǒng)配置文件,并配置好inittab,fstab,rcS等系統(tǒng)配置文件 最后使用mkfs.jffs2工具,來制作jffs2文件系統(tǒng)映象,并把根文件系統(tǒng)燒入NAND Fl

27、ash。3.4.驅(qū)動的設(shè)計3.4.1關(guān)于USB驅(qū)動設(shè)計由于我們需要查看U盤中的圖片,此時U盤連接開發(fā)板TQ2440就需要用到USB驅(qū)動。(1)修改arch/arm/mach-s3c2410/mach-smdk2410.c文件,添加如下代碼:static struct s3c2410_hcd_info usb_tq2410_info = .port0=.flags = S3C2410_HCDFLG_USED,;int usb_tq2410_init(void)/USB初始化函數(shù)unsigned long upllvalue = (0x78<<12)|(0x02<<4)|(

28、0x03);printk(“USB Control,(c)tq2410n”);s3c_device_usb.dev.platform_data = &usb_tq2410_info;while(upllvalue!=_raw_readl(S3C2410_UPLLCON)_raw_write(upllvalue,S3C2410_UPLLCON);mdelay(1);return 0;(2)在static void_init smdk2410_map_io()函數(shù)中添加usb_sbc2410_init()函數(shù)(3)內(nèi)核配置使用”make menuconfig”命令調(diào)出內(nèi)核配置菜單,主要的設(shè)

29、置為:(A)內(nèi)核支持USB設(shè)備(B)支持熱插拔(C)加入 MSDOS 文件系統(tǒng)和 VFAT 文件系統(tǒng)支持(為適應(yīng)掛載 U 盤)(D)添加對中文字體庫的支持 (E) 編譯3.4.2 關(guān)于LCD驅(qū)動設(shè)計(1)關(guān)于LCD的配置文件:在Linux-2.6.30.4/arch/arm/mach-s3c2410/mach-smdk2410.c的smdk2410_lcd_cfg_initdata函數(shù)中添加如下內(nèi)容:(A) 配置好LCD控制寄存器(B) 設(shè)置LCD類型為TFT(C) LCD的寬度與長度(D) 設(shè)置時序(E) 設(shè)置分辨率以及BPP等(2)初始化函數(shù)中添加LCD初始化功能Static void_i

30、nit smdk2410_init(void)S3c24xx_fb_set_platdata(&smdk2410_fb_info);/添加部分(3)配置內(nèi)核菜單,使得內(nèi)核支持frame buffer:在make menuconfig中選擇 <*>Support for frame buffer devices(4)編譯 3.4.3關(guān)于觸摸屏驅(qū)動設(shè)計對于觸摸屏驅(qū)動的設(shè)計,本文采用的是基于linux本身自帶的輸入子系統(tǒng)方式設(shè)計的,由于涉及的代碼比較繁雜,所以本文主要列出其主要設(shè)計方法,主要的設(shè)計方法如下:1. 設(shè)置輸入結(jié)構(gòu)input_dev:(A)通過設(shè)置struct inpu

31、t_dev 的evdev數(shù)組表示能產(chǎn)生KEY和ABS類事件。(B)設(shè)置產(chǎn)生KEY和ABS類事件里面的觸摸"按鍵"事件, X/Y絕對位移,絕對位移壓力事件。2. 硬件操作:(A)ioremap寄存器(B)設(shè)置AD分頻系數(shù)和ADCDLY (C) 注冊INT_TS和AD中斷4. 界面應(yīng)用程序4.1程序作用簡介: 界面應(yīng)用程序的主要作用是,使用戶能夠通過對觸摸屏的操作,來實現(xiàn)對數(shù)碼相框中圖片的管理以及把圖片顯示在LCD屏幕上,通過對屏幕不同圖標的點擊,可以進入相對應(yīng)的模式,選擇相應(yīng)的功能,從而實現(xiàn)數(shù)碼相框?qū)D片的顯示,連播等基本功能。4.2界面功能總框架: 本文未使用QT圖形用戶界

32、面應(yīng)用程序開發(fā)框架,而是直接使用C語言編寫出界面程序。界面功能總框架如圖4-1圖4-1 功能總框架界面功能說明: (1)主界面:在程序的一開始LCD顯示界面上,有三種模式給用戶選擇,分別是瀏覽模式,連播模式,設(shè)置模式。根據(jù)點擊的模式圖標進入對應(yīng)的界面。 (2)文件瀏覽模式界面:若點擊瀏覽模式,則進入文件瀏覽界面,可以看到TQ2440搭載的根文件系統(tǒng)的各種目錄,以及系統(tǒng)中的圖片。在文件瀏覽模式中,可以選擇的操作方式有:向上,選擇,上一頁,下一頁。 (3)圖片瀏覽模式界面:點擊圖片就可以進入,圖片瀏覽模式,在該模式中可以選擇的操作有:返回,放大,縮小,上一頁,下一頁,連播模式。 (4)設(shè)置模式界面

33、:點擊設(shè)置,就可進入設(shè)置模式,設(shè)置模式的主要功能就是選擇,某個目錄,連播目錄中的所有支持格式的圖片。 (5)設(shè)置間隔界面:設(shè)置時間間隔,通過點擊上下箭頭可以設(shè)置圖片連播顯示時間間隔,即每隔幾秒顯示下一張圖片,使得數(shù)碼相框以幻燈片的模式播放圖片。4.3程序主流程介紹圖4-2 程序流程圖主流程解析:(1) 初始化調(diào)試通道: 可以通過"標準輸出"在PC機終端secureCRT串口軟件窗口打印調(diào)試信息。(2) 選擇顯示設(shè)備:本課程設(shè)計使用的顯示設(shè)備是4.3寸的LCD屏幕。(3) 分配5塊內(nèi)存:為加快顯示速度,我們事先在內(nèi)存中構(gòu)造好即將顯示的頁面的數(shù)據(jù) (這個內(nèi)存稱為VideoMem

34、), 顯示時再把VideoMem中的數(shù)據(jù)復制到設(shè)備的顯存上。從而在LCD上顯示出來(4) 輸入設(shè)備:本課程設(shè)計的輸入設(shè)備為電阻觸摸屏。(5) 字庫與字庫模塊:文件的名字顯示依賴freetype庫(FreeType庫是一個完全免費(開源)的、高質(zhì)量的且可移植的字體引擎)。(6) 圖片解析模塊:界面的圖標顯示使用的是BMP格式。瀏覽的圖片只支持常用的jpeg格式。Jpeg格式圖片需要使用jpeg庫來對其解析才可顯示在LCD上。(7) 主界面:提供三種模式瀏覽模式,連播模式,設(shè)置模式。點擊不用模式圖標,會進入不同的界面。(8) 根據(jù)用戶點擊屏幕,進入不同的模式界面。4.4程序模塊介紹4.4.1程序模

35、塊實現(xiàn)概述:該界面使用面對對象思想進行程序設(shè)計,簡單來說,就是把各個功能模塊化,每個模塊對應(yīng)一個功能。對于界面各幅圖片的規(guī)劃就設(shè)計為頁面規(guī)劃模塊,對圖片解析方式就設(shè)計為圖片解析模塊,輸入方式設(shè)計為輸入模塊。這樣的模塊化思想,能把各個功能從整個界面程序作為模塊分離出來,但卻不是獨立的,而是彼此分層次的,它們之間可以互相調(diào)用,協(xié)作來實現(xiàn)數(shù)碼相框的基本功能。這樣一來,我們對數(shù)碼相框系統(tǒng)某一個功能的改造,只需要修改對應(yīng)的模塊即可。比如,我們暫時實現(xiàn)數(shù)碼相框輸入功能模塊只有兩種模式:觸摸屏輸入,終端標準輸入,這兩種模式對應(yīng)著touchscreen.c 和stdin.c這兩個文件,這兩個文件能實現(xiàn)的是對于

36、觸摸屏和標準輸入功能,對于系統(tǒng)選擇哪種輸入模式由它們的上一級文件input_manager.c中的函數(shù)來定義和管理的。input_manager.c中構(gòu)建了一個鏈表和鏈表成員添加函數(shù),用于觸摸屏輸入方式結(jié)構(gòu)體和標準輸入結(jié)構(gòu)體的注冊(放入鏈表)。假設(shè)我們此時想添加按鍵輸入方式,我們只需要編寫一個按鍵輸入方式文件,并在該文件中,把本文件實現(xiàn)的函數(shù)都放在一個結(jié)構(gòu)體中,然后在按鍵輸入方式文件中的初始化函數(shù)中,調(diào)用input_manager.c中的鏈表成員添加函數(shù)把這個結(jié)構(gòu)體放到input_manager.c構(gòu)建的鏈表中,上層文件只需要訪問這個鏈表中的按鍵輸入方式結(jié)構(gòu)體成員就可以調(diào)用到按鍵輸入方式中的各

37、個函數(shù)。從而,實現(xiàn)在輸入方式模塊中增加了按鍵輸入功能。4.4.2頁面規(guī)劃模塊:Page_manager.c的功能是在程序的開始就調(diào)用main_page.c文件中的函數(shù),從而在LCD的主頁面上顯示出三種模式:選擇目錄模式、連播模式目錄和設(shè)置模式目錄。點擊不同的模式就會調(diào)用到另外不同的文件下定義的函數(shù),從而顯示出對應(yīng)的界面。圖4-3 頁面規(guī)劃模塊4.4.3調(diào)試模塊: 主要用于測試階段的調(diào)試,在串口軟件界面輸出調(diào)試信息。圖4-4 頁面規(guī)劃模塊4.4.4圖片解析模塊: 圖片解析模塊的功能是對圖片格式的解析和對圖片大小的操作。因為ARM處理器只識別二進制,而我們?nèi)粘5膱D片大多數(shù)是jpeg格式,jpeg格

38、式是一種壓縮的圖片格式,我們需要解析該格式數(shù)據(jù),jpg.c的任務(wù)就是來解析這種格式。對于圖片大小的操作就交給operation子模塊了。圖4-5頁面規(guī)劃模塊4.4.5字體解碼模塊: 文件的名字ARM處理器是不會幫我們智能翻譯的,只能程序使用ascii.c來解碼,轉(zhuǎn)變成ARM處理器認識的數(shù)據(jù)格式,然后把這些數(shù)據(jù)轉(zhuǎn)換為位圖,從而在LCD上面顯示出來文件名。圖4-6 字體解碼模塊4.4.6輸入模式模塊: 想要數(shù)碼相框更加智能,以及能對數(shù)碼相框系統(tǒng)中圖片進行管理,我們需要能對系統(tǒng)中的文件以及系統(tǒng)模式的選擇進行操作,簡單來說,就是把用戶的信息輸入給系統(tǒng),告訴它我們想要做什么。輸入模式模塊就定義了這個功能

39、,我們可以選擇在PC機上通過串口軟件secureCRT來操作,更簡單直接的,就是直接對通過觸摸屏操作了。所以stdin.c和touchscree.c實現(xiàn)的功能分別就是支持終端操作,觸摸屏操作。圖4-7輸入模塊4.4.7顯示模塊: 輸入模塊是告訴了系統(tǒng)用戶想做什么,而顯示模塊就是對用戶輸入的反饋。我們對數(shù)碼相框操作的同時,它就把系統(tǒng)中的信息通過LCD屏幕反饋顯示出來,反饋給用戶。圖4-8 字體解碼模塊5.系統(tǒng)分析和測試5.1系統(tǒng)分析方法簡述本設(shè)計設(shè)計一個能夠瀏覽U盤中存儲的照片,并且能夠進行幻燈片播放的數(shù)碼相框,對其進行分析,只需要觸摸LCD屏幕,判斷其界面工作狀況,能否正常顯示界面,便可判斷數(shù)

40、碼相框系統(tǒng)的性能。5.2測試5.2.1 bmp圖標顯示測試 界面程序上的圖標都是使用BMP格式,對于典型的BMP圖像文件由三部分組成:位圖文件頭數(shù)據(jù)結(jié)構(gòu),它包含BMP圖像文件的類型、顯示內(nèi)容等信息;位圖信息數(shù)據(jù)結(jié)構(gòu),它包含有BMP圖像的寬、高、壓縮方法,以及定義顏色等信息。對于這種格式的圖標需要我們自己編寫程序來對其放大縮小,以便于支持我們的界面,方便操作。下圖就是對bmp圖標的放大縮小,選擇一個合適的大小,來作為界面圖標。圖5-1 bmp測試5.2.2 jpeg圖片解析測試 JPEG 是Joint Photographic Experts Group(聯(lián)合圖像專家小組)的縮寫,是國際圖像壓縮

41、標準。該格式實現(xiàn)的圖像壓縮算法能夠在提供良好的壓縮性能的同時,具有比較好的重建質(zhì)量,被廣泛應(yīng)用于圖像、視頻處理領(lǐng)域。對于這種圖片的解析,有專門開源庫來解析,在網(wǎng)絡(luò)上可以直接下載libjpeg壓縮包,在解壓壓縮包,編譯安裝之后,我們只需要調(diào)用libjpeg庫中的函數(shù)就可以對圖標解析,從而顯示在圖片上了。圖5-2jpeg測試5.2.3屏幕點擊測試:通過點擊圖5-3主頁面的瀏覽模式圖標來測試屏幕是否具有反應(yīng)。經(jīng)測試,點擊瀏覽模式圖標屏幕成功能進入瀏覽模式界面,表明屏幕圖標點擊測試成功。如圖5-4。圖5-3 主頁面圖5-4 瀏覽模式頁面5.2.3 u盤掛載測試 為了支持更多圖片的查看,我們想在數(shù)碼相框系統(tǒng)中,實現(xiàn)能夠查看U盤中的圖片的功能,剛開始,本文以為研究以為,有了USB驅(qū)動之后,插上U盤即可查看到其中的圖片,測試結(jié)果如圖5-5所示,找不到U盤目錄中的任何一張圖片。圖5-5經(jīng)過一段時間的研究,找得解決方法,本文在開發(fā)板根文件系統(tǒng)中輸入了掛載命令“mount /dev/sda1 /mnt”便實現(xiàn)了U盤對開發(fā)板根文件系統(tǒng)目錄的掛載,如圖5-6所示。圖5-65.3測試結(jié)論通過上述測試,驗證了本設(shè)計的數(shù)碼相框系統(tǒng)是有效的、安全的和可靠的,能夠?qū)崿F(xiàn)圖片的顯示以及連播,能達到通過觸摸屏操

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論