upstar
驱动牛犊
驱动牛犊
  • 注册日期2004-04-20
  • 最后登录2005-02-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1363回复:3

ez-usb fx固件初始化程序的一段的疑问

楼主#
更多 发布于:2004-04-26 11:03
下面这断程序是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;
}
zhoujb99
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-26 12:28
可能是因为SUDPRTH和SUDPTRL被用于描述符表的地址,所以描述符表必须放在片内存储器中,如果在片外,就得重定位描述符表。
upstar
驱动牛犊
驱动牛犊
  • 注册日期2004-04-20
  • 最后登录2005-02-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-27 10:51
谢谢,分都给你了。
arthurcao
驱动小牛
驱动小牛
  • 注册日期2003-10-12
  • 最后登录2012-07-08
  • 粉丝0
  • 关注0
  • 积分92分
  • 威望20点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-28 09:27
呵呵,分是给了,但我看回答的也不够详细。其实,在做开发的时候,你可以不必太在意他是什么意思,那过来用就是了。
arthurcao喜欢开源。
游客

返回顶部