0

我计划在非 Linux 平台上实现 Hiawatha Web 服务器,即 uC/OS-II RTOS。

我需要帮助将依赖 Linux 的 API 移植到 RTOS 平台。

如果已经有可用于在 RTOS 上移植 Linux 的构建库,请告诉我。

提前致谢

4

1 回答 1

2

任何不只是使用标准 C 库的代码都需要一些移植工作 - 进行非标准和操作系统特定的库和调用的程度将决定所需的工作,甚至是这种移植的可行性。

大多数任何复杂的 Linux 代码都需要 POSIX API,而网络代码可能会使用 BSD 套接字。多线程代码可能会使用 pthreads。uC/OS-II 没有这些;它只处理调度、定时、同步和进程间通信;它是一个调度内核,而不是与 Linux 相同的完整操作系统——它甚至没有文件系统——这是大多数 Linux 代码的要求。当然,添加额外的库和扩展可能会提供您可能需要的部分或全部内容。

此外,uC/OS-II 的简单的每个优先级一个线程的调度程序将使典型的 Linux 多线程代码难以按预期的方式调度。大多数 RTOS(包括 uC/OS-III)支持相同优先级任务的循环/时间片调度,但 uC/OS-II 不支持;可能使它不适合这项任务。

uC/OS-II 可能需要更复杂的东西,或者可能使用更适合 uC/OS-II 的代码。 例如, eCos是一个更完整的嵌入式系统 RTOS;它是开源的,包括一个 POSIX API、文件系统支持和一个套接字 API。将Linux代码移植到那里会容易得多。同样,还有许多轻量级嵌入式 Web 服务器示例可能更适合 uC/OS-II 和其他简单的 RTOS 甚至根本没有操作系统。例如, LwIP是用于小型嵌入式系统的 TCP/IP 堆栈,其中存在 uC/OS-II 端口并且有Web 服务器示例

关键是Linux跟uC/OS-II没有可比性;一个需要 < 10Kb 的代码,另一个需要大约 4Mb 的最小占用空间!要让 Linux 代码在这样的系统上运行,您需要添加大量额外的代码来提供缺失的服务,而且这在您的目标平台上可能不可行。


[编辑:2012 年 7 月 8 日]

您是否考虑过使用Micrium 自己的 TCP/IP 堆栈和 μC/HTTPS 网络服务器插件?可以更好地集成到 uC/OS-II 并提供比非 RTOS 特定的第三方代码更好的性能。

于 2012-07-03T20:35:44.430 回答