启用虚拟 Com 端口、串行连接(更新)

启用虚拟 Com 端口、串行连接(更新)

我正在使用 IMX6 主板,运行由 yocto 生成的 Linux 内核、u-boot 和 rootfs。我使用其中一个核心映像。core-image-minimal-dev 构建内核映像。我在 core-image-minimal-dev 配方中添加了 usbutils 作为 image_install。

我之前发过一个问题,寻求有关为 USB2.0 端口供电的支持,现在这个问题已经解决了。我现在想要实现的是让设备被识别为 VCP。我需要将外部设备连接到 USB2.0 并被识别为 tty 连接。此时,当我插入设备时,我得到的只是。

new full-speed USB device number 5 using ci_hdrc    
usb 2-1: New USB device found, idVendor-10c4, idProduct=ea60
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-1: Product: CP2104 USB to UART Bridge Controller
usb 2-1: Manufacturer: Silicon Labs
usb2-1: SerialNumber: 013C2C09

/dev/ 目录中没有发生任何变化。我希望看到类似 /dev/ttyUSB0 的内容。然后我可以编写一个使用该端口进行串行通信的应用程序。

通过我的研究,我发现了一些参考资料,其中提到虚拟 com 端口驱动程序已预先内置到 linux 内核中。我在 FTDI 芯片网站上找到了一组说明,其中包含一些说明。

http://www.ftdichip.com/Support/Documents/AppNotes/AN_220_FTDI_Drivers_Installation_Guide_for_Linux.pdf

我按照步骤为 FTDI VCP 添加新规则。

我从设备插入时获取了 idproduct 编号和 idvendor 编号。由于我没有将命令 udevcontrol_reload 规则加载到操作系统中,所以我只进行了电源循环。不幸的是,没有运气。

接下来我通过菜单配置对内核进行了更改。

bitbake -c menuconfig virtual/kernel USB_SERIAL_CONSOLE 已在主板上启用。标记为 USB 串行转换器支持 所以我去启用 USB_SERIAL_CP210X,它被标记为 USB CP210x 系列 UART 桥接控制器。当我按下 时,我收到一个弹出窗口。

此功能依赖于另一个已配置为模块的功能。因此,此功能将构建为模块。

在 USB CP210x 被标记为退出菜单配置后,继续使用 bitbake -f -c compile virtual/kernel 编译内核,然后使用 bitbake core-image-minimal-dev

我仍然没有看到 /dev/ 中填充 vcp

我访问了 Linux 内核驱动程序数据库,它报告 USB CP210x 系列 UART 桥接控制器没有依赖项。所以我不明白为什么弹出窗口说它有其他依赖项。

我在研究中发现的下一件事是需要通过 insmod 或 mknod 将模块加载到 linux 中。所以我研究了这一点。我找到的每个参考资料都指示我编译位于 lib/modules/... /serial/ 目录中的一些 .ko 文件。但是,通过操作系统的 rootfs,我找不到模块目录。无论是通过 ~/lib/ 还是通过 /usr/lib

(更新)

因此我配置了 defconfig,以便

config_usb_serial 
config_usb_serial_ftdi_sio

都需要加载,而不是作为模块加载。

我发现了一些有用的信息,包括创建 mknod 然后 insmod。

$ mknod /dev/ttyUSB0 c 188 0
$ insmod /lib/modules/4.1.15-1.0.0+g3924425/kernel/drivers/usb/serial/usbserial.ko vendor=0x067b product=0x2303

对我来说,我想使用 cp2104 驱动程序,而不是通用驱动程序。我现在遇到的问题是我没有模块目录。在 /lib/ 目录中,我应该有一个模块目录,但没有。有什么见解可以解释为什么我缺少模块目录?

有什么建议么?

答案1

首先,如果没有理由将它(或它的依赖项)作为模块加载,我会考虑将它们静态地构建到内核中,这样你就不需要加载它们了,或者看看你正在使用的发行版以及它是如何加载模块

如果您认为已经正确加载了模块但不确定——请使用lsmod

如果 lsmod 显示 cp210,则您已经加载了模块,这不是您的问题。

相关内容