找回密码
 注册
搜索
查看: 3639|回复: 29

[讨论] MT6223D平台实现软USB研究

[复制链接]
发表于 2010-3-12 22:15:17 | 显示全部楼层 |阅读模式
Dear All,

    最近小弟在研究MT6223D上实现软USB功能。把这两天的研究心得体会写出来和大家一起分享。
    首先使用软USB后必须要屏蔽RF功能即把RF Sleep掉,关闭一起不必要的器件。
    第二进入软USB模式后在也无法退出到正常模式,即软USB应该是一个While(1){}  +  中断模式,我想很多在裸机上开发过单板的工程师都知道这种模式吧。
    第三GPIO27即可配成EINT5也可配成GPIO模式,理解这一点很重要,要明白什么时候配成EINT5,什么时候配成GPIO模式。
    第四USB是差分信号,GPIO28也可侦听PC发过来的数据包。
    第五要明白PC端接收手机发过来的数据,GPIO27\GPIO28应该是何种信号,PC端才能准确无误的识别。
    第六要能准确解析及发送USB协议数据包。建议使用一个精度很高的Timer,一个最小时钟到是则从GPIO27\GPIO28读取或发送一个位。这个Timer应该使用硬件Timer,MTK平台共有三个Timer,GPT这个Timer暂未使用,可以使用GPT。
    第七要不断的喂狗。
    第八到USB拔出时要SHUTDOWN SYSTEM.

    现在仅仅是初步的思考,请大家多提宝贵意见,谢谢。
 楼主| 发表于 2010-3-12 22:19:31 | 显示全部楼层
还好了一条:
     第九为了加快运行速度,建议把代码及数据全部拷到MT6223D片内SRAM里运行。
点评回复

使用道具 举报

发表于 2010-3-13 13:42:04 | 显示全部楼层
有空探讨一下
点评回复

使用道具 举报

发表于 2010-3-15 13:54:59 | 显示全部楼层
好贴,继续探讨撒,
问下楼主,是自己写的框架还是别人的呢
点评回复

使用道具 举报

 楼主| 发表于 2010-3-15 20:43:05 | 显示全部楼层
破解别人的obj,自己重写。
点评回复

使用道具 举报

发表于 2010-3-16 10:13:01 | 显示全部楼层
楼主研究的不错,很有见地!
点评回复

使用道具 举报

发表于 2010-3-18 14:44:24 | 显示全部楼层
obj怎么破啊,lib能破吗?
点评回复

使用道具 举报

发表于 2010-3-19 04:31:39 | 显示全部楼层
一个问题:总线上的比特率是多少?是不是由timer INT来控制的?
另外,有没有code的检测和校验机制。
谢谢
点评回复

使用道具 举报

 楼主| 发表于 2010-3-19 09:51:24 | 显示全部楼层
IDA可破.



还有指导性的文档可学习.
一、U盘基本工作原理

通用串行总线(Universal serial Bus)是一种快速灵活的接口,

当一个USB设备插入主机时,由于USB设备硬件本身的原因,它会使USB总线的数据信号线的电平发生变化,而主机会经常扫描USB总线。当发现电平有变化时,它即知道有设备插入。

当USB设备刚插入主机时,USB设备它本身会初始化,并认为地址是0。也就是没有分配地址,这有点象刚进校的大学生没有学号一样。

正如有一个陌生人闯入时我们会问“你是什么人”一样,当一个USB设备插入主机时,,它也会问:“你是什么设备”。并接着会问,你使用什么通信协议等等。当这一些信息都被主机知道后,主机与USB设备之间就可以根据它们之间的约定进行通信。

USB的这些信息是通过描述符实现的,USB描述符主要包括:设备描述符,配置描述符,

接口描述符,端点描述符等。当一个U盘括入主机时,你立即会发现你的资源管理器里多了一个可移动磁盘,在Win2000下你还可以进一步从主机上知道它是爱国者或是朗科的。这里就有两个问题,首先主机为什么知道插入的是移动磁盘,而不是键盘或打印机等等呢?另外在Win2000下为什么还知道是哪个公司生产的呢?其实这很简单,当USB设备插入主机时,主机首先就会要求对方把它的设备描述符传回来,这些设备描述符中就包含了设备类型及制造商信息。又如传输所采用的协议是由接口描述符确定,而传输的方式则包含在端点描述符中。

USB设备分很多类:显示类,通信设备类,音频设备类,人机接口类,海量存储类.特定类的设备又可分为若干子类,每一个设备可以有一个或多个配置,配置用于定义设备的功能。配置是接口的集合,接口是指设备中哪些硬件与USB交换信息。每个与USB交换信息的硬件是一个端点。因些,接口是端点的集合。

U盘应属于海量存储类。

USB海量存储设备又包括通用海量存储子类,CDROM,Tape等,U盘实际上属于海量存储类中通用海量存储子类。通用海量存储设备实现上是基于块/扇区存储的设备。

