日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

不同分辨率的LCM进行兼容

發(fā)布時(shí)間:2025/4/16 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不同分辨率的LCM进行兼容 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.讀取不同LCM ID的時(shí)序不同,如何處理?

2.開機(jī)后android會(huì)自動(dòng)resize圖片資源的大小,但開機(jī)logo無法自行resize,如何操作?保證識(shí)別到不同分辨率的LCM后開機(jī)logo可以正常顯示

[Analysis]

1.?關(guān)于時(shí)序

JB版本中,接口disp_drv_get_lcm_driver實(shí)現(xiàn)compare id并獲取到lcm driver以及lcm param的動(dòng)作,其工作流程如下


從上圖可以看到,對(duì)于DSI,每次嘗試讀取id之前都會(huì)根據(jù)lcm driver中的設(shè)置重新設(shè)置時(shí)序,所以擔(dān)心時(shí)序不同無法讀取id的擔(dān)心就顯得多余了

?

2.?關(guān)于開機(jī)logo

我們默認(rèn)的做法,在ProjectConfig.mk中會(huì)定義Macro BOOT_LOGO方便在目錄\mediatek\custom\common\lk\logo中讀取到相應(yīng)的資源,作為開機(jī)logo顯示。

這里的開機(jī)logo分為兩種,分別為U-boot logo以及kernel logo。我們分別討論這兩種logo的顯示原理

·?????????U-boot logo(and Battery logo)

U-boot logo是開機(jī)后的第一個(gè)界面,U-boot logo以及Battery logo會(huì)統(tǒng)一打包為logo.bin。對(duì)于JB版本,主要工作?流程如下

1. Little Kernel會(huì)在platform_early_init階段首先會(huì)獲取lcm params,其工作流程就是透過讀id找到現(xiàn)在插入的LCM,根據(jù)LCM的分辨率申請(qǐng)相應(yīng)大小的frame buffer并確定frame buffer起始地址

2.?logo.bin預(yù)留4M Ram

3.?之后在platform_init階段,直接將logo.bin載入到4M Ram

4,?完成載入后,在platform_initmt_disp_show_boot_logo();會(huì)調(diào)用show_logo(0);完成第一張logo顯示。其中的index=0代表在logo.bin中壓縮的第一張圖片,logo.bin中的圖片壓縮順序可以察看文件mediatek\custom\common\lk\logo\rules.mk,如下

RESOURCE_OBJ_LIST :=?? \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_uboot.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_battery.raw \

???? ???????$(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_low_battery.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_charger_ov.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_num_0.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_num_1.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_num_2.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_num_3.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_num_4.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_num_5.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_num_6.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_num_7.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_num_8.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_num_9.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_num_percent.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_animation_01.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_animation_02.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_animation_03.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_animation_04.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_animation_05.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_animation_06.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_animation_07.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_animation_08.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_animation_09.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_animation_10.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_10_01.raw \

?????? ?????$(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_10_02.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_10_03.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_10_04.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_10_05.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_10_06.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_10_07.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_10_08.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_10_09.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_10_10.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_bg.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_img.raw \

??????????? $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_100.raw \

·?????????Kernel logo

Kernel logo的工作方式與U-boot logo不同,是透過init.rc中注冊(cè)的boot_logo_updater service完成讀取raw data文件,進(jìn)行繪畫的,所以在kernel logo只是經(jīng)過了bmpraw的轉(zhuǎn)換,在目錄mediatek\custom\common\lk\logo\下生成raw data?文件boot_logo。之后透過腳本文件將boot_logo文件搬移到out\target\product\xxxx\system\media\images下,打包為system.imgdownload到手機(jī)種,并存放于/system/media/images目錄下。

?

[Solution]

對(duì)于U-boot logo,只需要將不同分辨率的圖片壓縮至logo.bin中,在讀取時(shí)根據(jù)不同的索引顯示相應(yīng)的圖片即可

而對(duì)于Kernel logo,我們需要將不同分辨率的boot_logo raw data文件生成出來并copy到手機(jī)中,boot_logo_updater根據(jù)不同的分辨率進(jìn)行識(shí)別,讀取相應(yīng)的logo文件。

qhdhd720兩種分辨率相互兼容為例,方案大致如下,注意,logo的對(duì)應(yīng)需要貴司自行完成

  • lcm driver中實(shí)現(xiàn)compare id接口
  • U-boot logo壓縮,在mediatek\custom\common\lk\logo\rules.mk中,修改RESOURCE_OBJ_LIST列表,使用期望的分辨率代替BOOT_LOGO變量,(makefileBOOT_LOGO的定義將無效)
  • RESOURCE_OBJ_LIST :=?? \

    ??????????? $(BOOT_LOGO_DIR)/$qhd/$qhd_uboot.raw \

    ??????????????? …

    ??????????????? …

    ?????????$(BOOT_LOGO_DIR)/$hd720/$hd720_uboot.raw \

    ??????????????? …

    ??????????????? …

    ?

  • 記錄每組分辨率插入的raw data個(gè)數(shù)
  • mt_disp_show_boot_logo();函數(shù)中根據(jù)LCM的分辨率讀取相應(yīng)iduboot logo;對(duì)于ipo快速開機(jī),請(qǐng)?jiān)谀夸沵ediatek\external\ipod\bootlogo.cpp中的mt65xx_disp_show_boot_logo();做同樣的修改
  • 5.此步驟在不同的SW版本上修改的文件不同。在JB上,修改mediatek\custom\common\lk\logo\rules.mk修改如下內(nèi)容:

    #########################################################

    ifneq ($(strip $(MTK_PLATFORM)),)

    include $(CLEAR_VARS)

    ?

    LOCAL_MODULE :=boot_logo_qhd

    LOCAL_MODULE_TAGS :=user

    LOCAL_MODULE_CLASS := DATA

    LOCAL_MODULE_PATH := $(TARGET_OUT)/media/images

    ?

    LOCAL_GENERATE_CUSTOM_FOLDER := custom:lk/logo

    LOCAL_SRC_FILES := custom/$(LOCAL_MODULE)

    ?

    include $(BUILD_PREBUILT)

    endif

    ??

    #########################################################

    ifneq ($(strip $(MTK_PLATFORM)),)

    include $(CLEAR_VARS)

    ?

    LOCAL_MODULE :=boot_logo_hd720

    LOCAL_MODULE_TAGS :=user

    LOCAL_MODULE_CLASS := DATA

    LOCAL_MODULE_PATH := $(TARGET_OUT)/media/images

    ?

    LOCAL_GENERATE_CUSTOM_FOLDER := custom:lk/logo

    LOCAL_SRC_FILES := custom/$(LOCAL_MODULE)

    ?

    include $(BUILD_PREBUILT)

    endif

    JB2上,在文件mediatek\external\boot_logo_updater\Android.mk中添加上述的內(nèi)容,注意不要添加語句

    LOCAL_MODULE_TAGS :=user,否則編譯不通過。

    6.此步驟在不同的SW版本上修改方法不同。在JB上,\build\core\user_tags.mkGRANDFATHERED_USER_MODULES增加boot_logo_qhd & boot_logo_hd720;在JB2上,\build\target\product\$Project.mk中PRODUCT_PACKAGES增加boot_logo_qhd & boot_logo_hd720

    7.?boot_logo_updater中首先定義兩種raw data的路徑,再在main函數(shù)中根據(jù)LCM的分辨率讀取相應(yīng)的raw data文件

    《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的不同分辨率的LCM进行兼容的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。