Linux USB札记

 嵌入式linux内核添加USB模块(U盘)支持


使用menuconfig工具进行配置

1Device Drivers->SCSI device support->SCSI disk support此选项必须勾选

2Device Drivers->USB support->Support for Host-side USB 此选项选中后会出现子菜单,故必须选中

3Device Drivers->USB support->USB Mass Storage support 此选项必须选中,否则/dev/下没有设备

4、因为我是在DM6467平台下,所以需要Device Drivers->USB support->Inventra USB Highspeed Dual Role Controller Support选项,并选择其子选项下的DaVinci 644x USB supportDriver ModeHost

编译内核即可,下载内核后成功支持USB的热插拔及其文件系统


以上选项仅基于我自己的平台,且测试条件单一(只有一个U盘、linux内核为2.6.0.10



EHCIOHCI,UHCI的比较和区别 

2012-07-20 23:25 34488人阅读 评论(1) 收藏 举报

interface工作

什么是 ehci?什么是 ohci?就是host controller 的接口

EHCIOHCI的比较和区别
   什么是 ehci?什么是 ohci?就是host controller 的接口.从硬件上来说,usb 设备要想工作,除了外设本身,必须还有一个咚咚叫做 usb host controller.一般来说,一个电脑里有一个 usb host controller就可以了,她就可以控制很多个设备了,比如 u ,比如 usb 键盘,比如 usb 鼠标.所有的外设都把自己的请求提交给usb host controller.然后让 usb host controller 统一来调度.
   现在一般的USB桥接器模块有两种类型,UHCIOHCI。在决定插入那一个桥接器模块时,可以察看/proc/pci文件来决定。。一般而言,UHCI类型的桥接器它的插入模块是uhciusb-uhci(由内核版本决定);而对于OHCI类型的桥接器它的插入模块是ohciusb-ohci

    uhci(universal host controller interface): Intel用在自家芯片组上的usb 1.1主控制器(host controller)的硬件实例
    ehci(enhanced host controller interface): usb 2.0的主控制器标准接口。
     ohci(open host controller inferface):一个不仅仅是usb用的主控制器接口标准。主要是遵循csr (configuration space register)标准。是其他厂商在设计usb host controller时遵循的标准,如via, nec, ali, 包括nvidia等等。
     ehci是满足usb 2.0 specification里面对usb host controller (high speed)的要求的硬件设计。


为了实现USB主机功能的统一,提高系统的可靠性与可移植性,上游芯片生产厂家在确定USB标准的同时,也确定了相应的主机规范。现在用得比较广泛的有三种,其中的用于USB2.0高速设备的EHCIEnhanced Host Control Interface增强主机控制接口)规范是INTEL用于USB2.0高速主机的。而同是INTEL推出的UHCIUniversal Host Control Interface 通用主机)与前Compaq Microsoft等推出的OHCIOpen Host Control Interface开放主机控制接口)可用于全速与低速USB系统中,硬件的要求与系统性能、软件复杂的要求相对较低,也能够满足大部分的具有USB接口嵌入式系统的要求。而在UHCIOHCI的对比中,UHCI对硬件的要求相对较少,但对系统的处理能力与软件的开发要求相对要高(PC机就较多地采用了UHCI);OHCI则把较多的功能定义在硬件中,软件需要处理的内容就相对容易,对系统的处理能力和系统资源的要求就低。

因此,在嵌入式的USB HOST功能中,较多地选用了遵循OHCI的规范的硬件,从而简化了系统的设计。


