RK3562 開(kāi)發(fā)板開(kāi)機(jī) LOGO 一鍵更換,獨(dú)立分區(qū) + 雙模式更新全教程

原創(chuàng) 作者 Forlinx 2026-02-05 13:53:00 RK3562開(kāi)發(fā)板 RK3562開(kāi)機(jī)LOGO

一、方案介紹

本方案通過(guò)為OK3562-C開(kāi)發(fā)板(基于瑞芯微RK3562處理器設(shè)計(jì))新增獨(dú)立的LOGO分區(qū),實(shí)現(xiàn)開(kāi)機(jī)LOGO圖片的便捷更換,無(wú)需修改源碼并重新編譯燒寫(xiě)系統(tǒng),大幅提升開(kāi)發(fā)與調(diào)試效率,適用于Linux5.10.198+QT5.15.10版本環(huán)境。

本方案的核心設(shè)計(jì)思想是將開(kāi)機(jī)LOGO資源獨(dú)立存儲(chǔ)于專(zhuān)用分區(qū),與系統(tǒng)根文件系統(tǒng)分離。這種架構(gòu)設(shè)計(jì)帶來(lái)了以下顯著優(yōu)勢(shì):

  • 隔離性:LOGO更新操作不會(huì)影響系統(tǒng)核心文件,降低更新風(fēng)險(xiǎn)
  • 便捷性:無(wú)需重新編譯整個(gè)系統(tǒng),縮短產(chǎn)品迭代周期
  • 靈活性:支持生產(chǎn)環(huán)境動(dòng)態(tài)更換品牌標(biāo)識(shí),滿足OEM需求
  • 兼容性:適配Linux 5.10.198內(nèi)核與QT5.15.10圖形框架


二、修改步驟

(一)添加LOGO分區(qū)

在Ubuntu開(kāi)發(fā)環(huán)境中,執(zhí)行命令編輯分區(qū)配置文件,定義存儲(chǔ)分區(qū)布局:

forlinx@ubuntu:~/work/3562/OK3562-linux-source$ vi device/forlinx/.chips/ok3562/parameter-buildroot-fit.txt

在配置文件中添加LOGO分區(qū)并調(diào)整userdata分區(qū),完整配置內(nèi)容如下:

// 添加logo分區(qū):0x00100000@0x00cba000(logo)
// 修改userdata分區(qū):-@0x00dba000(userdata:grow)
CMDLINE: mtdparts=:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00020000@0x00008000(boot),0x00040000@0x00028000(recovery),0x00010000@0x00068000(backup),0x00c00000@0x00078000(rootfs),0x00040000@0x00c78000(oem),0x00002000@0x00cb8000(amp),0x00100000@0x00cba000(logo),-@0x00dba000(userdata:grow)
配置說(shuō)明:LOGO分區(qū)大小配置為0x00100000(對(duì)應(yīng)512M),可根據(jù)實(shí)際LOGO圖片大小調(diào)整;修改userdata分區(qū)起始地址,避免與LOGO分區(qū)空間重疊,保證存儲(chǔ)分區(qū)正常使用。

(二)修改U-Boot并驗(yàn)證分區(qū)

由于RK3562的U-Boot源碼未開(kāi)源,直接使用適配本方案的修改版uboot.img(基于Linux5.10.198+QT5.15.10_用戶資料_R1制作,新版本需重新驗(yàn)證兼容性)。

  1. 將uboot.img文件放入OK3562-linux-source/u-boot目錄,替換原有文件
  2. 執(zhí)行全編譯操作,將編譯后的鏡像燒寫(xiě)至開(kāi)發(fā)板
  3. 開(kāi)發(fā)板啟動(dòng)后,執(zhí)行驗(yàn)證命令查看分區(qū)信息

分區(qū)驗(yàn)證:

開(kāi)發(fā)板啟動(dòng)后,執(zhí)行fdisk -l命令查看分區(qū)信息,完整輸出如下:

