背景
目前支持sw架构虚拟化的kylin系统都不支持UVC重定向功能
必须手动开启
SW kenerl编译
- 安装src包
- spec目录下 rpmbuild -bp xxx.spec –nodeps 先解压源码包
- build目录下 make menuconfig 基于arch/sw_64/configs/guest_defconfig修改配置,并保存在cofigs/xxx.config
- build目录下 修改需要修改的代码
1
2# security/integrity/ima/ima_digest.c
+ #include <linux/vmalloc.h> - spec目录下,修改xxx.spec,修改kb号,修改prep 直接exit 0
- rpmbuild -bb xxx.spec –nodeps
UVC
UVC模块宏确认
代码路径 drivers/media/usb/uvc/
1
2
3
4
5
6
7
8# Makefile
# SPDX-License-Identifier: GPL-2.0
uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o \
uvc_status.o uvc_isight.o uvc_debugfs.o uvc_metadata.o
ifeq ($(CONFIG_MEDIA_CONTROLLER),y)
uvcvideo-objs += uvc_entity.o
endif
obj-$(CONFIG_USB_VIDEO_CLASS) += uvcvideo.oCONFIG_USB_VIDEO_CLASS 就是模块的功能开启宏
其他一些特性宏,先不理会(CONFIG_MEDIA_CONTROLLER, CONFIG_MMU, CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV, CONFIG_DMA_NONCOHERENT)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23[Service not authorized][root@node2 uvc]# grep CONFIG * -Rn
Makefile:4:ifeq ($(CONFIG_MEDIA_CONTROLLER),y)
Makefile:7:obj-$(CONFIG_USB_VIDEO_CLASS) += uvcvideo.o
uvc_driver.c:1860:#ifdef CONFIG_MEDIA_CONTROLLER
uvc_driver.c:1873:#ifdef CONFIG_MEDIA_CONTROLLER
uvc_driver.c:1919:#ifdef CONFIG_MEDIA_CONTROLLER
uvc_driver.c:2063:#ifdef CONFIG_MEDIA_CONTROLLER
uvc_driver.c:2150:#ifdef CONFIG_MEDIA_CONTROLLER
uvc_driver.c:2199:#ifdef CONFIG_MEDIA_CONTROLLER
uvc_queue.c:365:#ifndef CONFIG_MMU
uvc_status.c:25:#ifdef CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV
uvc_status.c:76:#endif /* CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV */
uvc_v4l2.c:1301:#ifdef CONFIG_COMPAT
uvc_v4l2.c:1460:#ifndef CONFIG_MMU
uvc_v4l2.c:1518:#ifdef CONFIG_COMPAT
uvc_v4l2.c:1524:#ifndef CONFIG_MMU
uvc_video.c:1518:#ifndef CONFIG_DMA_NONCOHERENT
uvc_video.c:1563:#ifndef CONFIG_DMA_NONCOHERENT
uvc_video.c:1672:#ifndef CONFIG_DMA_NONCOHERENT
uvc_video.c:1737:#ifndef CONFIG_DMA_NONCOHERENT
uvcvideo.h:589:#ifdef CONFIG_MEDIA_CONTROLLER
uvcvideo.h:711:#ifndef CONFIG_MMU
Make menuconfig
- 解压源码后,进行config修改
1
Make menuconfig
- 通过 /搜索相应的宏(CONFIG_USB_VIDEO_CLASS)按照以下规则进行开启
- Prompt 字段,可以通过输入叶子节点前的索引直接进入到配置节点,进行选择
- depends on 依赖配置,需要先开启所有依赖配置,才能开启当前配置
- selects 关联配置,开启当前配置,自动开启关联配置
- selects 被关联配置,开启被关联配置,自动开启当前配置
其他问题
- 编译过程可能出现其他问题,查找代码,根据对应的代码,进行决定是需要开启功能还是修改代码
EHCI
EHCI 模块确认
- 代码路径 drivers/usb/host/就经验来说,确认要开的是 CONFIG_USB_EHCI_HCD CONFIG_USB_EHCI_PCI两个
1
2
3
4
5
6
7
8
9
10
11
12
13# Makefile
obj-$(CONFIG_USB_EHCI_HCD) += ehci-hcd.o
obj-$(CONFIG_USB_EHCI_PCI) += ehci-pci.o
obj-$(CONFIG_USB_EHCI_HCD_PLATFORM) += ehci-platform.o
obj-$(CONFIG_USB_EHCI_MXC) += ehci-mxc.o
obj-$(CONFIG_USB_EHCI_HCD_NPCM7XX) += ehci-npcm7xx.o
obj-$(CONFIG_USB_EHCI_HCD_OMAP) += ehci-omap.o
obj-$(CONFIG_USB_EHCI_HCD_ORION) += ehci-orion.o
obj-$(CONFIG_USB_EHCI_HCD_SPEAR) += ehci-spear.o
obj-$(CONFIG_USB_EHCI_HCD_STI) += ehci-st.o
obj-$(CONFIG_USB_EHCI_EXYNOS) += ehci-exynos.o
obj-$(CONFIG_USB_EHCI_HCD_AT91) += ehci-atmel.o
obj-$(CONFIG_USB_EHCI_TEGRA) += ehci-tegra.o
- 本文作者: crazyboy
- 本文链接: http://crazyboy.www.crazyboy.info/blog/blog/2022/06/29/kylin/usb/redir/usb-sw/sw-uvc/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!