日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于嵌入式ARM的LCD圖像顯示系統(tǒng)設(shè)計(jì)

0引 言

隨著嵌入式技術(shù)迅猛發(fā)展和Linux在信息行業(yè)中廣泛應(yīng)用,利用嵌入式Linux系統(tǒng)實(shí)現(xiàn)圖像采集處理已有可能。實(shí)時(shí)獲得圖像數(shù)據(jù)是實(shí)現(xiàn)這些應(yīng)用的重要環(huán)節(jié)。本文使用的系統(tǒng)硬件平臺(tái)采用Samsung公司的處理器S3C2410,并以此為基礎(chǔ),在基于嵌入式Linux系統(tǒng)平臺(tái)上設(shè)計(jì)了建立圖像視頻的一種方法。

1 系統(tǒng)硬件電路設(shè)計(jì)

S3C2410芯片處理器內(nèi)部集成了ARM公司ARM920T處理器核的32位微控制器,資源豐富,帶獨(dú)立的16 kB的指令Cache和16 kB數(shù)據(jù)Cache、LCD(液晶顯示器)控制器、RAM控制器、NAND閃存控制器、3路UART、4路DMA、4路帶PWM的定時(shí)器、并行I/O口、8路10位ADC、Touch Screen接口、I2C接口、I2S接口、2個(gè)USB接口控制器、2路SPI,主頻最高可達(dá)203 MHz。在處理器豐富資源的基礎(chǔ)上,本平臺(tái)配置了64 MB的Flash和64 MB、32位的SDRAM,以支持操作系統(tǒng)和液晶屏顯示運(yùn)算的需要。

S3C2410內(nèi)置有液晶屏控制器,可以支持最大256 k色TFT彩色液晶屏、最大4 k色STN彩色液晶屏??紤]到本系統(tǒng)的應(yīng)用領(lǐng)域?qū)D像顯示的要求相對(duì)較高,故采用8英寸640×480 TFT液晶屏(型號(hào)為L(zhǎng)Q080V3DG01)。LQ080V3DG01要求其電源電壓Vdd典型值為3.3 V/5 V,并且LCD數(shù)據(jù)和控制信號(hào)的高電平輸入電壓Vih最小值為2.3 V,所以本系統(tǒng)直接使用S3C2410的控制口線與它相連,而沒(méi)有設(shè)置電平轉(zhuǎn)換電路。具體的電路連接如圖1所示。芯片工作模式為16位色(5:6:5)。

2 系統(tǒng)軟件設(shè)計(jì)

2.1 Linux操作系統(tǒng)

本視頻顯示系統(tǒng)的軟件以嵌入式Linux為基礎(chǔ)。Linux是免費(fèi)運(yùn)行、快速高效的操作系統(tǒng)。在過(guò)去的幾年中,基于開(kāi)源組織的Linux系統(tǒng)的嵌入式操作系統(tǒng)得到了長(zhǎng)足的發(fā)展。Linux操作系統(tǒng)雖然不是微內(nèi)核結(jié)構(gòu),但是其模塊化的結(jié)構(gòu)使得用戶可以對(duì)其方便地進(jìn)行配置,去除用戶系統(tǒng)不需要的模塊以減小系統(tǒng)的開(kāi)銷,可以做到幾百k大小。綜合考慮系統(tǒng)的功能和可擴(kuò)展性以及系統(tǒng)的運(yùn)行速度,本方案中的嵌入式Linux所采用的內(nèi)核版本是kernel-2.4.18。

在向基于S3C2410的硬件平臺(tái)上安裝嵌入式Linux操作系統(tǒng)μCLinux后,為了使LCD能正常顯示,還需要在μCLinux系統(tǒng)下開(kāi)發(fā)LCD的驅(qū)動(dòng)程序。

2.2 Framebuffer設(shè)備驅(qū)動(dòng)

幀緩沖(Framebuffer)是出現(xiàn)在Linux2.2.xx內(nèi)核中的一種驅(qū)動(dòng)程序接口,該設(shè)備提供了LCD控制器的抽象描述。它同時(shí)代表了LCD控制器上的顯存,應(yīng)用程序通過(guò)定義好的接口可以訪問(wèn)LCD控制器,而不需要知道底層的任何操作。本系統(tǒng)通過(guò)幀緩沖實(shí)現(xiàn)LCD驅(qū)動(dòng)程序的開(kāi)發(fā)工作。

該設(shè)備使用特殊的設(shè)備節(jié)點(diǎn),是一個(gè)字符設(shè)備,其主設(shè)備號(hào)是29,次設(shè)備號(hào)定義幀緩沖個(gè)數(shù)。從用戶角度看,幀緩沖設(shè)備和其他位于/dev下面的設(shè)備類似。

