pantherx2 armbian librga-rockchip librga.so 编译安装方法

librga-rockchip编译安装指南

pantherx2 armbian librga-rockchip librga.so 编译安装方法

librga

RGA (Raster Graphic Acceleration Unit)是一个独立的2D硬件加速器,可用于加速点/线绘制,执行图像缩放、旋转、bitBlt、alpha混合等常见的2D图形操作。本仓库代码实现了RGA用户空间驱动,并提供了一系列2D图形操作API。

版本说明

RGA API 版本: 1.10.3

适用芯片平台

Rockchip RK3066 | RK3188 | RK2926 | RK2928 | RK3026 | RK3028 | RK3128 | Sofia3gr | RK3288 | RK3288w | RK3190 | RK1108 | RK3368 | RK3326 | RK3228 | RK3228H | RK3326 | RK1808 | RV1126 | RV1109 | RK3399 | RK3399pro | RK3566 | RK3568 | RK3588 | RK3326S | RV1106 | RV1103 | RK3528 | RK3562 | RK3576 | RK3506 | RV1103B

克隆下载源码

源码地址:https://github.com/tsukumijima/librga-rockchip

cd ~
git clone https://github.com/tsukumijima/librga-rockchip.git
cd librga-rockchip
nano toolchains/toolchain_linux.cmake

修改toolchain_linux.cmake如下

#SET(TOOLCHAIN_HOME "/home/yqw/workspace/linux/common/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu")
#SET(TOOLCHAIN_NAME "aarch64-rockchip1031-linux-gnu")


SET(TOOLCHAIN_HOME "/usr")
SET(TOOLCHAIN_NAME "aarch64-linux-gnu")

# this is required
#SET(CMAKE_SYSTEM_NAME Linux)

# specify the cross compiler
SET(CMAKE_C_COMPILER ${TOOLCHAIN_HOME}/bin/${TOOLCHAIN_NAME}-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_HOME}/bin/${TOOLCHAIN_NAME}-g++)

