基于嵌入式Linux的圖形界面顯示系統(tǒng)的設(shè)計(jì)_第1頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、基于嵌入式linux的圖形界面顯示系統(tǒng)的設(shè)計(jì)在系統(tǒng)這個(gè)it產(chǎn)業(yè)的新領(lǐng)域, 以其所具備的穩(wěn)定、高效、易定制、易裁減、硬件支持廣泛的特點(diǎn),結(jié)合其免費(fèi)、源碼開(kāi)放的特征。使得linux在嵌入式操作系統(tǒng)中的地位越來(lái)越重要。越來(lái)越多的嵌入式系統(tǒng),包括 pda、wap 手機(jī)等等系統(tǒng)均要求提供全功能的 web 掃瞄器。這包括 html 的支持、javascript 的支持,甚至包括 java 虛擬機(jī)的支持。而這一切都要求有一個(gè)高性能、高牢靠的 gui 的支持。這些系統(tǒng)普通不希翼建立在浩大累贅的、十分消耗系統(tǒng)資源的操作系統(tǒng)和 gui 之上,比如 windows 或 x window。但是,在浮現(xiàn) linux 系

2、統(tǒng)之后 gui 仍然是一個(gè)問(wèn)題。關(guān)鍵是 x window 太過(guò)浩大和臃腫。是專為無(wú)存儲(chǔ)器管理單元的處理器定制的嵌入式linux操作系統(tǒng)。其內(nèi)嵌的microwindow為嵌入式系統(tǒng)圖形界面提供了良好的支持。2 系統(tǒng)的組成結(jié)構(gòu)基于uclinux的嵌入式圖形界面顯示系統(tǒng)分為軟件和硬件兩大部分。軟件由uclinux、framebuffer驅(qū)動(dòng)程序和microwindow三部分組成。motorola嵌入式cpu 5272、epson的13506 控制器和truly公司的mct-g320240dncw液晶顯示屏組成圖形界面顯示硬件系統(tǒng)。結(jié)構(gòu)1所示。硬件設(shè)計(jì)環(huán)境:開(kāi)發(fā)板是motorola 5272c3,uc

3、linux內(nèi)核版本號(hào)是2.4.17。3 microwindow的架構(gòu)microwindow是一種輕量級(jí)的gui,具有輕型、占用資源少、高牢靠性的特點(diǎn)。microwindow 是一個(gè)十分適合于工業(yè)控制實(shí)時(shí)系統(tǒng)以及嵌入式系統(tǒng)的可定制的、小巧的圖形用戶界面支持系統(tǒng)。microwindow是一種分層設(shè)計(jì)的架構(gòu)。最底層是一組屏幕、鼠標(biāo)/、鍵盤的抽象接口,不依靠任何特別的硬件。中間層是可移植的圖形引擎。最高層是各種api,供圖形應(yīng)用程序調(diào)用。目前有兩種api,一種是ecma apiw,其次種是nano-x apis.。這些api與win32和x window系統(tǒng)基本上兼容,使應(yīng)用程序移植十分簡(jiǎn)單。在ucl

4、inux下microwindow最底層的screen 抽象接口建立在linux framebuffer 設(shè)備基礎(chǔ)上。framebuffer device 是對(duì)圖形顯示硬件設(shè)備的抽象,它代表視頻硬件的幀緩存。本文將重點(diǎn)研究uclinux下針對(duì)詳細(xì)硬件環(huán)境如何設(shè)計(jì)其framebuffer設(shè)備驅(qū)動(dòng)程序。4 framebuffer設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)linux下設(shè)備分為字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備接口三大類。那么framebuffer設(shè)備屬于哪一類呢?剛開(kāi)頭設(shè)計(jì)時(shí)簡(jiǎn)單使人困窘。其實(shí)對(duì)用法者而言,幀緩沖設(shè)備也就是framebuffer device和名目/dev下的其他設(shè)備沒(méi)有區(qū)分。它是一個(gè)字符設(shè)備,用法主

