今天查看了一下在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. 一种灵活的API设计模式:在Spring Boot中支持GraphQL

    导读:GraphQL是一种基于api的查询语言,它提供了一种更高效.强大和灵活的数据提供方式.它是由Facebook开发和开源,目前由来自世界各地的大公司和个人维护.本文作者先介绍了GraphQL,随 ...

  2. 嵌入式linux 系统支持usb wifi BL-R8723BT1

    目前,在消费电子或商业电子领域,许多产品跑的是Android系统;而在工控等行业,应用linux,Ubuntu系统,也是十分普遍;当前很多主流的开发平台,如全志,瑞星微,三星,官方提供的多是Andro ...

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

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

  4. 在controller中调用指定参数给指定表单_第005课:Spring Boot 中MVC支持

    Spring Boot 的 MVC 支持主要介绍实际项目中最常用的几个注解,包括 @RestController. @RequestMapping.@PathVariable.@RequestPara ...

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

    随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...

  6. Spring Boot中的缓存支持(二)使用Redis做集中式缓存

    上一篇介绍了在Spring Boot中如何引入缓存.缓存注解的使用.以及EhCache的整合. 虽然EhCache已经能够适用很多应用场景,但是由于EhCache是进程内的缓存框架,在集群模式下时,各 ...

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

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

  8. redis 支持 json_Spring Boot 中集成 Redis

    阅读本文约需要5分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了 Spring Boot 中的拦截器,今天跟大家分享下 ...

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

    一些老Mac机的用户想装Windows,却发现自己的系统上的Boot Camp Assistant(以下简称BCA)没有USB安装Windows的选项. 下面以我的MacBook Pro (13-in ...

最新文章

  1. /etc/profile ,/etc/bashrc ,~/.bash_profile,~/ .bashrc 区别与联系
  2. 用Python解“计算圆周率”题
  3. python数据分析numpy_Python数据分析之numpy学习
  4. 使用JTextArea示例
  5. 微信开发之获取OAuth2.0网页授权认证和获取用户信息进行关联(转:http://playxinz.iteye.com/blog/2249634)
  6. 资产支持证券(Asset-Backed Security)
  7. Mac查看本机ip地址
  8. jzoj1029-电子眼【树形dp】
  9. 老兵的十年职场之路(三)
  10. 终端安装解决svn cannot set LC_CTYPE locale的问题
  11. Nmap Cheat Sheet Part 1
  12. 表格(table)不被撑开的解决办法
  13. 如何采用SMW0存储模板和OLED操作Excel的方式生成Excel单据
  14. vim写python时:line 1: syntax error near unexpected token
  15. [Pyhon疫情大数据分析] 四.微博话题抓取及新冠肺炎疫情文本挖掘和情感分析
  16. 公摊面积用计算机怎么计算,公摊面积计算(公摊面积计算器)
  17. flask项目中出现Error: While importing ‘manager‘, an ImportError was raised.
  18. PCL实现点云选取并计算选取点法向量及可视化
  19. 广式粤语VS港式粤语
  20. SQL数据库修复例子

热门文章

  1. 人工智能-深度学习Tensorflow2.0-python
  2. html5+css3布局尝试
  3. 100道经典Hadoop常见面试/笔试题及答案解析
  4. 朋友入职中软一个月(外包华为)就离职了
  5. PLC通过ModbusTCP通讯——基于组态王7.5进行数据采集
  6. Redis源码阅读笔记-动态字符串(SDS)结构
  7. c++ set使用(增删查遍历)
  8. 局域网内,如何使用命令行关闭别人的电脑
  9. 数字图像处理报告:实验3 同态滤波、频域滤波、傅里叶变换性质、DCT变换性质
  10. 关于瞳孔跟踪、面部器官识别的最终UI界面