uboot分析之 usb启动
繼上篇文章uboot分析之Loopback接口,我們接著看下關于uboot下USB初始化方面的知識,經過這幾天對zturn開發板uboot的分析,結合網上查閱的資料,大概弄懂了其基本流程,其在uboot階段主要是加入USB Host端驅動和相應設備端驅動來支持存儲設備,這樣就 可以將Kernel以及文件系統存放在U盤上,來通過U盤來啟動。
具體來說,做了下列一些操作:
在drivers/usb/host/Makefile一行 COBJS-$(CONFIG_USB_EHCI_FSL) += ehci-fsl.o 即加入與zturn USB Host端控制器的驅動drivers/usb/host/ehci-fsl.c。這個驅動文件的主要工作就是建立一個對應zturn USB Host端控制器的數據結構,設置為Host模式和少數一些特性,初始化PHY,最后使能該控制器。因此所做的工作非常簡單。跟其它接口一樣,在U-Boot中,USB的支持也是通過放在相應板子上的幾個宏定義來實現,在include/usb.h定義:
/* Everything is aribtrary */
#define USB_ALTSETTINGALLOC 4
#define USB_MAXALTSETTING 128/* Hard limit */
#define USB_MAX_DEVICE 32
#define USB_MAXCONFIG 8
#define USB_MAXINTERFACES 8
#define USB_MAXENDPOINTS 16
#define USB_MAXCHILDREN 8/* This is arbitrary */
#define USB_MAX_HUB 16
#define USB_CNTL_TIMEOUT 100 /* 100ms timeout */
具體來說,做了下列一些操作:
在drivers/usb/host/Makefile一行 COBJS-$(CONFIG_USB_EHCI_FSL) += ehci-fsl.o 即加入與zturn USB Host端控制器的驅動drivers/usb/host/ehci-fsl.c。這個驅動文件的主要工作就是建立一個對應zturn USB Host端控制器的數據結構,設置為Host模式和少數一些特性,初始化PHY,最后使能該控制器。因此所做的工作非常簡單。USB初始化的調用過程: 1. 在U-Boot命令行中發 =>?usb start 2. USB命令解析器判定(common/cmd_usb.c)是start命令,會調用usb_init()函數(common/usb.c) 3. usb_init()會調用底層初始化函數usb_lowlevel_init()(drivers/usb/host/ehci-hcd.c) 4. 在usb_lowlevel_init()函數里,最后會調用到具體的Host控制器的初始化函數ehci_hcd_init(),這個函數就是放置在對應各種Host控制器的初始化文件的函數。對于zynq處理器中的Host控制器,該文件是drivers/usb/host/ehci-fsl.c。 因此整個調用流程為: usb start命令 ---> usb_init() ---> usb_lowlevel_init() ---> ehci_hcd_init()
總結
以上是生活随笔為你收集整理的uboot分析之 usb启动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle的权限授予,oracle权限
- 下一篇: 老虎日记