5、設(shè)備號(hào)29,次設(shè)備號(hào)用于幀緩沖設(shè)備之間的區(qū)別。例如:0/dev/fb0 first frame buffer1=/dev/fb1 second frame buffer31=/dev/fb31 32nd frame buffer031就是次設(shè)備號(hào)幀緩沖驅(qū)動(dòng)程序主要依賴四個(gè)數(shù)據(jù)結(jié)構(gòu)。這些結(jié)構(gòu)定義在 include/linux/fb.h程序內(nèi)。它們分離是fb_info、fb_var_screeninfo、fb_fix_screeninfo和fb_monospecs。后三個(gè)結(jié)構(gòu)可以在用戶空間拜訪,結(jié)構(gòu) fb_info只能在內(nèi)核空間拜訪。結(jié)構(gòu) fb_fix_screeninfo定義了視頻板卡硬件的某些

6、固定的特性。這些特性在硬件初始化時(shí)就被定義了以后不得修改。在這個(gè)結(jié)構(gòu)體中最重要的成員是smem_len和line_length。前者指示顯存的大小,后者提供了一個(gè)顯示行的byte統(tǒng)計(jì)數(shù),使顯存指針很便利的移到下一顯示行。結(jié)構(gòu)fb_var_screeninfo定義了視頻硬件一些可變的特性。這些特性在程序運(yùn)行期間可以由應(yīng)用程序動(dòng)態(tài)轉(zhuǎn)變。因?yàn)槠邢拊诖酥粚?duì)這個(gè)結(jié)構(gòu)體中主要的成員作出說(shuō)明,具體說(shuō)明請(qǐng)參見(jiàn)fb.h。成員變量xres 和 yres定義在顯示屏上真切顯示的辨別率。而xres_virtual和yres_virtual是虛擬辨別率,它們定義的是顯存辨別率。比如顯示屏垂直辨別率是400,而虛擬辨

7、別率是800。這就意味著在顯存中存儲(chǔ)著800行顯示行,但是每次只能顯示400行。但是顯示哪400行呢?這就需要另外一個(gè)成員變量yoffset,當(dāng)yoffset0時(shí),從顯存0行開(kāi)頭顯示400行,假如yoffset30,就從顯存31行開(kāi)頭顯示400行。在這四個(gè)結(jié)構(gòu)中最重要的結(jié)構(gòu)就是fb_info,它只能在內(nèi)核空間拜訪。其內(nèi)部定義了struct fb_ops, 結(jié)構(gòu)fb_ops成員就是由一系列framebuffer 操作函數(shù)組成。結(jié)構(gòu)fb_monospecs在2.5.x內(nèi)核下才會(huì)被采納,在目前內(nèi)核下不用法。如前所述就用法者而言,幀緩沖設(shè)備和普通的字符設(shè)備沒(méi)有區(qū)分。因此寫視頻硬件的設(shè)備驅(qū)動(dòng)程序就有兩種

8、挑選,一種是把視頻硬件抽象成普通的字符設(shè)備,驅(qū)動(dòng)程序的寫法和普通的字符設(shè)備驅(qū)動(dòng)類似。其次種就是幀緩沖設(shè)備的驅(qū)動(dòng)程序的編寫。第一種辦法不規(guī)范,而且實(shí)現(xiàn)功能有限,故不倡導(dǎo)。下面用與字符驅(qū)動(dòng)程序類比的辦法介紹如何編寫幀緩沖驅(qū)動(dòng)程序。字符驅(qū)動(dòng)程序用函數(shù)register_chrdev向內(nèi)核注冊(cè)設(shè)備。register_chrdev需要三個(gè)參數(shù),參數(shù)一是主設(shè)備號(hào),參數(shù)二是對(duì)應(yīng)與參數(shù)一主設(shè)備號(hào)的驅(qū)動(dòng)程序名;參數(shù)三用來(lái)記下驅(qū)動(dòng)程序?qū)嶋H執(zhí)行操作的函數(shù)指針,它指向struct file_operation。編寫字符驅(qū)動(dòng)程序的主要工作就是編寫各個(gè)子函數(shù)并填寫file_operation各個(gè)域。當(dāng)用戶進(jìn)程利用系統(tǒng)調(diào)用對(duì)

