将Windows软件移植到嵌入式/实时操作系统

时间:2008-09-20 00:38:31

标签: embedded cross-platform rtos

我有一个针对Windows环境的现有代码库,并着眼于未来,希望尽可能将其作为跨平台。 通过使用跨平台库,我已经对标准Linux发行版有所成功,但我希望将其扩展到实时和/或嵌入式操作系统。

是否可以将大部分代码库移植到此类系统,还是需要针对该环境进行重新实现?如果需要重新创建零件,那么这些系统的开发是否需要不同类型的设计方法?有些供应商提供自己的IDE用于开发,这些是必需的还是我们可以或者是否可以在GNU工具链类型构建过程中进行标准化?

潜在的坑洞可能是IPC处理的差异,但如果没有进一步暴露,很难掌握具体细节。

虽然目前基于Windows,但并没有特别大量使用Win32 API(主要是COM)或Windows类型。

由于

编辑::代码库是C \ C ++

6 个答案:

答案 0 :(得分:1)

如果应用程序主要是C和posix,那么它并不太难。 今天的嵌入式平台可能意味着在紧凑型闪存卡上运行的几乎完整的XP或Linux副本。

对于gui,QT和WX都有嵌入式版本直接绘制小部件。

答案 1 :(得分:1)

如果您使用的是Windows COM界面(我假设您不是在讨论串口,而是公共对象模型),那么您的代码可能需要从中抽象出来。

当你谈到IPC时,显然这是一个多任务/多处理类型的代码库。在这种情况下,您将不得不以某种方式想出一种处理环境差异的方法。

首先,您 需要某种RTOS,因为您的应用程序是多任务的。当您使用Linux的端口时,您可能希望研究使用实时Linux版本。这样可以最大限度地减少您需要执行的端口数量。

如果您不想将Linux用作嵌入式平台,请使您的代码符合POSIX(Linux版本),并确保您选择的RTOS支持POSIX。这样,Linux和嵌入式平台的端口大致相同。

最重要的是,COM将是你的信天翁。

由于您没有提及使用GUI,我们不会解决那种蠕虫的问题:)

答案 2 :(得分:1)

最重要的一步是将所有操作系统依赖功能与项目逻辑分开。

执行此操作后,您将立即看到需要移植多少代码才能迁移到新操作系统,并且您将能够很好地开始移植。

答案 3 :(得分:0)

取决于您的嵌入式平台的功能。如果它是一个8位,那么你前面有一条艰难的道路,但如果它是32位具有不错的RAM等等,那么有许多开源的跨平台库可用。

我使用DirectFB作为我上一个嵌入式GUI应用程序,它是轻量级的,但不是跨平台的。下次我想我会尝试wxWidgets

答案 4 :(得分:0)

我不喜欢在Windows上使用GNU开发工具,因为MS Dev Studio比任何GNU工具都要好得多,但最近我一直在使用基于Eclipse和GCC的Wascana Desktop Developer并且它显示出了希望

答案 5 :(得分:0)

如果您正在指定您使用的实时/嵌入式操作系统,您是否考虑过使用Windows CE?