基于嵌入式ARM的LCD圖像顯示系統(tǒng)設計_第1頁
基于嵌入式ARM的LCD圖像顯示系統(tǒng)設計_第2頁
基于嵌入式ARM的LCD圖像顯示系統(tǒng)設計_第3頁
基于嵌入式ARM的LCD圖像顯示系統(tǒng)設計_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、    基于嵌入式ARM的LCD圖像顯示系統(tǒng)設計0引言隨著嵌入式技術迅猛發(fā)展和Linux在信息行業(yè)中廣泛應用,利用嵌入式Linux系統(tǒng)實現(xiàn)圖像采集處理已有可能。實時獲得圖像數(shù)據(jù)是實現(xiàn)這些應用的重要環(huán)節(jié)。本文使用的系統(tǒng)硬件平臺采用Samsung公司的處理器S3C2410,并以此為基礎,在基于嵌入式Linux系統(tǒng)平臺上設計了建立圖像視頻的一種方法。1系統(tǒng)硬件電路設計S3C2410芯片處理器內部集成了ARM公司ARM920T處理器核的32位微控制器,資源豐富,帶獨立的16kB的指令Cache和16kB數(shù)據(jù)Cache、0引 言隨著嵌入式技術迅猛發(fā)展和Linux在

2、信息行業(yè)中廣泛應用,利用嵌入式Linux系統(tǒng)實現(xiàn)圖像采集處理已有可能。實時獲得圖像數(shù)據(jù)是實現(xiàn)這些應用的重要環(huán)節(jié)。本文使用的系統(tǒng)硬件平臺采用Samsung公司的處理器S3C2410,并以此為基礎,在基于嵌入式Linux系統(tǒng)平臺上設計了建立圖像視頻的一種方法。1 系統(tǒng)硬件電路設計S3C2410芯片處理器內部集成了ARM公司ARM920T處理器核的32位微控制器,資源豐富,帶獨立的16kB的指令Cache和16 kB數(shù)據(jù)Cache、LCD(液晶顯示器)控制器、RAM控制器、NAND閃存控制器、3路UART、4路DMA、4路帶PWM的定時器、并行I/O口、8路10位ADC、Touch Screen接口

3、、I2C接口、I2S接口、2個USB接口控制器、2路SPI,主頻最高可達203MHz。在處理器豐富資源的基礎上,本平臺配置了64 MB的Flash和64 MB、32位的SDRAM,以支持操作系統(tǒng)和液晶屏顯示運算的需要。S3C2410內置有液晶屏控制器,可以支持最大256k色TFT彩色液晶屏、最大4 k色STN彩色液晶屏??紤]到本系統(tǒng)的應用領域對圖像顯示的要求相對較高,故采用8英寸640×480 TFT液晶屏(型號為LQ080V3DG01)。LQ080V3DG01要求其電源電壓Vdd典型值為3.3 V/5 V,并且LCD數(shù)據(jù)和控制信號的高電平輸入電壓Vih最小值為2.3 V,所

4、以本系統(tǒng)直接使用S3C2410的控制口線與它相連,而沒有設置電平轉換電路。具體的電路連接如圖1所示。芯片工作模式為16位色(5:6:5)。2 系統(tǒng)軟件設計2.1 Linux操作系統(tǒng)本視頻顯示系統(tǒng)的軟件以嵌入式Linux為基礎。Linux是免費運行、快速高效的操作系統(tǒng)。在過去的幾年中,基于開源組織的Linux系統(tǒng)的嵌入式操作系統(tǒng)得到了長足的發(fā)展。Linux操作系統(tǒng)雖然不是微內核結構,但是其模塊化的結構使得用戶可以對其方便地進行配置,去除用戶系統(tǒng)不需要的模塊以減小系統(tǒng)的開銷,可以做到幾百k大小。綜合考慮系統(tǒng)的功能和可擴展性以及系統(tǒng)的運行速度,本方案中的嵌入式Linux所采用的內核版本是kernel

5、-2.4.18。在向基于S3C2410的硬件平臺上安裝嵌入式Linux操作系統(tǒng)CLinux后,為了使LCD能正常顯示,還需要在CLinux系統(tǒng)下開發(fā)LCD的驅動程序。22 Framebuffer設備驅動幀緩沖(Framebuffer)是出現(xiàn)在Linux2.2.xx內核中的一種驅動程序接口,該設備提供了LCD控制器的抽象描述。它同時代表了LCD控制器上的顯存,應用程序通過定義好的接口可以訪問LCD控制器,而不需要知道底層的任何操作。本系統(tǒng)通過幀緩沖實現(xiàn)LCD驅動程序的開發(fā)工作。該設備使用特殊的設備節(jié)點,是一個字符設備,其主設備號是29,次設備號定義幀緩沖個數(shù)。從用戶角度看,幀緩沖設備和其他位于/

6、dev下面的設備類似。幀緩沖的顯示緩沖區(qū)位于CLinux中核心態(tài)地址空間,而在CLinux中,每個應用程序都有自己的虛擬地址空間,在應用程序中是不能直接訪問物理緩沖區(qū)地址的。為此,CLinux提供了mmap函數(shù),可將文件的內容映射到應用程序空間。對于幀緩沖設備,則可通過映射操作,將屏幕緩沖區(qū)的物理地址映射到應用程序空間的一段虛擬地址中,之后就可以通過讀寫這段虛擬地址訪問屏幕緩沖區(qū),在屏幕上繪圖。幀緩沖中內存塊分布如圖2所示。幀緩沖設備是一種普通的內存設備,支持直接讀寫其內容。支持使用read(),write(),seek()以及mmap()函數(shù)。不同之處是幀緩沖的內存不是所有內存區(qū),而是LCD

