Linux 网卡驱动基址的确定

网卡的基址(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最后的0x300cs8900的芯片厂商确定的,具体可查看cs8900的芯片资料

cs8900使用的中断号也是由原理图决定的

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwsdfj.html