解耦的应用模块

发布于 2024-12-25 14:12:57 字数 383 浏览 2 评论 0原文

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

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

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

提前致谢!

I'm searching an embedded RTOS which supports the functionality to update the software without to compile/link the whole kernel and application SW. The concept would be like in Windows or Unix Desktop Systems: Download an application module (compiled/linked binary) to the target without touching the kernel (decoupled from kernel).
One RTOS which supports such Memory Protected Downloadable Application Modules (DAM) is ThreadX from ExpressLogic ( www.rtos.com/products/threadx/ ).

Does anybody know other RTOS (small footprint, target CPU Cortex-M3), which supports such DAM concept?

Does anybody have experience with DAM of ThreadX? Some approved literature?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

海之角 2025-01-01 14:12:57

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


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


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

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

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


QNX Neutrino can do that. It is a complete RTOS rather than just a kernel, and has a Unix-like interface and POSIX API. It uses the Korn shell by default, but can use alternative shells or a windowing GUI interface. It is far smaller and more scalable than Linux or Windows Embedded, while being a true RTOS.


WindowsCE is real-time capable (though not as flexible or as fast as a typical RTOS, but deterministic and with a true priority based pre-emptive scheduler).


VxWorks can dynamically load and link object modules to an already loaded and running kernel.

It is not quite the same as on Windows or Linux, it works by partial linkage on the development host, then linkage is completed at run-time on the target. Any unresolved link dependencies in the object file being loaded must exist in the target, either in the kernel or in previously loaded object files.

The resulting run-time still behaves as a monolithic application as if it had been fully linked on a development host, so each module must have unique external symbols and no main() function. The runtime loader/linker does not execute the loaded module, but the VxWorks shell is capable of directly executing any public function by function name, so you simply call the loaded module's entry point from the command line or a script.


缪败 2025-01-01 14:12:57

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

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

< em>“一个优点是您不必经常重建内核。这可以节省您的时间,并且可以避免在重建和重新安装基本内核时引入错误的可能性。一旦您有了一个可以工作的基本内核,它就可以了。很好,离开它尽可能长时间保持不变。”

Am not an expert on Cortex-M3, but why not use Linux for Cortex? Linux has the concept of "modules" which can be loaded and unloaded at runtime. Not the entire kernel, and not all functionality of course.

You may want to check out Linux Lodable Kernel Modules HOWTO which provides excellent documentation on the subject:

"One advantage is that you don't have to rebuild your kernel as often. This saves you time and spares you the possibility of introducing an error in rebuilding and reinstalling the base kernel. Once you have a working base kernel, it is good to leave it untouched as long as possible."

執念 2025-01-01 14:12:57

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

使用 threadx,您可以在 cortex m3 下执行此操作,因为它可以使用 MPU,无需 mmu。据我所知,其他操作系统也存在问题。

The footprint is very small. The kernel, module manager, a small demo app with memory protection and module support comes under 15kB.

With threadx you can do this under cortex m3 as it can use the mpu, no mmu necessary. As far as I know other OSes have trouble there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文