7、控制器專用的那部分內存。/dev/fb*允許使用ioctl操作,通過ioctl可以讀取或設定設備參數(shù)。顏色映射表也通過ioctl設定。下面是ioctl和本系統(tǒng)相關的應用及相關數(shù)據(jù)結構部分:a)獲取設備一些不變的信息,如設備名,屏幕的組織對應內存區(qū)的長度和起始地址。b)獲取可以發(fā)生變化的信息,例如位深、顏色格式、時序等,如果改變這些值,驅動程序將對值進行優(yōu)化,以滿足設備特性。c)獲取或設定部分顏色表。但在實際系統(tǒng)運用時,使用read、write函數(shù)在讀或寫之前持續(xù)地尋址將會導致很多開銷?;窘鉀Q方法是映射屏幕內存。當屏幕內存被映射到應用程序時,將得到一個直接指向屏幕內存的指針。在本系統(tǒng)和其他類似

8、運用中,首先要從新得到的幀緩沖設備取回信息。幀緩沖設備在很大程度上依靠:Stnlct fb_var_screeninfo;Struct fb_fix_screeninfo;Struct fb_info這3個數(shù)據(jù)結構,它們在include/linux/fb.h中聲明。第1個結構是用來描述圖形卡的特性,通常由用戶設置;第2個結構定義了圖形卡的硬件特性,是不能改變的,在選定了LCD控制器和顯示器后,它的硬件特性也就定下來了;第3個結構定義了當前圖形卡幀緩沖設備的獨立狀態(tài)。23 幀緩沖驅動程序的實現(xiàn)與一般應用類似,在本系統(tǒng)實現(xiàn)中,應用程序主要通過下面3種方式實現(xiàn)內核對幀緩沖的控制。a)讀/寫/dev/

9、fb:相當于讀/寫屏幕緩沖區(qū)。b)映射(map)操作:通過映射操作,可將屏幕緩沖區(qū)的物理地址映射到用戶空間的一段虛擬地址中,之后用戶就可以通過讀寫這段虛擬地址訪問屏幕緩沖區(qū),在屏幕上繪圖。c)I/O控制:對于幀緩沖設備,設備文件的ioctl操作可讀取顯示設備及屏幕的參數(shù),如分辨率、顯示顏色數(shù)、屏幕大小等。ioctl操作是由底層的驅動程序來完成的。因此,幀緩沖驅動要完成的工作還包括:分配顯存的大小、初始化LCD控制寄存器、設置修改硬件設備相應的var信息和fix信息。在Clinux中,由于幀緩沖設備是字符設備,應用程序需按文件的方式打開一個幀緩沖設備,對幀緩沖設備進行讀、寫等操作。在上文中已經(jīng)介

10、紹了幀緩沖設備的地址空間問題,對于操作系統(tǒng)來說,讀、寫幀緩沖設備就是對物理地址空間進行數(shù)據(jù)讀寫。所以,讀寫幀緩沖設備最主要就是獲取幀緩沖設備在內存中的物理地址空間以及相應LCD的一些特性。圖3反映了應用程序如何寫幀緩沖設備來顯示圖形的全過程。在了解了上面所述的概念后,編寫幀緩沖驅動的實際工作并不復雜,針對本系統(tǒng)主要有以下工作。a)編寫初始化函數(shù)。初始化函數(shù)首先初始化LCD控制器,通過寫寄存器設置顯示模式和顯示顏色數(shù),然后分配LCD顯示緩沖區(qū)。在Linux可通過kmal-loc函數(shù)分配一片連續(xù)的空間。本文采用的LCD顯示方式為640×480,通過ARM芯片和TFT控制器硬件連接方式可知

11、,其顯示模式為16位,需要分配的顯示緩沖區(qū)分別為640×480×16/8=600 kB。緩沖區(qū)通常分配在大容量的片外SDRAM中,起始地址保存在LCD控制器寄存器中。最后是初始化一個fb_info結構,填充其中的成員變量,并調用register_Framebuffer(&fb_info),將fb_info登記入內核。b)編寫結構fb_info中函數(shù)指針fb_ops對應的成員函數(shù)對于嵌入式系統(tǒng)的簡單實現(xiàn),設置了下列3個函數(shù)以滿足要求:struct fb_ops在fb.h中定義。這些函數(shù)都是用來設置/獲取fb_info結構中的成員變量的。當應用程序對設備文件進行

12、ioctl操作時會調用它們,例如,對于fb_get_fix(),應用程序傳人的是fb_fix_screen info結構,在函數(shù)中對其成員變量賦值,主要是smem-start(緩沖區(qū)起始地址)和smem-len(緩沖區(qū)長度),最終返回給應用程序。而fb_set_var()函數(shù)的傳人參數(shù)是fb_var_screen info,函數(shù)中需要對xres,yfes,和bits_per_pixel賦值。賦值時需注意,根據(jù)本系統(tǒng)硬件特性,LCD的16位為(5:6:5),亦即:紅色5位(bits11:15),綠色6位(bits5:10),藍色5位(bits0:4)。也就是說,LCD最大支持32種紅色、64種綠色、32種藍色的混合顯示。至此,顯示驅動開發(fā)工作已經(jīng)基本告畢。以本系統(tǒng)為例,如要顯示一個像素,只要通過如下步驟:由此便可以在LCD屏上逐一顯示每個像素,進而顯示整幅圖像。圖4是在所建立系統(tǒng)的LCD屏上顯示代表東南大學的"SEU"3個英文字母,其中"s"為純紅色(31,0,0),"E"為純綠色(0,63,0),"U"為純藍色(0

溫馨提示

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

評論

0/150

提交評論