我继承了通过 CompactPCI 背板连接的 3 台 SBS(现为 GE Fanuc)C2k 单板计算机,并且需要在它们之间启动和运行共享内存。我的理解是,在前几年,值SM_ANCHOR_ADRS
最初是由某人“发现”的,每当 PMC 被换入或换出时,值都会SM_ANCHOR_ADRS
被摆弄,直到它再次起作用。这一次,我不想随机戳内存地址,而是想了解这个值是如何开始的。
我注意到在 VxMP 手册中,有一个关于如何为 VME 计算这个地址的描述,给定一个内存映射和已知的偏移量。我尝试在 C2k 用户手册中查找类似的内存映射,但不存在。(我在板卡支持包中看到的关于 PCI 自动配置的部分可能与此有关?)
此外,如果有用,内核配置中的相关位:
主:
SM_MEM_ADRS NONE
SM_ANCHOR_ADRS (char*)0x4100
SM_ANCHOR_OFFSET 0x4100
SM_INT_TYPE SM_INT_NONE
SM_MAX_WAIT 3000
从卡:
SM_MEM_ADRS (SM_ANCHOR_ADRS)
SM_ANCHOR_ADRS (char*)0x84004100 //this is the number that generally gets fiddled with..
SM_ANCHOR_OFFSET 0x4100
SM_INT_TYPE SM_INT_NONE
SM_MAX_WAIT 3000
有了这些信息,我将如何为 CompactPCI 背板上的设备计算 VxWorks 的共享内存锚地址?