写这篇博客是初衷是我之前在做一个项目,需要在uboot中实现usb通信功能,与pc上位机进行通信,在网上一直没找到相关的参考资料,后来项目做完了,就想写这篇博客分享给大家
转载请标明原处:https://blog.csdn.net/weixin_42066997/article/details/80081937
一、fastboot中的usb通信分析
进入正题,其实在u-boot中就存在usb通信的接口,这个接口在fastboot中,大家应该用过fastboot烧录系统,它就是用usb连接上位机来使用的,肯定会有关于usb的操作,关于fastboot的代码,主要集中在3个文件:
u-boot\arch\arm\cpu\slsiap\devices\fastboot.c
u-boot\arch\arm\cpu\slsiap\common\cmd_fastboot.c
u-boot\arch\arm\cpu\slsiap\devices\dwc_otg_hs.c
首先看cmd_fastboot.c
fastboot是u-boot的命令,在输入fastboot时,会执行do_fastboot函数
do_fastboot函数分析:
该函数的前半部分是一些关于fastboot命令的初始化,与我们要做的usb移植无关,但有个需要注意的地方,android_driver这个全局变量,它的值跟我们之后注册usb设备有关
该函数的下半部分是一个嵌套循环,外层的do...while和内层的while(1),这是我们重点要分析的地方,首先看do...while循环,一开始就执行函数fboot_interface_init,关于fastboot接口的初始化,追踪这个函数:
这部分最重要的就是执行fastboot_init函数,继续追踪,该函数定义在u-boot\arch\arm\cpu\slsiap\devices\fastboot.c
一眼就可以看到,fboot_usbctl_init,就是我们要关注的内容,继续追踪
这个函数非常简单,但还是要注意is_fastboot这个全局变量的值,s3c_usbctl_init函数定义在u-boot\arch\arm\cpu\slsiap\devices\dwc_otg_hs.c
这个函数,就是初始化usb硬件设备的底层接口,再往下都是寄存器操作了,所以,调用fboot_interface_init函数,最终会调用s3c_usbctl_init函数
转载自原文链接, 如需删除请联系管理员。
原文链接:关于在u-boot中使用usb进行通信(一),转载请注明来源!