项目场景:
在眺望电子TW-IMX6DL-EVM开发板上出厂内核镜像默认未配置USB摄像头驱动,需要在内核中添加UVC驱动。。
编译环境及开发包: 主机:ubuntu18.04
交叉编译器:arm-linux-gnueabihf-gcc
开发板:TW-IMX6DL-EVM
Linux:Linux-4.1.15
注意:本文章的所有命令涉及到的路径均为眺望电子官方环境路径,需根据自身实际环境改变。本文所演示的平台来自于眺望电子 iMX6 ARM嵌入式平台,这是一个基于NXP iMX6 ARM处理器,支持单核/双核Cortex-A9的核心板。
解决方案:
1.摄像头驱动配置
USB摄像头驱动目录为drivers/media/usb/uvc。运行内核源码编译脚本build.sh,在弹出的menuconfig界面作如图1所示的配置,然后保存退出编译内核。
将生成的固件烧写进开发板并重启,可使用uname -a查看固件生成的时间是否正确,以确保烧写成功。
2.查看usb摄像头
使用lsusb查看当前系统中的usb设备:
root@imx6dlsabresd:~# lsusb
Bus 001 Device 003: ID 0bda:8179
Bus 001 Device 005: ID 05a3:9230 #摄像头
Bus 001 Device 002: ID 0424:2514
Bus 001 Device 001: ID 1d6b:0002
如果usb uvc驱动加载成功的话,当插入usb摄像头时,系统会打印类似如下:
root@imx6dlsabresd:~# usb 1-1.2: new high-speed USB device number 4 using ci_hdrc
uvcvideo: Found UVC 1.00 device USB 2.0 Camera (05a3:9230)
input: USB 2.0 Camera as /devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.2/1-1.2:1.0/input/input1
usbcore: registered new interface driver uvcvideo
USB Video Class driver (1.1.1)
3.测试
使用v4l2.usb.tar.bz2测试程序进行测试。压缩包在目录 /软件工具/v4l2.usb.tar.bz2,将压缩包拷贝到虚拟机中解压,在该文件夹中执行make进行编译。
## 解压该压缩包并进入
twdz@ubuntu:~/ tar -xf v4l2.usb.tar.bz2
twdz@ubuntu:~/ cd v4l2.usb
## source交叉编译链的环境变量
twdz@ubuntu:~/ source /opt/fsl-imx-fb/4.1.15-2.0.1/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
## 执行make进行编译
twdz@ubuntu: ~/v4l2.usb$ make
rm -f mxc_v4l2_tvin *.o
arm-poky-linux-gnueabi-gcc -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=/opt/fsl-imx-fb/4.1.15-2.0.1/environment-setup-cortexa9hf-neon-poky-linux-gnueabi -O2 -pipe -g -feliminate-unused-debug-types -c -o mxc_v4l2_tvin.o mxc_v4l2_tvin.c
arm-poky-linux-gnueabi-gcc -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/opt/fsl-imx-fb/4.1.15-2.0.1/environment-setup-cortexa9hf-neon-poky-linux-gnueabi -O2 -pipe -g -feliminate-unused-debug-types -o mxc_v4l2_tvin mxc_v4l2_tvin.o
查看/dev目录下新增的video设备,在此是/dev/video2
root@imx6dlsabresd:~# ls /dev/video*
将生成的mxc_v4l2_tvin二进制文件复制进开发板。执行如下命令测试:
root@imx6dlsabresd:~# ./mxc_v4l2_tvin -ow 800 -oh 480 -x 2 &
注:-ow设置宽度,-oh设置高度,-x 2指设置显示设备/dev/video2
如果新增设备为/dev/video3,则应该改为
root@imx6dlsabresd:~# ./mxc_v4l2_tvin -ow 800 -oh 480 -x 3 &