liugmx
驱动牛犊
驱动牛犊
  • 注册日期2002-03-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1652回复:6

有关ezusb的固件框架(大出血加分)

楼主#
更多 发布于:2002-05-19 15:48
我在ezusb的固件框架下添加了用 PortC 输出的程序。不知为何不行(用control panel下载固件,Get PipeInfo,Failed to Open Driver,Get Pipe Info failed),而改用PortA、PortB都没问题。哪位大虾帮我看一眼。谢谢!
我所作的修改如下:
EXAMPLE\\EZUSB\\BULKTEST\\TARGET 里的
1、 fw.c:   把第106 行
  PORTCCFG |= 0xc0;// Turn on r/w lines for external memory
  注释掉。
2、在periph.c 中函数   void TD_Init(void)里加入
   PORTCCFG=0;
   OEC=255;
   然后在  函数void ISR_Ep2out(void) interrupt 0    里加入
   OUTC=OUT2BUF[0];


[编辑 -  5/19/02 by  liugmx]

最新喜欢:

sunmaculasunmac...
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-19 16:22
在调试程序时请注意:
To ensure proper operation of the default Keil Monitor, which uses SIO-1 (RXD1 and
TXD1), never change the following Port Config bits from “1”:
• PORTBCFG bits 2 (RXD1) and 3 (TXD1).
To ensure the 8051 processor can access the external SRAM (including the Keil Monitor),
do not change the following bits from “1”:
• PORTCCFG bits 6 (WR#) and 7 (RD#).
To ensure that no bits are unintentionally changed, all writes to the PORTxCFG registers
should use a read-modify-write series of instructions.
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-19 16:30
用开发板调试时不要改动上述默认值,只要你肯定程序没有问题,在不是调试的情况下会正常的。
liuxf66
驱动中牛
驱动中牛
  • 注册日期2001-08-15
  • 最后登录2003-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-20 17:53
我所作的修改如下:
EXAMPLE\\EZUSB\\BULKTEST\\TARGET 里的
1、 fw.c: 把第106 行
PORTCCFG |= 0xc0;// Turn on r/w lines for external memory
注释掉。


你应该仔细分析一下 fw.c 第75到第97行的说明和源程序,FW的这部分代码是将描述符先下载到外部RAM中,然后(第91、92行)从外部RAM中将描述符取出,再转放到内部RAM中,最后利用内部RAM中的描述符完成枚举。因此在这个过程中,要读写外部RAM。
如果你将PORTCCFG改为普通I/O口,那就将读写外部RAM的两个控制信号#RD和#WR屏蔽掉了,因此无法读取外部RAM的描述符数据,程序当然就无法运行了

另外,你可以将这个FW用control panel分别下载到开发板和另外一块不带外部RAM的板子上,比较一下结果,就更直观了。

[编辑 -  5/20/02 by  liuxf66]
liuxf66
liuxf66
驱动中牛
驱动中牛
  • 注册日期2001-08-15
  • 最后登录2003-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-21 15:49
有没有看过我的回复?看看是不是这个原因?如果是,别忘了给分啊!
:)
liuxf66
liugmx
驱动牛犊
驱动牛犊
  • 注册日期2002-03-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-21 16:26
如果你将PORTCCFG改为普通I/O口,那就将读写外部RAM的两个控制信号#RD和#WR屏蔽掉了,因此无法读取外部RAM的描述符数据,程序当然就无法运行了


也许是这方面的原因,但是我在读取外部RAM的描述符数据之后,再把PORTCCFG配置为普通I/O口,程序还是有问题。

非常谢谢你!
我想给你加分,但不知为什么加不了,可能是因为在你回复之前我已经给别人加过分了。
我再发一个贴,你来我给你加分吧。
liuxf66
驱动中牛
驱动中牛
  • 注册日期2001-08-15
  • 最后登录2003-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-21 22:44
但是我在读取外部RAM的描述符数据之后,再把PORTCCFG配置为普通I/O口,程序还是有问题。


当用control panel将整个firmware下载到设备后,firmware已经无法更改了,firmware的运行也无法人为控制了,因此我认为你是无法在读取外部RAM的描述符数据之后,再把PORTCCFG配置为普通I/O口的。
另外,初始化程序是在setupcommand(枚举程序)之前的,不可能先读取外部RAM的描述符数据(在setupcommand执行前完成,作为setupcommand的准备)之后,再把PORTCCFG配置为普通I/O口(初始化程序中完成)。

等着你的加分。^_^
liuxf66
游客

返回顶部