幀緩沖的顯示緩沖區(qū)位于μCLinux中核心態(tài)地址空間,而在μCLinux中,每個(gè)應(yīng)用程序都有自己的虛擬地址空間,在應(yīng)用程序中是不能直接訪問(wèn)物理緩沖區(qū)地址的。為此,μCLinux提供了mmap函數(shù),可將文件的內(nèi)容映射到應(yīng)用程序空間。對(duì)于幀緩沖設(shè)備,則可通過(guò)映射操作,將屏幕緩沖區(qū)的物理地址映射到應(yīng)用程序空間的一段虛擬地址中,之后就可以通過(guò)讀寫(xiě)這段虛擬地址訪問(wèn)屏幕緩沖區(qū),在屏幕上繪圖。幀緩沖中內(nèi)存塊分布如圖2所示。

幀緩沖設(shè)備是一種普通的內(nèi)存設(shè)備,支持直接讀寫(xiě)其內(nèi)容。支持使用read(),write(),seek()以及mmap()函數(shù)。不同之處是幀緩沖的內(nèi)存不是所有內(nèi)存區(qū),而是LCD控制器專用的那部分內(nèi)存。/dev/fb*允許使用ioctl操作,通過(guò)ioctl可以讀取或設(shè)定設(shè)備參數(shù)。顏色映射表也通過(guò)ioctl設(shè)定。下面是ioctl和本系統(tǒng)相關(guān)的應(yīng)用及相關(guān)數(shù)據(jù)結(jié)構(gòu)部分:

a)獲取設(shè)備一些不變的信息,如設(shè)備名,屏幕的組織對(duì)應(yīng)內(nèi)存區(qū)的長(zhǎng)度和起始地址。

b)獲取可以發(fā)生變化的信息,例如位深、顏色格式、時(shí)序等,如果改變這些值,驅(qū)動(dòng)程序?qū)?duì)值進(jìn)行優(yōu)化,以滿足設(shè)備特性。

c)獲取或設(shè)定部分顏色表。

但在實(shí)際系統(tǒng)運(yùn)用時(shí),使用read、write函數(shù)在讀或?qū)懼俺掷m(xù)地尋址將會(huì)導(dǎo)致很多開(kāi)銷?;窘鉀Q方法是映射屏幕內(nèi)存。當(dāng)屏幕內(nèi)存被映射到應(yīng)用程序時(shí),將得到一個(gè)直接指向屏幕內(nèi)存的指針。

在本系統(tǒng)和其他類似運(yùn)用中,首先要從新得到的幀緩沖設(shè)備取回信息。幀緩沖設(shè)備在很大程度上依靠:Stnlct fb_var_screeninfo;Struct fb_fix_screeninfo;Struct fb_info這3個(gè)數(shù)據(jù)結(jié)構(gòu),它們?cè)趇nclude/linux/fb.h中聲明。第1個(gè)結(jié)構(gòu)是用來(lái)描述圖形卡的特性,通常由用戶設(shè)置;第2個(gè)結(jié)構(gòu)定義了圖形卡的硬件特性,是不能改變的,在選定了LCD控制器和顯示器后,它的硬件特性也就定下來(lái)了;第3個(gè)結(jié)構(gòu)定義了當(dāng)前圖形卡幀緩沖設(shè)備的獨(dú)立狀態(tài)。

2.3 幀緩沖驅(qū)動(dòng)程序的實(shí)現(xiàn)

與一般應(yīng)用類似,在本系統(tǒng)實(shí)現(xiàn)中,應(yīng)用程序主要通過(guò)下面3種方式實(shí)現(xiàn)內(nèi)核對(duì)幀緩沖的控制。

a)讀/寫(xiě)/dev/fb:相當(dāng)于讀/寫(xiě)屏幕緩沖區(qū)。

b)映射(map)操作:通過(guò)映射操作,可將屏幕緩沖區(qū)的物理地址映射到用戶空間的一段虛擬地址中,之后用戶就可以通過(guò)讀寫(xiě)這段虛擬地址訪問(wèn)屏幕緩沖區(qū),在屏幕上繪圖。

c)I/O控制:對(duì)于幀緩沖設(shè)備,設(shè)備文件的ioctl操作可讀取顯示設(shè)備及屏幕的參數(shù),如分辨率、顯示顏色數(shù)、屏幕大小等。ioctl操作是由底層的驅(qū)動(dòng)程序來(lái)完成的。

因此,幀緩沖驅(qū)動(dòng)要完成的工作還包括:分配顯存的大小、初始化LCD控制寄存器、設(shè)置修改硬件設(shè)備相應(yīng)的var信息和fix信息。

