日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

uboot分析之 usb启动

發布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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启动的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。