加载驱动之后无法在/dev/下生成vedio0
创始人
2025-05-31 07:49:10

前言

环境介绍:

1.编译环境

Ubuntu 18.04.5 LTS

2.SDK

orangepi Linux 5.4 SDK

3.uboot

v2020.04

4.gcc

gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf

5.单板

orangepi pc plus


一、问题

继上一篇成功加载gc2035.ko文件之后,理论上就会在/dev/下生成vedio0文件,但实际是并没有正常。

二、问题分析

通过添加打印信息确定gc2035_probe函数已经正常执行完成,gc2035.ko所需要的依赖项也成功加载。能想到的问题如下:
1、根文件系统太简陋,我是通过busybox编译生成的,可能有依赖项未添加;
2、内核还有其他依赖项未添加;

三、问题排查

3.1 根文件系统验证

既然busybox不行就改用成熟的系统,幸好之前通过通过orangepi SDK生成了Debian,直接nfs启动即可,但最终还是没有生成vedio0文件;

3.2 内核验证

把板子emmc自带的内核替换我生成的内核,上电验证发现还是不行

四、曙光

验证了两个方法还是不行,就在一筹莫展没有头绪的时候,想到板子自带的emmc文件系统是不是可以。
上电emmc的文件系统,没有加载gc2035.ko,发现默认/dev/下面是有vedio0文件的,通过lsmod发现默认加载了好多.ko,其中默认的ov5640也有。这里试过编译内核的时候把ov5640驱动去掉也会有ov5640的驱动加载。这就奇怪了,内核都去掉了,为啥还能加载,难道根文件系统里面有?查找了默认的根文件系统,发现在下面文件夹里面存放着很多驱动的.ko文件,其中就包括了ov5640.ko。

/lib/modules/5.4.65-sunxi/kernel/drivers

通过lsmod查看加载的驱动文件,有比较多是跟视频相关的,如下有删减。

ov5640                 28672  0
sun6i_csi              32768  0
sunxi_cedrus           32768  0
v4l2_fwnode            24576  2 ov5640,sun6i_csi
v4l2_mem2mem           20480  1 sunxi_cedrusvideobuf2_dma_contig    20480  2 sunxi_cedrus,sun6i_csivideobuf2_memops       20480  1 videobuf2_dma_contig
videobuf2_v4l2         20480  3 sunxi_cedrus,sun6i_csi,v4l2_mem2mem
videobuf2_common       36864  4 sunxi_cedrus,sun6i_csi,v4l2_mem2mem,videobuf2_v4l2
videodev              151552  7 ov5640,v4l2_fwnode,sunxi_cedrus,videobuf2_common,sun6i_csi,v4l2_mem2mem,videobuf2_v4l2
mc                     36864  7 ov5640,sunxi_cedrus,videobuf2_common,videodev,sun6i_csi,v4l2_mem2mem,videobuf2_v4l2

对比发现少了videobuf2这类驱动文件,查找kernel源文件,发现这类驱动文件在下面这路径,并且没有编译到内核中。

/home/zfeng/orangepi/orangepi-build/kernel/orange-pi-5.4/drivers/media/common/videobuf2/

通过分析依赖关系,按照如下顺序重新加载驱动文件之后成功生成vedio0文件。

cd /lib/modules/5.4.65-sunxi
modprobe mc.ko
modprobe videodev.ko
modprobe videobuf2_common.ko
modprobe videobuf2_v4l2.ko
modprobe videobuf2_memops.ko
modprobe videobuf2_dma_contig.ko
modprobe v4l2-fwnode.ko
modprobe v4l2-mem2mem.ko
modprobe videobuf-core.ko
modprobe sun6i-csi.ko
modprobe gc2035.ko

至于kernel配置默认添加videobuf2的配置后面再说,先这样用着。

相关内容

热门资讯

美股收盘:三大指数集体收涨 纳... 财联社12月20日讯(编辑 夏军雄)美东时间周五,在甲骨文和英伟达走强的带动下,人工智能(AI)概念...
贵阳有轨电车T2线主体硬件基本... 转自:贵州日报 本报讯(记者 冷赛楠)近日,“天眼问政”栏目收到网友留言:贵阳有轨电车T2线从比亚迪...
大山“用水三变” 转自:贵州日报 “以前靠山上小水源灌田,纯靠天吃饭。现在水龙头就在边上,要浇地直接打开就行。”69岁...
危房抢险施工公告 转自:贵州日报 贵阳市云岩区鸿雁巷17、19、20号及弯弓街6号住户:为消除贵阳市云岩区鸿雁巷17、...
“请3休8”带旺元旦假期云南旅...   本报讯 首席记者李思凡报道 “请3休8”带旺元旦游。12月19日,飞猪发布的数据显示,2026年...