linux的U盘驱动源码

linux的U盘驱动源码,第1张

根据你的描述,估计FUSE不适合你。

参考以下几个文件吧(我的系统是DEBIAN LENNY)

localhost:/home/aaa/program# apt-cache search libusb

libusb-0.1-4 - userspace USB programming library

libusb-1.0-0 - userspace USB programming library

libusb-1.0-0-dev - userspace USB programming library development files

libusb-dev - userspace USB programming library development files

用apt-get source libusb下载过来的内如如下所示:

total 1688

-rw-r--r-- 1 500 500 2661 2005-02-14 acinclude.m4

-rw-r--r-- 1 500 500 244051 2006-03-04 aclocal.m4

drwxrwxrwx 2 500 500 4096 2006-03-04 apidocs

-rw-r--r-- 1 500 500130 2004-04-22 AUTHORS

-rw-r--r-- 1 500 500 16833 2006-03-04 bsd.c

-rw-r--r-- 1 500 500189 2004-01-28 ChangeLog

-rwxr-xr-x 1 500 500 3642 2004-03-12 compile

-rwxr-xr-x 1 500 500 42037 2004-04-12 config.guess

-rw-r--r-- 1 500 500 2467 2006-03-04 config.h.in

-rwxr-xr-x 1 500 500 30221 2004-04-12 config.sub

-rwxr-xr-x 1 500 500 746195 2006-03-04 configure

-rw-r--r-- 1 500 500 6777 2006-03-04 configure.in

-rw-r--r-- 1 500 500 26428 2004-01-28 COPYING

-rw-r--r-- 1 500 500 35685 2006-03-04 darwin.c

drwxr-xr-x 3 root root 4096 02-19 18:51 debian

-rwxr-xr-x 1 500 500 14841 2004-03-12 depcomp

-rw-r--r-- 1 500 500 15021 2006-03-04 descriptors.c

drwxrwxrwx 2 500 500 4096 02-19 18:49 doc

-rw-r--r-- 1 500 500 44099 2006-03-04 Doxyfile

-rw-r--r-- 1 500 500 44154 2006-02-07 Doxyfile.in

-rw-r--r-- 1 500 500759 2004-01-28 error.c

-rw-r--r-- 1 500 500716 2004-01-28 error.h

-rw-r--r-- 1 500 500 2043 2006-03-04 INSTALL.libusb

-rw-r--r-- 1 500 500 2063 2004-01-28 INSTALL.libusb.in

-rwxr-xr-x 1 500 500 9208 2004-03-12 install-sh

-rw-r--r-- 1 500 500 1267 2004-01-28 libusb-config.in

-rw-r--r-- 1 500 500196 2005-02-15 libusb.pc.in

-rw-r--r-- 1 500 500 1290 2006-03-04 libusb.spec

-rw-r--r-- 1 500 500 1293 2006-03-04 libusb.spec.in

-rw-r--r-- 1 500 500 2248 2004-01-28 LICENSE

-rw-r--r-- 1 500 500 19148 2006-03-04 linux.c

-rw-r--r-- 1 500 500 3146 2005-02-03 linux.h

-rw-r--r-- 1 500 500 183730 2004-04-12 ltmain.sh

-rw-r--r-- 1 500 500 2220 2006-03-04 Makefile.am

-rw-r--r-- 1 500 500 34139 2006-03-04 Makefile.in

-rwxr-xr-x 1 500 500 10678 2004-03-12 missing

-rw-r--r-- 1 500 500 8 2004-01-28 NEWS

-rw-r--r-- 1 500 500 2546 2006-03-04 README

-rw-r--r-- 1 500 500 2556 2006-03-04 README.in

drwxrwxrwx 2 500 500 4096 2006-03-04 tests

-rw-r--r-- 1 500 500 6443 2006-03-04 usb.c

-rw-r--r-- 1 500 500 8367 2006-03-04 usb.h.in

-rw-r--r-- 1 500 500 1771 2006-03-04 usbi.h

-rw-r--r-- 1 500 500 13511 2006-03-04 usbpp.cpp

-rw-r--r-- 1 500 500 24428 2005-02-10 usbpp.h

可以从usb.c, usb.h.in入手来研究。

驱动最终以*.ko的形式生成,insmod的本质就是将ko文件与运行的内核进行链接的过程。类似于编译helloworld的链接过程。链接必然需要先进行编译,以便确定所需的外部符号(EXPORT_SYMBOLS)是否存在,因为有些符号(函数或全局变量)在内核中,在驱动中如果使用到这些符号,必须预留一个位置,insmod时进一步确定这些符号的具体位置(符号绑定)。

如果内核都没有编译过,怎么知道这些符号有没有编入内核中?

关于这方面的知识可参照IBM developerworks上面的《Linux 可加载内核模块剖析》及相关文章。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6242306.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-19
下一篇2023-03-19

发表评论

登录后才能评论

评论列表(0条)

    保存