发这个帖子的原因是这里:
点
举的例子是INTEL 975北桥
首先,请大家看我提供的图1,上面有个红方筐,device 0, function 0,什么意思?
这个其实就是表示这个硬件在整个系统里面的位置,或者就是家庭地址吧,不然,其他设备到那里去找这个北桥?我们都知道有北桥的存在,机器知道吗?明显不知道,所以需要去定义这个设备的位置.
而实际使用中,这样的定义是不够的,还有就是BUS #,那么大家看我的第2张图,这个就是我所使用的网卡在系统中的位置.
好,现在确定了设备的位置,那么如何辨认它那?
回到第一张图,看第2个红筐,INTEL的定义(其实业内的默认定义也是这样的),把这个设备的名字的位置就放在这里,也就是说02-03这个北桥port放置设备名,也就是device id.
由于我一时找不到南桥的资料,所以关于ATA方面,只能图欠上了.
就和Andante/Warz说的一样,每家的定义都不一样,每家的offset都是自己的,不可能intel, via, sis, ati, nvidia都用相同的定义(部分相同是可能的),那么为了兼容,所以才会有ATA这个标准,任何厂商的定义,最后都会翻译为标准的ATA语言,就如同不管什么高级语言,最后对硬件操作的都只是C或汇编一样.
好,那么回到驱动上面,驱动的作用就是告诉硬件,你要到那里去处理哪段DATA,期间需要打开设备上的mailbox,register port,而这些打开方式以及路径,对不起,属于机密,无法提供,但是我想大家应该可以理解驱动程序的工作原理了吧!



-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......