我有一个使用 ThreadX 5.1 作为内核的应用程序。映像被闪存到运行 ARM 9 处理器的硬件上。
我正在尝试为可以在 Windows 上运行的应用程序(比如 XP,32 位)构建一个模拟器。
有什么方法可以让它在 Windows 上运行,而无需修改整个源代码来开始调用 win32 系统调用?
我有一个使用 ThreadX 5.1 作为内核的应用程序。映像被闪存到运行 ARM 9 处理器的硬件上。
我正在尝试为可以在 Windows 上运行的应用程序(比如 XP,32 位)构建一个模拟器。
有什么方法可以让它在 Windows 上运行,而无需修改整个源代码来开始调用 win32 系统调用?
您可以使用“ThreadX for Win32”为可在 Windows 上运行的应用程序构建模拟器。
听说“ThreadX for Win32”的规范。
是的,如果你愿意投入工作,你可以。
首先观察每个threadx系统调用都有一个等效的posix调用,除了事件。因此,您的 threadx 程序可以使用 posix 线程、互斥锁等作为单个进程运行。
事件可以由外部库处理(有一些)。
如果您在 Windows 中发现这很困难,那么最简单的方法就是设置一个 linux vm。我使用在 Virtual Box 上运行的 ubuntu vm。设置非常简单。您只需要 cdt 版本的 eclipse。
接下来,您需要存根所有低级系统调用。这也比您想象的要容易。例如,如果您有一个 SPI 驱动程序可以读取和写入闪存,您可以用一个大阵列替换您的闪存,这在这个级别上很容易使用。
说了这么多,如果你的 threadx 应用程序是模块化的,你可能会获得更多的里程。然后你可以自己测试每个模块,你不需要弄乱线程等。作为第一个近似值,这可能会给你你需要的东西,而无需花费大量的时间来移植整个东西以在 posix 下运行。
我过去成功地做到了这一点,并为一个模块开发了一整套单元测试,使我能够在到达目标之前开发和测试它(在我的 Mac 上)。通过这种方式,开发速度更快、更可靠。
您可能要考虑的另一个选择是找到一个支持您的微处理器的 qemu 项目。通过一些工作,您可以为您的平台开发一个完整的模拟器,然后在模拟器下运行真实的固件。
祝你好运。