自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 【转】二战,真实版越狱王!冯.维拉

对于英国安保工作来说,德国空军中尉冯·维拉是一个很危险的人物,他创造了战争史中最为经典的三次逃跑,并使盟国在1941年5月以后很难再从新被俘的德军飞行员处得到情报。同时他也是德国空军乃至全世界飞行员中最能吹牛和胆大妄为的一个。 `    弗朗茨·冯·维拉(Franz· Von·Werra)于1914年7月13日生在瑞士Leuk(一个位于瑞士Valais州的城镇)的贫

2009-12-22 11:50:00 1728

原创 基于OHCI的USB主机 —— OHCI(基本流程)

根据上面的介绍可以发现,通过USB端口进行数据收发的主要工作就是构建ED和TD列表。其中ED列表控制数据的传输方向,TD列表完成具体的数据打包和传输。按照OHCI规范,ED和TD列表都是可以在使用过程中对某个节点进行修改,比如增加和删除。但是为了程序处理简便起见,最好采用顺序处理模式,也就是一个命令执行完毕以后,再重新构建新的ED和TD列表,执行下一个命令。进行控制/批量传输的主要处理流程

2009-12-07 18:02:00 1020

原创 基于OHCI的USB主机 —— OHCI(传输描述符)

传输描述符(TD) 传输描述符(TD)是系统内存的数据结构,被HC用于定义从端点收发数据的缓冲区。TD分为2个类型:通用TD和同步TD。通用TD用于中断、控制和批量端点,同步TD用于同步传输。使用两种不同的TD类型是因为缓冲区类型的不同。对于U盘主机控制器来说,不使用同步传输。

2009-12-07 10:38:00 1212

原创 基于OHCI的USB主机 —— OHCI(HCCA)

主机控制器通信区(HCCA)是一个256字节对齐的内存数据结构,被系统软件用于与HC进行通信,收发相关控制和状态信息。系统软件通过HcHCCA寄存器设置HCCA的地址到HC。该结构允许软件给HC的函数指明方向,而不需要从HC读取,除非不寻常的状况发生(例如发生错误)。通常与HC的交互可以通过读取HCCA结构的值或者写入

2009-12-07 10:38:00 1784 1

原创 基于OHCI的USB主机 —— OHCI(端点)

OHCI (Open Host Controller Interface),是康柏、微软、国家半导体等公司共同制定的一个USB主机接口规范,它提供一个更抽象的接口来完成USB数据传输工作。在OHCI规范中,最重要的几个概念是端点(EndPoint - ED)、传输描述符(Transport Descriptor -TD)、主机控制器通信区(HCCA)。其中ED负责确定传输类型(控制传输

2009-12-07 10:37:00 1376

原创 基于OHCI的USB主机 —— 寄存器(其它)

USB端口关电对USB端口进行关电处理的目的主要有两个,一是安全拔下U盘,防止带电插拔造成数据丢失或错误,另一个是为了再次开电,对U盘内部程序进行复位。/** * 断开USB端口的供电 */short ohciHardDisable(void)

2009-12-07 10:35:00 962

原创 基于OHCI的USB主机 —— 寄存器(设备连接)

读取USB设备连接状态读取HcRhPortStatus寄存器可以得到相应USB端口是否有设备连接,但是在嵌入式系统中,为了增强系统的稳定性,要有适当的算法保证在一段时间内,连续读到设备连接或断开,则才能确定设备的连接状态,下面的函数在定时中断中被调用,用来检测USB设备的连接状况:/** * 读取USB

2009-12-07 10:34:00 789

原创 基于OHCI的USB主机 —— 寄存器(复位)

USB端口复位当USB设备连接到某个端口上以后,根据规范,需要对相应USB端口进行复位 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

2009-12-07 10:32:00 775

原创 基于OHCI的USB主机 —— 寄存器(传输)

启动控制传输进行控制传输之前,需要设置好相应的ED和TD参数(参见下一章),启动传输时需要设置OHCI寄存器中的控制传输ED头指针寄存器和控制传输的当前ED指针寄存器,然后设置控制寄存器允许处理控制传输列表,控制状态寄存器有控制传输列表数据需要传输,代码如下:/** * 通过Control端口传

2009-12-04 17:09:00 825

原创 基于OHCI的USB主机 —— 寄存器(初始化)

硬件初始化的操作比较简单,主要代码从例程《AT91RM9200-BasicUHP》中抄过来,另外增加了中断向量初始化的部分。在AM9200中,USB的中断是基于AIC中断的,因此要设置对应的AIC中断。在此之前要设置OHCI的中断寄存器,代码如下:/** * USB主机初始化

2009-12-04 17:07:00 7724

原创 基于OHCI的USB主机 —— 寄存器层(说明)

AM9200支持标准的OHCI规范,在其开发文档中对于USB主机部分的说明干脆就直接说参见OHCI规范。阅读AM9200的例程《AT91RM9200-BasicUHP》代码,发现系统已经提供了访问OHCI寄存器的指针pUhp,使用该指针就可以访问到所有的OHCI寄存器,因此读写寄存器的操作就是对pUhp指针进行操作。按照面向对象的编程思想,将所有寄存器看作是一个对象,对其操作都是通过接口来

2009-12-04 17:02:00 1669

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除