|
小弟最近把linux移植到44b0上,在调试网卡驱动的时候出了点问题。我用的是ne2000的兼容网卡RTL8019AS,采用16位模式,在网卡偏移量和模式选择都搞好了。可是在通过DMA读8019内部存储器值的时候出了问题,这段代码是这样的:
for(i = 0; i < 32 /*sizeof(SA_prom)*/; i+=2)
{
SA_prom = inb(ioaddr + NE_DATAPORT);
SA_prom[i+1] = inb(ioaddr + NE_DATAPORT);
printk("%p=%x,%x\n", ioaddr + NE_DATAPORT, SA_prom, SA_prom[i+1]);
if (SA_prom != SA_prom[i+1])
wordlength = 1;
}
结果打印出:
06060020=0,0
06060020=0,0
06060020=0,0
06060020=0,0
06060020=0,0
06060020=0,0
06060020=0,0
06060020=0,0
06060020=0,0
06060020=0,0
06060020=0,0
06060020=0,0
06060020=0,0
06060020=0,0
06060020=42,42
06060020=42,42
而正常情况下最后的四个42,应该值是57,这个置是8019内部存储器的值,那位大虾教我遇到这种情况应该怎么办。 |
|