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

3.3編譯 librga.so 庫
進入 librga 源碼的toolchains目錄,編輯toolchain_linux.cmake文件,修改工具鏈名稱和路徑(根據實際安裝的交叉編譯器調整):
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 源碼根目錄執行編譯腳本:
./cmake-linux.sh

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

將 lib/ 中的庫文件復制到板卡 /usr/lib/aarch64-linux-gnu/
將 bin/rgaImDemo 復制到板卡 /bin/
3.5驗證 API 版本
在板卡上運行,確認 API 版本已更新:
rgaImDemo--querystring
輸出中可查看 RGA_api version 和功能支持列表,確認更新成功。
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工具進行圖像拷貝測試,驗證 RGA 功能正常:
rgaImDemo -w6--copy
該命令會執行 6 次拷貝操作,并輸出每次耗時,可用于驗證驅動與庫是否正常工作。若輸出類似 “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
五、總結
1.版本兼容:務必確認驅動與 API 版本匹配,避免接口不一致導致異常。
2.環境一致:編譯工具鏈與目標系統架構需對應(如 aarch64),編譯過程中若出現 “工具鏈未找到”“頭文件缺失” 等報錯,優先檢查交叉編譯器路徑配置和依賴庫安裝;
3.備份原文件:建議在更新前備份原驅動、API 庫和內核鏡像,若更新失敗可快速回滾到穩定版本。替換驅動文件時,需確保覆蓋所有相關文件,避免部分舊文件殘留導致功能異常;
4.實測驗證:更新后務必進行實際圖像處理測試,確保功能與性能符合預期。
通過以上步驟,相信你應該能順利完成 RK3588 平臺RGA驅動與API的版本升級。更新后不僅可獲得官方的性能優化與bug修復,還能支持更多圖像格式與處理特性。
Tips :溫馨提示
本文所述操作基于特定內核與系統環境,實際執行時請根據自身 SDK 版本與硬件平臺適當調整。如有疑問,歡迎在留言交流或與我們聯系獲得技術支持。
廣州眺望電子科技有限公司專注于嵌入式處理器模組的研發與應用,提供從硬件設計到驅動開發,系統解決方案的全流程技術支持。歡迎關注我們的公眾號,獲取更多嵌入式項目開發實戰經驗!
-
驅動
+關注
關注
12文章
1932瀏覽量
88271 -
API
+關注
關注
2文章
2198瀏覽量
66346 -
RK3588
+關注
關注
8文章
503瀏覽量
7101
發布評論請先 登錄
瑞芯微RK3588開發板RK3588 EVB和RK3588S EVB解讀
RK3588-MIPI屏幕調試筆記:RK3588-MIPI-DSI之LCD上電初始化時序
基于RK3588芯片方案開發ARM PC項目
求一種基于RK3588平臺的高端游戲掌機產品解決方案
RK3588 SDK編譯與固件燒寫步驟
RK3588 Android 12.0 SDK編譯步驟分享
基于RK3588平臺的會議平板即將發布
rk3588和rk3588s的區別
RK3588與3588s的區別
RK3588系列有多少型號?
Banana Pi BPI-W3 RK3588平臺驅動調試篇 [ PCIE篇二 ] - PCIE的開發指南

技術筆記 | RK3588平臺RGA驅動與API版本升級指南
評論