rk编译和移植rkaiq rkisp仓库

说明

摄像头的 3A 是指自动对焦(AF)、自动曝光(AE)和自动白平衡(AWB)这三种关键自动化技术

使用debian调试摄像头的时候发现ISP还需要应用层的配合:

alt text

然后SDK直接编译出来的debian12文件系统的这个3A库是没适配的,可能是版本不对什么的,然后这个库可能会给ISP控制器写了什么控制寄存器,会导致摄像预览问题,茄子抓拍是正常的。

步骤

参照SDK里面给的doc文档(Rockchip_Developer_Guide_Debian_CN.pdf,9.25章节)即可。

直接编译运行的话会报错:
alt text

配置下RK3576的buildroot的config即可,使用低版本的编译器即可,还需要github仓库下载需要FQ。

Rk3588的

⽐如RK3588芯⽚,可以切换使⽤低版本的GCC和GLIBC来⽣成移植到第三⽅系统。

步骤⼀:修改Buildroot配置以⽀持GCC 8

diff --git a/configs/rockchip/chips/rk3588.config
b/configs/rockchip/chips/rk3588.config
index f806813a6e..affb5e71ad 100644
--- a/configs/rockchip/chips/rk3588.config
+++ b/configs/rockchip/chips/rk3588.config
@@ -1,4 +1,4 @@
-BR2_cortex_a76_a55=y
+BR2_cortex_a72_a53=y
BR2_PACKAGE_RK3588=y
BR2_ROOTFS_OVERLAY+="board/rockchip/rk3588/fs-overlay/"
BR2_TARGET_GENERIC_HOSTNAME="rk3588"
diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
index 7556e1ece6..c917823f57 100644
--- a/package/gcc/Config.in.host
+++ b/package/gcc/Config.in.host
@@ -17,7 +17,6 @@ config BR2_GCC_VERSION_ARC
config BR2_GCC_VERSION_8_X
bool "gcc 8.x"
-   depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_9
# ARC HS48 rel 31 only supported by gcc arc fork.
depends on !BR2_archs4x_rel31
select BR2_TOOLCHAIN_GCC_AT_LEAST_8

步骤⼆:设置Buildroot配置,默认使⽤GCC 8和GLIBC 2.28进⾏编译。

buildroot#cat configs/rockchip_rk3588_glibc2.28_defconfig
#include "../rockchip_rk3588_defconfig"
BR2_GCC_VERSION_8_X=y
BR2_PACKAGE_GLIBC_2_28=y

步骤三:使⽤Buildroot进⾏相应配置的编译。
设置Buildroot环境,并编译camera-engine-rkaiq模块。

<SDK>#source buildroot/envsetup.sh rockchip_rk3588_glibc2.28
<SDK>## cd buildroot
buildroot# make camera-engine-rkaiq

编译完成后,将⽣成的⽂件(例如 output/rockchip_rk3588_glibc2.28/build/camera-enginerkaiq-1.0/camera-engine-rkaiq-1.0.tar )移植到Debian系统中。

Rk3576的

# Rk3576的
yangx@u20:~/linux2/yangx/RK3576/xxx-RK3576/buildroot$ cat configs/rockchip_rk3576_glibc2.28_defconfig
#include "../rockchip_rk3576_defconfig"
BR2_GCC_VERSION_8_X=y
BR2_PACKAGE_GLIBC_2_28=y

yangx@u20:~/linux2/yangx/RK3576/xxx-RK3576/buildroot$ git diff package/gcc/Config.in.host
diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
index 822b46dfad..d86c45b4d8 100644
--- a/package/gcc/Config.in.host
+++ b/package/gcc/Config.in.host
@@ -17,7 +17,6 @@ config BR2_GCC_VERSION_ARC

 config BR2_GCC_VERSION_8_X
        bool "gcc 8.x"
-       depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_9
        select BR2_TOOLCHAIN_GCC_AT_LEAST_8

 config BR2_GCC_VERSION_10_X

编译命令:

# 选择rockchip_rk3576_glibc2.28_defconfig配置
source buildroot/envsetup.sh

cd buildroot/
make camera-engine-rkai

编译完成后,将⽣成的⽂件/home/yangx/linux2/yangx/RK3576/xxx-RK3576/buildroot/output/rockchip_rk3576_glibc2.28/build/camera-engine-rkaiq-1.0/camera-engine-rkaiq-1.0.tar 放到到Debian系统中

运行 /usr/bin/rkaiq_3A_server 会生成:

alt text

rk_aiq_uapi2_sysctl_init success. iq:/etc/iqfiles//gc05a2_KYT-11210-V2_default.json

运行:

/etc/init.d/S40rkaiq_3A start

使用茄子程序对比 :
抓图正常,但是3A不正常。
alt text
3A正常后:
alt text

注意:重影的这些和3A配置ISP没关系,原先是黑偏绿的,现在是3A正常了。

debian系统本身自带rkaiq_3A.service,修改下即可。

systemctl status rkaiq_3A.service

结论

其实就是glic的版本对不上。buildroot的版本比较高,Debian文件系统的比较低。重新借助buildroot的环境降低下glic版本编译出来就行。

3A

三种关键算法,自动对焦、自动曝光、自动白平衡

Auto Focus
自动对焦算法,算法相关内容很多,目前视觉类对焦主要是反差对焦,计算对比度。可惜目前没法控制自动对焦。因此暂不填充内容

Auto Exposure
Auto Exposure即自动曝光,是相机根据外界光线的强弱自动调整曝光量和增益,防止曝光过度或者不足的一种机制

曝光三角形中包含光圈、曝光时间、ISO。在常见的情况下,光圈固定,仅需要考虑日间快门时间和夜间ISO。但如何界定图像是否曝光合适仍需要进行计算,如果仅以不过曝为标准,则画面整体偏暗

需要参照AE算法,配置高光不过曝优先,同时考虑WDR场景。目前对焦算法存在问题,需要近百帧来完成对焦

Auto White Balance
自动白平衡,由于人眼有颜色恒常性,将物体的颜色自动校准为真实的颜色。因此需要对画面做白平衡校准(其实还有色彩校准,先白平衡调整色温)

补充

RK的ISP开发官方文档: https://doc.embedfire.com/linux/rk356x/quick_start/zh/latest/quick_start/isp/isp.html#pc

调试的时候v4l2一直不出图,然后触摸没有调试就没有点开茄子软件(实际cheese命令就可以打开),后来调试好触摸使用茄子软件打开发现有摄像头。茄子的说明在这个文档上也有。

主要在rst脚,链路,ISP上卡住了。还是思路不清晰。

posted @ 2025-10-23 14:04  潇汀  阅读(32)  评论(0)    收藏  举报