引言
隨著用戶對微處理器的多核協(xié)作、更高集成度外設、更低熱量耗散以及更低總體系統(tǒng)成本的需求,TI公司推出了新一代的低功耗OMAP-L138雙核處理器。OMAP-L138可廣泛應用于通信、工業(yè)、醫(yī)療診斷和音視頻嵌入式設備,ARM核擅長用于操作系統(tǒng)的移植及豐富圖形人機界面的開發(fā),而DSP核擅長于復雜算法的運算,兩核的協(xié)同工作可大大增強嵌入式設備的數(shù)據(jù)處理能力,增強用戶的使用體驗。OLED屏的驅(qū)動實現(xiàn)是構成良好的人機交互接口的重要組成部分,介紹了OMAP-L138的特點及LCD接口,實現(xiàn)了OLED屏的在Linux2.6及U-Boot中的驅(qū)動開發(fā),在系統(tǒng)上電后快速顯示START LOGO的功能。
OMAP-L138的特點及LCD接口
OMAP-L138的特點[1]如下:
(1)內(nèi)部集成了375/456-MHz A R M 9 2 6 E J - S R I S C M P U及375/456-MHz C674x定/浮點VLIW DSP,可滿足系統(tǒng)的非實時多任務及實時高強度數(shù)據(jù)處理的應用需求
(2)強大豐富的外設資源:
主要包括:1個EMAC控制器;1個USB2.0接口和1個USB1.1接口;2個I2C接口;1個McASP;兩個McBSP;2個SPI接口;4個64位通用定時器;實時時鐘(RTC);1個可配置的16位HPI;144個可配置的GPIO管腳;3個UART接口;2個eHRPWM和3個eCAP;1個EMIFA口,可接16位SDRAM/NOR Flash/NAND Flash;1個EMIFB口,可接16位的DDR2(最高頻率150MHz)或16位mDDR(最高頻率133MHz)[2];2個MMC/SD/SDIO;1個LCD控制器;1個SATA控制器;1個uPP接口;1個VPIF接口;眾多外設可以通過PSC(電源及睡眠控制)和管腳復用控制,根據(jù)系統(tǒng)需求靈活配置;
(3)高效的緩存機制。其中ARM核內(nèi)部有16KB的L1程序Cache和16KB的數(shù)據(jù)Cache,以及8KB中斷向量表存儲RAM;DSP核采用二級緩存結構,包括32KB的L1程序Cache、32KB的數(shù)據(jù)Cache和高達256KB可靈活配置的L2 Cache,L2可以被ARM核訪問;此外在兩核之間還有128KB的片內(nèi)SHARE RAM,可用于ARM核和DSP核高速交換數(shù)據(jù),而不影響各自的運行。
(4)低功耗設計。采用1.2V內(nèi)核電壓,1.8V或3.3V可配置I/O接口電壓,不同使用情況下總功耗為440mW,待機模式功耗為15mW,在深度睡眠模式下功耗僅為6mW。
OMAP-L138的LCD控制器里面包含兩個獨立的控制器,分別是Raster(光柵)控制器和LIDD控制器。兩個控制器獨立工作,但是每次只能有一個處于活動狀態(tài)。光柵控制器用于控制同步的LCD接口。它提供時序
控制和不間斷的圖形數(shù)據(jù)刷新到顯示屏顯示。通過可配置的時序控制支持多種不同型號不同尺寸的單色和全彩顯示屏顯示,內(nèi)置調(diào)色板、灰度色標/序列化器。圖形數(shù)據(jù)在幀緩沖中處理和存儲,幀緩沖為系統(tǒng)中的一個連續(xù)的內(nèi)存塊。內(nèi)置的DMA引擎提供圖形數(shù)據(jù)給光柵引擎,再輸出到外部的LCD設備顯示;LIDD控制器用于控制異步的LCD接口,它提供完全可配置的時序控制信號(CS,WE,OE,ALE)和輸出數(shù)據(jù)[3]。該驅(qū)動開發(fā)主要使用光柵控制器。
系統(tǒng)采用維信諾公司生產(chǎn)的
O L E D屏,此屏為240*320像素,262K色,采用18位編碼方式的AMOLED點陣顯示屏。它具有高亮度,自散熱,高對比度,細邊框,寬視角,工作溫度范圍很寬等優(yōu)點。此屏除了與OMAP-L138的RGB LCD接口連接外,還需增加SPI口連接,用于OLED屏內(nèi)驅(qū)動芯片的初始化,而背光控制則通過控制其供電電源使能完成。LCD控制器支持16位/像素的編碼方式,采用成RGB565(5位紅、6位綠、5位藍)模式連接,具體連接如圖1所示。
OLED屏在Linux2.6內(nèi)核的驅(qū)動開發(fā)
OLED屏驅(qū)動本質(zhì)上屬于字符設備驅(qū)動,Linux為此類顯示設備提供了
觀測效果,刷新頻率為60Hz,像素時鐘為4.608MHz,不反轉像素時鐘極性,最終確定LCD控制器的具體參數(shù)如下:width=240,height=320,hfp=2,hbp=2,hsw=3,vfp=8,vbp=6,vsw=2。
U-Boot中添加OLED屏的初始化及顯示LOGO功能
OLED屏除了具有普通16位RGB接口的一般特性外,還需連接其SPI口,用于對屏內(nèi)部驅(qū)動芯片S6E63D6進行初始化,可以實現(xiàn)接口類型配置、背光供電電壓、屏的亮度等調(diào)節(jié)。另外還增加了一個GPIO引腳控制背光供電電路使能,用于控制背光的打開及關閉。采用OMAP-L138的SPI1與OLED的SPI口連接,其SPI驅(qū)動時序要求如圖4所示。
驅(qū)動芯片S6E63D6內(nèi)包含數(shù)十個寄存器,可以劃分為數(shù)個寄存器組,初始化過程中密切相關的寄存器組包括:顯示控制、電源控制、Gamma控制寄存器組[5]。根據(jù)S6E63D6的SPI通信要求,先傳輸寄存器地址,后傳輸寄存器值。每次傳輸3個字節(jié),首字節(jié)寫入0x70或0x72以表示此次傳輸?shù)氖堑刂愤€是寄存器值,后兩個字節(jié)對應傳輸?shù)刂坊蚣拇嫫髦怠R罁?jù)SPI口通信時序要求配置OMAP-L138的SPI1驅(qū)動[6];根據(jù)傳輸協(xié)議,封裝好writeRegAddr和writeRegData函數(shù),從而對各寄存器組進行初始化。在U-Boot當中,將S6E63D6的初始化封裝成oled_init函數(shù)放在OMAP-L138對應平臺的board_init函數(shù)當中執(zhí)行。S6E63D6的初始化步驟為:(1)設置入口模式寄存器;(2)關閉備用模式;(3)設置Gamma控制寄存器組;(4)設置RGB565接口模式;(5)打開顯示屏。
完成屏內(nèi)驅(qū)動芯片S6E63D6初始化后,還需要對OMAP-L138的LCD控制器進行初始化,主要是對Raster模式下對各控制寄存器進行配置,參數(shù)與Linux下基本一致。對LCD控制器的初始化封裝成LCDC_init函數(shù)放在U-Boot/lib_arm/board.c中的start_ armboot里面執(zhí)行。
用戶希望系統(tǒng)上電后第一時間能看到顯示屏的動作,以確定系統(tǒng)工作是否正常,所以OLED屏的初始化完成后,將開機LOGO圖片數(shù)據(jù)輸出到LCDC_init中設置frame bufer所在的內(nèi)存地址,通過DMA機制自動傳輸圖像數(shù)據(jù)到就OLED屏顯示,就實現(xiàn)了開機顯示圖像功能。
結語
本文詳細介紹了維信諾的262K色OLED屏在OMAP-L138平臺的驅(qū)動開發(fā)具體方法,該屏在系統(tǒng)應用過程中顯示圖像清晰細膩,QT/E等圖形界面應用程序運行良好,可流暢播放視頻文件,有很寬的觀賞視角,其在苛刻的氣候條件下使用仍然表現(xiàn)出良好的穩(wěn)定性,可用于手持終端、車載系統(tǒng)等通信、工業(yè)領域,對雙核微處理器平臺的嵌入式系統(tǒng)開發(fā)具有重要意義。
參考文獻:
[1] OMAP-L138 C6-Integra DSP+ARM Processor (Rev. D)[Z].Texas Instruments,2011
[2] 付建偉,王厚軍,曾浩.一種數(shù)字示波器的微處理器硬件設計[J].世界電子元器件,2010,(09)
[3] TMS320C674x/OMAP-L1x Processor Liquid Crystal Display Controller (LCDC) User’s Guide[Z].Texas Instruments,2010
[4] 宋寶華.Linux設備驅(qū)動開發(fā)詳解[M].北京:人民郵電出版社,2008[5] S6E63D6 MOBILE DISPLAY DRIVER IC Rev.1.10[Z]. Samsung Electronics,2007
[6] TMS320C674x/OMAP-L1x Processor Serial Peripheral Interface (SPI) User’s Guide[Z].Texas Instruments,2010