|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我觉得,只要把bus,device,function确定后就应该能取得io,memory等的基地址了吧。
而且,在嵌入式中,bus应该是0。 然后用查询的方法,把device,和function确定,就能用下面的函数取得基地址。 不知道我想对不对。
tmLibdevErr_t GetBaseAddress(UINT8 bus, UINT8 device,UINT8 function,UINT8 bar_number, PciAddr_t *addr_p)
{
tmLibdevErr_t tm_err ;
UINT8 offset ;
UINT32 addr ;
offset = (bar_number*4) + 0x10 ;
tm_err = pci_config_read32(bus,
device,
function,
offset,
&addr) ;
if ((addr & 1) == 0)
{
addr &= ~0xf ;
}
else
{
addr &= ~0x3 ;
}
*addr_p = (PciAddr_t) addr ;
return tm_err ;
}
//有个问题,从寄存器中读出的地址,并不是我们要的么? 还要进行处理! 这是怎么回事?
|
|