开发板是imx8M mini,我们自己做的板子,使用官方镜像yocto 4.14.98,OV5640 mipi摄像头,验证及其测试:
root@imx8mmevk:~# uname -a
Linux imx8mmevk 4.14.98-imx_4.14.98_2.0.0_ga+g5d6cbea #1 SMP PREEMPT Thu Dec 12 08:23:58 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux
我这里用的是I2C4的接口,所以设备树修改arch/arm64/boot/dts/freescale/fsl-imx8mm-evk.dts
&i2c4 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c4>;
status = "okay";
ov5640_mipi: ov5640_mipi@3c {
compatible = "ovti,ov5640_mipi";
reg = <0x3c>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_csi_pwn>, <&pinctrl_csi_rst>;
clocks = <&clk IMX8MM_CLK_CLKO1_DIV>;
clock-names = "csi_mclk";
assigned-clocks = <&clk IMX8MM_CLK_CLKO1_SRC>,
<&clk IMX8MM_CLK_CLKO1_DIV>;
assigned-clock-parents = <&clk IMX8MM_CLK_24M>;
assigned-clock-rates = <0>, <24000000>;
csi_id = <0>;
pwn-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
// rst-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
mclk = <24000000>;
mclk_source = <0>;
port {
ov5640_mipi1_ep: endpoint {
remote-endpoint = <&mipi1_sensor_ep>;
};
};
};
};
I2C4、PWN、res等等引脚有占用,请把他们注释掉即可,内核默认是增加这个驱动的
│ Symbol: MXC_CAMERA_OV5640_MIPI_V2 [=y] │
│ Type : tristate │
│ Prompt: OmniVision ov5640 camera support using mipi │
│ Location: │
│ -> Device Drivers │
│ -> Multimedia support (MEDIA_SUPPORT [=y]) │
│ -> V4L platform devices (V4L_PLATFORM_DRIVERS [=y]) │
│ -> MXC Camera/V4L2 PRP Features support
驱动不用修改,路径drivers/media/platform/mxc/capture/ov5640_mipi_v2.c。
编译烧写开机,查看设备,可以发现如下信息,DOVDD等等找不到,应该是从imx6上移植过来的,imx8上这些引脚都已经用电路接好,不需要用程序控制,当然你也可以从设备树添加这些,不过没什么意义。我就把res-gpios添加,后来又加上没什么效果。上边设备树可以看到,我注释掉了。
root@imx8mmevk:~# dmesg |grep 5640
[ 1.915242] ov5640_mipi 3-003c: No sensor reset pin available
[ 1.921033] ov5640_mipi 3-003c: 3-003c supply DOVDD not found, using dummy regulator
[ 1.928836] ov5640_mipi 3-003c: 3-003c supply DVDD not found, using dummy regulator
[ 1.936552] ov5640_mipi 3-003c: 3-003c supply AVDD not found, using dummy regulator
[ 3.103770] mxc_mipi-csi 32e30000.mipi_csi: Registered sensor subdevice: ov5640_mipi 3-003c
[ 3.112716] ov5640_mipi 3-003c: Camera is found
root@imx8mmevk:~#
查看摄像头功能和信息,是vide0,YUYV格式
root@imx8mmevk:~# v4l2-ctl -D -d /dev/video0 --list-formats-ext
Driver Info (not using libv4l2):[ 200.736512] ov5640_mipi 3-003c: Please assign pixel format, width and height
Driver name : mx6s-csi
Card type : i.MX6S_CSI
Bus info : platform:32e20000.csi1_bridge
Driver version: 4.14.98
Capabilities : 0x84200001
Video Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 720x480
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 2592x1944
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 0x0
使用官方的指令测试,是可以显示到界面的,此时界面上有图像,没有什么问题哦。
root@imx8mmevk:~# gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-1920,height=1080 ! waylandsink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
[ 291.739794] ov5640_mipi 3-003c: s_stream: 1
然后我用自己写的V4L2程序采集,这里默认是采集的是YUYV图像,640*480,保存成 test-mmap.yuv格式,当然也可以让他自动转换成RGB显示在屏幕上,不过我还没有做。
root@imx8mmevk:~# ./wx
capabilities: 84200001
driver: mx6s-csi
card: i.MX6S_CSI
bus_info: platform:32e20000.csi1_bridge
version: 4.14.98
we are here11
{ pixelformat = 'YUYV', description = 'YUYV 4:2:2' }
we are here22
************** main, line = 139
we are here33
we are here44
we are here55
cjf__1
[ 463.023861] ov5640_mipi 3-003c: s_stream: 1
buf.index dq is 0,
[ 463.204929] ov5640_mipi 3-003c: s_stream: 0
root@imx8mmevk:~# ls -l
-rwxrwxrwx 1 root root 614400 Feb 20 20:31 test-mmap.yuv
-rwxrwxrwx 1 root root 23416 Feb 20 20:28 wx
root@imx8mmevk:~#
然后把文件拷贝出来,使用yuv工具打开查看,图像显示正常!希望对你们有帮助,谢谢!
ここにコメントを追加するには、ご登録いただく必要があります。 ご登録済みの場合は、ログインしてください。 ご登録がまだの場合は、ご登録後にログインしてください。