Ask*_*mov 0 linux linux-device-driver linux-kernel
我正在尝试编译一个Linux驱动USB转串口设备并获得错误
/root/moxa_usb_to_serial/mxu11x0/driver/mxu11x0.c:307: error: ‘usb_serial_probe’ undeclared here (not in a function)
/root/moxa_usb_to_serial/mxu11x0/driver/mxu11x0.c:308: error: ‘usb_serial_disconnect’ undeclared here (not in a function)
Run Code Online (Sandbox Code Playgroud)
我有linux
Linux host 3.10.33-rt32.34.el6rt.x86_64 #1 SMP PREEMPT RT Wed May 28 09:57:12 CEST 2014 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
司机制造商实际上警告说,3.4以上的驱动程序可能不是可分隔的.然而,驱动程序本身相当小,我相信我可以做一些微不足道的修复.怎么解决这个问题?
司机制造商实际上警告说,3.4以上的驱动程序可能不是可分隔的.
快速检查一个符号表示内核USB串行接口的这一方面已发生变化.在3.10中,usb_serial_probe()被设为静态(参见其3.10交叉引用),因此它不再是内核USB接口的一部分.没有必要去寻找要包含的"正确"头文件.
你做出"一些微不足道的修复"的假设可能会很仓促.
您需要获取3.4 Linux源代码树并找到USB串行接口的示例.
这是使用usb_serial_probe()的3.4驱动程序列表.
您需要找到类似于您尝试移植的驱动程序的3.4驱动程序,例如使用usb_serial_probe()和usb_serial_disconnect(),例如usb/serial/generic.c.
然后在3.10源代码中找到该驱动程序的版本,并查看该驱动程序自3.4以来的演变情况(使用diff或sdiff).
这些更改将指导您的驱动程序中必须修改的内容.