|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2022-7-9 20:53:50
|
显示全部楼层
“你需要先了解什么是基地址base,什么是offset。映射就是base换一下,offset不变”好的 ,谢谢老师指点方向。这块我去补习下。
“你要自己写程序读写localbus” 是的,我弄这个要和上位机结合,手上有一个案例是:上位机发送语句:
void CWITH_PCI_LED_RUNDlg::OnLED4()
{
// TODO: Add your control notification handler code here
LEDSel = 0x04;
rc = PlxBusIopWrite(hDevice,IopSpace0,0x00000004,TRUE,&LEDSel,1,BitSize8);
}
void CWITH_PCI_LED_RUNDlg::OnLEDRUN()
{
// TODO: Add your control notification handler code here
LEDSel = 0x05;
rc = PlxBusIopWrite(hDevice,IopSpace0,0x00000004,TRUE,&LEDSel,1,BitSize8);
}
从API函数中:
PlxBusIopWrite(
HANDLE hDevice,
IOP_SPACE IopSpace,
U32 address,
BOOLEAN bRemap,
VOID *pBuffer,
U32 ByteCount,
ACCESS_TYPE AccessType
);
U32地址发送的是0x00000004;但下位机FPGA:
if(ads & lwr & !blast & readyflag == 1'b1 & la[13:0] == 14'b1)
begin
LEDByControl[7:0] <= ld[31:24];
readyflag <= 1'b0;
end
收到的地址数据是la[13:0]==14'b1;
这个PCI bus总线地址是0x00000004,local bus地址却变成了1, PCI9054根据什么转换来的,EEPROM烧录的如上内容。
这个我没理解到,请问如果PC发送PCI bus地址是0x00000008, 那local bus地址又会是多少勒? 老师,这个能帮我说说吗。谢谢。 |
|