![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
USB_CY7C68013A
molake10344
这个作者很懒,什么都没留下…
展开
-
基本固件框架的追踪研读之USB事务处理
包标识字段 USB总线枚举原创 2015-08-07 17:06:38 · 447 阅读 · 0 评论 -
EZ-USB固件框架的追踪研读之main函数2
书接上回任务调度之轮询函数:TD_Poll()void TD_Poll(void) // Called repeatedly while the device is idle{ WORD i; WORD count; if(!(EP2468STAT & bmEP2EMPTY)) { //检查寄存器EP2468STAT中的EP2 EMPTY(busy)位原创 2015-08-05 11:37:23 · 1391 阅读 · 0 评论 -
EZ-USB固件框架的追踪研读之main函数3
书接上回下面这段代码不解释,但我把注释翻译一下:下面部分用来对描述符表重新定位,固件框架使用SUDPTRH and SUDPTRL自动响应描述符的SETUP请求。这两个寄存器只能处理EZ-USB内部RAM的地址,所以,如果描述符存在于片外RAM,则他们必须被复制到片内RAM(16K)。// The following section of code is used to relocate th原创 2015-08-05 11:42:58 · 732 阅读 · 0 评论 -
回调函数_百度百科
回调函数转载 2015-08-01 09:04:56 · 458 阅读 · 0 评论 -
EZ-USB的挂起恢复机制:suspend-resume mechanism
首先,需要明白四个概念:挂起(suspend)、恢复(resume)、空闲(idle)和唤醒(wakeup)。原创 2015-08-14 13:43:56 · 2617 阅读 · 0 评论 -
基本固件框架的追踪研读之SETUP命令的处理5
书接上回接下来,是响应“读取状态请求”:case SC_GET_STATUS: // *** Get Status同样,if(DR_GetStatus())可以不予理会。由文档可知,获取状态又可分为三部分:1、获取设备状态:牵涉到远程唤醒和自供电位;2、获取端口状态:牵涉到停止位;3、获取接口状态:USB规格保留使用。固件判断SETUPDAT[0],识别原创 2015-08-03 15:41:17 · 605 阅读 · 0 评论 -
Volitale
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。原创 2015-08-19 10:25:54 · 618 阅读 · 0 评论 -
Cypress固件架构彻底解析及USB枚举
原文链接、请移步感谢原文作者“christines”,以下文章是我从原文Copy下来的,根据我自己的需要有所改动,如需查看原文,请移步上面的链接。dscr51里放的是USB描述符表,EZ-USB在重枚举阶段会读取或设置相应的描述符:db DSCR_DEVICE_LEN ;; Descriptor lengthdb DSCR_DEVICE ;; Decr转载 2015-08-07 09:45:22 · 2553 阅读 · 0 评论 -
C2启动模式
试了几次将固件(我觉得这个翻译比“软件”或者“程序”好,对应英文的firmware),下载到板子的EEPROM,但是没成功,在网上搜了一些解答,后总结如下:一、固件编译阶段需在Keil中作如下设置:在cypress开发包的安装目录下有一个工具 Cypress\USB\Bin\Hex2Bix.exe,并且在Util目录下有他的源代码,可以用这个工具进行hex到iic文件的原创 2015-07-29 14:20:53 · 1325 阅读 · 0 评论 -
基本固件框架的追踪研读之SETUP命令的处理3
书接上回这5个case语句是:1、获取设备描述符case GD_DEVICE: // Device对应于:#define GD_DEVICE 0x01 // Get descriptor: Device2、获取设备限定描述符case GD_DEVICE_QUALIFIER: // Device Qualifier对应于:#define原创 2015-08-01 09:26:40 · 678 阅读 · 0 评论 -
EZ-USB固件框架的追踪研读之main函数1
在文档《DvkUsersGuide.pdf》里有main函数的描述: 源码如下:// Task dispatchervoid main(void){ DWORD i; WORD offset; DWORD DevDescrLen; DWORD j=0; WORD IntDescrAddr; WORD ExtDescrAddr; // Initialize原创 2015-08-04 13:48:42 · 1056 阅读 · 0 评论 -
HID设备类
HID是Human Interface Devices的缩写,即人机接口设备。HID的一大优势就是操作系统已经内置了HID设备类驱动,一般不需要安装驱动程序。通用的HID设备可以直接使用HID设备类驱动程序(hidclass.sys)和HID小驱动程序(hidusb.sys)。1.HID设备的特点 HID设备类可以参考两个文档: USB Device Class Definition for原创 2015-08-11 10:27:54 · 12638 阅读 · 0 评论 -
void及void指针含义的深刻解析
[原文地址](http://blog.csdn.net/geekcome/article/details/6249151)谢谢!void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范 ①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void *pvoid;pvoid =转载 2015-07-30 15:27:00 · 442 阅读 · 0 评论 -
基本固件框架的追踪研读之SETUP命令的处理2
书接上回我在《 DvkUsersGuide.pdf》文档里面找到了库文件EZUSB.LIB的说明:说的是,这个函数根据常量“StrIdx”返回返回一个字符串描述符的指针,如果字符串描述符表中不包含这个常量,则函数返回NULL。我决定先不看这个函数的源代码,但是还是先把源代码贴出来,以备以后查看,在我电脑的C:\Cypress\USB\Target\Lib\LP目录下的get_strd.c文件里原创 2015-07-31 10:13:28 · 920 阅读 · 0 评论 -
基本固件框架的追踪研读之SETUP命令的处理7
书接上回接下来,是两个用户自定义的请求;case SC_SetData: //向端口发送数据 DR_SetData();break;case SC_ReadData: //读端口数据 DR_ReadData();break;//用户添加#define SC_原创 2015-08-04 10:12:55 · 832 阅读 · 0 评论 -
基本固件框架的追踪研读之USB控制传输
USB控制传输主要用于USB主机和USB设备之间的配置信息通信,包括设备的地址、设备描述符和接口描述符等。用户也可以自定义操作,用来传输其它用途的数据。控制传输数据包长度这里,需要注意的是:设备描述符中的wMaxPacketSize说的端点0的控制事务所支持的最大数据包长度;端点描述符(除端点0以外的端点)中的wMaxPacketSize说的是各端点的某种事务(四中传输类型中的一种)所支持的最大数原创 2015-08-10 10:30:37 · 534 阅读 · 0 评论 -
基本固件框架的追踪研读之SETUP命令的处理1
背景交代:相关文档:1.《USB应用开发技术大全.pdf》奉上链接 2.《EZ-USB(R) Technical Reference Manual.pdf》奉上链接 源代码: 1.FX2Test.rar奉上链接 前两个月,断断续续的把上面这三份文档浏览了一遍,总是看着看着就昏昏欲睡,没多大效果,不过庆幸的是我走了一遍,现在再原创 2015-07-30 13:44:02 · 948 阅读 · 0 评论 -
C51的中断号排序规则
在编写中断服务程序(ISR)的时候需要知道中断号,用于通知51内核,这个中断服务程序是为了响应哪个中断的。那么,从以上这句简单的描述可以看出,中断号必然对应于中断服务程序的入口地址,而入口地址又与中断向量(Interrupt Vector)有对应关系,所以: (1)、中断号即是中断向量从小到大的编号,从0开始; (2)、中断向量0x0000是上电复位,不计入中断向量的编号;原创 2015-08-24 13:52:09 · 4297 阅读 · 0 评论 -
基本固件框架的追踪研读之SETUP命令的处理4
书接上回读取接口请求:case SC_GET_INTERFACE: // *** Get Interface DR_GetInterface(); break;不用说,SC_GET_INTERFACE的值自然是0x0A:#define SC_GET_INTERFACE 0x0a // Setup command: Get Interfa原创 2015-08-03 14:15:48 · 540 阅读 · 0 评论 -
追踪研读法破解EZ-USB的“远程唤醒”
一直没搞明白EZ-USB的远程唤醒到底是个什么鬼,今天就集中极力搞一搞。我不明白的主要集中在以下两点: (1)、远程唤醒是由谁发起的?既然是叫“远程”,那么这个远程唤醒是由谁发起的呢?是Host吗?还是EZ-USB得WAKEUP / WU2引脚引起的中断吗? (2)、远程唤醒的一整套的响应机制是怎样的呢? 同样,我才用的依然是“追踪研读法”,就是在固件源代码和芯片手册中搜索相关的关原创 2015-08-21 11:43:47 · 2817 阅读 · 0 评论 -
开发环境介绍
USB2.0之Cypress的CY7C68013A的开发环境搭建原创 2015-07-29 13:39:04 · 1331 阅读 · 0 评论 -
基本固件框架的追踪研读之SETUP命令的处理6
书接上回响应“清除特性请求”case SC_CLEAR_FEATURE: // *** Clear Feature if(DR_ClearFeature()) switch(SETUPDAT[0]) { case FT_DEVICE: // Device if(SETUPDAT[2] ==原创 2015-08-03 16:11:53 · 708 阅读 · 0 评论 -
基本固件框架的追踪研读之描述符1
在USB协议中,将USB作为一个配置、端点和接口的集合。USB设备的描述符包括标准描述符、HID描述符和Hub描述符。这里主要介绍USB标准设备描述符。1、设备描述符DeviceDscr用于表示USB设备的总体信息,一个USB设备只能有一个设备描述符。 bcdUSB,的格式是0xAABC,其中AA是主版本号,B是次版本号,C是子次版本号(注意USB数据传输过程中,是先传低字节再传高字节),例如原创 2015-08-06 11:10:57 · 720 阅读 · 0 评论