下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
MTK優(yōu)美代碼賞析5:LCD_BlackWrite與MTK中斷控制器
前一段時間在跟蹤我所負(fù)責(zé)項目的一個bug:進(jìn)錄像器時系統(tǒng)掛起等camera進(jìn)入就緒狀態(tài),導(dǎo)致進(jìn)入Preview很慢的問題。驅(qū)動上已經(jīng)把效果調(diào)到最差最快了,問題還是存在,所以斷定可能不是驅(qū)動造成的,需要跟到上層的流程去。因為自己從來沒有研究過camera的架構(gòu),一時竟無法下手去跟蹤這個流程,突然想到MTK的驅(qū)動架構(gòu)都是基于面向?qū)ο笤O(shè)計的,可以從對象的元素來進(jìn)行跟蹤,通過這個方法不斷向上跟蹤,不但把問題跟蹤了出來,而且對camera的流程也有了一定的了解,甚是開心。
依稀記得當(dāng)時發(fā)現(xiàn)camera不斷抓取Preview數(shù)據(jù)進(jìn)行Preview后進(jìn)行LCD_BlockWrite,使屏幕同步刷新,所以一直想抽時間來研究LCD_BlockWrite的機(jī)制,今夜偷閑,給出自己第一次賞析這個流程的看法,有不對的地方請大家及時提出來,讓我也學(xué)習(xí)下。謝!
下面看兩個有關(guān)屏幕刷新的重要參數(shù)
/*SW
XXX*/
//LCD_OWNER_ID
來自哪里的刷新
typedef
enum
{
LCD_UPDATE_MODULE_MMI
=
0,//MMI層觸發(fā)的刷新
LCD_UPDATE_MODULE_MEDIA
,//camera等觸發(fā)的刷新
LCD_UPDATE_MODULE_JPEG_VIDEO
,//MJPG_DECODE觸發(fā)的刷新
LCD_UPDATE_MODULE_EXT_CAMERA
,
//這個不清楚,可能是拓展camera觸發(fā)的刷新,類似于DSP
LCD_UPDATE_MODULE_LCD_FW
//這個我也不清楚
}
LCD_OWNER_ID_ENUM;
/*SW
XXX*/
//LCD_UPDATE_MODE
刷新的模式
typedef
enum
{
LCD_SW_TRIGGER_MODE
=
0,
/*
LCD
SW
trigger
with
frame
buffer
*/
//軟件緩沖刷新
LCD_HW_TRIGGER_MODE
=
1,
/*
LCD
HW
trigger
with
frame
buffer
*/
//硬件緩沖刷新
LCD_DIRECT_COUPLE_MODE
=
2
/*
LCD
HW
trigger
without
frame
buffer,
direct
couple
*/
//不需要緩沖區(qū)的硬件直接耦合刷新
}
LCD_UPDATE_MODE_ENUM;
//有些我也不太清楚他的意義,只能通過翻譯軟件來大致了解。
上面兩種設(shè)計應(yīng)該是互相搭配的,比如LCD_SW_TRIGGER_MODE的OWNER_ID一般肯定是LCD_UPDATE_MODULE_MMI,而緩沖區(qū)又在哪里定義的呢?下面看重要的LCD刷新接口函數(shù):
LCD_STATUS_CODE_ENUM
lcd_fb_update(lcd_frame_update_struct
*lcd_para)
lcd_frame_update_struct結(jié)構(gòu)里有如下需要注意的元素:
///
callback
when
lcd
update
is
done
void
(*
lcd_block_mode_cb)(void);
///
the
layers
to
be
updated
kal_uint32
update_layer;
///
which
layer
will
be
applied
by
hw
trigger
or
direct
couple
kal_uint32
hw_update_layer;
///
rotate
select
for
hardware
update
layer
kal_uint8
rotate_value;
#if
defined(DRV_LCD_MEMORY_OUTPUT)
///
enable/disable
otuput
to
memory
and
LCM
simultaneously
kal_bool
memory_output;
///
block
write
out
or
not
kal_uint8
block_mode;
///
output
data
format
to
memory,
LCD_WMEM_RGB565
or
LCD_WMEM_RGB888
for
6228,
6229.
///
always
RGB565
for
6226,6227
kal_uint8
memory_data_format;
///
memory
block
when
output
to
memory
kal_uint16
memory_block_width;
///
buffer
address
of
memory
output
buffer
kal_uint32
memory_output_buffer_address;
///
buffer
size
of
memory
output
buffer
kal_uint32
memory_output_buffer_size;
///
x
offset
of
dest
buffer
kal_uint16
dest_offset_x;
///
y
offset
of
dest
buffer
kal_uint16
dest_offset_y;
///
temp
memory
buffer
kal_uint32
dest_temp_address;
#endif
//DRV_LCD_MEMORY_OUTPUT
1.
void(*lcd_block_mode_cb)(void);為刷新完成后的callback,這個在mmi上可以有效的防止上一次刷新未完成又進(jìn)行新刷新,這個也就產(chǎn)生了gdi_waiting_blt_finish()函數(shù)。2.對memory_output_buffer_address和memory_output_buffer_size,是將屏幕顯示向外output,可能用于camera_capture圖片或者抓屏吧。函數(shù)里有要求只有當(dāng)update_mod為LCD_UPDATE_MODULE_MMI時才允許向外output_bufferAdress3.數(shù)據(jù)緩沖區(qū)在哪呢?我也找不到,只有參考這個了/dp-bbsthread-237857.html可能和update_layer和hw_update_layer有點關(guān)系吧
在這里接口函數(shù)里,53平臺通過調(diào)用lcd_fb_update_19_26_28_series(lcd_para);來調(diào)用驅(qū)動中的blockwrite來分別主屏和子屏進(jìn)行刷新。以及刷新完成后執(zhí)行callback函數(shù)lcd_block_mode_cb在mmi_gdi系統(tǒng)內(nèi),通過lcd_fb_update<-gdi_layer_blt_ext_internal<-gdi_layer_blt_ext<-gdi_layer_blt,gdi_layer_blt_previous,gdi_layer_blt_tree,gdi_lcd_paint_ext,gdi_lcd_paint_all_ext等等刷屏函數(shù),我主要用的是gdi_layer_blt_previous,原來有這么多刷屏函數(shù),真是孤陋寡聞了。。。作者:張素豐,轉(zhuǎn)載請注明出處:/zhangsufeng/archive/2010/09/24/1833666.html
在刷屏過程中,不論lcd_fb_update還是lcd_fb_update_19_26_28_series函數(shù)都不斷的對MTK中斷控制器進(jìn)行操作,例如:
_lcd_wait_for_lcd_ready();關(guān)于中斷控制器的相關(guān)文檔可以參考/p-62184651.html/wiki/%E4%B8%AD%E6%96%AD%E6%8E%A7%E5%88%B6%E5%99%A8后悔以前沒有吧計算機(jī)組成原理學(xué)好~~
在刷屏的過程中會進(jìn)入中斷,在這個中斷進(jìn)行過程中,系統(tǒng)是否會去相應(yīng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度船舶貨物運輸與維修維護(hù)合同
- 二零二五年度虛擬股投資咨詢與服務(wù)協(xié)議
- 2025年度股權(quán)質(zhì)押合同法律風(fēng)險防范指南格式
- 二零二五年度股權(quán)占比協(xié)議書-XX金融科技產(chǎn)品研發(fā)股權(quán)投資合同
- 2025年度淘寶平臺跨境電商清關(guān)合作協(xié)議書
- 二零二五年度親子餐廳餐飲合作經(jīng)營協(xié)議
- 35kv變電站施工方案
- 污水收集池施工方案
- 內(nèi)墻漆施工方案
- 個人住宅租賃條款合同(2024年定制版)版B版
- 獅子王影視鑒賞
- 一年級數(shù)學(xué)加減法口算題每日一練(25套打印版)
- 2024年甘肅省武威市、嘉峪關(guān)市、臨夏州中考英語真題
- DL-T573-2021電力變壓器檢修導(dǎo)則
- 繪本《圖書館獅子》原文
- 安全使用公共WiFi網(wǎng)絡(luò)的方法
- 2023年管理學(xué)原理考試題庫附答案
- 【可行性報告】2023年電動自行車相關(guān)項目可行性研究報告
- 歐洲食品與飲料行業(yè)數(shù)據(jù)與趨勢
- 放療科室規(guī)章制度(二篇)
- 中高職貫通培養(yǎng)三二分段(中職階段)新能源汽車檢測與維修專業(yè)課程體系
評論
0/150
提交評論