root@ok3562:/# fdisk -l
Found valid GPT with protective MBR; using GPT
Disk /dev/mmcb1k0: 30576640 sectors, 2642M
Logical sector size: 512
Disk identifier(GUID): 27330000-0000-4656-8000-71000000163b
Number  Start(sector)  End (sector)  Size   Name
   1      16384         24575       4096K  uboot
   2      24576         32767       4096K  misc
   3      32768        163839       64.0M  boot
   4     163840        425983       128M   recovery
   5     425984        491519       32.0M  backup
   6     491520       13074431      6144M  rootfs
   8    13336576      13344767      4096K  amp
   9    13344768      14393343      512M   logo
  10    14393344      30576606      7901M  userdata
驗(yàn)證標(biāo)準(zhǔn):若輸出中顯示logo分區(qū)大小為512M,說(shuō)明分區(qū)配置已成功生效。

三、LOGO更新方法

方法一:U盤(pán)自動(dòng)更新

適用于批量部署場(chǎng)景,插入U(xiǎn)盤(pán)自動(dòng)檢測(cè)并完成更新,無(wú)需人工干預(yù)命令行。

方法二:手動(dòng)更新

適用于開(kāi)發(fā)調(diào)試階段,通過(guò)命令行手動(dòng)執(zhí)行寫(xiě)入操作,精確控制更新流程。

(一)U盤(pán)自動(dòng)更新

準(zhǔn)備工作:

在U盤(pán)根目錄創(chuàng)建Forlinx_logo文件夾,將logo.bmp和logo_kernel.bmp兩張LOGO圖片放入該文件夾。

自動(dòng)更新腳本:

編寫(xiě)LOGO自動(dòng)更新腳本logo.sh,腳本按功能分段實(shí)現(xiàn)檢測(cè)、打包、寫(xiě)入邏輯,完整代碼如下:

#!/bin/bash
# 功能1:定義U盤(pán)檢測(cè)與LOGO更新核心函數(shù)
check_sdcard(){
    # 循環(huán)檢測(cè)U盤(pán)掛載狀態(tài)
    while true; do
        # 檢測(cè)U盤(pán)根目錄是否存在Forlinx_logo文件夾
        if [[ -d "/run/media/sda1/Forlinx_logo" ]]; then
            cd "/run/media/sda1/Forlinx_logo"
            # 檢測(cè)是否存在更新標(biāo)志文件,避免重復(fù)更新
            if [[ -f "Forlinx_logo_flag" ]]; then
                echo "Forlinx_logo_flag file. Exiting."
                break
            else
                # 功能2:校驗(yàn)LOGO圖片是否齊全,齊全則執(zhí)行打包與寫(xiě)入操作
                if [[ -f "/run/media/sda1/Forlinx_logo/logo.bmp" && -f "/run/media/sda1/Forlinx_logo/logo_kernel.bmp" ]]; then
                    # 合并LOGO圖片為鏡像文件
                    cat "logo.bmp" > "logo.img"
                    # 按512字節(jié)對(duì)齊鏡像文件,適配分區(qū)寫(xiě)入要求
                    truncate -s %512 "logo.img"
                    # 追加內(nèi)核LOGO圖片至鏡像文件
                    cat "logo_kernel.bmp" >> "logo.img"
                    # 將鏡像文件寫(xiě)入LOGO分區(qū)
                    dd if="logo.img" of="/dev/block/by-name/logo"
                    # 功能3:更新完成后輸出提示,并創(chuàng)建標(biāo)志文件
                    echo "Logo files copied and written to /dev/block/by-name/logo."
                    touch "Forlinx_logo_flag"
                    break;
                else
                    echo "Missing logo.bmp or logo_kernel.bmp files."
                fi
            fi
        fi
        # 每5秒檢測(cè)一次,避免占用過(guò)多系統(tǒng)資源
        sleep 5
    done
}
# 功能4:后臺(tái)啟動(dòng)檢測(cè)函數(shù),不阻塞系統(tǒng)其他進(jìn)程
check_sdcard &

配置腳本開(kāi)機(jī)自啟:

臨時(shí)生效:編輯開(kāi)發(fā)板/etc/autorun.sh文件,原文件內(nèi)容如下:

root@ok3562:/# cat /etc/autorun.sh
#!/bin/sh
#env
#user command
exit 0

添加腳本執(zhí)行命令,修改后完整內(nèi)容:

#!/bin/sh
# env
# 啟動(dòng)LOGO自動(dòng)更新腳本
./logo.sh
sync
exit 0

