日韩毛片在线视频-日韩毛片在线影视-日韩美aaa特级毛片-日韩美a一级毛片-久久夜夜操妹子-久久夜夜肉肉热热日日

產品推薦:水表|流量計|壓力變送器|熱電偶|液位計|冷熱沖擊試驗箱|水質分析|光譜儀|試驗機|試驗箱


儀表網>技術中心>應用設計>正文

歡迎聯系我

有什么可以幫您? 在線咨詢

Android平臺Bootloader的刷屏功能擴展設計

   2013年01月11日 14:09  
  摘要:Android系統在正常啟動中,刷屏功能一般在內核中執行,而Bootloader的任務應該是執行硬件初始化,并盡快跳轉到Linux內核。在Bootloader啟動過程中使能一個顯示驅動,實現刷屏功能,并不違背這一目標。本文通過對Bootloader的原理分析和嵌入式芯片C6310中LCD控制器的研究,設計了Bootloader中LCD硬件初始化和軟件驅動程序。該設計完善了Bootloader的擴展功能,加快了手機動畫的實現,改善了客戶的使用體驗。
  
  關鍵詞:Bootloader;LCD控制器;驅動設計
  
  引言
  
  Android自2011年以來實現了計算機誕生以來zui快速度的用戶群體增長,目前Android以每天85萬新激活數的速度快速征服世界,在世界范圍內成為占有率zui高的智能手機操作系統。根據賽諾的調研報告,Android系統在中國的*高達74.7%。然而很多硬件制造商在舊設備的升級問題上動作緩慢。Android4.0的配置要求比起之前的Android系統有較大的提高,導致很多廠商在中低端市場的新機型和主推機型都無法達到zui低配置要求。根據市場的需求,低端Android手機存在著巨大商機。在低價格的情況下,如何實現高配置的要求,成為手機開發商研究的重點。
  
  對于Android系統,Bootloader是基于特定平臺來實現的。Booloader是否解鎖關系到各方的利益,解鎖Bootloader將會給用戶帶來很大的好處,Android用戶將能夠自行根據需要刷寫固件,去掉可能導致扣費的運營商服務,得到更加多樣的Android體驗。因此,本文根據定制的實際平臺,提出了一種面向客戶需求的實現Bootloader擴展功能的設計方案。
  
  1、Bootloador的基本原理及功能介紹
  
  Bootloader(系統啟動加載器),其實就是在系統啟動之前運行的一段程序。Bootloader的作用是對硬件設備初始化,建立內存空間映像圖,從而把系統的軟件環境帶到一個合適的狀態。這樣,系統在調用內核時就準備好真正的環境,zui終引導系統正常啟動。對于Android系統,通常并沒有PC機那樣的周件程序BIOS,因此Bootloader必須完成整個系統的加載任務。而且對于嵌入式系統,其硬件的差別也是很大的,在操作系統啟動之前,必須完成這些硬件的初始化工作,這就導致嵌入式系統Bootloader的功能和具體實現都比PC系統復雜得多。
  
  LK(LinuxKernel)是小內核小操作系統,是AndroidBootloader的核心。在高通代碼中,AndroidBootloader位于bootable\bootloader\1k目錄下,Bootloader的功能性設計主要在app\aboot.c下,aboot_init函數是LK的功能入口點。aboot_init的執行過程如下:
  
  ①設置NAND/EMMC讀取信息頁面大小;
  
  ②讀取按健信息。判斷是正常開機、進入fastboot,還是進入recovery模式;
  
  ③從NAND中加載內核;
  
  ④啟動內核。實現刷屏功能可以在讀取按鍵之前,所以Bootloader擴展功能的設計流程如圖1所示。
  
  2、LCD控制器及外圍設備連接
  
  2.1LCD控制器介紹
  
  LCD控制器是Android手機開發項目中C6310芯片的*模塊,它負責將需要顯示的數據,如操作界面、圖像等送給LCD顯示設備。在手機的應用中,LCD顯示設備主要有以下幾類:被動顯示模式STN屏、主動顯示模式TFT屏,以及主動模式OLED屏。根據顯示顏色不同,又可以分為單色屏和彩色屏。LCD控制器不直接和LCD顯示屏相連,而是和LCD驅動器相連,這樣簡化了接口信號數量和顯示控制過程。LCD控制器時序由控制信號和圖像數據兩部分組成,其中控制信號包括VCLK、HSYNC、VSYNC,分別為像素時鐘信號、行同步信號、幀同步信號。作為幀同步信號的VSYNC,每發出一個脈沖,都意味著新的一屏圖像數據開始發送。而作為行同步信號的HSYNC,每發出一個脈沖,都意味著新的一行圖像資料開始發送。在幀同步以及行同步的頭尾都必須保留回掃時間。這樣的時序安排起源于CRT顯示器電子槍偏轉所需的時間,但后來成為實際上的工業標準,因此TFT屏也包含了回掃時間。
  
  C6310芯片內部集成了一個LCD控制器,通常配置寄存器來控制其工作,命令和圖像數據的傳輸由LCD主控制器自動完成。C6310的LCD控制器采用并行或串行接口工作時,zui多支持3層圖像合并(L1、L2、L3),L4層用作命令存儲空間。命令存儲空間中一個命令有20位,占用32位空間。*個0~17位對應LCD_CMD寄存器中0~17位;第19位用作命令、數據切換位。
  
  2.2LCD控制器和LCD驅動囂的硬件連接
  
  ILI9481是一個單芯片TFT液晶顯示驅動器,通常LCD控制器和LCD驅動器之間有并口、串口、RGB三種接口。采用RGB接口時,控制信息(行同步、場同步等)由主控制器發送;采用并口、串口時,控制信息包含在發送的圖像數據中,該項目采用的是C6310LCD控制器和ILI9481驅動器,它們采用并口連接,圖2描述了LCD主控制器和ILI9481的連接。
  
  驅動中針對硬件的操作主要為主控制器寄存器的配置,命令和圖像的傳輸由LCD主控制器完成。
  
  3、LCD控制器操作流程設計
  
  C6310采用L3層作為背景層、L4為命令層。當緩沖區的圖像數據準備好以后,通過B_LCD_BmpOntoScreen16Bpp_ILI9481()函數啟動LCD控制器,并將圖像數據搬移到LCD驅動器。B_LCD_BmlpOntoScreen16Bpp_ILI9481()啟動控制器后,啟動一個等待隊列,等待圖像數據傳輸完畢。
  
  圖像搬移過程中會產生中斷,這里用到L4_EOF、L3_EOF、和L1_EOF中斷,其中L4_EOF為命令傳輸完成中斷,L3_EOF和L1_EOF分別為L3層和L1層數據傳輸完成中斷。首先,C6310_LCDC向LCD驅動器發送一組數據,命令發送完畢后產生L4_EOF中斷。然后,C6310_LCDC向LCD驅動器發送圖像數據,發送完畢后產生L3_EOF和L1_EOF中斷。
  
  在LCD進行數據顯示前,首先要對LCD控制器的相關寄存器進行正確的設置。表1是C6310中的主要寄存器及其說明。
  
  連接16位RGB并行接口屏,其寄存器的操作流程如下;
  
  ①將命令index和命令數據寫入存儲器,如果命令是16位,則每一個字對應15:0是命令。如果命令為8位,則每一個字對應7:0是命令,通過每一個字中的第17位、WR_RD和第16位A0控制命令屬性,如果該命令是zui后一個命令,命令的第19位設置為1。
  
  ②配置LCD寄存器。配置第4層的起始地址為命令存儲地址,配置LCD_PCONF控制讀寫時序,配置LCD_L1_SIZE的屏幕大小,配置LCD_PCONF控制讀寫時序,配置LCD_LCONF控制每層的開關和透明覆蓋使能等。
  
  ③使能LCD控制位LCD_SEL,LCD控制器自動讀取存儲器中數據傳輸到接口。
  
  ④等待L1_SOF中斷產生后,可以寫下一幀所需要的命令和修改其他層起始地址等。
  
  ⑤等待BOF中斷可以配置下一幀的LCD_CTRL寄存器或者每一層起始地址。
  
  ⑥如果連接的是并口或者串口LCD屏,在圖像數據寫入存儲器的同時將命令寫到第4層圖像對應地址,LCD控制器會自動讀取這些命令輸出。LCD控制器操作流程如圖3所示。
  
  從流程圖可以看出,當EOF中斷產生之后,就可以配置LCD控制器下一幀數據的起始地址。此時,這些配置不會在當前幀起效,而是在下一幀起效,如果需要當前命令發送完畢之后發送圖像數據,L4_WINTH需配置為大于實際命令發送個數。本驅動為了讓LCD控制器傳送一幀圖像后停止工作,當L4_EOF中斷到來后,配置下一幀發送的命令為0x30003。
  
  4、LCD驅動程序設計
  
  LCD驅動程序開發過程中,主要需要實現的是底層驅動程序,底層驅動大體分為兩個部分:硬件初始化部分和實現splash_screen函數。
  
  4.1硬件初始化實現
  
  硬件初始化部分主要由display_init函數來實現,主要包括初始化LCD控制器、初始化LCD處理器、Frame-buffer設備的配置等工作,主要實現的函數如下:
  
  fb_config首先使能I2S寫函數,對ILI9481進行復位操作,fbcon_setup函數記錄了LCD屏幕參數,包括屏幕分辨率、時序參數、像素比特數(bpp)等參數,B_LCD_Init_ILI9481函數肩負著向framebuffer驅動程序傳遞數據的任務。初始化LCD控制器的寄存器主要是對LCD的PCD、ARM_INYEN、PBUS_WIDTH、OUT_BPP、LCD_TYPE等寄存器進行配置。LCD控制寄存器主要是對屏幕參數、ARM中斷使能、并口LCD中片選信號極性、LCD屏類型、時序特性進行配置。主要寄存器如下:
  
  PCD,配置像素時鐘分屏。
  
  ARM_INTEN,配置ARM中斷使能信號。當信號為0時,達到中斷產生條件后,不產生送到ARM的中斷信號;當信號為1時,達到中斷產生條件后,產生送到ARM的中斷。
  
  PBUS_WIDTH,輸出數據線位寬,當配置為并口顯示屏時有效。
  
  OUT_BPP,配置BPP位寬。
  
  LCD_TYPE,配置LCD屏類型選擇。00為普通RGB接口TFT顯示屏,01為Sharp接口TFT顯示屏,10為并口LCD顯示屏,11為串口LCD顯示屏。
  
  4.2讀取圖像信息
  
  splash_screen函數主要是定義圖像的地址,通過framebuffer對圖像進行顯示。這里將顯示的圖像放在了U盤文件中,當LK啟動時,直接從SDRAM中讀取圖像信息,并定義bmp圖像的地址為0x14000000。圖像顯示函數如下:

  
  LCD顯示數據大小是由顯示模式和顯示屏尺寸大小共同決定的。根據設計要求,使用的是320X480個像素、16bpp的256色LCD,顯示一屏圖像所需的顯示緩沖為320×480×16位。在顯示緩沖器中,每一個像素都占一個字節,且每個字節又要區分RGB格式。在顯示圖像時,需要配置相應的寄存器,這些工作在初始化LCD控制器已經完成。其次,確定圖像緩沖區的首地址,這個地址在4字節對齊的邊界上,而且要在SDRAM的4MB空間之間,顯示緩沖區的數據會直接顯示到顯示屏上。LCD上顯示的不同圖像信息就是顯示緩沖區內不同數據的輸出。
  
  5、LK的測試與調試
  
  在該模塊下編寫了一個Makefile文件,在調試LK模塊時,可以單獨編譯LK模塊,這樣就節約了開發的時間。編譯LK模塊,得到1k.bin文件。開發板上電后,進入U盤模式,用生成的1k.bin文件替換掉U盤中原始的文件,通過超級終端連接串口,啟動LK。LK啟動打印信息如圖4所示,LK能正常工作,并能執行LCD顯示驅動。
  
  6、結語
  
  本文通過對Bootloader的研究,提出了一種Android詳細給出了LCD控制器操作流程和LCD的驅動設計。系統啟動正常,運行穩定,達到了設計的要求。盡管LCD手機在LK啟動過程中實現LCD顯示的設計方案,并且的種類很多,但驅動程序的設計都可以遵循一定的模式,可以根據自己設計的需求選擇合適的方法。該方法對Android系統開發具有一定的借鑒意義和參考價值。

