Android平臺Bootloader的刷屏功能擴展設(shè)計
4 LCD驅(qū)動程序設(shè)計
LCD驅(qū)動程序開發(fā)過程中,主要需要實現(xiàn)的是底層驅(qū)動程序,底層驅(qū)動大體分為兩個部分:硬件初始化部分和實現(xiàn)splash_screen函數(shù)。
4.1 硬件初始化實現(xiàn)
硬件初始化部分主要由display_init函數(shù)來實現(xiàn),主要包括初始化LCD控制器、初始化LCD處理器、Frame-buffer設(shè)備的配置等工作,主要實現(xiàn)的函數(shù)如下:
fb_config首先使能I2S寫函數(shù),對ILI9481進行復位操作,fbcon_setup函數(shù)記錄了LCD屏幕參數(shù),包括屏幕分辨率、時序參數(shù)、像素比特數(shù)(bpp)等參數(shù),B_LCD_Init_ILI9481函數(shù)肩負著向framebuffer驅(qū)動程序傳遞數(shù)據(jù)的任務(wù)。初始化LCD控制器的寄存器主要是對LCD的PCD、ARM_INYEN、PBUS_WIDTH、OUT_BPP、LCD_TYPE等寄存器進行配置。LCD控制寄存器主要是對屏幕參數(shù)、ARM中斷使能、并口LCD中片選信號極性、LCD屏類型、時序特性進行配置。主要寄存器如下:
PCD,配置像素時鐘分屏。
ARM_INTEN,配置ARM中斷使能信號。當信號為0時,達到中斷產(chǎn)生條件后,不產(chǎn)生送到ARM的中斷信號;當信號為1時,達到中斷產(chǎn)生條件后,產(chǎn)生送到ARM的中斷。
PBUS_WIDTH,輸出數(shù)據(jù)線位寬,當配置為并口顯示屏時有效。
OUT_BPP,配置BPP位寬。
LCD_TYPE,配置LCD屏類型選擇。00為普通RGB接口TFT顯示屏,01為Sharp接口TFT顯示屏,10為并口LCD顯示屏,11為串口LCD顯示屏。
4.2 讀取圖像信息
splash_screen函數(shù)主要是定義圖像的地址,通過framebuffer對圖像進行顯示。這里將顯示的圖像放在了U盤文件中,當LK啟動時,直接從SDRAM中讀取圖像信息,并定義bmp圖像的地址為0x14000000。圖像顯示函數(shù)如下:
LCD顯示數(shù)據(jù)大小是由顯示模式和顯示屏尺寸大小共同決定的。根據(jù)設(shè)計要求,使用的是320X480個像素、16bpp的256色LCD,顯示一屏圖像所需的顯示緩沖為320×480×16位。在顯示緩沖器中,每一個像素都占一個字節(jié),且每個字節(jié)又要區(qū)分RGB格式。在顯示圖像時,需要配置相應(yīng)的寄存器,這些工作在初始化LCD控制器已經(jīng)完成。其次,確定圖像緩沖區(qū)的首地址,這個地址在4字節(jié)對齊的邊界上,而且要在SDRAM的4 MB空間之間,顯示緩沖區(qū)的數(shù)據(jù)會直接顯示到顯示屏上。LCD上顯示的不同圖像信息就是顯示緩沖區(qū)內(nèi)不同數(shù)據(jù)的輸出。
5 LK的測試與調(diào)試
在該模塊下編寫了一個Makefile文件,在調(diào)試LK模塊時,可以單獨編譯LK模塊,這樣就節(jié)約了開發(fā)的時間。編譯LK模塊,得到1k.bin文件。開發(fā)板上電后,進入U盤模式,用最新生成的1k. bin文件替換掉U盤中原始的文件,通過超級終端連接串口,啟動LK。LK啟動打印信息如圖4所示,LK能正常工作,并能執(zhí)行LCD顯示驅(qū)動。本文引用地址:http://www.biyoush.com/article/159564.htm
結(jié)語
本文通過對Bootloader的研究,提出了一種Android詳細給出了LCD控制器操作流程和LCD的驅(qū)動設(shè)計。系統(tǒng)啟動正常,運行穩(wěn)定,達到了設(shè)計的要求。盡管LCD手機在LK啟動過程中實現(xiàn)LCD顯示的設(shè)計方案,并且的種類很多,但驅(qū)動程序的設(shè)計都可以遵循一定的模式,可以根據(jù)自己設(shè)計的需求選擇合適的方法。該方法對Android系統(tǒng)開發(fā)具有一定的借鑒意義和參考價值。
評論