# where is the target environment
SET(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 directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
  • 说明:这一步是修改交叉编译工具的主目录和文件名,可以用find / -name gnu-gcc 查找到。

生成make文件

$ chmod +x ./cmake-linux.sh
$ ./cmake-linux.sh

生成编译目录build/build_linux,进入该目录编译

cd build/build_linux
make -j4
make install
[ 66%] Built target rga-object
[ 70%] Built target rga-static
[ 75%] Built target rga
[ 87%] Built target utils_obj
[100%] Built target rgaImDemo
Install the project...
-- Install configuration: "Release"
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/lib/librga.so
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/im2d_version.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/im2d_type.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/im2d_buffer.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/im2d_common.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/im2d_single.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/im2d_task.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/im2d_mpi.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/im2d_expand.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/im2d.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/rga.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/RgaUtils.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/im2d.hpp
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/drmrga.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/RgaApi.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/RockchipRga.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/RgaSingleton.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/RgaMutex.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/include/GrallocOps.h
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/lib/librga.a
-- Up-to-date: /root/librga-rockchip/build/build_linux/install/bin/rgaImDemo

拷贝lib文件到/usr/lib下

cp /root/librga-rockchip/build/build_linux/install/lib/librga.a /usr/lib
cp /root/librga-rockchip/build/build_linux/install/lib/librga.so /usr/lib

rgaImDemo

rgaImDemo是demo应用,用-h查看帮助使用。如查看版本号

bin/rgaImDemo --querystring version

Start selecting mode 0
im2d querystring ..
RGA demo mode = 0x0

RGA vendor            : Rockchip Electronics Co.,Ltd.
RGA_api version       : v1.10.3_[2]
RGA version           : RGA_2_Enhance
Max input             : 8192x8192
Max output            : 4096x4096
Byte stride           : 4 byte
Scale limit           : 0.0625 ~ 16
Input support 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 YUV400
output support format : RGBA/ARGB_8888 RGB_888 RGB_565 ARGB_4444 ARGB_5551 RGBA_4444 RGBA_5551 YUV420_sp_8bit YUV420_p_8bit YUV422_sp_8bit YUV422_p_8bit YUYV420 YUYV422 YUV400 Y4
RGA feature           : color_fill color_palette ROP quantize src1_r2y_csc dst_full_csc
expected performance  : max 2 pixel/cycle
内容概要:本文围绕六自由度机械臂的人工神经网络(ANN)设计展开,重点研究了正向与逆向运动学求解、正向动力学控制以及基于拉格朗日-欧拉法推导逆向动力学方程,并通过Matlab代码实现相关算法。文章结合理论推导与仿真实践,利用人工神经网络对复杂的非线性关系进行建模与逼近,提升机械臂运动控制的精度与效率。同时涵盖了路径规划中的RRT算法与B样条优化方法,形成从运动学到动力学再到轨迹优化的完整技术链条。; 适合人群:具备一定机器人学、自动控制理论基础,熟悉Matlab编程,从事智能控制、机器人控制、运动学六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)建模等相关方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握机械臂正/逆运动学的数学建模与ANN求解方法;②理解拉格朗日-欧拉法在动力学建模中的应用;③实现基于神经网络的动力学补偿与高精度轨迹跟踪控制;④结合RRT与B样条完成平滑路径规划与优化。; 阅读建议:建议读者结合Matlab代码动手实践,先从运动学建模入手,逐步深入动力学分析与神经网络训练,注重理论推导与仿真实验的结合,以充分理解机械臂控制系统的设计流程与优化策略。
cat@lubancat:~$ modprobe dw_hdmi cat@lubancat:~$ dmesg | grep hdmi [ 4.594139] phy phy-fed60000.hdmiphy.7: Looking up phy-supply from device tree [ 4.594143] phy phy-fed60000.hdmiphy.7: Looking up phy-supply property in node /hdmiphy@fed60000 failed [ 4.594602] rockchip-hdptx-phy-hdmi fed60000.hdmiphy: hdptx phy init success [ 4.627922] dwhdmi-rockchip fde80000.hdmi: registered ddc I2C bus driver [ 4.628262] rockchip-drm display-subsystem: bound fde80000.hdmi (ops 0xffffffc0095dca00) [ 4.628772] rockchip-drm display-subsystem: route-hdmi0: failed to get logo,offset [ 5.104482] input: rockchip-hdmi0 rockchip-hdmi0 as /devices/platform/hdmi0-sound/sound/card1/input3 [ 5.208184] rockchip-dmc dmc: hdmirx_rate = 1560000000 [ 5.263181] #1: rockchip-hdmi0 [ 67.158447] dwhdmi-rockchip fde80000.hdmi: use tmds mode [ 67.159181] rockchip-hdptx-phy-hdmi fed60000.hdmiphy: hdptx_ropll_cmn_config bus_width:16a8c8 rate:1485000 [ 67.159476] rockchip-hdptx-phy-hdmi fed60000.hdmiphy: hdptx phy pll locked! [ 67.159534] dwhdmi-rockchip fde80000.hdmi: final tmdsclk = 148500000 [ 67.160292] dwhdmi-rockchip fde80000.hdmi: don't use dsc mode [ 67.160298] dwhdmi-rockchip fde80000.hdmi: dw hdmi qp use tmds mode [ 67.160307] rockchip-hdptx-phy-hdmi fed60000.hdmiphy: bus_width:0x16a8c8,bit_rate:1485000 [ 67.160512] rockchip-hdptx-phy-hdmi fed60000.hdmiphy: hdptx phy lane locked! [ 67.176795] dwhdmi-rockchip fde80000.hdmi: use tmds mode [ 67.227987] dwhdmi-rockchip fde80000.hdmi: use tmds mode [ 67.274664] dwhdmi-rockchip fde80000.hdmi: use tmds mode
07-19
### 3.1 检查内核配置是否启用HDMI相关模块 在加载 `dw_hdmi` 模块后,若HDMI设备无法正常工作,首先应确保内核配置中已正确启用HDMI相关模块。以下配置项是必须包含的: ```plaintext CONFIG_DRM=y CONFIG_DRM_ROCKCHIP=y CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_DRM_DW_HDMI_I2S_AUDIO=y CONFIG_DRM_DW_HDMI_CEC=y ``` 这些配置确保了DRM框架、Rockchip平台支持、HDMI控制器、音频支持以及CEC功能的启用。如果缺少其中任何一项,HDMI模块可能无法正常加载或运行 [^2]。 ### 3.2 确认模块加载顺序与设备树配置 在模块加载过程中,设备树(DTS)配置必须与驱动逻辑一致。检查 `dw_hdmi-rockchip.c` 文件中的模块加载和绑定逻辑,确保其与设备树节点匹配。例如: ```c static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, void *data) { struct dw_hdmi *hdmi = dev_get_drvdata(dev); hdmi->phy_ops = &dw_hdmi_rockchip_phy_ops; return 0; } ``` 此外,确保设备树中 `&hdmi0` 节点的 `reg` 地址未与其他模块冲突。例如: ```dts &hdmi0 { status = "okay"; reg = <0xfed60000 0x2000>; }; ``` 内存冲突可能导致模块加载失败或HDMI无法初始化 [^3]。 ### 3.3 检查中断注册与休眠回调函数 在某些情况下,HDMI无法正常工作可能与中断注册或休眠处理有关。例如,CEC功能依赖于中断服务,应在 `dw_hdmi-rockchip.c` 中正确注册。同时,注意在系统进入休眠状态时调用的是 `dw_hdmi_rockchip_suspend` 还是 `dw_hdmi_rockchip_shutdown` 函数。这两个函数的实现逻辑不同,可能影响HDMI状态的保存与恢复 [^1]。 ### 3.4 调试HDMI PHY初始化 HDMI PHY层负责物理信号的传输,若初始化失败,将导致HDMI无法输出。在驱动中检查 `phy-rockchip-inno-hdmi-phy.c` 的初始化逻辑,特别是时钟配置、电源管理以及数据通道锁定状态。日志中出现 `hdptx phy lane locked!` 表示数据通道未能正确锁定,可能是时钟不稳定或硬件配置错误 [^3]。 ### 3.5 检查HDMI音频与CEC功能依赖 如果HDMI音频或CEC功能未能正常工作,可能是因为相关子模块未正确加载。检查以下模块是否存在于内核中: ```bash lsmod | grep hdmi ``` 确保 `dw-hdmi-i2s-audio` 和 `dw-hdmi-cec` 模块已加载。若未加载,可手动加载: ```bash modprobe dw-hdmi-i2s-audio modprobe dw-hdmi-cec ``` 并检查 `dmesg` 输出是否有错误信息 [^2]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值