13254|39

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

eboot中DM9000连接不上的问题 [复制链接]

RT,平台是2440+wince5.0,现在想在eboot中通过以太网下载映像,在网上找了DM9000中的代码,把iobase修改了下,读取ID正确,然后经过下面配置后:

  1.         /* set the internal PHY power-on, GPIOs normal */
  2.         WRITE_REG1(0x1f, 0x0); /* GPR (reg_1Fh)bit GPIO0=0 pre-activate PHY */
  3.         DM9000_Delay(200000000);
  4.        
  5.         /* do a software reset */
  6.         WRITE_REG1(0x0, 3); /* NCR (reg_00h) bit[0] RST=1 & Loopback=1, reset on */
  7.         DM9000_Delay(200000000);
  8.        
  9.         WRITE_REG1(0x0, 3); /* NCR (reg_00h) bit[0] RST=1 & Loopback=1, reset on */
  10.         DM9000_Delay(200000000);
  11.        
  12.         /* I/O mode */
  13.         DM9000_iomode = READ_REG1(0xfe) >> 6; /* ISR bit7:6 keeps I/O mode */

  14.         //Add by lihao
  15.         WRITE_REG1(0x1e,(1<<0));
  16.         WRITE_REG1(0x1f,0x0);
  17.         //Add end
  18.        
  19.         /* Program operating register */
  20.         WRITE_REG1(0x0, 0);
  21.         WRITE_REG1(0x02, 0); /* TX Polling clear */
  22.         WRITE_REG1(0x2f, 0); /* Special Mode */
  23.         WRITE_REG1(0x01, 0x2c); /* clear TX status */
  24.         WRITE_REG1(0xfe, 0x0f); /* Clear interrupt status */
  25.        
  26.         /* Set address filter table */
  27.         dm9000_hash_table(MacAddr);
  28.        
  29.         /* Activate DM9000A/DM9010 */
  30.         WRITE_REG1(0x05, 0x30 | 1); /* Discard long packet and CRC error packets*//* RX enable */     
  31.         WRITE_REG1(0xff, 0x80);  /* Enable SRAM automatically return */

  32.         RETAILMSG(1, (TEXT("<>DM9000DBG_Init: wait link.\r\n")));

  33.         /* wait link ok */
  34.         while(1)
  35.         {
  36.                 //RETAILMSG(1, (TEXT("<>DM9000DBG_Init: READ_REG1(0x01) = 0x%x!\r\n"),READ_REG1(0x01)));
  37.                 if(READ_REG1(0x01) & 0x40)
  38.                         break;
  39.                 DM9000_Delay(200000000);
  40.         }

  41.         RETAILMSG(1, (TEXT("<>DM9000DBG_Init: link ok!!!.\r\n")));
复制代码


不知道哪位兄弟做过这方面的,给点意见··

最新回复

谢谢楼上的,问题已经解决~~~  详情 回复 发表于 2010-5-20 08:43
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
从串口的信息来看,一直没有连接上,也就是直显示到“RETAILMSG(1, (TEXT("<>DM9000DBG_Init: wait link.\r\n")));”
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
版主贴主中午好!
版主贴主每天都有好心情!

Cb5ocJ4v2GFTl6gNQx4KiEvV回帖是一种美德!0wNWDADrz6L0kqoK8SVJ2g5h
==========================
介+绍:

[/url]

HvfgaH51x3siozB0iWmvFNaG
1)可录制上网记录,截获Http信息。
2)利用截获的Http信息自动生成命令(Page,拖拽即可完成)
3)执行命令,模拟浏览器向Web服务器发生命令。

