自娱自乐6之Linux gadget驱动5(自编gadget驱动,包涵与之通讯的主机usb驱动,已调试通过)
这个代码调试,你首先要保证你的udc驱动没用问题,这个有些矛盾,应为我本来要用gadget驱动来调试udc驱动,结果反过来了。
这是在zero基础改的,大概的改动
1. 去掉loop。
2. sink的读写去掉了。
3. 增加了一个misc,通过fs去读写数据。
4. setup的特殊请求去掉了。
之前的文章已经把大部分的东西说完了,所以代码没有太多的注释。请结合之前的文章阅读。
我用了一个完成量,在没有数据时,读可能会死在那。这个可以优化一下,我就不做了。
还有就是主机是虚拟机的usb,linux-2.6.18(无耻的告诉你就是usb-skeleton驱动),gadget是板子的,linux-3.2.36
gadget_transfer.c //linux-3.2.36
有些答应打印是我加的,不要管,还有我的内核usb这块什么都没选,所以加载的多。
有gadget_transfer设备文件
Windows的提示
虚拟机有0ff0:0ff0 usddevice
在虚拟机装载
板子提示
虚拟机
有个skel0 设备文件
虚拟机执行
如果板子不动作,最后
现在执行cat /dev/skel0
板子执行
虚拟机
反过来
板子读,虚拟机写
当你拔去usb是你会发现/dev/skel0消失
基本就这样,下期会回到我的udc驱动上来,下期再见!