我计划在一个非linux平台上实现Hiawatha web服务器,这个平台是uC/OS-Ⅱ实时操作系统。
我需要帮助将Linux依赖的API移植到RTOS平台。
如果已经有构建库可用于在RTOS上移植Linux,请允许我这样做。
提前谢谢
发布于 2012-07-03 20:35:44
任何使用标准C库以外的代码都需要一些移植工作--非标准库和操作系统特定库和调用的完成程度将决定所需的工作,甚至决定这样一个端口的可行性。
大多数复杂的Linux代码都需要POSIX API,网络代码可能使用BSD套接字。多线程代码可能会使用p线程。uC/ OS -Ⅱ两者都没有;它只处理调度、定时、同步和进程间通信;它是调度内核,而不是与Linux相同意义上的完整操作系统--它甚至没有文件系统--这是大多数Linux代码的要求。当然,添加额外的库和扩展可以提供您可能需要的部分或全部内容。
此外,uC/OS-II的简单的单线程优先级级调度程序将使典型的Linux多线程代码难以按预期的方式调度。大多数RTOSes (包括uC/OS-III)都支持在相同优先级级别上对任务进行循环/时间分段调度,但uC/OS-Ⅱ不支持,这可能使其不适合此任务。
更复杂的东西,可能是uC/OS-Ⅱ,或者使用更适合uC/OS-Ⅱ的代码。例如,eCos是一个更加完整的嵌入式系统实时操作系统;它是开源的,包括POSIX、文件系统支持和套接字API。将Linux代码移植到这个位置要容易得多。同样,也有许多轻量级嵌入式all服务器示例,它们可能更适合uC/ OS和其他简单的RTOS,甚至根本不适用于任何操作系统。例如,LwIP是一个用于小型嵌入式系统的TCP/IP堆栈,其中存在uC/OS-II端口,并且存在web服务器示例。
关键是Linux是uC/OS-Ⅱ,它们是不可比拟的;一个需要<10 OS的代码,另一个只有大约4Mb的最小脚印!要让Linux代码在这样的系统上运行,需要添加大量额外的代码来提供缺失的服务,这在目标平台上可能是不可行的。
编辑:2012年7月8日
你考虑过使用Micrium自己的TCP/IP栈和μC/HTTPs web服务器附加组件吗?与非RTOS特定的第三方代码相比,它更好地集成到uC/OS-II中,并提供了更好的性能。
https://stackoverflow.com/questions/11292254
复制相似问题