前言:
在 Rockchip RK35xx等平臺開發(fā)中,RGA(2D 圖形加速單元)對圖像編解碼、圖形渲染等核心功能的效率與穩(wěn)定至關(guān)重要。隨著官方持續(xù)優(yōu)化,適時更新RGA驅(qū)動與API版本,能帶來更好的性能、更豐富的功能支持以及更穩(wěn)定的運行表現(xiàn)。
本文將以 RK3588 為例,詳細(xì)介紹如何從驅(qū)動到應(yīng)用層全面升級RGA版本,并提供實測驗證方法,干貨滿滿,建議收藏備用~
一、開發(fā)環(huán)境準(zhǔn)備
在開始更新操作前,需確保開發(fā)環(huán)境一致,避免因環(huán)境不兼容導(dǎo)致更新失?。?/p>
?系統(tǒng)版本:Ubuntu 20.04(主機(jī)端 + 板卡端)
?內(nèi)核版本:5.10
?工具依賴:交叉編譯器(如 gcc-arm-8.2-2018.08-x86_64-aarch64-linux-gnu)、cmake、git 等
升級目標(biāo):
獲取最新版本的 RGA 驅(qū)動與 API 庫,替換舊版本,完成編譯與部署。
二、實操步驟
2.1獲取最新驅(qū)動源碼
RK35xx 系列的RGA驅(qū)動源碼已開源在 GitHub,從 git下載 RGA 的最新驅(qū)動:
https://github.com/airockchip/librga
下載后,將驅(qū)動文件替換至 SDK 中的對應(yīng)目錄:
kernel/drivers/video/rockchip/rga3/
2.2內(nèi)核配置檢查
若尚未開啟 RGA3 支持,請在內(nèi)核配置中確認(rèn)以下選項已啟用:
CONFIG_VIDEO_ROCKCHIP_RGA=y# CONFIG_ROCKCHIP_RGA is not setCONFIG_ROCKCHIP_MULTI_RGA=yCONFIG_ROCKCHIP_RGA_ASYNC=y# CONFIG_ROCKCHIP_RGA_PROC_FS is not setCONFIG_ROCKCHIP_RGA_DEBUG_FS=yCONFIG_ROCKCHIP_RGA_DEBUGGER=y
2.3重新驗證
執(zhí)行內(nèi)核編譯命令,更新后可在板卡上執(zhí)行以下命令確認(rèn)版本,若輸出顯示為新下載的驅(qū)動版本號,則說明驅(qū)動更新成功。
cat/sys/kernel/debug/rkrga/driver_versionRGAmulticore Device Driver: v1.2.23
三、RGA API 庫更新部署
API 庫是開發(fā)者調(diào)用 RGA 功能的接口,需與驅(qū)動版本兼容,否則會出現(xiàn)調(diào)用失敗。更新流程如下:
3.1獲取最新 librga 源碼
同樣從 GitHub 下載最新版本:
https://github.com/airockchip/librga
3.2檢查版本兼容性
在下載的 librga 源碼根目錄中,查看README.md文件,確認(rèn)該版本 API 庫支持的驅(qū)動版本范圍,確認(rèn) API 庫與當(dāng)前內(nèi)核驅(qū)動版本兼容。

3.3編譯 librga.so 庫
進(jìn)入 librga 源碼的toolchains目錄,編輯toolchain_linux.cmake文件,修改工具鏈名稱和路徑(根據(jù)實際安裝的交叉編譯器調(diào)整):
SET(TOOLCHAIN_NAME"aarch64-linux-gnu")SET(TOOLCHAIN_HOME"/home/twdz/3588/gcc-arm-8.2-2018.08-x86_64-aarch64-linux-gnu")
# this is required#SET(CMAKE_SYSTEM_NAME Linux)
# specify the cross compilerSET(CMAKE_C_COMPILER${TOOLCHAIN_HOME}/bin/${TOOLCHAIN_NAME}-gcc)SET(CMAKE_CXX_COMPILER${TOOLCHAIN_HOME}/bin/${TOOLCHAIN_NAME}-g++)
# where is the target environmentSET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_HOME})
# search for programs in the build host directories (not necessary)SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)# for libraries and headers in the target directoriesSET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
3.4編譯與部署
在 librga 源碼根目錄執(zhí)行編譯腳本:
./cmake-linux.sh

編譯完成后,在 build/build_linux/install 目錄下獲取生成的文件:

