本文介绍 RK 平台上已有的调试文档,总结以往处理
camera 中相关问题的步骤和方法,作为后续分析和处理 Camera 调试过程中遇到问题的参考。
目前 RK 产品的各
Android 平台中使用的 Camera Hal,分为 2 两个大版本:
- Camera Hal1 在 Android8.1 及以下版本中使用
- Camera Hal3 在 Android9.0 及以上版本中使用
本文档仅适用于 Android 平台上,Camera Hal1 及对应新框架的 Camera Sensor 驱动常见问题分析排查和处理方法。文档后面部分所说的 Hal 均指 Camera Hal1。
FAQ
1.如何查看 camera 相关版本号?
在机器的 shell 中执行以下命令:
rk3399_all:/ # getprop | grep sys_graphic.cam
2.如何打开 debug 开关抓取 LOG?
2.1 camera hal1 的 LOG 抓取
抓取 camera hal1 不同等级 LOG 命令;
setprop sys_graphic.cam_trace 1, 可以设置(0-3)。You can set (0-3).
按照不同 Android 版本,抓取 LOG 的步骤分别如下:
Android6.0 抓取 LOG 步骤:
sync
stop
media
logcat -c
start media
logcat | grep CameraHal
......
2.2 isp
控制器驱动相关 LOG 抓取
通过如下命令打开 debug 开关:
echo 3 > /sys/module/camsys_drv/parameters/camsys_debug
或者修改
SDK/
kernel/
drivers/media/
video/rk_camsys/camsys_drv.c 中
unsigned int camsys_debug = 3;
2.3 cif 控制器驱动相关 LOG 抓取
通过如下命令打开 debug 开关:
echo 3 >/sys/module/rk30_camera_o
NEFrame/parameters/debug
或者修改 SDK/kernel/drivers/media/video\rk30_camera_oneframe.c 中
static int debug = 3;
2.4 HAL 层 camera 驱动相关 LOG 抓取
通过如下方式打开 debug 开关:以
OV8858 为例:
SDK/ hardware/rockchip/camera/SiliconImage/isi/drv/ OV8858/source/OV8858_
mipi.c 中
1、使用 TRACE( OV8858_ERROR,"some log"); 来打印新增的 log 信息,例如:
TRACE( OV8858_ERROR, "%s: Can't allocate OV8858 context\n", __FUNCTION__ );
2、将部分或所有的 TRACER 都修改为 ERROR,可打印出对应 log 等级或所有的 log 信息,修改方法参考如下:
2.5 kernel 层 camera 驱动相关 LOG 抓取
通过如下命令打开驱动信息的 debug 开关:以
GC2145 为例
echo 3 > /sys/module/rk_camera/parameters/camera_debug
echo 3 > /sys/module/generic_sensor/parameters/debug
echo 3 > /sys/module/gc2145/parameters/debug
或者修改对应代码位置为:
SDK/kernel/drivers/
SOC/rockchip/rk_camera.c 中 static int camera_debug = 3;
static int camera_debug = 3; in SDK/kernel/drivers/soc/rockchip/rk_camera.c
SDK/kernel/drivers/media/video/generic_sensor.c 中 static int debug = 3;
static int debug = 3; in SDK/kernel/drivers/media/video/generic_sensor.c
SDK/kernel/drivers/media/video/gc2145.c 中 static int debug = 3;
static int debug = 3; in SDK/kernel/drivers/media/video/gc2145.c
3.camera 的 HAL 层驱动和 kernel 层驱动区别
Android8.1 及以下版本中包含两套 camera sensor 驱动。
一套驱动位于:SDK/ hardware/rockchip/camera/SiliconImage/isi/drv,称为 HAL 层驱动;
另外一套位于:SDK/ kernel/drivers/media/video,称为 kernel 层驱动。
两套驱动的区别是:
- HAL 层驱动使用的是 ISP 控制器接收和处理 camera sensor 数据;
- Kernel 层驱动使用的是 CIF 控制器接收和处理 camera sensor 数据;
目前包含 ISP 控制器的主控型号有:
RK3326、
rk3368、
RK3288、RK3399、
RK3399PRO。
更多详细内容请下载附件查看