1. Check the physical connection of the network.
Use a crossover network cable to connect the target board to a PC. At this time, the Ethernet connection indicator (linkled) of the target board and PC will always be on, and the active indicator will flash) the network connection information is displayed. If it is abnormal, there may be problems with the receiving or sending link, or the related part of the chip has problems. Pay special attention to the resistance of the chip's 93rd-foot (RES) connection.
2. Read the chip ID to determine whether the chip and ISA bus are normal.
The read chip ID and printed ID can be added in the initialization section of kernel/Drivers/NET/cs8900a. C.Code. Normal chipid: 630E. If the chipid is incorrect, the chipid is dc90. In this case, it may be the logic conversion circuit of the read/write part of the I/O and memory space, or the abnormal address data line.
You can also directly write a small segment of code that does not run in Linux in ads or other environments:
# Define Cs8900_base (* (volatile unsigned short *) 0x19000000)
# Define Ethioaddr (* (volatile unsigned short *) 0x19000300)
# Define Ethppp (* (volatile unsigned short *) 0x1900030a)
# Define Ethppd0 (* (volatile unsigned short *) 0x1900030c)
Void Test_cs8900 ( Void )
{
Rbwscon = Rbwscon & ~ ( 0xf < 12 ) | ( 0xd < 12 ); // Ngcs3 = nub/NLB (ssbhe), nwait, 16-bit
Rbankcon3 = ( 0 < 13 ) | ( 3 < 11 ) | ( 7 < 8 ) | ( 1 < 6 ) | ( 0 < 4 ) | ( 3 < 2 ) | 0 ;
Ethppp = 0 ;
Uart_printf ( " Cs8900a chipid1 is % x \ n " , Ethppd0 ); // Print ID
Ethppp = 2 ;
Uart_printf ( " Cs8900a chipid2 is % x \ n " , Ethppd0 );
}
After the above two parts are complete, the following information will be printed when the kernel is started to initialize Ethernet:
Eth0: CS8900 rev K (3.3 volts) found at 0xd0000300
Cs89x0 media RJ-45, IRQ 37
After the system is started, you can use ifconfig eth0 to set and ping the system.
Problems
1. When you connect to the PC with a crossover network cable, the network indicator light is not on, and the PC has no response.
Cause: the res resistance of cs8900a 93rd pin connection is incorrect.
2. The PC displays that the network is connected (only indicating that the physical layer is normal), but the ID for reading cs8900a is incorrect.
Cause: the bus is not configured properly, for example:
Rbwscon = rbwscon &~ (0xf <12) | (0xd <12); // ngcs3 = nub/NLB (ssbhe), nwait, 16-bit
Rbankcon3 = (0 <13) | (3 <11) | (7 <8) | (1 <6) | (0 <4) | (3 <2) | 0;
Or buffer chip (74lvch162245) or other abnormal or virtual Soldering
3. Why do addr24 and some combined Logic Circuits need to be used in Ethernet interface chips cs8900a and pcmcia pd6700?
cause: cs8900a and
pd6700 are both ISA bus interfaces, while in ISA bus interfaces, i/O space and memory space are independently addressable, so they have different read/write signals. However, in the arm system, I/O space and memory space are uniformly addressable. Therefore, high address lines (addr24) are used for circuit design) the read/write operations of the I/O space and the memory space are distinguished by the decoding of the combined logic . For example, if cs8900a of ngcs3 is used and its memory space address is 0x19000000 (addr24 = 1), the I/O space address is 0x18000000. For example, if the address of the memory space of the pd6700 of ngcs2 is 0x11000000, the address of the I/O space is 0x10000000.