EHCI 驱动程序的功能包括:

  • 符合支持 USB 2.0 的增强主机控制器接口的标准。
  • 支持高速控制、批处理和中断传输。
  • 目前尚不支持高速同步事务。
  • USB 2.0 芯片包含一个 EHCI 控制器以及一个或多个 OHCI UHCI 控制器。
  • USB 1.1 设备插入后会动态分配给 OHCI UHCI 控制器。USB 2.0 设备插入后会动态分配给 EHCI 控制器。




    简单地讲,OHCIUHCI都是USB1.1的接口标准,而EHCI是对应USB2.0的接口标准,最新的xHCIUSB3.0的接口标准。
  • 1. OHCIOpen Host Controller Interface)是支持USB1.1的标准,但它不仅仅是针对USB,还支持其他的一些接口,比如它还支持Apple的火线(FirewireIEEE 1394)接口。与UHCI相比,OHCI的硬件复杂,硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单。主要用于非x86USB,如扩展卡、嵌入式开发板的USB主控。
  • 2. UHCIUniversal Host Controller Interface),是Intel主导的对USB1.01.1的接口标准,与OHCI不兼容。UHCI的软件驱动的任务重,需要做得比较复杂,但可以使用较便宜、较简单的硬件的USB控制器。IntelVIA使用UHCI,而其余的硬件提供商使用OHCI
  • 3. EHCIEnhanced Host Controller Interface),是Intel主导的USB2.0的接口标准。EHCI仅提供USB2.0的高速功能,而依靠UHCIOHCI来提供对全速(full-speed)或低速(low-speed)设备的支持。
  • 4. xHCIeXtensible Host Controller Interface),是最新最火的USB3.0的接口标准,它在速度、节能、虚拟化等方面都比前面3中有了较大的提高。xHCI支持所有种类速度的USB设备(USB 3.0 SuperSpeed, USB 2.0 Low-, Full-, and High-speed, USB 1.1 Low- and Full-speed)。xHCI的目的是为了替换前面3中(UHCI/OHCI/EHCI)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++实现任意类型数组类的封装

MyArray.hpp #pragma once #include<iostream> #include<string> using namespace std; template<class T>class MyArray { public://构造explicit MyArray(int capacity) //防止隐式类型转换&#xff0c;防止MyArray arr 10{this->m_Capacity capacity…

Linux内核配置选项 (经典学习)

转载地址http://book.csdn.net/bookfiles/972/10097230254.shtml 2.5 Linux内核配置选项 下面以最新的Linux 2.6.20内核为例&#xff0c;介绍比较常用的一些Linux内核配置选项&#xff0c;其他选项读者可以参考系统提供的帮助信息。 需要说明的是&#xff0c;在内核配置中&am…

深入理解linux系统下proc文件系统内容

另外&#xff0c;可以参考这个http://www.centos.org/docs/5/html/5.1/Deployment_Guide/ch-proc.html 内容摘要&#xff1a;Linux系统上的/proc目录是一种文件系统&#xff0c;即proc文件系统。 Linux系统上的/proc目录是一种文件系统&#xff0c;即proc文件系统。与其它常见…

c++中的异常--1(基本概念, c语言中处理异常,c++中处理异常,异常的基本使用,栈解旋)

异常基本概念 异常处理就是处理程序中的错误&#xff0c;所谓错误是指在程序运行的过程中发生的一些异常事件&#xff08;如&#xff1a;除0退出&#xff0c;数组下标越界&#xff0c;所要读取的文件不存在&#xff0c;空指针&#xff0c;内存不足等等&#xff09; c语言中处…

RGB、YUV和YCbCr

之前对RGB、YUV和YCbCr一直没有清晰的理解和认识&#xff0c;今天打算做一个小结&#xff0c;结合网上的文章谈谈自己的看法&#xff0c;也希望有机会看到这篇文章的人能指点一二&#xff0c;相互交流&#xff0c;共同进步。 首先要说明&#xff0c;上述的RGB、YUV和YCbCr都是人…

c++中的异常---2(异常接口声明,异常变量的生命周期,异常的多态使用)

异常接口声明 为了加强程序的可读性&#xff0c;可以在函数声明中列出可能抛出异常的所有类型&#xff0c;例如&#xff1a;void func() throw(A,B,C);这个函数func能够且只能抛出类型A,B,C及其子类的异常如果在函数声明中没有包含异常接口声明&#xff0c;则此函数可以抛任何…

c++中的异常---3(系统标准异常库,编写自己异常类)

系统标准异常库 #incldue out_of_range 等… #include<iostream>#include<string>using namespace std;//系统提供标准异常#include<stdexcept>class Person{public:Person(string name, int age){this->m_Name name;//年龄做检测if (age<0 || age&g…

H.264中IDR帧和I帧区别

IDR&#xff08;Instantaneous Decoding Refresh&#xff09;--即时解码刷新。I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便&#xff0c;要首个I帧和其他I帧区别开&#xff0c;所以才把第一个首个I帧叫IDR&#xff0c;这样就方便控制编码和解码…

