error: RTL8019AS chip not found { 0x50(0x50), 0x3d(0x70)}!

zserfv8210   2010-1-11 19:37 楼主
关键源码如下:
static void eth_reset (void)
{
        unsigned char ucTemp;

        /* reset NIC */
        ucTemp = get_reg (RTL8019_RESET);
        put_reg (RTL8019_RESET, ucTemp);
        put_reg (RTL8019_INTERRUPTSTATUS, 0xff);
        udelay (2000);                /* wait for 2ms */
}
int eth_init (bd_t * bd)
{
        unsigned char id0, id1;

        /* read id */
        eth_reset ();
        id0 = get_reg(RTL8019_REMOTEBYTECOUNT0);
        id1 = get_reg(RTL8019_REMOTEBYTECOUNT1);
        if(id0 != 0x50 || id1 != 0x70)
        {
                printf("error: RTL8019AS chip not found { 0x%x(0x50), 0x%x(0x70)}!\n", id0, id1);
                return -1;
        }
        printf("RTL8019AS Founded!\n");
        printf("MAC : 0x%x-0x%x-0x%x-0x%x-0x%x-0x%x\n", bd->bi_enetaddr[0], bd->bi_enetaddr[1], bd->bi_enetaddr[2], bd->bi_enetaddr[3], bd->bi_enetaddr[4], bd->bi_enetaddr[5]);


烧写到flash运行结果出现
error: RTL8019AS chip not found { 0x50(0x50), 0x3d(0x70)}!


回复评论 (6)

要下班了,先MARK.

晚上回去再给看看,
点赞  2010-1-11 20:30
楼主根据打印信息:error: RTL8019AS chip not found { 0x50(0x50), 0x3d(0x70)}!

这个是由于id1 = get_reg(RTL8019_REMOTEBYTECOUNT1); 获得的是3d,
首先楼主好好分析下为什么会获得3d,而不是70,仔细看看RTL8019_REMOTEBYTECOUNT1。

我也核实了,datasheet都说是:0x0570。而你从寄存器里搞到的是0x503d,这个问题,建议楼主找下RTL8019的厂家,问下他们的FE.

另外你也可以暂时认同0x053d,修改下程序,让其继续执行其他操作,看后面的操作是否还能正常?
点赞  2010-1-12 12:50
谢谢提点,我按你的建议去试试!
点赞  2010-1-14 16:12
经过尝试,发现还是不行。但是我发现了一个问题,我自己编译的u-boot和厂家配置的每次烧进去出现的ID号是不一样的,我觉得应该还是驱动程序问题,肯定那儿出现了bug!我先找找看!
点赞  2010-1-17 13:14
高手我找到bug的原因了!
原因:RTL8019AS网卡是8bit操作的而1.1.6里面的网卡驱动默认位宽是16位的!将Bank3的位宽改成DW8就可以了
点赞  2010-1-17 13:44
引用: 引用 5 楼 hugh512 的回复:
高手我找到bug的原因了!
原因:RTL8019AS网卡是8bit操作的而1.1.6里面的网卡驱动默认位宽是16位的!将Bank3的位宽改成DW8就可以了


恭喜!恭喜!! 我也学习了,谢啦!
点赞  2010-1-17 16:23
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复