RK3562 開發(fā)板開機(jī) LOGO 一鍵更換,獨(dú)立分區(qū) + 雙模式更新全教程
Forlinx
2026-02-05 13:53:00
RK3562開發(fā)板
RK3562開機(jī)LOGO
一、方案介紹
本方案的核心設(shè)計(jì)思想是將開機(jī)LOGO資源獨(dú)立存儲(chǔ)于專用分區(qū),與系統(tǒng)根文件系統(tǒng)分離。這種架構(gòu)設(shè)計(jì)帶來了以下顯著優(yōu)勢:
- 隔離性:LOGO更新操作不會(huì)影響系統(tǒng)核心文件,降低更新風(fēng)險(xiǎn)
- 便捷性:無需重新編譯整個(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開發(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)
(二)修改U-Boot并驗(yàn)證分區(qū)
由于RK3562的U-Boot源碼未開源,直接使用適配本方案的修改版uboot.img(基于Linux5.10.198+QT5.15.10_用戶資料_R1制作,新版本需重新驗(yàn)證兼容性)。
- 將uboot.img文件放入OK3562-linux-source/u-boot目錄,替換原有文件
- 執(zhí)行全編譯操作,將編譯后的鏡像燒寫至開發(fā)板
- 開發(fā)板啟動(dòng)后,執(zhí)行驗(yàn)證命令查看分區(qū)信息
分區(qū)驗(yàn)證:
開發(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
三、LOGO更新方法
適用于批量部署場景,插入U(xiǎn)盤自動(dòng)檢測并完成更新,無需人工干預(yù)命令行。
適用于開發(fā)調(diào)試階段,通過命令行手動(dòng)執(zhí)行寫入操作,精確控制更新流程。
(一)U盤自動(dòng)更新
準(zhǔn)備工作:
在U盤根目錄創(chuàng)建Forlinx_logo文件夾,將logo.bmp和logo_kernel.bmp兩張LOGO圖片放入該文件夾。
自動(dòng)更新腳本:
編寫LOGO自動(dòng)更新腳本logo.sh,腳本按功能分段實(shí)現(xiàn)檢測、打包、寫入邏輯,完整代碼如下:
#!/bin/bash
# 功能1:定義U盤檢測與LOGO更新核心函數(shù)
check_sdcard(){
# 循環(huán)檢測U盤掛載狀態(tài)
while true; do
# 檢測U盤根目錄是否存在Forlinx_logo文件夾
if [[ -d "/run/media/sda1/Forlinx_logo" ]]; then
cd "/run/media/sda1/Forlinx_logo"
# 檢測是否存在更新標(biāo)志文件,避免重復(fù)更新
if [[ -f "Forlinx_logo_flag" ]]; then
echo "Forlinx_logo_flag file. Exiting."
break
else
# 功能2:校驗(yàn)LOGO圖片是否齊全,齊全則執(zhí)行打包與寫入操作
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ū)寫入要求
truncate -s %512 "logo.img"
# 追加內(nèi)核LOGO圖片至鏡像文件
cat "logo_kernel.bmp" >> "logo.img"
# 將鏡像文件寫入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秒檢測一次,避免占用過多系統(tǒng)資源
sleep 5
done
}
# 功能4:后臺(tái)啟動(dòng)檢測函數(shù),不阻塞系統(tǒng)其他進(jìn)程
check_sdcard &
配置腳本開機(jī)自啟:
臨時(shí)生效:編輯開發(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
保存后重啟開發(fā)板,腳本即可臨時(shí)生效。
永久生效:編輯buildroot/board/forlinx/ok3562/fs-overlay/etc/autorun.sh文件,添加上述腳本執(zhí)行命令,重新編譯燒寫鏡像后,腳本永久生效。
(二)手動(dòng)更新
將logo.bmp和logo_kernel.bmp兩張LOGO圖片傳入開發(fā)板。
執(zhí)行以下命令,完成LOGO鏡像打包與分區(qū)寫入:
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
重啟開發(fā)板,開機(jī)LOGO即可完成更換。
四、關(guān)鍵說明
本方案中分區(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é)果完全一致,無需額外進(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ū)之后 |
咨詢立即獲得專屬報(bào)價(jià)
華北區(qū)負(fù)責(zé)人
華東區(qū)負(fù)責(zé)人
華南區(qū)負(fù)責(zé)人
中西區(qū)負(fù)責(zé)人
相關(guān)產(chǎn)品 >
-
OK3562J-C開發(fā)板
RK3562開發(fā)板,采用核心板+底板分體式設(shè)計(jì),CPU采用瑞芯微工業(yè)級(jí)芯片RK3562J設(shè)計(jì),RK3562J是瑞芯微專為工業(yè)自動(dòng)化及消費(fèi)類電子設(shè)備打造的一款高性能、低功耗國產(chǎn)化應(yīng)用處理器,集成了4個(gè)ARM Cortex-A53高性能核,主頻高達(dá)1.8GHz。RK3562核心板采用3組80Pin板對(duì)板連接器,可插拔式設(shè)計(jì)便于產(chǎn)品的安裝與維護(hù)。 了解詳情
-
FET3562J-C核心板
RK3562核心板,采用高性能低功耗工業(yè)級(jí)芯片RK3562J設(shè)計(jì),RK3562J是瑞芯微專為工業(yè)自動(dòng)化及消費(fèi)類電子設(shè)備打造的一款高性能、低功耗國產(chǎn)化應(yīng)用處理器,集成了4個(gè)ARM Cortex-A53高性能核,主頻高達(dá)1.8GHz。RK3562核心板采用3組80Pin板對(duì)板連接器,可插拔式設(shè)計(jì)便于產(chǎn)品的安裝與維護(hù)。 了解詳情

