Android平臺Bootloader的刷屏功能擴展設計
摘要:Android系統(tǒng)在正常啟動中,刷屏功能一般在內核中執(zhí)行,而Bootloader的任務應該是執(zhí)行硬件初始化,并盡快跳轉到Linux內核。在Bootloader啟動過程中使能一個顯示驅動,實現刷屏功能,并不違背這一目標。本文通過對Bootloader的原理分析和嵌入式芯片C6310中LCD控制器的研究,設計了Bootloader中LCD硬件初始化和軟件驅動程序。該設計完善了Bootloader的擴展功能,加快了手機動畫的實現,改善了客戶的使用體驗。
關鍵詞:Bootloader;LCD控制器;驅動設計
引言
Android自2011年以來實現了計算機誕生以來最快速度的用戶群體增長,目前Android以每天85萬新激活數的速度快速征服世界,在世界范圍內成為占有率最高的智能手機操作系統(tǒng)。根據賽諾的調研報告,Android系統(tǒng)在中國的市場份額高達74.7%。然而很多硬件制造商在舊設備的升級問題上動作緩慢。Android 4.0的配置要求比起之前的Android系統(tǒng)有較大的提高,導致很多廠商在中低端市場的新機型和主推機型都無法達到最低配置要求。根據市場的需求,低端Android手機存在著巨大商機。在低價格的情況下,如何實現高配置的要求,成為手機開發(fā)商研究的重點。
對于Android系統(tǒng),Bootloader是基于特定平臺來實現的。Booloader是否解鎖關系到各方的利益,解鎖Bootloader將會給用戶帶來很大的好處,Android用戶將能夠自行根據需要刷寫固件,去掉可能導致扣費的運營商服務,得到更加多樣的Android體驗。因此,本文根據定制的實際平臺,提出了一種面向客戶需求的實現Bootloader擴展功能的設計方案。
1 Bootloador的基本原理及功能介紹
Bootloader(系統(tǒng)啟動加載器),其實就是在系統(tǒng)啟動之前運行的一段程序。Bootloader的作用是對硬件設備初始化,建立內存空間映像圖,從而把系統(tǒng)的軟件環(huán)境帶到一個合適的狀態(tài)。這樣,系統(tǒng)在調用內核時就準備好真正的環(huán)境,最終引導系統(tǒng)正常啟動。對于Android系統(tǒng),通常并沒有PC機那樣的周件程序BIOS,因此Bootloader必須完成整個系統(tǒng)的加載任務。而且對于嵌入式系統(tǒng),其硬件的差別也是很大的,在操作系統(tǒng)啟動之前,必須完成這些硬件的初始化工作,這就導致嵌入式系統(tǒng)Bootloader的功能和具體實現都比PC系統(tǒng)復雜得多。
LK(Linux Kernel)是小內核小操作系統(tǒng),是AndroidBootloader的核心。在高通代碼中,Android Bootloader位于bootable\bootloader\1k目錄下,Bootloader的功能性設計主要在app\aboot.c下,aboot_init函數是LK的功能入口點。aboot_init的執(zhí)行過程如下:
①設置NAND/EMMC讀取信息頁面大??;
②讀取按健信息。判斷是正常開機、進入fastboot,還是進入recovery模式;
③從NAND中加載內核;
④啟動內核。實現刷屏功能可以在讀取按鍵之前,所以Bootloader擴展功能的設計流程如圖1所示。
2 LCD控制器及外圍設備連接
2.1 LCD控制器介紹
LCD控制器是Android手機開發(fā)項目中C6310芯片的必備模塊,它負責將需要顯示的數據,如操作界面、圖像等送給LCD顯示設備。在手機的應用中,LCD顯示設備主要有以下幾類:被動顯示模式STN屏、主動顯示模式TFT屏,以及主動模式OLED屏。根據顯示顏色不同,又可以分為單色屏和彩色屏。LCD控制器不直接和LCD顯示屏相連,而是和LCD驅動器相連,這樣簡化了接口信號數量和顯示控制過程。LCD控制器時序由控制信號和圖像數據兩部分組成,其中控制信號包括VCLK、HSYNC、VSYNC,分別為像素時鐘信號、行同步信號、幀同步信號。作為幀同步信號的VSYNC,每發(fā)出一個脈沖,都意味著新的一屏圖像數據開始發(fā)送。而作為行同步信號的HSYNC,每發(fā)出一個脈沖,都意味著新的一行圖像資料開始發(fā)送。在幀同步以及行同步的頭尾都必須保留回掃時間。這樣的時序安排起源于CRT顯示器電子槍偏轉所需的時間,但后來成為實際上的工業(yè)標準,因此TFT屏也包含了回掃時間。
C6310芯片內部集成了一個LCD控制器,通常配置寄存器來控制其工作,命令和圖像數據的傳輸由LCD主控制器自動完成。C6310的LCD控制器采用并行或串行接口工作時,最多支持3層圖像合并(L1、L2、L3),L4層用作命令存儲空間。命令存儲空間中一個命令有20位,占用32位空間。第一個0~17位對應LCD_CMD寄存器中0~17位;第19位用作命令、數據切換位。
評論