將 lib/ 中的庫文件復(fù)制到板卡 /usr/lib/aarch64-linux-gnu/
將 bin/rgaImDemo 復(fù)制到板卡 /bin/
3.5驗證 API 版本
在板卡上運行,確認(rèn) API 版本已更新:
rgaImDemo--querystring
輸出中可查看 RGA_api version 和功能支持列表,確認(rèn)更新成功。
root@talowe :~# rgaImDemo --querystring Start selecting mode0im2dquerystring ..RGAdemo mode =0x0
RGAvendor : Rockchip Electronics Co.,Ltd.RGA_apiversion : v1.10.3_[1]RGAversion : RGA_2_Enhance RGA_3Maxinput :8192x8192Maxoutput :8128x8128Bytestride :16byteScalelimit :0.0625~16Inputsupport format : RGBA/ARGB_8888 RGB_888 RGB_565 ARGB_4444 ARGB_5551 YUV420_sp_8bit YUV420_sp_10bit YUV420_p_8bit YUV420_p_10bit YUV422_sp_8bit YUV422_sp_10bit YUV422_p_8bit YUV422_p_10bit YUYV422 YUV400outputsupport format : RGBA/ARGB_8888 RGB_888 RGB_565 ARGB_4444 ARGB_5551 RGBA_4444 RGBA_5551 YUV420_sp_8bit YUV420_sp_10bit YUV420_p_8bit YUV422_sp_8bit YUV422_sp_10bit YUV422_p_8bit YUYV420 YUYV422 YUV400 Y4RGAfeature : color_fill color_palette ROP quantize src1_r2y_cscdst_full_cscFBC_mode blend_in_YUV BT.2020expected performance : max4pixel/cycle
四、功能測試
通過rgaImDemo工具進(jìn)行圖像拷貝測試,驗證 RGA 功能正常:
rgaImDemo -w6--copy
該命令會執(zhí)行 6 次拷貝操作,并輸出每次耗時,可用于驗證驅(qū)動與庫是否正常工作。若輸出類似 “copying .... cost time XXX us” 的日志,且最終提示 “write ok”,則說明 RGA 功能可正常使用,更新流程全部完成。
root@talowe :~# rgaImDemo -w6 --copyStartselecting mode0im2dwhile ..6time.Startselecting mode80im2dcopy ..RGAdemo mode =0x81allocbuffer from"/dev/dma_heap/system-uncached-dma32". Could not open /data/in0w1280-h720-rgba8888.bincannot open file for src channel, memset to0x11.Thisis1time in the loopcopying.... cost time675us This is2time in the loopcopying.... cost time722us This is3time in the loopcopying.... cost time762us This is4time in the loopcopying.... cost time758us This is5time in the loopcopying.... cost time720us This is6time in the loopcopying.... cost time724usopen/data/out0w1280-h720-rgba8888.bin and write ok
五、總結(jié)
1.版本兼容:務(wù)必確認(rèn)驅(qū)動與 API 版本匹配,避免接口不一致導(dǎo)致異常。
2.環(huán)境一致:編譯工具鏈與目標(biāo)系統(tǒng)架構(gòu)需對應(yīng)(如 aarch64),編譯過程中若出現(xiàn) “工具鏈未找到”“頭文件缺失” 等報錯,優(yōu)先檢查交叉編譯器路徑配置和依賴庫安裝;
3.備份原文件:建議在更新前備份原驅(qū)動、API 庫和內(nèi)核鏡像,若更新失敗可快速回滾到穩(wěn)定版本。替換驅(qū)動文件時,需確保覆蓋所有相關(guān)文件,避免部分舊文件殘留導(dǎo)致功能異常;
4.實測驗證:更新后務(wù)必進(jìn)行實際圖像處理測試,確保功能與性能符合預(yù)期。
通過以上步驟,相信你應(yīng)該能順利完成 RK3588 平臺RGA驅(qū)動與API的版本升級。更新后不僅可獲得官方的性能優(yōu)化與bug修復(fù),還能支持更多圖像格式與處理特性。
Tips :溫馨提示
本文所述操作基于特定內(nèi)核與系統(tǒng)環(huán)境,實際執(zhí)行時請根據(jù)自身 SDK 版本與硬件平臺適當(dāng)調(diào)整。如有疑問,歡迎在留言交流或與我們聯(lián)系獲得技術(shù)支持。
廣州眺望電子科技有限公司專注于嵌入式處理器模組的研發(fā)與應(yīng)用,提供從硬件設(shè)計到驅(qū)動開發(fā),系統(tǒng)解決方案的全流程技術(shù)支持。歡迎關(guān)注我們的公眾號,獲取更多嵌入式項目開發(fā)實戰(zhàn)經(jīng)驗!
-
驅(qū)動
+關(guān)注
關(guān)注
12文章
1928瀏覽量
88195 -
API
+關(guān)注
關(guān)注
2文章
2147瀏覽量
66229 -
RK3588
+關(guān)注
關(guān)注
8文章
492瀏覽量
7061
發(fā)布評論請先 登錄
瑞芯微RK3588開發(fā)板RK3588 EVB和RK3588S EVB解讀
RK3588編解碼盒子之RTL8211FS-CG光口調(diào)試
RK3588-MIPI屏幕調(diào)試筆記:RK3588-MIPI-DSI之LCD上電初始化時序
基于RK3588芯片方案開發(fā)ARM PC項目
求一種基于RK3588平臺的高端游戲掌機(jī)產(chǎn)品解決方案
RK3588 SDK編譯與固件燒寫步驟
RK3588 Android 12.0 SDK編譯步驟分享
基于RK3588平臺的會議平板即將發(fā)布
rk3588和rk3588s的區(qū)別
RK3588與3588s的區(qū)別
RK3588系列有多少型號?
Banana Pi BPI-W3 RK3588平臺驅(qū)動調(diào)試篇 [ PCIE篇二 ] - PCIE的開發(fā)指南

技術(shù)筆記 | RK3588平臺RGA驅(qū)動與API版本升級指南
評論