将模块添加到 angstrom 内核

Add module to angstrom kernel

我正在研究 Altera cyclone V Soc FPGA 开发套件。 我正在使用 rocketboards.com (http://www.rocketboards.org/foswiki/Documentation/GSRD141AngstromGettingStarted)

提供的 GSRD 14.1 Angstrom
root@socfpga_cyclone5:~# uname -a
Linux socfpga_cyclone5 3.10.31-ltsi

此内核不支持 usb 串行设备,我认为我需要添加 usbserial 和 usbcore 驱动程序才能与 GPS 串行模块通信。内核包括 insmod 和 modprobe,但我找不到适合我的板的具体驱动程序。

dmesg returns:

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

是否有添加此模块的解决方案? 如果我必须重建和自定义内核,我正在寻找一些建议:)

提前致谢。

编辑

解决方案是在 menuconfig 中添加串行驱动程序支持并更新内核。

首先,将串行设备插入 USB 端口并检查此命令的输出:

ls /dev |grep usb

如果您看到 "ttyUSB0" 或 "ttyAMC0" 之类的内容,那么驱动程序已经存在,可以是静态编译驱动程序,也可以是加载模块。如果您的问题真的是驱动程序不存在,我会感到非常惊讶;它应该包含在几乎每个发行版中。

如果没有出现任何问题,请检查当前是否加载了驱动程序(这将告诉您它是否真的是您的 USB 串行设备的问题:

lsmod | grep serial

(注意:该模块应该被称为 "usb_serial",但我通常会 grep 查找我实际上正在寻找的字符串的一个子集,以捕获与我期望的不完全匹配的名称,例如名称中有或没有下划线。"grep serial" 可以匹配多于 "usb_serial",但应该包含它,同时仍然缩短 modprobe 输出。")

如果您在那里看到驱动程序,则表示驱动程序已加载,问题出在您的 USB 串行设备上。检查 this text document 以查看驱动程序是否支持您的设备。即使您的设备未被列为受支持设备,它也有可能仍然可以工作,因为在 USB 串行模块中支持通用设备。您必须使用此命令重新加载模块才能利用它:

insmod usbserial vendor=0x#### product=0x####

如果未加载驱动程序,请使用此命令查看它是否可用:

modprobe | grep serial

如果驱动程序存在但当前未加载,您应该能够在此目录中找到它以在其上使用 "insmod":

/lib/modules/`uname -r`/kernel/drivers/usb/serial/`

如果所有这些都失败了,您可能必须在启用驱动程序的情况下重新编译。重新编译内核并确保在 USB 菜单下启用 USB_SERIAL,同时启用内核对 TTY 的支持,因为 USB_SERIAL depends on it.