阅读:1364回复:3
ez-usb fx固件初始化程序的一段的疑问
下面这断程序是fx开发包里的fw.c固件中初始化的一段,好像功能是把8K地址外的设备描述转移到另外一个存储空间,我有几个地方不明白:
1.为什么要转移设备描述表,转移到什么地方去? 2.填充的 0xCD 是什么意思? 3.这段程序在什么时候需要使用? 有人能帮我解释一下吗? 源程序如下: pDeviceDscr = (WORD)&DeviceDscr; pConfigDscr = (WORD)&ConfigDscr; pStringDscr = (WORD)&StringDscr; if ((WORD)&DeviceDscr & 0xe000) { IntDescrAddr = INTERNAL_DSCR_ADDR; ExtDescrAddr = (WORD)&DeviceDscr; DevDescrLen = (WORD)&UserDscr - (WORD)&DeviceDscr + 2; for (i = 0; i < DevDescrLen; i++) *((BYTE xdata *)IntDescrAddr+i) = 0xCD; for (i = 0; i < DevDescrLen; i++) *((BYTE xdata *)IntDescrAddr+i) = *((BYTE xdata *)ExtDescrAddr+i); pDeviceDscr = IntDescrAddr; offset = (WORD)&DeviceDscr - INTERNAL_DSCR_ADDR; pConfigDscr -= offset; pStringDscr -= offset; } |
|
沙发#
发布于:2004-04-26 12:28
可能是因为SUDPRTH和SUDPTRL被用于描述符表的地址,所以描述符表必须放在片内存储器中,如果在片外,就得重定位描述符表。
|
|
板凳#
发布于:2004-04-27 10:51
谢谢,分都给你了。
|
|
地板#
发布于:2004-04-28 09:27
呵呵,分是给了,但我看回答的也不够详细。其实,在做开发的时候,你可以不必太在意他是什么意思,那过来用就是了。
|
|
|