这几天看了一些资料,<br />反复试过了各种设置,如总线宽度,时钟周期,cache等,还是读不出来,郁闷!代码如下,请各位指点一下小弟。一般情况显示id=0x62,真郁闷。<br /><br />#define CS8900_BASE (0x18000000+1<<24+0x0300)<br /><br />#define CS8900_REG U16<br />#define CS8900_OFF 0x02<br /> <br />#define CS8900_BUS16_0 *(volatile U16 *)(CS8900_BASE+0x00)<br />#define CS8900_BUS16_1 *(volatile U16 *)(CS8900_BASE+0x01<<1)<br /><br /> <br /> #define CS8900_RTDATA *(volatile U16 *)(CS8900_BASE+0x00*CS8900_OFF)<br />#define CS8900_TxCMD *(volatile U16 *)(CS8900_BASE+0x02*CS8900_OFF)<br />#define CS8900_TxLEN *(volatile U16 *)(CS8900_BASE+0x03*CS8900_OFF)<br />#define CS8900_ISQ *(volatile U16 *)(CS8900_BASE+0x04*CS8900_OFF)<br />#define CS8900_PPTR *(volatile U16 *)(CS8900_BASE+0x05*CS8900_OFF)<br />#define CS8900_PDATA *(volatile U16 *)(CS8900_BASE+0x06*CS8900_OFF)<br />#define ISQ_RxEvent 0x04<br />#define ISQ_TxEvent 0x08<br />#define ISQ_BufEvent 0x0C<br />#define ISQ_RxMissEvent 0x10<br />#define ISQ_TxColEvent 0x12<br />#define ISQ_EventMask 0x3F<br /><br />/* bus interface registers */<br />#define PP_ChipID 0x0000 /* Chip identifier - must be 0x630E */<br />#define PP_ChipRev 0x0002 /* Chip revision, model codes */<br /><br /><br /><br />/* packet page register access functions */<br /><br />unsigned short get_reg_init_bus (int regno)<br />{<br /> /* force 16 bit busmode */<br /> volatile unsigned short c;<br /><br /> c = CS8900_BUS16_0;<br /> c = CS8900_BUS16_1;<br /> c = CS8900_BUS16_0;<br /> c = CS8900_BUS16_1;<br /> c = CS8900_BUS16_0;<br /><br /> CS8900_PPTR = regno;<br /> c=(unsigned short) CS8900_PDATA;<br /> Uart_Printf("
cs8900a id=%x",c);<br /> return (c) ;<br />}<br /><br />unsigned short get_reg (int regno)<br />{<br /> CS8900_PPTR = regno;<br /> return (unsigned short) CS8900_PDATA;<br />}<br /><br /><br />void put_reg (int regno, unsigned short val)<br />{<br /> CS8900_PPTR = regno;<br /> CS8900_PDATA = val;<br />}<br /><br /><br />int CMDnetid(int argc, char *argv[])<br />{<br />// rBWSCON = rBWSCON & ~(0xf << 12) | (0x09<< 12);//nGCS3=nUB/nLB(sSBHE),nWAIT,16-bit<br />// rBANKCON3 = (0 << 13) | (3 << 11) | (7 << 8) | (1 << 6) | (0 << 4) | (3 << 2) | 0;<br /><br /> Uart_Printf("
mmu init");<br /> MMU_Init();<br /> <br /> rBWSCON=(rBWSCON & 0xffff0fff) |0x00009000;<br /> rBANKCON3=0x00000700;<br /><br /> if (get_reg_init_bus (PP_ChipID) != 0x630e) <br /> {<br /> Uart0_Printf ("
CS8900 Ethernet chip not found?!");<br /> return ;<br /> }<br /> else<br /> {<br /> Uart0_Printf ("
CS8900 Ethernet chip have found!");<br /> }<br /><br /> return 0;<br />}
|