在μClinux中,由于幀緩沖設(shè)備是字符設(shè)備,應(yīng)用程序需按文件的方式打開(kāi)一個(gè)幀緩沖設(shè)備,對(duì)幀緩沖設(shè)備進(jìn)行讀、寫(xiě)等操作。在上文中已經(jīng)介紹了幀緩沖設(shè)備的地址空間問(wèn)題,對(duì)于操作系統(tǒng)來(lái)說(shuō),讀、寫(xiě)幀緩沖設(shè)備就是對(duì)物理地址空間進(jìn)行數(shù)據(jù)讀寫(xiě)。所以,讀寫(xiě)幀緩沖設(shè)備最主要就是獲取幀緩沖設(shè)備在內(nèi)存中的物理地址空間以及相應(yīng)LCD的一些特性。

圖3反映了應(yīng)用程序如何寫(xiě)幀緩沖設(shè)備來(lái)顯示圖形的全過(guò)程。

在了解了上面所述的概念后,編寫(xiě)幀緩沖驅(qū)動(dòng)的實(shí)際工作并不復(fù)雜,針對(duì)本系統(tǒng)主要有以下工作。

a)編寫(xiě)初始化函數(shù)。初始化函數(shù)首先初始化LCD控制器,通過(guò)寫(xiě)寄存器設(shè)置顯示模式和顯示顏色數(shù),然后分配LCD顯示緩沖區(qū)。在Linux可通過(guò)kmal-loc函數(shù)分配一片連續(xù)的空間。本文采用的LCD顯示方式為640×480,通過(guò)ARM芯片和TFT控制器硬件連接方式可知,其顯示模式為16位,需要分配的顯示緩沖區(qū)分別為640×480×16/8=600 kB。緩沖區(qū)通常分配在大容量的片外SDRAM中,起始地址保存在LCD控制器寄存器中。最后是初始化一個(gè)fb_info結(jié)構(gòu),填充其中的成員變量,并調(diào)用register_Framebuffer(&fb_info),將fb_info登記入內(nèi)核。

b)編寫(xiě)結(jié)構(gòu)fb_info中函數(shù)指針fb_ops對(duì)應(yīng)的成員函數(shù)對(duì)于嵌入式系統(tǒng)的簡(jiǎn)單實(shí)現(xiàn),設(shè)置了下列3個(gè)函數(shù)以滿足要求:



struct fb_ops在fb.h中定義。這些函數(shù)都是用來(lái)設(shè)置/獲取fb_info結(jié)構(gòu)中的成員變量的。當(dāng)應(yīng)用程序?qū)υO(shè)備文件進(jìn)行ioctl操作時(shí)會(huì)調(diào)用它們,例如,對(duì)于fb_get_fix(),應(yīng)用程序傳人的是fb_fix_screen info結(jié)構(gòu),在函數(shù)中對(duì)其成員變量賦值,主要是smem-start(緩沖區(qū)起始地址)和smem-len(緩沖區(qū)長(zhǎng)度),最終返回給應(yīng)用程序。而fb_set_var()函數(shù)的傳人參數(shù)是fb_var_screen info,函數(shù)中需要對(duì)xres,yfes,和bits_per_pixel賦值。

賦值時(shí)需注意,根據(jù)本系統(tǒng)硬件特性,LCD的16位為(5:6:5),亦即:紅色5位(bits[11:15]),綠色6位(bits[5:10]),藍(lán)色5位(bits[0:4])。也就是說(shuō),LCD最大支持32種紅色、64種綠色、32種藍(lán)色的混合顯示。

至此,顯示驅(qū)動(dòng)開(kāi)發(fā)工作已經(jīng)基本告畢。以本系統(tǒng)為例,如要顯示一個(gè)像素,只要通過(guò)如下步驟:



由此便可以在LCD屏上逐一顯示每個(gè)像素,進(jìn)而顯示整幅圖像。

圖4是在所建立系統(tǒng)的LCD屏上顯示代表東南大學(xué)的"SEU"3個(gè)英文字母,其中"s"為純紅色(31,0,0),"E"為純綠色(0,63,0),"U"為純藍(lán)色(0,0,31),而底色為純白色(31,63,31)。

3 結(jié)束語(yǔ)

由于嵌入式系統(tǒng)能保證系統(tǒng)響應(yīng)的實(shí)時(shí)性和運(yùn)行的可靠性,目前廣泛應(yīng)用于各個(gè)領(lǐng)域。本文設(shè)計(jì)的圖像顯示系統(tǒng)可以作為安全監(jiān)控、工業(yè)檢測(cè)、遠(yuǎn)程操作等應(yīng)用的基礎(chǔ)。從開(kāi)發(fā)實(shí)例表明,嵌入式Linux系統(tǒng)在圖像采集及處理方面,不但在開(kāi)發(fā)過(guò)程中簡(jiǎn)捷高效,而且在現(xiàn)場(chǎng)應(yīng)用中也具有靈活多變的優(yōu)勢(shì),在機(jī)器人監(jiān)控系統(tǒng)、工控圖像采集定位、遠(yuǎn)程教學(xué)等應(yīng)用中有廣闊的發(fā)展空間。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

