上下文
嗨,我正在将一个古老的1977年飞行模拟器程序从SEL计算机移植到Windows 7 x64 PC系统。该程序是用Fortran编写的500000行,具有可跨所有模块访问的大型/通用/内存块。此内存是静态分配的。
此外,我的问题开始于此,还有一个硬件设备,用于使用DMA访问/common/块。我们已经成功地将硬件设备移植到FPGA PCI设备,并为其编写了设备驱动程序,DMA运行良好。
问题:
我想与PCI设备共享Fortran应用程序的静态内存。
可能的解决方案
我考虑过的事情:
-
在驱动程序中分配内存,并将用户空间Fortran公共块重新映射到该区域。
-
将用户空间公共块锁定在物理内存中,并告诉PCI设备在哪里读/写。
我更喜欢第一种选择,因为这样可以避免终身问题。到目前为止,我还没有找到一个可以接受的解决方案。你有什么建议可以和我分享吗?
Henk。
注意:我们可以完全控制硬件和驱动程序,因为它是我们自己构建的,所以奇异的想法可能也会有所帮助。。。
对于那些想知道的人来说:最终我没有找到好的解决方案,并通过读取-复制-修改-写入操作解决了这个问题。相当昂贵,但由于原始程序已有45年的历史,我们有一些cpu电源可供使用:-)