免責聲明

  • 凡本網注明“來源:儀表網”的所有作品,均為浙江興旺寶明通網絡有限公司-儀表網合法擁有版權或有權使用的作品,未經本網授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:儀表網”。違反上述聲明者,本網將追究其相關法律責任。
  • 本網轉載并注明自其它來源(非儀表網)的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或和對其真實性負責,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品第一來源,并自負版權等法律責任。
  • 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。
聯系我們

客服熱線: 15024464426

加盟熱線: 15024464426

媒體合作: 0571-87759945

投訴熱線: 0571-87759942

關注我們
  • 下載儀表站APP

  • Ybzhan手機版

  • Ybzhan公眾號

  • Ybzhan小程序

企業未開通此功能
詳詢客服 : 0571-87759942
主站蜘蛛池模板: 在线观看91精品国产hd | 国产女女互摸互慰在线观看 | 精品无码一区在线观看 | 成人激情小视频 | 91在线亚洲综合在线 | 成人毛片免费看 | 黄视频网站免费观看 | 欧美很很干 | 精品国产成人在线 | 婷婷在线免费观看 | 亚洲综合影视 | 在线观看免费播放网址成人 | 国产日韩一区二区 | 色综合天天综合网国产成人网 | 亚亚洲乱码一二三四区 | 亚洲男人天堂网站 | 亚洲色图综合 | 一级毛片在线看在线播放 | 日本免费黄网 | 婷婷伊人久久 | 色老头一级毛片 | 中文字幕丝袜制服 | 欧美怡红院免费全视频 | 一级欧美一级日韩 | 午夜免费看片 | 亚洲欧美日韩精品 | 嗯啊在线观看免费影院 | 女性特黄一级毛片 | 一色屋免费视频 | 国产在线播放免费 | 欧美护士激情第一欧美精品 | 一级成人生活片免费看 | 影音先锋在线亚洲精品推荐 | 国产精品亚洲第五区在线 | 97国产在线视频公开免费 | 欧美高清免费一级在线 | 久久精品无码一区二区日韩av | 亚洲视频中文 | 色黄啪啪网18以下勿进动画 | 欧美精品首页 | 97人洗澡人人澡人人爽人人 |