香港2022年10月18日 /美通社/ -- 淘屏有限公司(納斯達(dá)克:TAOP,簡(jiǎn)稱"淘屏"或"公司"),今日宣布與江蘇蘇立信文化創(chuàng)意...

關(guān)鍵字: 數(shù)字多媒體 大屏 LCD LED

經(jīng)過(guò)幾十年發(fā)展,嵌入式技術(shù)已經(jīng)用在了我們生活中的方方面面,但是嵌入式始終都帶有小眾,專業(yè)性強(qiáng)的屬性,讓很多非嵌入式領(lǐng)域的同學(xué)望而卻步。近十幾年的發(fā)展,物聯(lián)網(wǎng)覆蓋了越來(lái)越多領(lǐng)域,包括了家居,商業(yè),工業(yè),農(nóng)業(yè)等領(lǐng)域,不僅吸引...

關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 技術(shù)

隨著IT技術(shù)飛速發(fā)展,互聯(lián)網(wǎng)已經(jīng)進(jìn)入了“物聯(lián)網(wǎng)”時(shí)代。物聯(lián)網(wǎng)中需要的大量設(shè)備不在依賴人與人之間的交互產(chǎn)生聯(lián)系,更多通過(guò)協(xié)議、通信、程序設(shè)計(jì)等方式連接到一處。即 “物聯(lián)網(wǎng)”的目的則是讓所有的物品都具有計(jì)算機(jī)的智能但并不以通...

關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 計(jì)算機(jī)

iPhone X賣的不好,主要是售價(jià)太高,蘋(píng)果也深知這一點(diǎn),所以推動(dòng)更便宜版本的iPhone X,就是情理之中的事情了。據(jù)美國(guó)媒體報(bào)道稱,蘋(píng)果預(yù)計(jì)采用LCD的版本將在今年秋天的新品中占據(jù)多數(shù)銷量,比例高于分析師的預(yù)期。該...

關(guān)鍵字: LCD 供應(yīng)鏈 消費(fèi)者

今日,榮耀X40 GT首發(fā)上市開(kāi)售,起價(jià)2099元,優(yōu)惠100元后到手1999元起。據(jù)榮耀官方消息,榮耀X40 GT今日首發(fā)就摘得京東、天貓安卓手機(jī)銷量&銷售額雙冠軍。作為一款游戲手機(jī),榮耀X40 GT展現(xiàn)什么叫...

關(guān)鍵字: 榮耀 GPU LCD TURBO

物聯(lián)網(wǎng)正在擴(kuò)大規(guī)模并加速發(fā)展,進(jìn)而驅(qū)動(dòng)著全新的經(jīng)濟(jì)。而Arm生態(tài)系統(tǒng)正是這一巨大機(jī)遇背后的推動(dòng)力。

關(guān)鍵字: ARM 物聯(lián)網(wǎng)

ARM公司是一家知識(shí)產(chǎn)權(quán)(IP)供應(yīng)商,它與一般的半導(dǎo)體公司最大的不同就是不制造芯片且不向終端用戶出售芯片,而是通過(guò)轉(zhuǎn)讓設(shè)計(jì)方案,由合作伙伴生產(chǎn)出各具特色的芯片。

關(guān)鍵字: ARM

最近看到APP上,給我推送了很多類似的回答,借此機(jī)會(huì),也想著重新審視一下自己的學(xué)習(xí)歷程,以及結(jié)合自身和大牛,分享一些學(xué)習(xí)經(jīng)驗(yàn),希望對(duì)大家有所啟發(fā)和幫助。

關(guān)鍵字: APP 嵌入式 C語(yǔ)言

2018年10月26日,深圳星河麗思卡爾頓酒店,ARM中國(guó)CEO吳雄昂在ARM年度技術(shù)論壇上對(duì)記者如是說(shuō),彼時(shí)的吳堅(jiān)定,溫雅,意氣風(fēng)發(fā)。時(shí)隔兩年,ARM中國(guó)CEO吳雄昂再次回到媒體視線,這一次,ARM中國(guó)與來(lái)自投資方和劍...

關(guān)鍵字: ARM 芯片 集成電路

喜歡折騰主機(jī)的小伙伴一定都知道X86和ARM架構(gòu)的區(qū)別,前者在PC領(lǐng)域已經(jīng)統(tǒng)治了幾十年;后者則主要應(yīng)用于移動(dòng)領(lǐng)域,尤其是近幾年,ARM的產(chǎn)品在終端應(yīng)用特別是手持終端應(yīng)用飛速發(fā)展。

關(guān)鍵字: 國(guó)產(chǎn) ARM 主機(jī)

嵌入式軟件

15715 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