<ul id="gu0q4"></ul>
  • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
    <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    • <samp id="gu0q4"></samp>

      技術貼|如何在【RK3588】ELF 2開發(fā)板用戶空間更換開機Logo

      發(fā)布時間:2025-11-05 18:43:48

      傳統(tǒng)修改開發(fā)板開機Logo的方式需要重新編譯內核,流程復雜且耗時。本文介紹了一種創(chuàng)新方案:通過預先在存儲中劃分專用的Logo分區(qū),允許用戶直接在文件系統(tǒng)中更新Logo圖片文件,這極大地簡化了定制流程,提升了開發(fā)與調試效率。

      一、添加Logo分區(qū)

      執(zhí)行以下命令編輯參數(shù)文件:

      elf@ubuntu:~/work/ELF2-linux-source$ vi device/rockchip/.chips/elf2/parameter.txt

      修改內容如下(建議參考下圖配置):

      CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00020000@0x00008000(boot),0x00040000@0x00028000(recovery),0x00010000@0x00068000(backup),0x01c00000@0x00078000(rootfs),0x00040000@0x01c78000(oem),0x00100000@0x01cb8000(logo),-@0x01db8000(userdata:grow)
      此處把Logo分區(qū)的大小劃分為0x00100000(對應512MB),用戶可根據(jù)實際需求調整分區(qū)大小,建議預留足夠空間以適配不同分辨率的Logo圖片。

      二、修改Uboot

      1、修改u-boot/arch/arm/mach-rockchip/resource_img.c文件

      執(zhí)行命令打開目標文件:

      elf@ubuntu:~/work/ELF2-linux-source$ vi u-boot/arch/arm/mach-rockchip/resource_img.c

      搜索rockchip_read_resource_dtb函數(shù),在函數(shù)內添加以下兩句代碼:

      struct blk_desc *desc = rockchip_get_bootdev();
      resource_setup_logo_bmp(desc);

      添加后的完整函數(shù)代碼如下:

      int?rockchip_read_resource_dtb(void?*fdt_addr,?char?**hash,?int?*hash_size){? ? ? ??struct?resource_file *f = NULL;? ? ? ??int?ret;? ? ? ??struct?blk_desc *desc = rockchip_get_bootdev();#ifdef?CONFIG_ROCKCHIP_HWID_DTB? ? ? ??if?(resource_scan())? ? ? ? ? ? ? ??return?-ENOENT;? ? ? ? f = resource_read_hwid_dtb();#endif? ? ? ??/* If no dtb match hardware id(GPIO/ADC), use the default */? ? ? ??if?(!f)? ? ? ? ? ? ? ? f = resource_get_file(DEFAULT_DTB_FILE);? ? ? ??if?(!f)? ? ? ? ? ? ? ??return?-ENODEV;? ? ? ? ret = rockchip_read_resource_file(fdt_addr, f->name,?0,?0);? ? ? ??if?(ret 0)? ? ? ? ? ? ? ??return?ret;? ? ? ??if?(fdt_check_header(fdt_addr))? ? ? ? ? ? ? ??return?-EBADF;? ? ? ? *hash = f->hash;? ? ? ? *hash_size = f->hash_size;? ? ? ? printf("DTB: %s\n", f->name);? ? ? ? resource_setup_logo_bmp(desc);? ? ? ??return?0;}

      2、修改u-boot/configs/board_elf2_uboot_defconfig文件

      執(zhí)行命令打開配置文件:

      elf@ubuntu:~/work/ELF2-linux-source$ vi u-boot/configs/board_elf2_uboot_defconfig

      在文件中添加以下兩行配置(若已存在則修改):

      CONFIG_ROCKCHIP_RESOURCE_IMAGE=y
      CONFIG_ANDROID_AVB=n

      添加后的配置文件片段如下:

      注意:CONFIG_ANDROID_AVB配置項默認可能已存在,需將其值修改為n(禁用AVB驗證),否則可能導致Logo分區(qū)加載失敗。

      三、編譯并燒寫

      完成上述修改后,執(zhí)行全編譯命令(具體編譯命令根據(jù)項目環(huán)境調整),編譯完成后將鏡像燒寫至開發(fā)板。

      燒寫完成后啟動開發(fā)板,執(zhí)行fdisk -l命令查看分區(qū)信息,確認Logo分區(qū)已創(chuàng)建:

      四、更新Logo

      1. 準備Logo圖片文件:需準備兩個BMP格式圖片(logo.bmp為Uboot階段Logo,logo_kernel.bmp為內核階段Logo),建議分辨率與開發(fā)板屏幕匹配。

      2. 將圖片文件傳入開發(fā)板(可通過SSH、U盤等方式),執(zhí)行以下命令生成Logo鏡像并寫入Logo分區(qū):

      root@elf2-buildroot:~# cat logo.bmp > logo.img && truncate -s %512?logo.img && cat logo_kernel.bmp >> logo.imgroot@elf2-buildroot:~# dd if=logo.img of=/dev/block/by-name/logo1968+1?records in1968+1?records out1007670?bytes (1.0?MB,?984?KiB) copied,?0.0459117?s,?21.9?MB/sroot@elf2-buildroot:~# sync
      truncate -s %512 logo.img命令用于將logo.img文件大小對齊到512字節(jié)整數(shù)倍,確保分區(qū)寫入兼容性;sync命令用于強制刷新緩存,避免數(shù)據(jù)寫入不完整。

      3. 執(zhí)行reboot命令重啟開發(fā)板,重啟后即可看到更新后的開機Logo。

      其它推薦:

      推薦閱讀:

      /* 53客服*/ /* 百度統(tǒng)計*/ /* 百度站長*/
      <ul id="gu0q4"></ul>
    • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
      <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      • <samp id="gu0q4"></samp>