2

我正在搜索一个嵌入式 RTOS,它支持更新软件的功能,而无需编译/链接整个内核和应用程序软件。这个概念就像在 Windows 或 Unix 桌面系统中:将应用程序模块(编译/链接的二进制文件)下载到目标而不接触内核(与内核分离)。ExpressLogic ( www.rtos.com/products/threadx/ )的 ThreadX 是一种支持这种受内存保护的可下载应用模块 (DAM) 的RTOS 。

有人知道支持这种 DAM 概念的其他 RTOS(占用空间小,目标 CPU Cortex-M3)吗?

有人对 ThreadX 的 DAM 有经验吗?一些认可的文献?

提前致谢!

4

3 回答 3

1

QNX Neutrino 可以做到这一点。它是一个完整的 RTOS 而不仅仅是一个内核,并且具有类 Unix 接口和 POSIX API。它默认使用 Korn shell,但可以使用其他 shell 或窗口 GUI 界面。它比 Linux 或 Windows Embedded 更小且更具可扩展性,同时是真正的 RTOS。


WindowsCE 具有实时能力(虽然不如典型的 RTOS 灵活或快速,但具有确定性并具有真正的基于优先级的抢先调度程序)。


VxWorks 可以动态加载对象模块并将其链接到已经加载和运行的内核。

它与Windows或Linux不太一样,它是在开发主机上进行部分联动,然后在目标机上运行时完成联动。正在加载的目标文件中的任何未解决的链接依赖项都必须存在于目标中,无论是在内核中还是在先前加载的目标文件中。

生成的运行时仍然像一个单体应用程序一样运行,就好像它已经完全链接到开发主机上一样,因此每个模块必须具有唯一的外部符号并且没有 main() 函数。运行时加载器/链接器不执行加载的模块,但 VxWorks shell 能够通过函数名直接执行任何公共函数,因此您只需从命令行或脚本调用加载模块的入口点。


于 2012-01-07T20:45:16.477 回答
0

占地面积非常小。内核、模块管理器、具有内存保护和模块支持的小型演示应用程序小于 15kB。

使用 threadx,您可以在 cortex m3 下执行此操作,因为它可以使用 mpu,不需要 mmu。据我所知,其他操作系统在那里遇到了麻烦。

于 2015-03-03T13:37:40.497 回答
0

我不是 Cortex-M3 方面的专家,但为什么不将 Linux 用于 Cortex?Linux 有“模块”的概念,可以在运行时加载和卸载。不是整个内核,当然也不是所有功能。

您可能想查看Linux Lodable Kernel Modules HOWTO,它提供了关于该主题的优秀文档:

“一个优点是您不必经常重新构建内核。这可以节省您的时间并避免在重新安装和重新安装基本内核时引入错误的可能性。一旦您有了一个工作的基本内核,最好尽可能长时间地保持原状。”

于 2012-01-06T19:19:48.607 回答