免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2226 | 回复: 4
打印 上一主题 下一主题

ax88796b百兆网卡的驱动移植 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-26 14:45 |只看该作者 |倒序浏览
本帖最后由 shuimu_1 于 2013-05-07 09:25 编辑

平台:MPC8313ERDB
u-boot-1.3.0

我在移植AX88796B的网卡驱动程序的时候遇到一个问题:
我将原来自带的 uboot 里面的 Read&Write Buffer 这段地址改为两个AX88796B 网卡,并分配他们的基地址分别为fa000100 和fa000180 ,刚开始我想在uboot先试试单个网卡.
我将ax88796b.c 和ax88796b.h 添加到 /ltib/drivers/下 ,并修改这个目录下的Makefile(仅仅添加了一个 ax88796b.o)

在MPC8313ERDB.h(/ltib/include/configs/)下添加 :

#if 1

#define CONFIG_DRIVER_AX88796B 1

#define AX88796B_BASE   0xfa000100

#define CONFIG_NET_MULTI  1

#endif

然后修改 eth.c (/ltib/net/) 文件,在里面添加 :

extern int ax88796b_initialize (bd_t*);  
以及

#if defined(CONFIG_DRIVER_AX88796B)

ax88796b_initialize (bis);

#endif

保存后执行如下命令:

./ltib -m scbuild -p u-boot
能够生成 ax88796b.o文件

ps:在ax88796.c文件中 我注释掉了
#if defined (CONFIG_S3C2440A_SMDK)
#include <s3c2440.h>
#endif
(ax88796.c和ax88796.h是官方在smdk440上的的驱动移植)

网卡是加进去了,但是无法在uboot中ping通虚拟机,请问还有什么需要改动的吗?
您的一点建议可能正是我所需要的关键点!谢谢

论坛徽章:
0
2 [报告]
发表于 2013-05-08 09:18 |只看该作者
好吧,我自己再跟进一点吧!
(MPC8313E)移植AX88796B网卡驱动到uboot之后,通过打印消息,发现网卡寄存器中读出来的值和写进去的值不一样,但是用仿真器查看的时候,在CW中单独操作寄存器向一个地址写入数据之后,读出来的数据却是和uboot打印出来的一样,这是为什么呢?
uboot下网卡也是一直ping不通,可能是什么原因呢?
大家给点建议啊!
谢谢啊

论坛徽章:
0
3 [报告]
发表于 2013-05-08 10:17 |只看该作者
不懂、路过帮顶

论坛徽章:
0
4 [报告]
发表于 2013-05-08 15:52 |只看该作者
今天把手册又看了一遍,才知道同一个寄存器中读或者写有时候不同的原因是:
第一种情况就是读的内容和写的内容不是一个性质,比如偏移地址1C :写的时候是VLANID,读的时候是CTEPR
第二种情况就是读写内容的性质相同,但是可能是高低位相互影响,比如第2位决定第3位的值
接下来就剩下一个怎么ping不通的原因了,等我摸索完了自己来解答自己的问题
回复 2# shuimu_1


   

论坛徽章:
0
5 [报告]
发表于 2013-06-17 14:23 |只看该作者
前段时间搞定了,现在简单说一下
在驱动程序里面接收数据包处有两处接收包:
分别按照ARP和ICMP报文格式发送接收,而在接收第一个ARP数据包的时候前面四个BYTE出现错误,后面接受的数据都是正确的,
本人在这段语句的前面加了一个1ms的延时,结果接收到的数据就对了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP