dm9000a有接收中断,接收SRAM数据不对,4个字节头信息不对

yuncanfeng 2014-10-14 09:25:27
前端时间,移植dm9000e驱动到s3c2440的开发板,驱动运行正常,开发板能够和电脑ping通;这几天把驱动移植到自己画的板子,略少改动了电路,芯片换成dm9000a,驱动可以运行,能够使用ifconfig打开eth设备,ping电脑的过程,使用抓包工具抓取到板子发给电脑的ARP数据包,电脑也回复板子ARP包,但是板子有接收中断,接收数据区的数据不对,通过读取dm9000a的头4个信息包,数据也不对,请问这是怎么回事?
...全文
670 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jklinux 2017-06-13
  • 打赏
  • 举报
回复
引用 5 楼 jesona 的回复:
引用
把srom控制器上配置的时序都降低速率试下了
static struct sam9_smc_config __initdata dm9000_smc_config = { .ncs_read_setup = 2,//0, .nrd_setup = 4,//1,//2, .ncs_write_setup = 2,//0, .nwe_setup = 4,//1,//2, .ncs_read_pulse = 6,//8,//6,//8, .nrd_pulse = 4,//4, .ncs_write_pulse = 6,//8,//5,//8, .nwe_pulse = 4,//4,//3,//4, .read_cycle = 40,//6,//16, .write_cycle = 40,//5,//16, .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_BAT_WRITE | AT91_SMC_DBW_8, .tdf_cycles = 1, }; 是这个吧,试了几个配置,还是一样的,中断中接收的数据,第一个字节是0x40,前四个字节有问题吧, 第五个开始是arp的数据应该对的。 [00] :0x40 [01] :0x40 [02] :0x00 [03] :0xff [04] :0xff [05] :0xff [06] :0xff [07] :0xff [08] :0xff [09] :0x44 [10] :0x1c [11] :0xa8 [12] :0x24 [13] :0x4b [14] :0x49 [15] :0x08 [16] :0x06 [17] :0x00 [18] :0x01 [19] :0x08 [20] :0x00 [21] :0x06 [22] :0x04 [23] :0x00 [24] :0x01 [25] :0x44 [26] :0x1c [27] :0xa8 [28] :0x24 [29] :0x4b [30] :0x49 [31] :0xc0 [32] :0xa8 [33] :0x00 [34] :0x6d [35] :0x00 [36] :0x00 [37] :0x00 [38] :0x00 [39] :0x00 [40] :0x00 [41] :0xc0 [42] :0xa8 [43] :0x00 [44] :0x70 [45] :0x00 [46] :0x00 [47] :0x00 [48] :0x00 [49] :0x00 [50] :0x00 [51] :0x00 [52] :0x00 [53] :0x00 [54] :0x00 [55] :0x00 [56] :0x00 [57] :0x00 [58] :0x00 [59] :0x00 [60] :0x00 [61] :0x00 [62] :0x00 [63] :0x0c
感觉不像,感觉是在配置dm9000而不是配置它所接在的srom控制器。我以前接触过的是在uboot里配置的
jesona 2017-06-13
  • 打赏
  • 举报
回复
引用
把srom控制器上配置的时序都降低速率试下了
static struct sam9_smc_config __initdata dm9000_smc_config = { .ncs_read_setup = 2,//0, .nrd_setup = 4,//1,//2, .ncs_write_setup = 2,//0, .nwe_setup = 4,//1,//2, .ncs_read_pulse = 6,//8,//6,//8, .nrd_pulse = 4,//4, .ncs_write_pulse = 6,//8,//5,//8, .nwe_pulse = 4,//4,//3,//4, .read_cycle = 40,//6,//16, .write_cycle = 40,//5,//16, .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_BAT_WRITE | AT91_SMC_DBW_8, .tdf_cycles = 1, }; 是这个吧,试了几个配置,还是一样的,中断中接收的数据,第一个字节是0x40,前四个字节有问题吧, 第五个开始是arp的数据应该对的。 [00] :0x40 [01] :0x40 [02] :0x00 [03] :0xff [04] :0xff [05] :0xff [06] :0xff [07] :0xff [08] :0xff [09] :0x44 [10] :0x1c [11] :0xa8 [12] :0x24 [13] :0x4b [14] :0x49 [15] :0x08 [16] :0x06 [17] :0x00 [18] :0x01 [19] :0x08 [20] :0x00 [21] :0x06 [22] :0x04 [23] :0x00 [24] :0x01 [25] :0x44 [26] :0x1c [27] :0xa8 [28] :0x24 [29] :0x4b [30] :0x49 [31] :0xc0 [32] :0xa8 [33] :0x00 [34] :0x6d [35] :0x00 [36] :0x00 [37] :0x00 [38] :0x00 [39] :0x00 [40] :0x00 [41] :0xc0 [42] :0xa8 [43] :0x00 [44] :0x70 [45] :0x00 [46] :0x00 [47] :0x00 [48] :0x00 [49] :0x00 [50] :0x00 [51] :0x00 [52] :0x00 [53] :0x00 [54] :0x00 [55] :0x00 [56] :0x00 [57] :0x00 [58] :0x00 [59] :0x00 [60] :0x00 [61] :0x00 [62] :0x00 [63] :0x0c
jklinux 2017-06-12
  • 打赏
  • 举报
回复
引用 3 楼 jesona 的回复:
楼主你好,我在调试dm9000 时也遇到了这个问题,想问一下你最后是怎么解决的。能不能提供一个思路,谢谢
把srom控制器上配置的时序都降低速率试下了
jesona 2017-06-12
  • 打赏
  • 举报
回复
楼主你好,我在调试dm9000 时也遇到了这个问题,想问一下你最后是怎么解决的。能不能提供一个思路,谢谢
yuncanfeng 2014-10-14
  • 打赏
  • 举报
回复
[quote=引用 1 楼 xuweiwei1860 的回复:] 确定了,都测试过,使用arm开发板测试过ping过程, 第一步、开发板发出arp数据包,询问要ping的目的IP;电脑收到开发板的arp数据包,回复一条arp数据包; 在这个过程测试了DM9000A的接收状态寄存器,显示字节不对齐,有一个报警出错 第二部、arp数据包互发成功后,就开始互发ICMP数据包 在这个过程测试了DM9000A的接收状态寄存器,没有报错,都正常 第三部、结束ping,电脑会给开发板发一条arp数据包,开发板收到数据包后,又回复一条arp数据包 在这个过程测试了DM9000A的接收状态寄存器,没有报错,都正常 以上3个过程是监测开发板与电脑ping的过程,都是正常; 但是使用自己做的板子,ping电脑;就出现了我帖子的问题: 始终停留在ping命令的第一步:自己的板子发出了arp数据包,电脑也收到了,并回复了arp数据包 板子收到了电脑发过来arp数据包,产生了接收中断 按照dm9000a的datasheet操作,首先读取dm9000a的SRAM缓存区的4个字节的头信息,第一 个字节必须为0(没有数据)或1(有数据),读出来的值一直不是0和1,然后读取第二个字节(代表接收状态寄存器),数据也是错的,第3、4字节是数据包长度,也是错误的,不是arp数据包的长度 数据包读出来是错的,不通过数据包校验,无法推送到内核网络,一直就ping不通,无法建立第一步的arp数据包互发,无法进入第二步
fly 100% 2014-10-14
  • 打赏
  • 举报
回复
确定一下大小端没啥问题?

21,599

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