linux - 将基于 linux 的应用程序移植到 uC/OS-II 平台

标签 linux networking rtos microc

我计划在 uC/OS-II RTOS 的非 Linux 平台上实现 Hiawatha 网络服务器。

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

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

提前致谢

最佳答案

任何不仅仅使用标准 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 代码移植到它会容易得多。同样,有许多轻量级嵌入式网络服务器示例可能更适合 uC/OS-II 和其他简单的 RTOS,甚至根本没有操作系统。 LwIP例如是用于小型嵌入式系统的 TCP/IP 堆栈,其中存在 uC/OS-II 端口并且有 web server examples。 .

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


[编辑:2012 年 7 月 8 日]

您是否考虑过使用 Micrium's own TCP/IP stack and μC/HTTPs web-server add-on ?有可能更好地集成到 uC/OS-II,并提供比非 RTOS 特定的第三方代码更好的性能。

关于linux - 将基于 linux 的应用程序移植到 uC/OS-II 平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11292254/

相关文章:

c - 为什么这个 char 驱动程序总是只复制一个字节?

Linux "sem_wait"伪代码?

c - 即使 GPIO FD 发生变化,轮询也不会返回

linux - 使用xargs将文件从本地系统复制到docker容器

sockets - "Connectionless, unconnected"连接

windows - 从 Windows 将 nuttx RTOS 刷新到 stm32F4developer

linux - 在 NetworkManager 中的共享连接上分配静态 IP 地址

java - Java套接字连接失败

real-time - 什么是类人机器人正确的RTOS?

实时操作系统经验