中文论坛:[url=http://spritebrowser.com/LunTan]

Cb5ocJ4v2GFTl6gNQx4KiEvV

发现一群美女:
[url=http://byhat.com][/url]

=======================
软件创业QQ qun群:103815692

7J1KrpHVYW9TR7LyFNha8OTS
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
顶起来啊····
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
你可以看看在eboot中dm9000的中断产生没有?然后按照驱动中ndis接口的写法,读取相关寄存器!我没有调过eboot下的,不过驱动那的我调试好了!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
EBOOT中一般好像都没用中断。

你下载这个试试看,在2410上验证过的,你根据自己的平台修改一下后看看。
[url=http://download.eeworld.net/source/2242562][/url]
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 7 楼 sunrain_hjb 的回复:
EBOOT中一般好像都没用中断。

你下载这个试试看,在2410上验证过的,你根据自己的平台修改一下后看看。
http://download.eeworld.net/source/2242562

谢谢····
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 7 楼 sunrain_hjb 的回复:
EBOOT中一般好像都没用中断。

你下载这个试试看,在2410上验证过的,你根据自己的平台修改一下后看看。
http://download.eeworld.net/source/2242562

试了下,读取ID和初始化都过去了,但是在调用EbootInitEtherTransport()函数的时候,串口信息如下:

Starting auto-download ...
DM9000 Mac Address: 12:34:56:78:9A:BC
<>Probe:DM9000 is Detected

GPCR=113,GPR=8.

initialize Ethernet controller successful.
System ready!
Preparing for download...
INFO: Using static IP address 192.168.100.3.

INFO: Using subnet mask 255.255.255.0.

INFO: Using device name: 'MBA244039612'
Recieve packet error. Reset()
GPCR=113,GPR=88.

Recieve packet error. Reset()
GPCR=113,GPR=88.

Recieve packet error. Reset()
GPCR=113,GPR=88.

Recieve packet error. Reset()
GPCR=113,GPR=88.

Recieve packet error. Reset()
GPCR=113,GPR=88.

Recieve packet error. Reset()
GPCR=113,GPR=88.

Recieve packet error. Reset()
GPCR=113,GPR=88.
。。。。。。。。。。。。。
从代码中可以找到这个提示信息的位置:
PUBLIC DWORD
DM9000DBG_IsReceivedPacket(void)
{
        USHORT event;
        BOOL   r = FALSE;

        //event = IOREAD(IO_ISQ);                       
        event = READ_REG1(0x00f0);
        event = READ_REG1(0x00f0);
        if (event == 0x01)
        {
                r = bIsPacket = TRUE;
        }
        else
        {
                bIsPacket = FALSE;
        }
       
        //event >1 ,Error status then reset
        if (event > 0x01)
        {
                //WRITE_REG1(0x00ff,0x80);        //stip int
                //WRITE_REG1(0x00fe,0x0f);        //clear isr
                WRITE_REG1(0x00fe,0x80);        //clear isr
                WRITE_REG1(0x0005,0x00);
                DBGMSG("Recieve packet error. Reset()\r\n");
                //WRITE_REG1(0x0000,1);
                //uDelay(200);
                //Reset();
                //WRITE_REG1(0x0000,0);
                //WRITE_REG1(0x00ff,0x0083);
                //WRITE_REG1(0x0005,0x0001);
                while(1)
                {
                        if(Reset() && Init(stMacAddr))
                                        break;
                }
        }
        return(r ? INTR_TYPE_RX : 0);
}
不知道有没有人知道出现这个问题的原因
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 4 楼 xuefeng_baggio 的回复:
你可以看看在eboot中dm9000的中断产生没有?然后按照驱动中ndis接口的写法,读取相关寄存器!我没有调过eboot下的,不过驱动那的我调试好了!

eboot下用中断很麻烦,一般不用中断的
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 
帮顶下!!!!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 7 楼 sunrain_hjb 的回复:
EBOOT中一般好像都没用中断。

你下载这个试试看,在2410上验证过的,你根据自己的平台修改一下后看看。
http://download.eeworld.net/source/2242562

修改了IOBASE,然后添加到EBOOT中,串口出现如下信息:

  1. DM9000 Mac Address: 20:04:09:18:00:07
  2. <>Probe:DM9000 is Detected

  3. initialize Ethernet controller successful.
  4. System ready!
  5. Preparing for download...
  6. +OEMPreDownload.

  7. INFO: Using static IP address 192.168.100.3.

  8. INFO: Using subnet mask 255.255.255.0.

  9. INFO: Using device name: 'MBA24407'
  10. +EbootSendBootmeAndWaitForTftp
  11. Sent BOOTME to 255.255.255.255
  12. Sent BOOTME to 255.255.255.255
  13. Sent BOOTME to 255.255.255.255
  14. Sent BOOTME to 255.255.255.255
  15. Sent BOOTME to 255.255.255.255
  16. Sent BOOTME to 255.255.255.255
  17. Sent BOOTME to 255.255.255.255
  18. Sent BOOTME to 255.255.255.255
  19. Sent BOOTME to 255.255.255.255
  20. Sent BOOTME to 255.255.255.255
  21. Sent BOOTME to 255.255.255.255
  22. Sent BOOTME to 255.255.255.255
  23. Sent BOOTME to 255.255.255.255
复制代码

PC跟板子用网线直连(已经证实在CE下面是可以连接的),但是在PC的Device boot name下面一直看不到设备的名称!不知道有没有高手遇到过这种情况
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 
好久不用网络下载了。
楼主再确认一下IP地址在同一个网段。EBOOT中的IP跟WinCE系统的IP是没有任何关系的。
以前经常有人只设置了系统的IP地址。

另外,建议把防火墙杀毒软件都关掉。
实在不行,用抓包工具看看到底有没有发出来数据。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 17 楼 hao507 的回复:
引用 15 楼 ymzhou117 的回复:
引用 7 楼 sunrain_hjb 的回复:
EBOOT中一般好像都没用中断。

你下载这个试试看,在2410上验证过的,你根据自己的平台修改一下后看看。
http://download.eeworld.net/source/2242562

我在Mini2440中用作网络KITL的驱动。没有做任何改动。在启动中probe失败。
log如下……

是在代码中修改还是在注册表中修改啊?没有看到原始值的位置啊?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 7 楼 sunrain_hjb 的回复:
EBOOT中一般好像都没用中断。

你下载这个试试看,在2410上验证过的,你根据自己的平台修改一下后看看。
http://download.eeworld.net/source/2242562


有的,只是没有完善而已......中断向量表可以放C语言的。
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

15
 
顶起来,大家讨论讨论··
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

16
 
帮忙顶
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

17
 
有新进展了,现在可以显示设备名称了,之前是因为没有初始化bank,自己是在看跟踪OAL层的代码看到的,添加到eboot中:

  1. static void InitBankConfig(void)
  2. {
  3.         volatile MEMreg *s2440Mem = (MEMreg *)MEMCTRL_BASE;
  4.         s2440Mem->rBANKCON1 &= ~(3<<13);
  5.         s2440Mem->rBANKCON1 |= (1<<13);
  6.        
  7.         s2440Mem->rBANKCON1 &= ~(3<<4);
  8.         s2440Mem->rBANKCON1 |= (2<<4);
  9. }
复制代码

能显示设备名称,但是还是不能下载NK,把杀毒软件和防火墙也都关了,但是还是不行,不知道是哪里的原因影响的。。。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

18
 
引用 11 楼 sunrain_hjb 的回复:
好久不用网络下载了。
楼主再确认一下IP地址在同一个网段。EBOOT中的IP跟WinCE系统的IP是没有任何关系的。
以前经常有人只设置了系统的IP地址。

另外,建议把防火墙杀毒软件都关掉。
实在不行,用抓包工具看看到底有没有发出来数据。

板子的网络设置是:
192.168.100.3
255.255.255.0
PC端的网络设置是:
192.168.100.5
255.255.255.0

这个应该在同一个网段的吧,还有就是这个DM9000的驱动在我家开发板上是可以用的,只改了CS,其他的都没有动,所以我觉得还是哪里没有设置好··但是就是找不出来···
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 7 楼 sunrain_hjb 的回复:
EBOOT中一般好像都没用中断。

你下载这个试试看,在2410上验证过的,你根据自己的平台修改一下后看看。
http://download.eeworld.net/source/2242562

我在Mini2440中用作网络KITL的驱动。没有做任何改动。在启动中probe失败。
log如下:
::: DM9000DBG_Init
DM9000 Mac Address: 00:00:00:00:00:01. IoBase:0xA7000300. membase: 0x19000300!
::: DM9000 Probe()
VENDOR ID Error
ERROR: KITL call to pfnInit failed

我是新手,问一下针对平台修改应该如何改动呢?谢谢!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

20
 
关注,顶上去
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表