我已经接管了现有的FPGA验证系统。它使用Opal Kelly软件(Windows),提供C ++编程API以在FPGA上执行I / O.系统在Windows机器上运行,但是通过Cygwin终端启动。当我想运行模拟时,我使用带有开关“-hdl”的命令行来调用脚本,以在Modelsim中使用Opal Kelly模拟库;当我想在硬件中运行测试时,我在命令行参数中使用“-lab”开关编译了一组不同的Opal Kelly提供的源文件。
我们需要更换控制FPGA的计算机,并且在旧计算机上运行的相同代码不再适用于新计算机。基本上,我需要选择加载Windows DLL的代码分支:
#if defined(_WIN32)
#if !defined(okLIB_NAME)
#define okLIB_NAME "okFrontPanel.dll"
#endif
#elif defined(__APPLE__)
#include <dlfcn.h>
#define okLIB_NAME "libokFrontPanel.dylib"
#elif defined(__linux__)
#include <dlfcn.h>
#define okLIB_NAME "./libokFrontPanel.so"
#endif
我希望执行第一个分支(_WIN32)。旧系统(Cygwin v1.5.25,g ++ v3.4.4)执行第一个分支,即使_WIN32变量不在我使用-dM -E开关和g ++的列表中。新系统(Cygwin v1.7.27,g ++ v4.8.2)不执行此分支。
有没有人知道会破坏此功能的Cygwin或g ++更新?我可以通过添加
解决这个问题|| defined (__CYGWIN__)
到第一行,但后来我修改的供应商代码在旧版本下工作正常。我对Cygwin和g ++缺乏经验,浏览FAQ并没有发现任何明显的事情。