使Uboot支持USB的步骤
2013-02-21 22:28
169 查看
今天查看了一下在P4080DS板子的U-Boot中支持USB,主要是加入USB Host端驱动和相应设备端驱动来支持存储设备,这样就 可以将Kernel以及文件系统存放在U盘上,来通过U盘来启动。
跟其它接口一样,在U-Boot中,USB的支持也是通过放在相应板子上的几个宏定义来实现,对于P4080DS板,是在include/configs/corenet_ds.h定义:
--------------------------------------------------------------------------------------------------------------------
#define CONFIG_CMD_USB /* 支持USB命令集,这样就可以使用U-Boot命令访问USB设备 */
#define CONFIG_USB_STORAGE /* 支持USB存储设备 */
#define CONFIG_USB_EHCI /* 支持EHCI协议标准的USB Host端 */
#define CONFIG_USB_EHCI_FSL /* 支持具体到Freescale的EHCI标准的USB Host控制器 */
#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
#define CONFIG_CMD_EXT2 /* 支持EXT2文件系统 */
----------------------------------------------------------------------------------------------------------------------
在上面个所有宏定义中,除了CONFIG_USB_EHCI_FSL以外,所有其它都是公共的,也就是与平台无关,所以要在P4080DS的U-Boot上,添加对该平台的USB的支持,仅需要实现由CONFIG_USB_EHCI_FSL定义所要求的操作就可以了。
具体来说,做了下列一些操作:
在drivers/usb/host/Makefile一行
COBJS-$(CONFIG_USB_EHCI_FSL) += ehci-fsl.o
即加入与P4080 USB Host端控制器的驱动drivers/usb/host/ehci-fsl.c。这个驱动文件的主要工作就是建立一个对应P4080 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控制器的初始化文件的函数。对于Freescale处理器中的Host控制器,该文件是drivers/usb/host/ehci-fsl.c。
因此整个调用流程为:
usb start命令 ---> usb_init() ---> usb_lowlevel_init() ---> ehci_hcd_init()
跟其它接口一样,在U-Boot中,USB的支持也是通过放在相应板子上的几个宏定义来实现,对于P4080DS板,是在include/configs/corenet_ds.h定义:
--------------------------------------------------------------------------------------------------------------------
#define CONFIG_CMD_USB /* 支持USB命令集,这样就可以使用U-Boot命令访问USB设备 */
#define CONFIG_USB_STORAGE /* 支持USB存储设备 */
#define CONFIG_USB_EHCI /* 支持EHCI协议标准的USB Host端 */
#define CONFIG_USB_EHCI_FSL /* 支持具体到Freescale的EHCI标准的USB Host控制器 */
#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
#define CONFIG_CMD_EXT2 /* 支持EXT2文件系统 */
----------------------------------------------------------------------------------------------------------------------
在上面个所有宏定义中,除了CONFIG_USB_EHCI_FSL以外,所有其它都是公共的,也就是与平台无关,所以要在P4080DS的U-Boot上,添加对该平台的USB的支持,仅需要实现由CONFIG_USB_EHCI_FSL定义所要求的操作就可以了。
具体来说,做了下列一些操作:
在drivers/usb/host/Makefile一行
COBJS-$(CONFIG_USB_EHCI_FSL) += ehci-fsl.o
即加入与P4080 USB Host端控制器的驱动drivers/usb/host/ehci-fsl.c。这个驱动文件的主要工作就是建立一个对应P4080 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控制器的初始化文件的函数。对于Freescale处理器中的Host控制器,该文件是drivers/usb/host/ehci-fsl.c。
因此整个调用流程为:
usb start命令 ---> usb_init() ---> usb_lowlevel_init() ---> ehci_hcd_init()
相关文章推荐
- 使Uboot支持USB的步骤
- u-boot-2010.3 添加usb下载功能支持 ( for mini2440)
- u-boot-2012-07 for tiny210, 支持USB DNW, 支持YAFFS2烧写, 彻底抛弃superboot
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###4.支持内核启动
- springboot 增加对jsp的支持,具体步骤
- u-boot下USB键盘支持
- U-Boot中支持USB
- 限制USB设备写保护的步骤(XPSP2以上支持)
- 【USB 支持】用virtualbox虚拟机安装Mac OS 10.6.x详细步骤-
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###7.NAND FLASH部分移植和支持NAND FLASH启动和读写
- U-boot-2009.03移植之四:第一阶段(支持2440)各步骤简要目录
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###8. u-boot引导启动nand flash中内核和根文件系统cramfs和用户文件系统yaffs2支持
- u-boot-2011.03在TQ2440上的移植(11)--支持USB下载
- mini2440 u-boot实现usb slave下载功能!
- android usb挂载分析--各种格式支持
- USB multi gadget 支持问题
- u-boot1.1.6源码,没有对S3C2440支持,需要打上补丁文件100ask24x0
- (19)Spring Boot 添加JSP支持【从零开始学Spring Boot】
- Java Spring Boot 服务器端断点续传功能支持 实现代码
- 在VS2005下编译CGAL库的支持库GMP和MPFR的步骤