解决usb虚拟u盘⽆法probe驱动的问题--Apple的学习笔记
1.前⾔:
⼀开始想使⽤usb gadget来虚拟⽹卡的,结果按⽹上的简单配置后,⽆法使⽤,Document中貌似没看到什么特别有帮助的,所以先降低难度使⽤usb gadget来虚拟⼀个u盘。其它的之后再慢慢深⼊。先进⼊Kernel驱动实战
2.在使⽤modprobe时候思考如何⽤insmod
modprob⽐insmod好⽤,但是需要知道原理
linux设备驱动有两种加载⽅式insmod和modprobe,下⾯谈谈它们⽤法上的区别
1、insmod⼀次只能加载特定的⼀个设备驱动,且需要驱动的具体地址。
2. modprobe则可以⼀次将有依赖关系的驱动全部加载到内核。不加驱动的具体地址,但需要在安装⽂件系统时是按照make modues_install的⽅式安装驱动模块的。驱动被安装在/lib/modules/$(uname -r)/...下。写法为:
modprob drv
modprobe 和insmod⼀样都是⽤来加载内核module的
不过modprobe⽐较智能,它可以根据module的依赖性来⾃动为你加载;⽽insmod就做不到这点。智能识别的原理是什么呢!
⼿⼯⼜应该如何加载模块呢!随意加载就会报错。
香菇滑鸡粥⽅法⼀
在编译后,modinfo xx.ko可以查看详细信息。其中depends ⼀项我们可以看到该模块依赖 x模块。
⽅法⼆
modules.dep⽂件是⼀个依赖关系图,在此⽂件的⽬录中,通过搜索命令可以知道依赖关系。
grep -nr phy-am335x.ko modules.dep
2. 添加模块后不成功,需要调试
常⽤的就是打印信息,为了输出pr_debug和dev_debug驱动加载的调试信息配置kernel
image.png
7.总结
通过如下3个步骤,完成bb black虚拟u盘的操作
modprobe usbcore
modprobe usb_f_mass_storage
modprobe g_mass_storage file=/dev/mmcblk0p1 removable=1
Welcome to Buildroot
buildroot login: root
# cd /sys/bus
# ls
clockevents gpio mmc_rpmb scsi virtio
clocksource hid nvmem sdio workqueue
container i2c pci serial
cpu mdio_bus pci-epf soc
event_source mmc platform spi
# modprobe usbcore
[ 71.089616] bus: 'usb': registered
[ 71.093291] bus: 'usb': add driver usbfs
[ 71.097310] usbcore: registered new interface driver usbfs
[ 71.102893] bus: 'usb': add driver hub
[ 71.106705] usbcore: registered new interface driver hub
[ 71.112118] bus: 'usb': add driver usb
[ 71.115924] usbcore: registered new device driver usb
趋势的近义词# cd /sys/bus/usb
# ls
devices drivers_autoprobe uevent
败笔drivers drivers_probe
# cd devices/
# ls
# cd ..巧舌如簧的意思
# ls
devices drivers_autoprobe uevent气象万千
drivers drivers_probe
# cd /sys/class/udc
# ls
musb-hdrc.0
# cd musb-hdrc.0/
# ls
a_alt_hnp_support device is_selfpowered srp
a_hnp_support function maximum_speed state
b_hnp_enable is_a_peripheral power subsystem
current_speed is_otg soft_connect uevent
# cd ..
# cd ..
# cd /sys/bus/usb
# ls
devices drivers_autoprobe uevent
drivers drivers_probe
# cd devices/
# modprobe usb_f_mass_storage
# [ 167.200445] random: crng init done松花蛋拌豆腐
# modprobe g_mass_storage file=/dev/mmcblk0p1 removable=1
[ 173.939807] driver_name is g_mass_storage
[ 173.939818] go 2
[ 173.945862] myUDC is found
[ 173.948592] udc musb-hdrc.0: registering UDC driver [g_mass_storage]
[ 173.955089] Mass Storage Function, version: 2009/09/11
[ 173.960261] LUN: removable file: (no medium)
[ 173.964622] device: 'lun0': device_add
[ 173.968444] PM: Adding info for No Bus:lun0
[ 173.972823] lun0: open backing file: /dev/mmcblk0p1
[ 173.977734] LUN: removable file: /dev/mmcblk0p1
[ 173.982322] Number of LUNs=1
[ 173.985233] g_mass_storage gadget: adding config #1 'Linux File-Backed Storage'/c7b2a844
[ 173.993389] g_mass_storage gadget: adding 'Mass Storage Function'/d03f0dd3 to config 'Linux File-Backed Storage'/c7b2a844 [ 174.006354] g_mass_storage gadget: I/O thread pid: 116
[ 174.011679] g_mass_storage gadget: cfg 1/c7b2a844 speeds: high full
发布评论