Linux攝像頭驅動 vivid

2021-09-25 03:11:45 字數 2620 閱讀 9039

攝像頭驅動1——vivid/#more

v4l2可以支援多種裝置,它可以有以下幾種介面:

radio inte***ce(收音機介面):處理從am或fm高頻頭裝置接收來的音訊流;

這裡目的先載入vivid驅動,然後執行應用程式呼叫vivid驅動,初步體驗效果。

先在ubuntu16.04上輸入uname -a,可以得到當前ubuntu核心版本號:

linux ubuntu 4.4.0-116-generic #140-ubuntu smp mon feb 12 21:23:04 utc 2018 x86_64 x86_64 x86_64 gnu/linux

修改media/platform/vivid/下的makefile:

kern_dir = /usr/src/linux-headers-4.4.0-116-generic
vivid-objs := vivid-core.o vivid-ctrls.o vivid-vid-common.o vivid-vbi-gen.o

vivid-vid-cap.o vivid-vid-out.o vivid-kthread-cap.o vivid-kthread-out.o

vivid-radio-rx.o vivid-radio-tx.o vivid-radio-common.o

vivid-rds-gen.o vivid-sdr-cap.o vivid-vbi-cap.o vivid-vbi-out.o

vivid-osd.o vivid-tpg.o vivid-tpg-colors.o

all:

make -c $(kern_dir) m=pwdmodules

clean:

make -c $(kern_dir) m=pwdmodules clean

rm -rf modules.order

obj-$(config_video_vivid) += vivid.o

insmod: error: could not insert module vivid.ko: unknown symbol in module原因是模組中的一些依賴函式的模組,沒有載入,通過dmesg命令,可以看到很多函式:

[ 488.786285] vivid: unknown symbol vb2_queue_init (err 0)

[ 488.786295] vivid: unknown symbol v4l2_ctrl_poll (err 0)

[ 488.786304] vivid: unknown symbol v4l2_enum_dv_timings_cap (err 0)

[ 488.786314] vivid: unknown symbol video_ioctl2 (err 0)

[ 488.786364] vivid: unknown symbol v4l2_get_timestamp (err 0)

[ 488.786389] vivid: unknown symbol v4l2_device_put (err 0)

[ 488.786418] vivid: unknown symbol vb2_ioctl_streamoff (err 0)需要先載入這些函式所在的模組才行。

這裡有兩個方法:

一是找到函式對應的檔案,修改makefile,編譯出來,先載入。

二是找到函式對應的檔案,其實模組都已經編譯好了,路徑在/lib/modules/4.4.0-116-generic/kernel/drivers/media/v4l2-core/裡面,直接載入即可。

這兩種方式都需要慢慢找對應的檔案,比較麻煩,直接:

sudo modprobe vivid //安裝自帶vivid及依賴

sudo rmmod vivid //解除安裝自帶的vivid

sudo insmod ./vivid.ko //安裝自己編譯的vivid.ko

這裡先使用modprobr載入vivid,會將其依賴一併載入,然後再解除安裝vivid,最後載入上我們編譯的vivid.ko

重新編譯驅動,載入新驅動:

sudo modprobe vivid     

sudo rmmod vivid

sudo insmod my_vivid.ko

實測還差兩個驅動依賴:

sudo insmod /lib/modules/4.4.0-116-generic/kernel/drivers/media/v4l2-core/videobuf-core.ko  

sudo insmod /lib/modules/4.4.0-116-generic/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko

執行xawtv

DirectShow驅動攝像頭

對於小攝像頭的驅動有幾種方法,通過使用directshow來驅動攝像頭靈活性比較好,有簡單的方法也有比較複雜但更有效的方法,本文只介紹簡單方法,希望與大家交流!用directshow來使用攝像頭,一般要求攝像頭的驅動是wdm格式的,當然,一些比較老的驅動格式directshow也可支援。direct...

第1 5節 攝像頭驅動 USB攝像頭驅動框架

1.寫乙個usb攝像頭驅動程式 當我們把usb裝置接到電腦或板子上去時,如果這個裝置能夠被usb driver所支援 id table吻合 probe函式就會被呼叫,在probe函式裡面就可以做我們想做的事了 對於攝像頭驅動程式來說,是1.分配乙個video device結構體 2.設定這個結構體 ...

使用DirectShow驅動攝像頭

對於小攝像頭的驅動有幾種方法,通過使用directshow來驅動攝像頭靈活性比較好,有簡單的方法也有比較複雜但更有效的方法,本文只介紹簡單方法,希望與大家交流!用directshow來使用攝像頭,一般要求攝像頭的驅動是wdm格式的,當然,一些比較老的驅動格式directshow也可支援。direct...