c++中的IO流(流的概念和流类库的结构,标准的输入输出流)

流的概念和流类库的结构 程序的输入指的是从输入文件将数据传送给程序&#xff0c;程序的输出指的是从程序将数据传送给输出文件 c输入输出包含以下三个方面的内容 对系统指定的标准设备的输入输出。即从键盘输入数据&#xff0c;输出到显示器屏幕&#xff0c;这种输入输出称…

MTD应用学习札记

今天做升级方案用到了mtd-utils中的flash_eraseall和flash_cp两个工具&#xff0c;在进行方案验证的时候&#xff0c;遭遇到各种不解和疑惑&#xff0c;因对MTD的原理不熟悉&#xff0c;所以只能多次尝试&#xff0c;虽然最后把方案搞定了&#xff0c;不过觉得MTD中的mtd和mtdb…

c++中的文件读写的操作

写文件 ofstreamopen指定打开方式isopen判断是否打开成功ifs<<“数据”ofs.close&#xff08;&#xff09; 读文件 ifstream ifs 指定打开方式ios::in isopen判断是否打开成功 读取有三种方式 #include<iostream>using namespace std;//文件读写头文件#incl…

udhcpc命令

由于要使用网络通讯&#xff0c;所以不可避免的要用到dhcp。理想的网络通讯方式是下面3种都要支持: 1,接入已有网络。这便要求可以作为dhcp客户端。 2,作为DHCP服务器&#xff0c;动态分配IP。 3,指定固定IP 第3种情况没有什么好说的&#xff0c;简单说下前2种情况。 使用步骤&…

c++的STL--1概念通述

STL的概念 什么是STL? STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且 是一个包罗数据结构与算法的软件框架。 STL从广义上分为&#xff1a;容器(container)&#xff0c;算法(algorit…

socket通信和异常处理札记

Linux socket通信出现CLOSE_WAIT状态的原因与解决方法 这个问题之前没有怎么留意过&#xff0c;是最近在面试过程中遇到的一个问题&#xff0c;面了两家公司&#xff0c;两家公司竟然都面到到了这个问题&#xff0c;不得不使我开始关注这个问题。说起CLOSE_WAIT状态&#xff0c…

mac 下使用wireshark监听网络上的数据

分三个步骤&#xff1a; 1.wireshark安装 wireshark运行需要mac上安装X11&#xff0c;mac 10.8的系统上默认是没有X11的。先去http://xquartz.macosforge.org/landing/下载最新的 xquartz安装&#xff0c;安装好就有X11了。 wireshark的下载&#xff0c;网…

c++的vector容器

vector容器概念 vector是表示可变大小数组的序列容器。就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的&#xff0c;而且它…

嵌入式Linux下3G USB Modem的使用

busybox中需打开&#xff1a;wc&#xff0c;pidof&#xff1b; busybox中shell下打开getopts 百度搜索“Serial connection established. using channel 1”包含大量问题解答 2013-12-22 0个评论 收藏 我要投稿 一.ARM-Linux ARM-Linux-2.6.17 3G USB Modem:hu…

新一代数据库技术

新一代非关系型数据库有以下5个主要类型&#xff1a; 面向文件存储&#xff1a;适用于存储海量文件&#xff0c;代表产品MongoDb 列存储(wide column store/column-family)数据库&#xff1a;快速查找相关数据&#xff0c;相关数据被放在同一列中&#xff0c;代表产品Cassandra…

c++中stack容器

Stack 简介 stack 是堆栈容器&#xff0c;是一种“先进后出”的容器。stack 是简单地装饰 deque 容器而成为另外的一种容器。#include stack没有迭代器 Stack所有元素的进出都必须符合“先进后出”的条件&#xff0c;只有stack顶端的元素&#xff0c;才有机会被外界取用&am…

详解udev

如果你使用Linux比较长时间了&#xff0c;那你就知道&#xff0c;在对待设备文件这块&#xff0c;Linux改变了几次策略。在Linux早期&#xff0c;设备文件仅仅是是一些带有适当的属性集的普通文件&#xff0c;它由mknod命令创建&#xff0c;文件存放在/dev目录下。后来&#xf…