otg发生异常文件传输终止??

ViVOX7使用OTG数据线传歌到U盘显示粘贴已终止是咋回事_百度知道
ViVOX7使用OTG数据线传歌到U盘显示粘贴已终止是咋回事
我有更好的答案
u盘还有空间吗?
建议您换一根数据线将U盘与手机连接,再进行以上操作。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。USB OTG技术的应用分析
USB OTG技术的应用分析
存储测试是在对被测对象无影响或影响在允许范围的条件下,在被测体或测试现场放置微型数据采集与存储测试仪,现场实时完成信息的快速采集与记忆,事后回收并由计算机处理和再现测试信息的一种动态测试技术。存储测试的主要技术特点是现场实时快速完成动态数据采集与存储记忆,特别是在多种恶劣环境和紧凑设计条件下完成动态参数测试,事后回收处理再现。本文就对USB OTG技术在存储测试中的应用做一个简要的分析。传统的存储
存储测试是在对被测对象无影响或影响在允许范围的条件下,在被测体或测试现场放置微型数据采集与存储测试仪,现场实时完成信息的快速采集与记忆,事后回收并由计算机处理和再现测试信息的一种动态测试技术。存储测试的主要技术特点是现场实时快速完成动态数据采集与存储记忆,特别是在多种恶劣环境和紧凑设计条件下完成动态参数测试,事后回收处理再现。本文就对USB OTG技术在存储测试中的应用做一个简要的分析。传统的存储测试仪存在着如下不足:(1)存储介质置于仪器内部,回读数据必须将整个仪器伺收。由于存储测试所面临的测试环境复杂,往往加装了复杂、笨重的防护体或置于掩体中,给仪器的拆卸回收造成了困难。而户外回读分析数据往往受条件所限难以续施。 (2)随着存储测试技术的发展,存储测试所面临的对豫和环境日趋复杂,测试时间和所需容量灵活多变,并逐步加大。由于传统的存储测试仪设计结构所限,不同容量就意味着要重新设计生产新的仪器。(3)当前的计算机主板普遍集成了USB接口,存储测试仪一贯采用的"大端口"如:并口、串口等已逐渐被抛弃。一些新推出的主板甚至只集成了。USB 口。存储测试仪接口必须适应这一转变,通过一定的措施实现基于。USB 口的通信。本设计采用南京沁恒公司的CH375和Atmel的ATmega32单片机所设计的存储测试仪有效克服了以上的不足,在实际应用中取得了良好的效果。U盘作为新型移动存储设备,以体积小、速度快、抗震动、通用性强的特点备受青睐。该系统通过单片机对U盘进行读写操作,采集数据按文件方式直接存储到U盘,可以有效提高数据保存速度及可靠性。特别适合于长时问、大容量数据采集的场合,方便了与PC等上位机进行数据交换,从而实现现场采集数据、室内分析数据。通过更换U盘可以灵活选择系统容量,极大地提高了存储测试仪的通用性,降低了测试成本。2 USB OTG技术及海量存储设备协议作为USB 2.0的补充规范USB OTG技术以其双重强大功能使USB设备摆脱了对PC的完全依赖,USB外设在无PC主机参与的情况下可以直接互连以进行通信。USB通信以分层方式进行,总体上可分为功能层、USB设备层和总线接口层。U盘属于USB家族内的海量存储(USB Mass Storage)设备,是一种基于块/扇区的随机存储设备,他与主机之间采用"控制/批量/中断"(CBI)方式或"批量"(Bulk-Only)方式与主机通信。USB通信协议规范十分复杂,"USB海量存储协议包括CBI,Bulk-Only,ATA和UFI等4个独立的子类规范。前2个子规范定义了数据/命令/状态在USB总线上的传输方法,后2个子规范定义了存储介质的操作命令。其中,ATA命令规范用于硬盘,UFI命令规范则是针对USB移动存储制定的。U盘在进行数据保存之前,必须先按某个文件系统的规定进行格式化。相对于计算机硬盘来说U盘的存储容量要小得多,因此在U盘中FAT16文件系统可取得比较高的综合效率且兼容性较好,广泛地应用于U盘之类的移动存储设备中。FAT16文件系统结构分为5个部分:MBR区,DBR区,FAT区,FDT区,DATA区。其中MBR区为主引导记录区,DBR区为操作系统引导记录区,FAT区存放文件分配表,FDT区存放文件目录表,DATA区是真正意义上的数据存储区。3 系统硬件设计系统采用AVR高档机系列中功能强大的单片AT-mega32作为中央处理芯片,选用南京沁恒电子公司的CH375作为USB OTG技术主机控制芯片。硬件系统的工作原理框图如图1所示:ATmega32是一款基于AVR RISC结构的低功耗8位单片机,外接:16 MHz晶振性能可达:16 MI/S。AT-mega32包含了32 kB的系统内可编程FLASH,1kBE2PROM,2kB SRAM,32个通用I/O 口,32个通用工作寄存器,一个8路10位具有可选增益差分输入的A/D转换器,支持多种接口方式。丰富的片上存储器空间极大地提高了对U盘操作时的工作效率,多样化的外围接口方便了系统的扩展,高效的CPU指令集可以使系统获得比较高的采样率。CH375具有8位数据总线和读、写、片选控制线以及中断输出,同时支持5 V和3.3 V电源电压,遵循USB 1.1规范。因此CH375作全速USB Host。主机接口时只需外加晶振和电容,就可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。由于读写U盘或移动硬盘时一般都是以扇区模式进行的,为了进一步提高执行效率可以适当增大磁盘数据缓冲区和文件数据缓冲区(都是512 B的整数倍),并且缓冲区越大,执行的效率越高,所以外扩了32 kB的RAM 62256。传感器信号经模拟电路调理之后由A/D转换器MAX 153量化成数字信号,在单片机ATmega32的控制下循环存入62256。待触发信号到来之后,按照程序预设的负延迟点数将62256扣的数据连同后续到来的信号全部经由CH375存入外挂的U盘,直至写满在U盘中新建的文件并关闭。同时由系统所设置的状态灯指示工作已完成。实际设计中ATmega32与CH375接口部分的原理图如图2所示:4 系统软件设计USB大容量存储设备软件结构示意图3所示:一般情况下,单片机或嵌入式系统处理USB OTG技术存储设备的文件系统需要实现图3左边的几个层次,右边是USB存储设备的内部结构层次。由于CH375不仅是一个通用的USB-HOST硬件接口芯片,还内置了相关的固件程序,简化了外部编程。内置固件包含上图左边的UFI命令层,USB基本传输命令层及Bulk-Only协议层,所以实际的单片机程序只需要处理FAT文件系统层,并且即使这一层也可以由CH 375的U盘文件级子程序库实现。CH375以C语言子程序库提供了。USB存储设备的文件级接口,这些应用层接口API包含了常用的文件级操作,可以移植并嵌入到各种常用的单片机程序中。这里采用ICC AVR软件来编写ATmega32的程序,并调用CH375所提供的AVRU盘文件级子程序库CH375HFB.A。程序运行并初始化后,系统进入待触发状态。检测到触发信号到来之后,通过CH375FileCreate新建文件,将AD所采集的数据通过CH375FileWrite写入U盘,文件写满之后调用CH375FileClose关闭文件。采集结束之后直接取下外接的U盘便可以拿回室内分析。由于采用了文件管理模式,所需操作十分简单,就像平常读取U盘中的文件一样。5 结束语经测试该系统在实际使用时达到了预想效果,克服了以前存储测试仪的一些不足。尤其对于缓变大容量信号的采集取得了良好效果。由于CH375只支持USB1.1协议,并且采用了单片机作为控制器负责管理整个系统的运行,势必影响到仪器的采样率。因此,选用支持USB 2.0协议的USB OTG技术器件,同时采用性能更好的控制器如DSP,CPLD等可极大地提高仪器的采样速率,以适应更高的需求。
存储测试是在对被测对象无影响或影响在允许范围的条件下,在被测体或测试现场放置微型数据采集与存储测试仪,现场实时完成信息的快速采集与记忆,事后回收并由计算机处理和再现测试信息的一种动态测试技术。存储测试的主要技术特点是现场实时快速完成动态数据采集与存储记忆,特别是在多种恶劣环境和紧凑设计条件下完成动态参数测试,事后回收处理再现。本文就对USB OTG技术在存储测试中的应用做一个简要的分析。传统的存储测试仪存在着如下不足:(1)存储介质置于仪器内部,回读数据必须将整个仪器伺收。由于存储测试所面临的测试环境复杂,往往加装了复杂、笨重的防护体或置于掩体中,给仪器的拆卸回收造成了困难。而户外回读分析数据往往受条件所限难以续施。 (2)随着存储测试技术的发展,存储测试所面临的对豫和环境日趋复杂,测试时间和所需容量灵活多变,并逐步加大。由于传统的存储测试仪设计结构所限,不同容量就意味着要重新设计生产新的仪器。(3)当前的计算机主板普遍集成了USB接口,存储测试仪一贯采用的"大端口"如:并口、串口等已逐渐被抛弃。一些新推出的主板甚至只集成了。USB 口。存储测试仪接口必须适应这一转变,通过一定的措施实现基于。USB 口的通信。本设计采用南京沁恒公司的CH375和Atmel的ATmega32单片机所设计的存储测试仪有效克服了以上的不足,在实际应用中取得了良好的效果。U盘作为新型移动存储设备,以体积小、速度快、抗震动、通用性强的特点备受青睐。该系统通过单片机对U盘进行读写操作,采集数据按文件方式直接存储到U盘,可以有效提高数据保存速度及可靠性。特别适合于长时问、大容量数据采集的场合,方便了与PC等上位机进行数据交换,从而实现现场采集数据、室内分析数据。通过更换U盘可以灵活选择系统容量,极大地提高了存储测试仪的通用性,降低了测试成本。2 USB OTG技术及海量存储设备协议作为USB 2.0的补充规范USB OTG技术以其双重强大功能使USB设备摆脱了对PC的完全依赖,USB外设在无PC主机参与的情况下可以直接互连以进行通信。USB通信以分层方式进行,总体上可分为功能层、USB设备层和总线接口层。U盘属于USB家族内的海量存储(USB Mass Storage)设备,是一种基于块/扇区的随机存储设备,他与主机之间采用"控制/批量/中断"(CBI)方式或"批量"(Bulk-Only)方式与主机通信。USB通信协议规范十分复杂,"USB海量存储协议包括CBI,Bulk-Only,ATA和UFI等4个独立的子类规范。前2个子规范定义了数据/命令/状态在USB总线上的传输方法,后2个子规范定义了存储介质的操作命令。其中,ATA命令规范用于硬盘,UFI命令规范则是针对USB移动存储制定的。U盘在进行数据保存之前,必须先按某个文件系统的规定进行格式化。相对于计算机硬盘来说U盘的存储容量要小得多,因此在U盘中FAT16文件系统可取得比较高的综合效率且兼容性较好,广泛地应用于U盘之类的移动存储设备中。FAT16文件系统结构分为5个部分:MBR区,DBR区,FAT区,FDT区,DATA区。其中MBR区为主引导记录区,DBR区为操作系统引导记录区,FAT区存放文件分配表,FDT区存放文件目录表,DATA区是真正意义上的数据存储区。3 系统硬件设计系统采用AVR高档机系列中功能强大的单片AT-mega32作为中央处理芯片,选用南京沁恒电子公司的CH375作为USB OTG技术主机控制芯片。硬件系统的工作原理框图如图1所示:ATmega32是一款基于AVR RISC结构的低功耗8位单片机,外接:16 MHz晶振性能可达:16 MI/S。AT-mega32包含了32 kB的系统内可编程FLASH,1kBE2PROM,2kB SRAM,32个通用I/O 口,32个通用工作寄存器,一个8路10位具有可选增益差分输入的A/D转换器,支持多种接口方式。丰富的片上存储器空间极大地提高了对U盘操作时的工作效率,多样化的外围接口方便了系统的扩展,高效的CPU指令集可以使系统获得比较高的采样率。CH375具有8位数据总线和读、写、片选控制线以及中断输出,同时支持5 V和3.3 V电源电压,遵循USB 1.1规范。因此CH375作全速USB Host。主机接口时只需外加晶振和电容,就可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。由于读写U盘或移动硬盘时一般都是以扇区模式进行的,为了进一步提高执行效率可以适当增大磁盘数据缓冲区和文件数据缓冲区(都是512 B的整数倍),并且缓冲区越大,执行的效率越高,所以外扩了32 kB的RAM 62256。传感器信号经模拟电路调理之后由A/D转换器MAX 153量化成数字信号,在单片机ATmega32的控制下循环存入62256。待触发信号到来之后,按照程序预设的负延迟点数将62256扣的数据连同后续到来的信号全部经由CH375存入外挂的U盘,直至写满在U盘中新建的文件并关闭。同时由系统所设置的状态灯指示工作已完成。实际设计中ATmega32与CH375接口部分的原理图如图2所示:4 系统软件设计USB大容量存储设备软件结构示意图3所示:一般情况下,单片机或嵌入式系统处理USB OTG技术存储设备的文件系统需要实现图3左边的几个层次,右边是USB存储设备的内部结构层次。由于CH375不仅是一个通用的USB-HOST硬件接口芯片,还内置了相关的固件程序,简化了外部编程。内置固件包含上图左边的UFI命令层,USB基本传输命令层及Bulk-Only协议层,所以实际的单片机程序只需要处理FAT文件系统层,并且即使这一层也可以由CH 375的U盘文件级子程序库实现。CH375以C语言子程序库提供了。USB存储设备的文件级接口,这些应用层接口API包含了常用的文件级操作,可以移植并嵌入到各种常用的单片机程序中。这里采用ICC AVR软件来编写ATmega32的程序,并调用CH375所提供的AVRU盘文件级子程序库CH375HFB.A。程序运行并初始化后,系统进入待触发状态。检测到触发信号到来之后,通过CH375FileCreate新建文件,将AD所采集的数据通过CH375FileWrite写入U盘,文件写满之后调用CH375FileClose关闭文件。采集结束之后直接取下外接的U盘便可以拿回室内分析。由于采用了文件管理模式,所需操作十分简单,就像平常读取U盘中的文件一样。5 结束语经测试该系统在实际使用时达到了预想效果,克服了以前存储测试仪的一些不足。尤其对于缓变大容量信号的采集取得了良好效果。由于CH375只支持USB1.1协议,并且采用了单片机作为控制器负责管理整个系统的运行,势必影响到仪器的采样率。因此,选用支持USB 2.0协议的USB OTG技术器件,同时采用性能更好的控制器如DSP,CPLD等可极大地提高仪器的采样速率,以适应更高的需求。
型号/产品名
深圳创恩电子有限公司
深圳东都技术有限公司
鴻興電子收购回收贸易商行
鴻興電子收购回收贸易商行
鴻興電子收购回收贸易商行豆丁微信公众号
君,已阅读到文档的结尾了呢~~
STM32F4系列中文手册,因为文件过大,所以分割为四部分上传,这是第四部分
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
STM32F4系列中文手册.0004
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口[转]S3C6410&USB枚举过程的工作经验总结[bootloader]
1.有关对比结束阶段的不同点:
对控制写入阶段:setup--OUT (Data0 | 1)--IN(0长DATA1)
USB HOST送出IN包,USB Device以0长DATA1 包结束控制写入过程
对比控制读取过程:setup--IN(Data0 | 1)--OUT(0长DATA1 )
USB HOST发出OUT 0长DATA1包以结束控制读取过程
对于无数据的控制事务:setup--IN(0长DATA1)也是用HOST发IN包Device
响应0长DATA1包+ ACK以结束无数据的控制事务
clear feature, set address, set configuration, SYNC
Frame均最后将状态设置为
EP0_STATE_INIT,以USB HOST发出IN包USB Device响应0长DATA1包+ ACK
结束无数据的控制事务
====================
2.有关IN Token, OUT Token, SETUP Token的置位DAINT情况:
1):IN Token:
EP0 IN端点上收到IN token包时按理说当置位:DAINT:1,但实际置位了:DAINT:
0x1000 即为EP0 OUT位
2).OUT Token
See &&S3C6410 OUT包与DATA1对DAINT的影响调试实验报告.txt&&
3).SETUP Token
See &&S3C6410 SETPUP包与DATA0对DAINT的影响调试实验报告.txt&&
=======================
3. IN|OUT TOken包收到处理过程 : [这里只是初步分析的结果,详细结果见&&S3C6410
OUT包与DATA1对DAINT的影响调试实验报告.txt&&
+ &&S3C6410 SETPUP包与DATA0对DAINT的影响调试实验报告.txt&& ]
1).IN|OUT Token收到送入RxFIFO中
2).GINTSTS的有关RxFIFO Level置位表示收到数据
3).6410会自动解析所收包的类型,由于IN|OUT Token包的格式为:
sync IN|OUT addr endp crc5 eop
4). 所以6410能知道是哪个端点,是IN还是OUT,于是置位相应IN|OUT EP于DAINT中的相应位
所以利用DAINT就能知道是否收到IN|OUT Token,但要注意DAINTMSK要开,同时GINTSTS
RxFLvl也会置位(受GINTMSK En)
setup包类上,只不过是置位GRXSTSP[PktSts]来表示是否收到setup包
OUT 的判断:
OUT包收到后先由6410自动解析处理,同时于GRXSTSP/R中置位表示OUT包到了
其实这时,还不会置位DAINT中的相应端点,而是要等紧跟其后的DATA1包到了后,DAINT相应端点置位
同时GRXSTSP/R置位
========================
4.tmc的一个常见错误处理:
当tmc屏幕上出现DevID USB/VID_0525&PID_A4A7/5&20F5DB59&0&1
is not the VCP DEVICE!提示时
是占用了同一个com口,在设备管理器中修改其为另一个com口即可
再停用后,再重新启用即可
要记得,最好是最后开tmc
=======================
5.有关USB 2.0 HS OTG LINK与PHY的组成情况:
有关USB 2.0 HS OTG Controller由USB 2.0 OTG LINK与USB 2.0 OTG
PHY两部份组成,
PHY Clock 30/48MHz供给这两块芯片
USB 2.0 PHY ==&AHB Slave
USB 2.0 LINK==&AHB Master/Slave
USB 2.0 PHY/LINK均连到AHB Slave,故6410能读写这两个的CSRs,也即只发送控制信号
而只有AHB Master连到USB 2.0 LINK,故只有USB 2.0 OTG LINK这一路上有Data
Transfer,数据传输走AHB
Master==&USB 2.0 LINK
Refer : 6410 Spec P 26-2
=======================
6.UTMI与Serial Interface:
OPHYCLK[serial_mode]: UTMI/Serial Interface Select来源于图:P26-2
UTMI: 是USB 2.0 OTG LINK经UTMI Interface连接至USB 2.0 OTG PHY上
Serial Interface :指D+,D-上的Data 的传送经USB 1.1 Serial Interface连接至USB
2.0 OTG PHY上
======================
7.不同的传输速率,不同的传输类型其端点描述符的wMaxPacketSize字段配置不同
LS: Low Speed HS: High Speed FS: Full Speed
1.对控制传输端点:
LS: 8B (must)
FS:8B/16B/32B/64B
HS:64B(must)
2.对块传输端点:
LS: Not Support
FS:8B/16B/32B/64B
HS:512B(must)
3.对中断传输端点:
FS: &= 64B
HS: &= 1024B
4.对同步传输端点:
LS: Not Support
FS: &= 1023B
HS: &= 1024B
======================
8.6410 USB OTG部份是三级中断结构:
第一级:GINTSTS中为USB (IN | OUT)产生了中断
第二级:依据上一步是IN 或OUT,于DAINT中得到产生中断的Endpoint号
第三级:依据第二步得到端口号于DIEPINTn | DOEPINTn中判断是什么中断
处理完中断后,将相应中断Reg中的那位清零,又可准备下一次的该位的中断
否则,不会响应该位的中断直至此位清零
======================
9. 描述符初始化框架内容列表
a) Descriptors The structure of descriptors
Configuration Interface(0) - Communication Class
Class-specific IF (Header Functional)
Class-specific IF (Call Management Functional)
Class-specific IF (Abstract Control Management Functional)
Class-specific IF (Union Functional)
Endpoint (Interrupt IN) == & 目前暂用Polling 中断位
Interface(1) - Data Interface Class Endpoint (Bulk IN)
Endpoint (Bulk OUT)
a-1) Device descriptor (usbcdc11.pdf 5.1.1 p31)
bDeviceClass: 0x02 (Communication Class: USB_CLASS_COMM)
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
idVendor: VID: 0x0525
idProduct: PID: 0xa4a7
a-2) Configuration descriptor
wTotalLength: 0x3e
bNumInterfaces: 0x02
a-3) Interface descriptor(0) - Communication Class
bInterfaceNumber: 0x00
bNumEndpoints: 0x01
bInterfaceClass: 0x02 (Communication Class)
bInterfaceSubClass: 0x02 (Abstract Control Model)
bInterfaceProtocol: 0x01 (V.25ter, Common AT commands)
a-3-1) Class specific descriptors a-3-1-1)
Header Functional Descriptor (usbcdc11.pdf 5.2.3.1 p34)
bLength: 0x05
bDescriptorType: 0x24 (CS_INTERFACE)
bDescriptorSubtype: 0x00 (Header Functional)
bcdCDC: 0x0110 (CDC spec release number, 1.1)
a-3-1-2) Call Management Functional Descriptor
bLength: 0x05
bDescriptorType: 0x24 (CS_INTERFACE)
bDescriptorSubtype: 0x01 (Call Management)
bmCapabilities: 0x01 (only over Communication Class IF / handles
bDataInterface: 0x01 (Interface number of Data Class
interface)
a-3-1-3) Abstract Control Management Functional Descriptor
bLength: 0x04
bDescriptorType: 0x24 (CS_INTERFACE)
bDescriptorSubtype: 0x02 (Abstract Control Management)
bmCapabilities: 0x06 (Supports Send_Break, Set_Line_Coding,
Set_Control_Line_State,
Get_Line_Coding, and the notification Serial_State)
a-3-1-4) Union Functional Descriptor
bLength: 0x05
bDescriptorType: 0x24 (CS_INTERFACE)
bDescriptorSubtype: 0x06 (Union Functional)
bMasterInterface: 0x00 (Interface number master interface in the
bSlaveInterface0 : 0x01 (Interface number slave interface in the
a-3-2) Endpoint descriptor - (Interrupt IN) EP0:Control
EP,此处用Polling 中断位实现
bmAttributes 0x03 (Interrupt)
wMaxPacketSize: 0x0010 (16 bytes - more than SerialState response,
bInterval: 0x01 (1msec)
a-4) Interface descriptor(1) - Data Interface Class
bInterfaceNumber: 0x01
bNumEndpoints: 0x02
bInterfaceClass: 0x0A (Data Interface Class)
bInterfaceSubClass: 0x00
bInterfaceProtocol: 0x00 (No class specific protocol
a-4-1) Endpoint descriptor (Bulk IN EP1 and Bulk OUT EP 2)
bmAttributes 0x02 (Bulk)
wMaxPacketSize: 0x0040 (64 bytes)
bInterval: 0x00
======================
10. 对上面的描述符设置的一点说明:
Standard configuration descriptor
Attention:此配置支持两个接口:一个用于控制,一个用于数据
用于控制的:GS_CONTROL_INTERFACE_ID
用于数据的:GS_DATA_INTERFACE_ID
USB枚举时会取配置描述符,USB Device将会发送大小为CONFIG_DESC_TOTAL_SIZE
这部份数据就包含了CONFIG_DESC, INTERFACE_DESC * 2, acm_function,
ENDPOINT_DESC_SIZE * 2
大小的数据,自动将这些描述符送出去,所以这些描述符必须于这里进行初始化,同时USB Host收到数据后会依描述符格式解析,
清楚收到的是哪些描述符
bDeviceClass:指定的为通信设备类用以准确地识别设备
bInterfaceClass:指定为通信接口类提供一种可以使能各种通信服务的通用机制
bInterfaceSubClass:指定为通信接口类中的Abstract Control Model(ACM)
the Data Interface Class: 提供了可以使用bulk和iso传输的机制
端点分配:
EP0: Control EP
EP1: Bulk In, IN EP, USB HOST In, Device Out
EP2: Bulk OUT, OUT EP, USB Host Out, Device In
============================
11.有关FIFO的一点初步看法(具体的可参考Fifo那两篇)
GRXFSIZ用法注意:RxFIFO
1.GRXFSIZ, GNPTXFSIZ:必须写入new value,
2.不能超过Spec所规定的Max值
3.以32-bit words为单位
4.Power-on reset后,默认为0x==192KB
5.Spec有误:P26-5图(b)RXFIZ[31:16]写错了当为RXFIZ[15:0]见P26-35
Reset Value: 0x已dump确认
Device Mode FIFO Address Mapping:
1.See P26-5图b
2.RxFIFO 起始地址fixed to 0
3.RxFIFO Depth: RX_FIFO_SIZE=512*32bit=2kB
4.Non-Periodic Tx FIFO start addr: RX_FIFO_SIZE = 512*32bit=2kB See
5.Non-Periodic Tx FIFO Depth:NPTX_FIFO_SIZE=512*32bit=2kB
EP FIFO地址映射:
FIFO地址是布局在所有Registers的最后面,目的是为了适应能动态由用户
指定FIFO的大小
2.具体地址:
1).OTG LINK BASE: 0x7c00_0000
最后一个Reg: PCGCCTL地址:0x7c00_0E00
2).依次类推:0x7C00_1000为EP FIFO始地址
3). 每个FIFO Size: 4KB布局如下: 2KB有效,2KB闲置
EP0 FIFO Control EP : 0x7C00_1000 = RxFIFO = RxFIFO的起始地址
EP1 FIFO Bulk In EP : 0x7C00_2000
EP2 FIFO Bulk Out EP : 0x7C00_3000
RxFIFO的起始地址: 0x7C00_1000
大小 :RXFSIZ[15:0] = 2K=0x200 = (512) words(32-bits)
对应到地址为为:0x1000
enum EP_FIFO_ADDR {
control_EP_FIFO = (EP0_FIFO + 0x1000 * CONTROL_EP),
//0x7c00_1000
bulkIn_EP_FIFO = (EP0_FIFO + 0x1000 * BULK_IN_EP), //0x7c00_2000:
Host In Device Out -- write: For IN EP
bulkOut_EP_FIFO = (EP0_FIFO + 0x1000 * BULK_OUT_EP) //0x7c00_3000:
Host Out Device In -- read : For OUT EP
=============================
12.速度枚举完成与枚举完成:
P26-56, P26-53
注意:这里是速度枚举完成,而非枚举完了
于DCFG[DevSpd]设置要枚举的速度,
GINTSTS[ENUMDONE]:表示速度枚举过程完成
再于DSTS[EnumSpd]查询知USB Device枚举出来的速度
附:OTGDEV_InitDevice()设置枚举速度为高速
=============================
13.有关DAINT与DIEPINTn的关系:
1.DAINT的中断位清零由清各个DIEPINTn来执行 See P26-58最后一句话
2.DAINT是个RO Reg
3.通过清DIEPINT0来清DAINT中的EP0 IN位
=============================
14.去掉无关4B Get Status数据的条件:
第一个条件:
在收到的数据中前面会有四个80 00 XX XX无关数据
当用GRXSTSP时,能将前四个无关数据过滤去掉,从而留下后面的
真正要用的标准设备请求,若此处改成GRXSTSR,也会置位setup
但就没有了过滤功能,那四个无关数据就老是在RxFIFO中,后面才是标准设备请求
用GRXSTSP:
RxFIFO图示:80 00 XX XX 80 06 00 01 00 00 40 00
变为:80 06 00 01 00 00 40 00
用GRXSTSR:
RxFIFO图示:80 00 XX XX 80 06 00 01 00 00 40 00
依然为:80 00 XX XX 80 06 00 01 00 00 40 00
第二个条件:
必须用延时,临界值120ms,不用延时GRXSTSP,GRXSTSR均不行,4B依然残留
第三个条件:
紧跟在reset后面,也就是只有第一次有效,后面的均要手工自己对准标准设备描述符的位置
第一步:收到SETUP包
第二步:收到DATA0包,并从中解析出标准设备请求
第三步:ACK回应Host,结束setup stage I
=============================
15.完整的USB设备枚举的第一步取设备描述符(default addr:0x0 endp:0x0):
取设备描述符的Stage 1阶段:
stage I:收SETUP包并解析:
USB Host===&USB Device
sync: setup:0xb4 addr:0x0 endp:0x0 crc5:xx Idle
sync: DATA0:0xc3 DATA:80 06 00 01 00 00 40 00 crc16:xxxx
sync: ack:0x4B Idle
Stage II示意图示:发Device Desc
Host ==& Device: sync: IN:0x96 addr:0x0 endp:0x0 crc5:X
当6410检测到IN包后,再发现TxFIFO为空,则NAK回应:
Device ==& Host: sync: NAK:0x5A Idle
若TxFIFO非空,则将设备描述符发送给Host:
Device ==& Host: sync: DATA1:0xD2 DATA:设备描述符前8B
crc16:XXXX Idle
Host ==& Device: Sync: ACK:0x4B Idle
Stage III数据图示:State Stage
Host ==& Device: sync: OUT:0x96 addr:0x0 endp:0x0 crc5
Host ==& Device: sync: DATA1:0xD2 DATA:无数据 crc16:0x0000
Device ==& Host: sync: ACK:0x4B Idle
--------------------------------------------------
取设备描述符的Stage 2阶段:
1.当Device 收到Host发来的SETUP包及标准设备请求时,6410
会自动置位DIEPCTL0:SNAK,以在device处理期间对其余包应答NAK
于DIEPCTL0:NAKsts中可查看到其改变为1'b1
所以要置位DIEPCTL0:CNAK以清掉NAK位,以使能应答stage II的IN Token包
实验结果:
收SETUP包前:DIEPCTL0:NAKsts=1'b0 :core 发送non-NAK 握手包 base on FIFO
收SETUP包后:DIEPCTL0:NAKsts=1'b1 :core 发送NAK 握手包 base on FIFO
但是DAINT的EP0 IN位依然置位1,因为DAINT只要端点有事件变化(如收到包)则会置位
另外IN包必是收到的,只不过6410以NAK自动应答了,所以SNAK管的是6410的应答什么包
而非禁止收包,所以DAINT仍可用于判断是否收到IN包
--------------------------------------------------
取设备描述符的Stage 3阶段:
Stage II的数据包示意图示:注意与Stage I相衔接:
Host ==& Device: sync: IN:0x96 addr:0x0 endp:0x0 crc5:X
当6410检测到IN包后,再发现TxFIFO为空,则NAK回应:
Device ==& Host: sync: NAK:0x5A Idle
若TxFIFO非空,则将设备描述符发送给Host:
Device ==& Host: sync: DATA1:0xD2 DATA:设备描述符前8B
crc16:XXXX Idle
Host ==& Device: Sync: ACK:0x4B Idle
--------------------------------------------------
取设备描述符的Stage 3阶段:
用GRXSTSP[PktSts]检测OUT 包的前提条件:
1.DOEPCTL0:必须使能,CNAK
2.RxFIFO必须Flush
OUT 0LEN DATA1包以结束事务
6410自动收到OUT Token包及无数据的DATA1包,同时进行自动应答ACK
Stage III数据图示:注意与Stage I,II相联合:
Host ==& Device: sync: OUT:0x96 addr:0x0 endp:0x0 crc5
Host ==& Device: sync: DATA1:0xD2 DATA:无数据 crc16:0x0000
Device ==& Host: sync: ACK:0x4B Idle
--------------------------------------------
取配置描述符:
Stage I: 发SETUP包,及DATA0:标准设备请求:取设备描述符
Host==&Device: sync: SETUP:0xB4 addr:X endp:0x0 crc5:X
Host==&Device: sync: DATA0:0xC3 DATA:80 06 00 02 00 00
09 00 CRC16:XXXX Idle
Device==&Host: sync: ACK:0x4B Idle
06:Get Descriptor 02:Configuraion Descriptor 09:配置描述符大小
Stage II:发IN包以取得配置描述符
Host==&Device:sync: ADDR:0xX Endp:0x0 crc5:X Idle
Host==&Device:sync: IN:0x96 DATA1:0xD2 ... ...配置描述符内容
CRC16:XXXX Idle
Device==&Host:sync: ACK:0x4B Idle
Stage III:Out 0Len DATA1包以结束事务
Host==&Device:sync: OUT:0x87 addr:0xX endp:0x0 crc5:X
Host==&Device: sync: DATA1:0xD2 DATA:无数据 CRC16:0x0000
Device==&Host:sync: ACK:0x4B Idle
补充一点:若是SETUP中指定的要取的字节数很大,大于EP0 MPS,则将会以多个IN包连续传送,如下示意:
==&setup+DATA0:Get Configuration Descriptor 字节数很大
==&IN: Part 1
==&IN: Part 2
==&IN: Part ...
==&IN: Part N
==&OUT 0 Len DATA1
---------------------------------------------
Set Config:
stage I:(step I ... step III)
step I: sync: SETUP:0xb4 Addr:0xXX Endp:0x0 crc5:0x15
step II: sync: DATA0:0xC3 DATA:00 09 02 00 00 00 00
00(标准设备请求: Set Config) CRC16:0xE4A4 Idle
step III: sync: ACK:0x4B Idle
stage II:(step I ... step III)
step I: sync: IN:0x96 ADDR:0xXX Endp:0x0 CRC5:0x15
step II: sync: NAK:0x5A Idle
... ....直到处理完毕setup包
stage III:(step I ... step III)
step I: sync: IN:0x96 ADDR:0xXX Endp:0x0 CRC5:0x15
step II: sync: DATA1:0xD2 DATA:无数据 CRC16:0x0000 Idle
step III:sync: ACK:0x4B Idle
=============================
16.chk_ep0_in_interrupt()的老的解释:(注意与新的两篇《S3C6410
SETPUP包与DATA0对DAINT的影响调试实验报告.txt》
OUT包与DATA1对DAINT的影响调试实验报告.txt》相对比,各有一点点出入,但不影响枚举过程,自己再多多试验一把)
当收到setup包时,由6410自动处理了,置位GRXSTSP,但不会置位EP0 IN 中断位
当收到紧跟在SETUP包后的DATA0数据包时,6410会解析出数据放入RxFIFO中,这时
才会置位DAINT EP0 IN中断位,只能用此法来检测DATA0包数据包了,别的方法没有了。
GRXSTSP中的DPID的DATA0的判定是只用于OUT包而不用于SETUP包
附:chk_ep0_in_interrupt代码
void chk_ep0_in_interrupt(void)
while(1) {
val = Inp32(DAINT);
if(val & 0x1)//EP0 IN产生了中断,说明收到了紧跟在SETUP包后面的DATA0包
Outp32(DIEPINT0, Inp32(DIEPINT0));
=============================
17.DIEPCTL0[31]bit 说明:
是当传输完成了,6410先将此位clear,再去设置中断位,这样才能防止误收发数据。
看清楚,此位一旦置位 对IN EP则是开始送出数据,所以对IN EP是先准备好数据,再设置此位
而对OUT EP,此位一旦设置是表示已经分配好内存,可以开始接收,所以对Out EP要先分配好内存,
作好准备,再设这一位,然后立刻开始接收数据
==============================
18.在OUT 0LEN DATA1包以结束事务中,要点是延时:
msleep(200);
保证ACK Sent,延时太少,会引起取下一次的设备描述符出错
在本应取下一次设备描述符时,越过了,直接取了后面的set address导致解析出错
=============================
19。有关IN 0Len DATA1包:
在IN 0Len DATA1包以结束事务时,DIEPINT0:XferCompl会置位
但实际发现也偶耳置位不上引起不稳定问题,参照OTG代码,对方
也没有非得检测此位为1,于是改成超时退出继续运行的方案
=============================
20.IN Token 取数据取数据的过程:
IN Token 取数据,数据直接写入TxFIFO中,不必去检测IN的是否到来,IN包来了后,6410会
自动检测TxFIFO中是否有数据,有数据的话,6410会自动将数据发出以作为IN包的回应,IN包没到的话
数据会一直停留在TxFIFO中而不会通过USB线出去,IN包的到来是早已写入TxFIFO中的数据发出的条件
============================
21.windows当响一声叮咚
第二次取完整配置描述符:0xff:255B:配置描述符+接口描述符*2+端点描述符*2+acm_function
USB枚举时会取配置描述符,USB Device将会发送大小为CONFIG_DESC_TOTAL_SIZE(0x3e)
这部份数据就包含了CONFIG_DESC, INTERFACE_DESC * 2, acm_function,
ENDPOINT_DESC_SIZE * 2
大小的数据,将这些描述符送出去
当执行完此处时,windows当响一声叮咚,表示其已经获得了所有的配置描述符+设备描述符(前面的步奏)并利用其中的VID/PID
找到了相对于inf中文件中所对应驱动,并已经加载好了,而且于设备管理器中显示出来了
===================
22.USB CDC枚举过程:
.....一般枚举过程
Get Line Coding
set ctrl line state 等待tmc开启
get line coding
get line coding
get line coding
get line coding
set line coding
get line coding
set ctrl line state
set line coding
get line coding
以下是调试现场数据
============ExeCommand [usb]
usb loader initialize ...
HiSpeed Enum-1
x57fffbe8 80 06 00 01 00 00 40 00 00 00 00 00 00 00 00 00
€.....@.........
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:1
==&wLength_L:40
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
HiSpeed Enum-2
x57fffbe8 80 06 00 01 00 00 40 00 00 00 00 00 00 00 00 00
€.....@.........
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:1
==&wLength_L:40
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
data0 Receive
x57fffc08 00 05 01 00 00 00 00 00 00 00 68 00 20 25 63 25
..........h. %c%
x57fffc18 20 25 63 25 20 25 63 25 20 25 63 25 20 25 63 25 %c% %c%
x57fffc28 20 25 63 25 20 25 63 25 20 25 63 25 20 25 63 25 %c% %c%
x57fffc38 20 25 63 25 20 25 63 25 20 25 63 25 20 25 63 25 %c% %c%
bmRequestType:0
==& Host-to-device
==& Standard
==& Recipient: Device
bRequest:5
==& SET_ADDRESS
==&wValue_L:1
==&wValue_H:0
==&wLength_L:0
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
x57fffbe8 80 06 00 01 00 00 12 00 00 00 00 00 00 00 00 00
€...............
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:1
==&wLength_L:12
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
handle_get_config_descriptor():
x57fffbf8 80 06 00 02 00 00 09 00 00 00 00 00 00 00 00 00
€...............
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:2
==&wLength_L:9
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
analyze dev req
Sent Configuration Desc
Config Desc Dump:
x5401c0cc 09 02 3e 00 02 02 00 c0 01 ..&......
Is Sent Content : 09 02 3e 00 02 02 00 c0 01
OUT 0LEN DATA1 terminate
GCD-1-Standard
x57fffbf8 80 06 00 02 00 00 ff 00 00 00 00 00 00 00 00 00
€...............
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:2
==&wLength_L:9
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
Got Standard Dev Req -- Get All Config Descs
x57fffbe8 80 06 00 01 00 00 12 00 00 00 00 00 00 00 00 00
€...............
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:1
==&wLength_L:12
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
x57fffbf8 80 06 00 02 00 00 09 01 00 00 00 00 00 00 00 00
€...............
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:1
==&wLength_L:12
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
Got Standard Dev Req -- Get All Config Descs
data0 Receive
x57fffc08 00 09 02 00 00 00 00 00 00 00 88 01 80 00 ec 00
............€...
x57fffc18 80 00 ec 00 80 00 ec 00 80 00 ec 00 80 00 ec 00
€...€...€...€...
x57fffc28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:0
==& Host-to-device
==& Standard
==& Recipient: Device
bRequest:9
==& SET_CONFIGURATION
==&wValue_L:2
==&wValue_H:0
==&wLength_L:0
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
Using Config: 2
SET Configuraion
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
1st Get Line Coding OK
x57fffbe8 21 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00
!"..............
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Device Closed now, wait for open!
1st Set Ctrl Line State OK
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
4 Times Get Line Coding OK
handle_set_line_coding()
dbg_set_line_coding()
x57fffbf4 21 20 00 00 00 00 07 00 00 00 00 00 00 00 00 00 !
..............
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
OUT RCV && DATA1 RCV
dump set line coding:
x 00 85 01 00 c2 01 00 00 00 08 c8 00 00 87 01
p...............
x 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00
................
x 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00
................
x 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00
................
In 0Len to terminate
1st Set Line Coding OK
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
3rd Get Line Coding OK
x57fffbe8 21 22 02 00 00 00 00 00 00 00 00 00 00 00 00 00
!"..............
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
:2ACK Sent
2sec Set Ctrl Line State OK
handle_set_line_coding()
dbg_set_line_coding()
x57fffbf4 21 20 00 00 00 00 07 00 00 00 00 00 00 00 00 00 !
..............
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
OUT RCV && DATA1 RCV
dump set line coding:
x 00 05 01 00 c2 01 00 00 00 08 c8 00 00 07 01
p...............
x 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
In 0Len to terminate
2sec Set Line Coding OK
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
4th(Last) Get Line Coding OK
USB Enumerate OK
Haha stop hereD^C
[ADDRESS:h,TOTAL:x1b78c)]
(2.611MB/s,0.041s)
Checksum is being calculated....
(If you want to skip, press 'x' key)
Checksum O.K.
141 9 ffff5f70
141 9 fffffa8a
LCD 800x480, Frame Buffer 547c0000
============ExeCommand [version]
Bootloader
Version: 1.0.9 For apdk6400 (s3c6410), Time Stamp: Jun 1 2009
============ExeCommand [usb]
usb loader initialize ...
HiSpeed Enum-1
x57fffbe8 80 06 00 01 00 00 40 00 00 00 00 00 00 00 00 00
€.....@.........
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:1
==&wLength_L:40
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
HiSpeed Enum-2
x57fffbe8 80 06 00 01 00 00 40 00 00 00 00 00 00 00 00 00
€.....@.........
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:1
==&wLength_L:40
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
data0 Receive
x57fffc08 00 05 01 00 00 00 00 00 00 00 a8 01 20 25 63 25
............ %c%
x57fffc18 20 25 63 25 20 25 63 25 20 25 63 25 20 25 63 25 %c% %c%
x57fffc28 20 25 63 25 20 25 63 25 20 25 63 25 20 25 63 25 %c% %c%
x57fffc38 20 25 63 25 20 25 63 25 20 25 63 25 20 25 63 25 %c% %c%
bmRequestType:0
==& Host-to-device
==& Standard
==& Recipient: Device
bRequest:5
==& SET_ADDRESS
==&wValue_L:1
==&wValue_H:0
==&wLength_L:0
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
x57fffbe8 80 06 00 01 00 00 12 00 00 00 00 00 00 00 00 00
€...............
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:1
==&wLength_L:12
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
handle_get_config_descriptor():
x57fffbf8 80 06 00 02 00 00 09 00 00 00 00 00 00 00 00 00
€...............
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:2
==&wLength_L:9
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
analyze dev req
Sent Configuration Desc
Config Desc Dump:
x5401c0cc 09 02 3e 00 02 02 00 c0 01 ..&......
Is Sent Content : 09 02 3e 00 02 02 00 c0 01
OUT 0LEN DATA1 terminate
GCD-1-Standard
x57fffbf8 80 06 00 02 00 00 ff 00 00 00 00 00 00 00 00 00
€...............
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:2
==&wLength_L:9
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
Got Standard Dev Req -- Get All Config Descs
x57fffbe8 80 06 00 01 00 00 12 00 00 00 00 00 00 00 00 00
€...............
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:1
==&wLength_L:12
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
x57fffbf8 80 06 00 02 00 00 09 01 00 00 00 00 00 00 00 00
€...............
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:80
==& Device-to-host
==& Standard
==& Recipient: Device
bRequest:6
==& GET_DESCRIPTOR
==&wValue_L:0
==&wValue_H:1
==&wLength_L:12
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
Got Standard Dev Req -- Get All Config Descs
data0 Receive
x57fffc08 00 09 02 00 00 00 00 00 00 00 08 01 80 00 0c 00
............€...
x57fffc18 80 00 0c 00 80 00 0c 00 80 00 0c 00 80 00 0c 00
€...€...€...€...
x57fffc28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
bmRequestType:0
==& Host-to-device
==& Standard
==& Recipient: Device
bRequest:9
==& SET_CONFIGURATION
==&wValue_L:2
==&wValue_H:0
==&wLength_L:0
==&wLength_H:0
==&wIndex_L:0
==&wIndex_H:0
Using Config: 2
SET Configuraion
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
1st Get Line Coding OK
x57fffbe8 21 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00
!"..............
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Device Closed now, wait for open!
1st Set Ctrl Line State OK
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
4 Times Get Line Coding OK
handle_set_line_coding()
dbg_set_line_coding()
x57fffbf4 21 20 00 00 00 00 07 00 00 00 00 00 00 00 00 00 !
..............
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
OUT RCV && DATA1 RCV
dump set line coding:
x 00 05 01 00 c2 01 00 00 00 08 c8 00 00 07 01
p...............
x 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00
................
x 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00
................
x 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00
................
In 0Len to terminate
1st Set Line Coding OK
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
3rd Get Line Coding OK
x57fffbe8 21 22 02 00 00 00 00 00 00 00 00 00 00 00 00 00
!"..............
x57fffbf8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
:2ACK Sent
2sec Set Ctrl Line State OK
handle_set_line_coding()
dbg_set_line_coding()
x57fffbf4 21 20 00 00 00 00 07 00 00 00 00 00 00 00 00 00 !
..............
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
OUT RCV && DATA1 RCV
dump set line coding:
x 00 85 00 00 c2 01 00 00 00 08 c8 00 00 87 00
p...............
x 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
In 0Len to terminate
2sec Set Line Coding OK
x57fffbe4 a1 21 00 00 00 00 07 00 00 00 00 00 00 00 00 00
.!..............
x57fffbf4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
x57fffc14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
get line coding sent
get line coding out 0 ok
4th(Last) Get Line Coding OK
USB Enumerate OK
Haha stop here
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 qq文件传输终止 的文章

 

随机推荐