USB组织定义了海量存储设备类的规范,这个类规范包括4个独立的子类规范。主要是指USB总线上的传输方法与存储介质的操作命令。

海量存储设备只支持一个接口,即数据接口,此接口有三个端点Bulk input ,Bulk output,中断端点

这种设备的接口采用SCSI-2的直接存取设备协议,USB设备上的介质使用与SCSI-2以相同的逻辑块方式寻址
二、 Bulk-Only传输协议

当一个U盘插入主机以后,主机会要求USB设备传回它们的描述符,当主机得到这些描述符后,即完成了设备的配置。识别出USB设备是一个支持Bulk-Only传输协议的海量存储设备。这时应可进行Bulk-Only传输方式。在此方式下USB与设备之间的数据传输都是通过Bulk-In和Bulk-Out来实现的。
在这种传输方式下,有三种类型数据在USB和设备传送,它们是命令块包(CBW),命令执行状态包(CSW)和普通数据包。CBW是主机发往设备的命令。格式如下:
其中dCBWSignature的值为43425355h,表示当前发送的是一个CBW。

DCBWTag:以后再讲。

DCBWDataTransferLength:表示这次CBW要传送数据长度。

BmCBWFlags:表示本次CBW是读数据还是写数所

BBWCBLength:表示命令的长度。

CBWCB:表示本次命令内容。也即是SCSI命令。

当设备从主机收到CBW块以后,它会把SCSI命令从CBW中分离出来,然后根据要求执行,执行的结果又以CSW的形式发给主机。

CSW的格式如下:
其中dCSWSignature的值为53425355h,表示当前发送的是一个CSW。

DCSWTag:必须和CBW中dCBWTag一样。

DCSWDataResidue:还要传送的数据。

BCSWStatue:命令执行状态,命令正确执行时,为0。








如果有人研究出来了,别忘记告诉我.
点评回复

使用道具 举报

发表于 2010-3-20 04:42:25 | 显示全部楼层
一个问题:传输的时候总线上的比特率是多少?是不是由timer INT来控制的?是不是严格按照usb1.1或2.0规范来的,我的理解如果比特率不准的话是不可能和host通讯的.不知道你怎么做的
另外,有没有数据的检测和校验机制。
点评回复

使用道具 举报

发表于 2010-3-23 11:48:39 | 显示全部楼层
DP,DM是差分输出(入)的,怎么用GPIO实现这个差分?
点评回复

使用道具 举报

发表于 2010-3-26 10:20:57 | 显示全部楼层
usb 执行代码
点评回复

使用道具 举报

发表于 2010-3-26 10:22:51 | 显示全部楼层
楼主分析不错。
基本流程大致是这样的:
1、关狗;
2、锁中断;
3、拷贝执行代码到SDRAM;执行代码如附件;
4;跳转到SDRAM,执行USB协议操作;

那位能重新USB这部分代码,别忘了通知,关注中。
【文件名】:10326@52RD_inramdata.rar
【格 式】:rar
【大 小】:16K
【简 介】:
【目 录】:


点评回复

使用道具 举报

发表于 2010-3-26 20:22:57 | 显示全部楼层
可是细节还是没有回答,大概流程谁都明白
点评回复

使用道具 举报

发表于 2010-3-27 19:13:47 | 显示全部楼层
第六要能准确解析及发送USB协议数据包。建议使用一个精度很高的Timer,一个最小时钟到是则从GPIO27\\GPIO28读取或发送一个位。这个Timer应该使用硬件Timer,MTK平台共有三个Timer,GPT这个Timer暂未使用,可以使用GPT。


------这一步关于Timer的说法不当。1.5M 的速率意味着0.6us左右一位,而GPT的时钟源是32K,最小定时分辩率也要1/32 毫秒,精度远远不够
点评回复

使用道具 举报

发表于 2010-3-27 23:46:19 | 显示全部楼层
以下是引用consulter在2010-3-27 19:13:47的发言:
第六要能准确解析及发送USB协议数据包。建议使用一个精度很高的Timer,一个最小时钟到是则从GPIO27\\GPIO28读取或发送一个位。这个Timer应该使用硬件Timer,MTK平台共有三个Timer,GPT这个Timer暂未使用,可以使用GPT。


------这一步关于Timer的说法不当。1.5M 的速率意味着0.6us左右一位,而GPT的时钟源是32K,最小定时分辩率也要1/32 毫秒,精度远远不够

对头,这个比特率还远远达不到1.1的规范
点评回复

使用道具 举报

发表于 2010-3-29 10:55:32 | 显示全部楼层
重点关注进展
点评回复

使用道具 举报

发表于 2010-4-2 01:07:47 | 显示全部楼层
关注中。
点评回复

使用道具 举报

发表于 2010-4-6 09:54:27 | 显示全部楼层
下载先看看
点评回复

使用道具 举报

发表于 2010-5-1 00:24:54 | 显示全部楼层
附件给出的.bin文件具体怎么用呢?
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-6 18:27 , Processed in 0.050623 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表