保存后重啟開(kāi)發(fā)板,腳本即可臨時(shí)生效。

永久生效:編輯buildroot/board/forlinx/ok3562/fs-overlay/etc/autorun.sh文件,添加上述腳本執(zhí)行命令,重新編譯燒寫(xiě)鏡像后,腳本永久生效。

注意事項(xiàng):LOGO更新成功后,U盤(pán)會(huì)自動(dòng)生成Forlinx_logo_flag標(biāo)志文件,防止重復(fù)更新;若需再次更新LOGO,刪除該標(biāo)志文件后重啟開(kāi)發(fā)板即可。

(二)手動(dòng)更新

將logo.bmp和logo_kernel.bmp兩張LOGO圖片傳入開(kāi)發(fā)板。

執(zhí)行以下命令,完成LOGO鏡像打包與分區(qū)寫(xiě)入:

root@ok3562:/# cat logo.bmp > logo.img && truncate -s %512 logo.img && cat logo_kernel.bmp >> logo.img
root@ok3562:/# dd if=logo.img of=/dev/block/by-name/logo
7201+1 records in
7201+1 records out
3686966 bytes (3.7 MB, 3.5 MiB) copied, 0.234017 s, 15.8 MB/s
root@ok3562:/# sync

重啟開(kāi)發(fā)板,開(kāi)機(jī)LOGO即可完成更換。


四、關(guān)鍵說(shuō)明

本方案中分區(qū)參數(shù)以 512字節(jié)標(biāo)準(zhǔn)存儲(chǔ)塊為計(jì)數(shù)單位,配置參數(shù)0x00100000對(duì)應(yīng)1048576個(gè)存儲(chǔ)塊,總?cè)萘繛?12M,與fdisk -l命令的驗(yàn)證結(jié)果完全一致,無(wú)需額外進(jìn)行單位換算。

參數(shù)項(xiàng) 十六進(jìn)制值 十進(jìn)制值 計(jì)算結(jié)果
LOGO分區(qū)大小 0x00100000 1,048,576 1,048,576 × 512B = 512MB
LOGO分區(qū)起始 0x00cba000 13,344,768 對(duì)應(yīng)扇區(qū)號(hào) 13,344,768
Userdata起始 0x00dba000 14,393,344 緊接LOGO分區(qū)之后

咨詢(xún)立即獲得專(zhuān)屬報(bào)價(jià)

華北區(qū)負(fù)責(zé)人

華東區(qū)負(fù)責(zé)人

華南區(qū)負(fù)責(zé)人

中西區(qū)負(fù)責(zé)人

相關(guān)產(chǎn)品 >

  • OK3562J-C開(kāi)發(fā)板

    RK3562開(kāi)發(fā)板,采用核心板+底板分體式設(shè)計(jì),CPU采用瑞芯微工業(yè)級(jí)芯片RK3562J設(shè)計(jì),RK3562J是瑞芯微專(zhuān)為工業(yè)自動(dòng)化及消費(fèi)類(lèi)電子設(shè)備打造的一款高性能、低功耗國(guó)產(chǎn)化應(yīng)用處理器,集成了4個(gè)ARM Cortex-A53高性能核,主頻高達(dá)1.8GHz。RK3562核心板采用3組80Pin板對(duì)板連接器,可插拔式設(shè)計(jì)便于產(chǎn)品的安裝與維護(hù)。 了解詳情
    OK3562J-C開(kāi)發(fā)板
  • FET3562J-C核心板

    RK3562核心板,采用高性能低功耗工業(yè)級(jí)芯片RK3562J設(shè)計(jì),RK3562J是瑞芯微專(zhuān)為工業(yè)自動(dòng)化及消費(fèi)類(lèi)電子設(shè)備打造的一款高性能、低功耗國(guó)產(chǎn)化應(yīng)用處理器,集成了4個(gè)ARM Cortex-A53高性能核,主頻高達(dá)1.8GHz。RK3562核心板采用3組80Pin板對(duì)板連接器,可插拔式設(shè)計(jì)便于產(chǎn)品的安裝與維護(hù)。 了解詳情
    FET3562J-C核心板

推薦閱讀 換一批 換一批