步骤
- 增加驱动adv7280m.c文件到kernel/driver/media/i2c
- 修改kernel/driver/media/i2c/Makefile
obj-$(CONFIG_VIDEO_ADV7180) += adv7280m.o
- 设备树增加相机的设置,见附录
第一次编译,设备树报错,注释掉13.dts里面的第2行
//#include "rk3588-firefly-itx-cam-8ms1m.dtsi"
启动后dmesg没有发现加载了驱动adv7280m
- config增加配置CONFIG_VIDEO_ADV7280=y
Kernel-5.10/arch/arm64/configs/firefly_defconfig里面增加配置CONFIG_VIDEO_ADV7180=y
第二次编译,仅仅刷新boot.img。
dmesg | grep adv
驱动已经成功运行。
su
v4l2-ctl --list-devices检查又出现问题
:/ # v4l2-ctl --list-devices
rk_hdmirx (fdee0000.hdmirx-controller):
/dev/video11
Failed to open /dev/video0: No such device
- (额外的)顺手关闭hdmi-in
&hdmiin_sound{
status = "disabled";
};
&hdmirx_ctrler {
status = "disabled";
};
- 使用虚拟相机驱动对比测试
上面的driver/media/i2c/Makefile
obj-y += rd-virtual-camera.o
设备树13.dts中
//compatible = "adi,adv7280-m";
compatible = "rockchip,virtual-camera";
第三次编译,虚拟相机测试正常
:/ # v4l2-ctl --list-devices
rkcif (platform:rkcif-mipi-lvds2):
/dev/video0
:/ # dmesg | grep virtual
[ 10.029343] virtual-camera 3-0021: get dts res: 0x0, select best res: 1920x1080
[ 10.029350] virtual-camera 3-0021: get dts fmt: 0x0, select default fmt: 0x2006
[ 10.029369] virtual-camera 3-0021: link freq ctrl->val: 11 freq: 500000000
- Failed to open /dev/video0: No such device
此前在linux上也是遇到此问题,后来是解决掉的,怎么又出现了。
adv7280->subdev.entity.function = MEDIA_ENT_F_CAM_SENSOR; //MEDIA_ENT_F_ATV_DECODER;
把MEDIA_ENT_F_ATV_DECODER改回MEDIA_ENT_F_CAM_SENSOR
第四次编译, video0成功出现
- camera3_profiles.xml
adb root
adb remount
adb pull /vendor/etc/camera/camera3_profiles.xml到本地修改后push回去
adb logcat发现provider服务一直报错
10-11 15:44:03.820 1 1 I init : starting service 'vendor.camera-provider-2-4'...
10-11 15:44:03.823 1 1 I init : Created socket '/dev/socket/camera_tool', mode 666, user 1047, group 1006
10-11 15:44:03.835 7559 7559 W libprocessgroup: Failed to open /dev/stune/top-app/tasks: No such file or directory
10-11 15:44:03.835 7559 7559 W libprocessgroup: Failed to apply MaxPerformance task profile: No such file or directory
10-11 15:43:55.464 7559 7559 I android.hardware.camera.provider@2.4-service: CameraProvider@2.4 legacy service is starting.
10-11 15:43:55.479 7559 7559 W mpp_log : warning: use new logx function
10-11 15:43:55.479 7559 7559 I vpu_api : dlopen vpu lib /vendor/lib/librk_vpuapi.so success
10-11 15:43:55.492 7559 7559 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 7559 (android.hardwar), pid 7559 (android.hardwar)
10-11 15:43:55.509 7562 7562 I crash_dump32: obtaining output fd from tombstoned, type: kDebuggerdTombstoneProto
10-11 15:43:55.509 387 387 I tombstoned: received crash request for pid 7559
10-11 15:43:55.510 7562 7562 I crash_dump32: performing dump of process 7559 (target tid = 7559)
10-11 15:43:55.513 7562 7562 E DEBUG : failed to read process info: failed to open /proc/7559


572

被折叠的 条评论
为什么被折叠?



