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

下載本文檔

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

文檔簡(jiǎn)介

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

2、,本文設(shè)計(jì)了一個(gè)界面應(yīng)用程序,該應(yīng)用程序主要功能為:用戶(hù)通過(guò)對(duì)界面的操作就可對(duì)數(shù)碼相框中圖片的瀏覽與管理,以及進(jìn)行幻燈片播放功能。關(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本論文的主要研究?jī)?nèi)容12. 數(shù)碼相框總體設(shè)計(jì)與論證22.1數(shù)碼相框總體設(shè)計(jì)方案22.2.器件選型:32.3論證33. 嵌入式linux系統(tǒng)構(gòu)建43.1 u-boot的移植43.2 Linux內(nèi)核的移植53.2.1 準(zhǔn)備工作63.2.2 修改內(nèi)核源碼頂層63.2.3 設(shè)置 flash 分區(qū)63.2.4 修改機(jī)器碼63.2.5 配置編譯內(nèi)核73.2.6 Linux內(nèi)核編譯與燒寫(xiě)103.3制作根文件系統(tǒng)113.4.驅(qū)動(dòng)的設(shè)計(jì)11

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

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

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

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

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

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

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

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

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

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

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

17、種硬件開(kāi)發(fā)板,由于 S3C2410 跟 S3C2440 同屬于 ARM920T 系列芯片,且寄存器等硬件電路基本一致,所以本文,參考 SMDK2410 參考板來(lái)移植linux-2.4.3 內(nèi)核到TQ 2440 開(kāi)發(fā)板上。3.2.1 準(zhǔn)備工作 在linux系統(tǒng)中,建立工作目錄,下載內(nèi)核源碼:linux-2.6.30.4.tar.bz2。步驟如下:#tar jxvf linux-2.6.30.4.tar.gz解壓后會(huì)在當(dāng)前目錄下生成一個(gè) linux-2.6.30.4 的內(nèi)核源碼目錄3.2.2 修改內(nèi)核源碼頂層修改內(nèi)核目錄樹(shù)根下的的 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è)四個(gè)分區(qū)),讓內(nèi)核知道 NAND Flash 的分區(qū)信息,設(shè)置成跟u-boot一致, (2)修改時(shí)鐘 將archarmmach-s3c24xxmach-smdk2440.c中的s3c24xx_init_clocks(16934400);修改為:s3c24xx_init_clocks(12000000); (3)修改 NAND Fla

19、sh 的校驗(yàn)方式,去掉 ECC 校驗(yàn),否則上電啟動(dòng)會(huì)提示 ECC 錯(cuò)誤或 者 I/O 讀取錯(cuò)誤。在drivers/mtd/nand/s3c2410.c 中將 chip->ecc.mode = NAND_ECC_SOFT,改為 chip->ecc.mode = NAND_ECC_NONE;3.2.4 修改機(jī)器碼在 u-boot-2009.11 的/board/samsun/TQ2440/TQ2440.c 中定義了機(jī)器碼為 193,需要使得u-boot 和 linux 內(nèi)核的同樣類(lèi)型的機(jī)器碼都為 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換成十六進(jìn)制就是 0xc13.2.5 配置編譯內(nèi)核#make s3c2410_defc

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

22、l command string: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200 rootfstype=jffs2說(shuō)明:mtdblock2 代表第 3 個(gè) flash 分區(qū),它是預(yù)設(shè)的 rootfs 分區(qū),console=ttySAC0,115200 使 kernel 啟動(dòng)期間的信息全部輸出到串口 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、針跑飛。主菜單中選最后一項(xiàng)“Save an Alternate Configuration File”,按回車(chē),進(jìn)入配置文件名編輯,默認(rèn)文件名,ok保存,exit退出,產(chǎn)生.config內(nèi)核配置文件,該文件會(huì)在 make 的時(shí)候被調(diào)用。 (4)文件系統(tǒng)的支持。接下來(lái)做的是針對(duì)文件系統(tǒng)的設(shè)置,本課程設(shè)計(jì)上的文件系統(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)核編譯與燒寫(xiě) 配置完成后,會(huì)在內(nèi)核目錄下生產(chǎn).config文件,然后回到內(nèi)核目錄編譯內(nèi)核,具體操作如下:#make /編譯內(nèi)核此時(shí),在arch/arm/boot目錄下生成uImage鏡像,然后進(jìn)行uImage鏡像的燒寫(xiě):打開(kāi)

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

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

27、ash。3.4.驅(qū)動(dòng)的設(shè)計(jì)3.4.1關(guān)于USB驅(qū)動(dòng)設(shè)計(jì)由于我們需要查看U盤(pán)中的圖片,此時(shí)U盤(pán)連接開(kāi)發(fā)板TQ2440就需要用到USB驅(qū)動(dòng)。(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 盤(pán))(D)添加對(duì)中文字體庫(kù)的支持 (E) 編譯3.4.2 關(guān)于LCD驅(qū)動(dòng)設(shè)計(jì)(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類(lèi)型為T(mén)FT(C) LCD的寬度與長(zhǎng)度(D) 設(shè)置時(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ū)動(dòng)設(shè)計(jì)對(duì)于觸摸屏驅(qū)動(dòng)的設(shè)計(jì),本文采用的是基于linux本身自帶的輸入子系統(tǒng)方式設(shè)計(jì)的,由于涉及的代碼比較繁雜,所以本文主要列出其主要設(shè)計(jì)方法,主要的設(shè)計(jì)方法如下:1. 設(shè)置輸入結(jié)構(gòu)input_dev:(A)通過(guò)設(shè)置struct inpu

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論