USB驱动移植的一个问题

发布于 2022-09-22 11:24:56 字数 519 浏览 12 评论 0

我把编译好的ko模块insmod,但是返回如下:

/tmp $ insmod zd1211b.ko
zd1211b: Unknown symbol usb_alloc_urb
zd1211b: Unknown symbol usb_free_urb
zd1211b: Unknown symbol usb_register
zd1211b: Unknown symbol usb_put_dev
zd1211b: Unknown symbol usb_get_dev
zd1211b: Unknown symbol usb_submit_urb
zd1211b: Unknown symbol usb_control_msg
zd1211b: Unknown symbol usb_deregister
zd1211b: Unknown symbol usb_kill_urb

我查看内核中的USB内核相关代码,这些函数都有定义啊,为什么还说是Unknown symbol???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

遮了一弯 2022-09-29 11:24:56

请高手多多指教啊!!!

陪你搞怪i 2022-09-29 11:24:56

虽然有这些定义,但是相应模块没有导出符号(export symbol),就不能在运行时引用这些函数,除非你把源文件拿过来静态编译。

梦里南柯 2022-09-29 11:24:56

我查看了一下linux-2.6.14/driver/usb/core/urb.c,其中最后几行如下:

EXPORT_SYMBOL(usb_init_urb);
EXPORT_SYMBOL(usb_alloc_urb);
EXPORT_SYMBOL(usb_free_urb);
EXPORT_SYMBOL(usb_get_urb);
EXPORT_SYMBOL(usb_submit_urb);
EXPORT_SYMBOL(usb_unlink_urb);
EXPORT_SYMBOL(usb_kill_urb);

就是说kernel已经导出了这些函数符号,当我加载使用这些符号的模块时,kernel却还是说unknow symbol
为什么?太奇怪了!

蓝眼泪 2022-09-29 11:24:56

找到原因了,应该是kernel没有加载usb core。
有没有方法查询usb core是否加载?另外,怎样加载?是不是到menuconfig里配置?
问题可能比较菜鸟,大家多包涵:)

欲拥i 2022-09-29 11:24:56

你用modprobe试一下没有?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文