U-Boot中支持USB

转载: http://blog.csdn.net/qiurihuanghua/article/details/6234832

今天查看了一下在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()

时间: 2024-12-20 19:17:55

U-Boot中支持USB的相关文章

在 VirtualBox 5.0 系列中让虚拟机支持 USB 3.0 必须开启 APIC

VirtualBox 5.0 系列正式支持 USB 3.0,能够在宿主机支持 USB 3.0 的情况下,让虚拟机也选择具备 USB 3.0 的功能.但是经过多方试验,发现必须在 VirtualBox 中为虚拟机开启 APIC 功能,才能使虚拟机正常发挥 USB 3.0 能力,否则外接的 USB 3.0 设备总是无法被正确识别.通过对 Fedora 虚拟机的试验,在其日志中发现了对 APIC 功能调用的需求记录,因此基本可断定,要实现虚拟机 USB 3.0 支持,VirtualBox 必须给虚拟机

如何让老Mac机支持USB安装Windows

一些老Mac机的用户想装Windows,却发现自己的系统上的Boot Camp Assistant(以下简称BCA)没有USB安装Windows的选项. 下面以我的MacBook Pro (13-inch, Late 2011), OS X EI Capitan为例,让BCA支持USB安装Windows. 0.打开“/Applications/Utilities/System Information.app”,记下“Model Identifier”和“Boot ROM Version”的值(我

spring-boot实战【07】【转】:Spring Boot中Web应用的统一异常处理

我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况.Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容. 选择一个之前实现过的Web应用(Chapter3-1-2)为基础,启动该应用,访问一个不存在的URL,或是修改处理内容,直接抛出异常,如: 1 2 3 4 @RequestMapping("/hello") public String hello() throws Exce

配置虚拟机支持USB设备的热插拔

今天,无意中把山寨的JLINK,用segger 4.90给升级了,导致无法使用,非常郁闷. 升级吧,网上下载的Samba v2.15最新版本,因为本人使用的一直是win7 X64,到最后一步安装驱动了,结果是不能正确安装驱动,更郁闷了. 那么搞虚拟机吧,装个XP.结果是,虚拟机不能动态的支持USB设备.物理机和虚拟机应该是一样的啊. 后来,百度搜了搜,才找到原因.因为我本身用的绿色免安装版本的VMware 11.1,所以一些服务是需要手动开启的. 在 计算机-管理-服务,找到一个VMware U

SpringBoot(三) :Spring boot 中 Redis 的使用

前言: 这一篇讲的是Spring Boot中Redis的运用,之前没有在项目中用过Redis,所以没有太大的感觉,以后可能需要回头再来仔细看看. 原文出处: 纯洁的微笑 SpringBoot对常用的数据库支持外,对NoSQL 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化.除此之外,Redis还提供一些类数据库的特性,比如事务,HA,

OpenWrt中开启usb存储和samba服务

在从官网安装的WNDR3800 15.05.1版本OpenWrt中, 不带usb存储支持以及samba, 需要另外安装 1. 启用usb支持 USB Basic Support https://wiki.openwrt.org/doc/howto/usb.essentials # 每次重启后, 软件包都要重新update opkg update 安装 kmod-usb-uhci 或者 kmod-usb-ohci, 如果前者不能安装, 系统会有提示 opkg install kmod-usb-uh

springboot(三):Spring boot中Redis的使用

spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化.除此之外,Redis还提供一些类数据库的特性,比如事务,HA,主从库.可以说Redis兼具了缓存系统和数据库的一些特性,因此有着丰富的应用场景.本文介绍Redis在Spring Boot中两个典型的应用场景. 如何使用 1.引入

springboot(十一):Spring boot中mongodb的使用

mongodb是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多.由于很多公司使用了云服务,服务器默认都开放了外网地址,导致前一阵子大批 MongoDB 因配置漏洞被攻击,数据被删,引起了人们的注意,感兴趣的可以看看这篇文章:场屠戮MongoDB的盛宴反思:超33000个数据库遭遇入侵勒索,同时也说明了很多公司生产中大量使用mongodb. mongodb简介 MongoDB(来自于英文单词"Humongous",中文含义为"庞大&qu

Spring Boot中Web应用的统一异常处理

我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况.Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容. 选择一个之前实现过的Web应用(Chapter3-1-2)为基础,启动该应用,访问一个不存在的URL,或是修改处理内容,直接抛出异常,如: 1 2 3 4 @RequestMapping("/hello") public String hello() throws Exce