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

时间:2012-07-02 10:55:26

标签: linux networking rtos microc

我打算在非Linux平台上实现Hiawatha Web服务器,这是uC / OS-II RTOS。

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

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

先谢谢

1 个答案:

答案 0 :(得分:1)

任何不仅使用标准C库的代码都需要一些移植工作 - 非标准和OS特定库和调用的程度将决定所需的工作量,甚至是这种端口的可行性。 / p>

任何复杂的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例如是用于存在uC / OS-II端口且存在web server examples的小型嵌入式系统的TCP / IP堆栈。

重点是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特定第三方代码更好的性能。