9、設(shè)備文件舉行操作時(shí),系統(tǒng)通過(guò)設(shè)備文件的主設(shè)備號(hào)找到相應(yīng)的設(shè)備驅(qū)動(dòng)程序。然后讀取這個(gè)數(shù)據(jù)結(jié)構(gòu)相應(yīng)的操作函數(shù)指針,接著就把控制權(quán)交給這個(gè)函數(shù)。這就是linux驅(qū)動(dòng)程序工作原理。幀緩沖設(shè)備驅(qū)動(dòng)程序與此類似,其調(diào)用register_framebuffer注冊(cè)一個(gè)framebuffer設(shè)備。它惟獨(dú)一個(gè)參數(shù)就是前面介紹的struct fb_info, 其內(nèi)部定義了結(jié)構(gòu)成員fb_ops。編寫幀緩沖驅(qū)動(dòng)程序主要就是編寫fb_ops各個(gè)成員函數(shù)。與字符驅(qū)動(dòng)設(shè)備不同的是幀緩沖驅(qū)動(dòng)程序并不實(shí)現(xiàn)ioctl調(diào)用。幀緩沖驅(qū)動(dòng)程序的初始化函數(shù)在linux/drivers/video/fbmem.c中記下。全部的幀緩沖驅(qū)動(dòng)程

10、序的ioct調(diào)用由fbmem.c統(tǒng)一實(shí)現(xiàn)。由fbmem.c按照當(dāng)前正在工作的幀緩沖設(shè)備提供ioctl調(diào)用。5 硬件的設(shè)計(jì)5272是motorola公司coldfire系列嵌入式cpu,在motorola公司嵌入式cpu中屬于中低檔產(chǎn)品。低檔不等于低效,在主頻66m時(shí)可以達(dá)到63,臨近mpc860的mips。并且外圍電路接口豐盛,在coldfire系列中集成度最高。5272是一種32位同步數(shù)據(jù)地址總線,總線傳輸終止支持同步終止和異步終止。在5272與外圍器件總線傳輸周期中,利用ta信號(hào)可以在總線傳輸周期插入等待時(shí)鐘周期。實(shí)現(xiàn)總線傳輸?shù)漠惒浇K止。5272總線接口用法bs0bs3四個(gè)信號(hào)顯示當(dāng)前總線

11、周期數(shù)據(jù)總線寬度。5272的i/o空間是內(nèi)存映射的,所以沒(méi)有特地的i/o地址空間。由于5272沒(méi)有mmu單元,所以5272的內(nèi)存空間是物理地址挺直尋址。液晶屏控制器是epson公司的13506。這是一款lcd/crt/tv圖形控制器。cpu接口廣泛。擁有16bit寬度的edo顯存接口,顯存最大可達(dá)2mbytes。在16bpp的狀況下最大辨別率可達(dá)640480。支持虛擬顯示,即顯示圖像尺寸可以大于屏幕實(shí)際尺寸。下圖是coldfire 5272 cpu 與 epson13506之間的接口電路暗示圖。epson13506的cpu接口數(shù)據(jù)總線寬度是16位。5272是大印第安字節(jié)序,當(dāng)總線寬度是16位時(shí),數(shù)據(jù)總線高16位有效。epson13506 m/r管腳用來(lái)控制當(dāng)前讀寫是對(duì)顯存的讀寫還是對(duì)13506 i/o寄存器的讀寫,5272地址線a21對(duì)其舉行控制。這樣在5272 cs6的地址空間中,地址21位是1就是顯存的地址,為0就是13506 i/o寄存器的地址。5272地址總線a0并未接到epson13506 ab0管腳上,這是因?yàn)樵趀pson13506 cpu接口模式 generic1狀況下,epson13506 ab0管腳必需接高電平。這樣就無(wú)法實(shí)現(xiàn)對(duì)字節(jié)的尋址。為了實(shí)現(xiàn)對(duì)字節(jié)的尋址,可以通過(guò)一片舉行規(guī)律

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論