网卡的基址(base addr)的确定:
cs8900使用的是nGCS3,
根据s3c2410的资料可知nGCS的内存空间是0x1800 0000 - 0x2000 0000,
所以cs8900的"可以"使用的地址范围是0x1800 0000 - 0x2000 0000,cs8900最后使用的地址范围还需根据电路图确定,准确地说,由cs8900的读写引脚确定.
由表达式(cs8900的读引脚)nIOR=(s3c2410的输出)nOE || ( ~ (s3c2410的地址线)ADDR24 )确定
由于cs8900的读引脚nIOR是低电平有效(why?因为nIOR前面的第一个字母是n),所以要想cs8900的读有效(即s3c2410能够读cs8900),那么表达式“=(s3c2410的输出)nOE || ( ~ (s3c2410的地址线)ADDR24 )”必须等于低电平(逻辑假)
也就是说要想cs8900读有效,那么(s3c2410的输出)nOE = 0; (s3c2410的地址线)ADDR24 = 1。这就决定了ADDR24必须是1,也就是cs8900在nGCS3的偏移是0x0100 0000
0x1800 000 + 0x0100 0000 = 0x1900 0000
dev->base_addr = ioremap(0x19000000,0x100000) + 0x300最后的0x300是cs8900的芯片厂商确定的,具体可查看cs8900的芯片资料
cs8900使用的中断号也是由原理图决定的