将模块添加到 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.
我正在研究 Altera cyclone V Soc FPGA 开发套件。 我正在使用 rocketboards.com (http://www.rocketboards.org/foswiki/Documentation/GSRD141AngstromGettingStarted)
提供的 GSRD 14.1 Angstromroot@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.