转载: 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()

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

  1. Spring Boot 中的静态资源到底要放在哪里?

    当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥Spring Boot 中的静态资源加载问题:"松哥,我的HTML页面好像没有样式?& ...

  2. spring boot中使用servlet、listener和filter

    spring boot中支持使用java Web三大组件(servlet.listener和filter),但是坑比较多,主要是spring boot内嵌tomcat和独立tomcat服务器有一些细节 ...

  3. Spring Boot2 系列教程(十一)Spring Boot 中的静态资源配置

    当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥 Spring Boot 中的静态资源加载问题:"松哥,我的 HTML 页面好像没有样 ...

  4. Spring Boot中的静态资源文件

    Spring Boot中的静态资源文件 1.SSM中的配置 2.Spring Boot 中的配置 2.1 整体规划 2.2 源码解读 2.3 自定义配置 2.3.1 application.prope ...

  5. Spring Boot中如何扩展XML请求和响应的支持

    在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...

  6. Spring Boot中扩展XML请求和响应的支持

    在Spring Boot中,我们大多时候都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式返回一 ...

  7. Spring Boot中使用EhCache实现缓存支持

     SpringBoot提供数据缓存功能的支持,提供了一系列的自动化配置,使我们可以非常方便的使用缓存.,相信非常多人已经用过cache了.因为数据库的IO瓶颈.一般情况下我们都会引入非常多的缓存策略, ...

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

    VirtualBox 5.0 系列正式支持 USB 3.0,能够在宿主机支持 USB 3.0 的情况下,让虚拟机也选择具备 USB 3.0 的功能.但是经过多方试验,发现必须在 VirtualBox ...

  9. Spring Boot中的缓存支持(一)注解配置与EhCache使用

    Spring Boot中的缓存支持(一)注解配置与EhCache使用 随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决 ...

随机推荐

  1. 依赖Spring的情况下,Java Web项目如何在启动时加载数据库中的数据?

    原文:https://blog.csdn.net/u012345283/article/details/39558537 原文:https://blog.csdn.net/wandrong/artic ...

  2. [浪风分享]App必死 Web永生 看Web的前世今生 必会卷土重来

    当我们回顾技术的演变历史时,我们也应该关注技术演变的背后逻辑. 几年前,美国的<连线>杂志发表了“Web已死,Internet永生”的文章,由于作者之一是长尾理论的提出者克里斯.安德森(C ...

  3. Java(System类,currentTimeMillis())

    CurrentTimeMillis()方法来记录程序的执行时间.currentTimeMillis()方法将返回自1970年1月1日午夜起到现在的时间,时间单位是ms,如果要记录程序中一段程序的运行时 ...

  4. 图像sift配准后融合

    image rectification 图像校正 在配准时,先找到特征点,找到特征点后剔除伪匹配点. 然后针对两幅图像做几何矫正(一般通过估计出来的仿射矩阵完成). 这部完成后,图像可以匹配了,但是两 ...

  5. Apache JMeter录制HTTPS的方法及测试中常见问题解决

    Jmeter录制https请求,录制不到的常见解决方案: cmd java -version 显示为1.7 以jdk1.7为例,打开\Java\jre7\lib\security 中的,java.se ...

  6. Android输入法的显示与隐藏

    显示输入法: public void ShowSoftInput(View v) { // v 接受输入的控件 mInputMethodManager = (InputMethodManager) ( ...

  7. Kubernetes入门

    简介 它是一个全新的基于容器技术的分布式解决方案,基于强大的自动化机制解决传统系统架构中负载均衡和实施部署的问题,从而节省了30%开发成本,其次具有完备的集群能力, 包括服务注册.服务发现.故障的发现 ...

  8. spring多数据源事务配置

    项目中遇到多数据源问题, 对于每个数据源需要单独完成事务控制, 这里记录下具体实现方法 在spring配置文件中 定义两个数据源 <!-- 数据源定义(spring-jndi) -->   ...

  9. php中定时计划任务的实现原理

    根据php手册简单介绍一些相关的知识: 1.连接处理: 在 PHP 内部,系统维护着连接状态,其状态有三种可能的情况: 0 - NORMAL(正常) 1 - ABORTED(异常退出) 2 - TIM ...

  10. VMware虚拟机不能联网的解决办法

    Linux安装的centos系统,不能正常连接网络 1.编辑config文件 [root@localhost ~]# cd /etc/selinux [root@localhost selinux]# ...