uboot支持Usb
2016-08-05 10:42
309 查看
跟其它接口一样,在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()
#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 (支持 NFS 、 yaffs 和 USB)
- UBoot支持双启动(Nor and Nand)及环境变量保存的实现
- 利用UltraISO写入U盘安装系统,条件:电脑支持USB-HDD ,U盘容量足够
- 让VBOX支持USB
- 移植uboot-1.1.6到勤研2440之二移植支持Nand Flash(和精智2440接近,仿照100ask24x0_config配置,重现韦东山的uboot-1.1.6_patch过程)
- UBOOT-2010-03在S3C2440上的移植<四>------------支持NANDFLASH
- 使Uboot支持USB的步骤
- Virtualbox 启用USB 设备支持
- UBOOT-2010.06 移植 支持norflash (四)
- 一个驱动支持多个设备再usb子系统、input子系统、platform、iic子系统 中的实现
- uboot支持S3C6410的SD启动
- uboot支持ubi和ubifs遇到的问题
- Uboot支持的命令
- Linux将是第一个正式支持USB 3.0技术的操作系统
- uboot-DM9000支持笔记
- matlab2015a支持的usb webcams support package
- 支持 PS/2 与 USB 的键盘过滤驱动(可卸载)
- 一款支持大恒相机、IDS相机、普通USB相机和机械手的标定工具
- 让linux2.6.24内核在开发板支持usb鼠标
- 配置虚拟机支持USB设备的热插拔