我是 rtem 编程的新手,想知道 rtem 和 linux 两者在编程方面有何不同。我知道 rtems 是一个实时操作系统,但如果你要制作一个 hello world 应用程序,程序不一样吗?
问问题
257 次
2 回答
0
标准中未指定线程的 POSIX 属性默认值,并且可能在 RTEMS 和 Linux 之间有所不同。
于 2019-10-15T03:35:55.787 回答
0
请注意,您的问题非常笼统。有很多细节差异。
最大的问题之一是二进制文件的格式:大多数 RTEMS 二进制文件都是静态链接在一起的。您只有一个包含系统和应用程序的大二进制文件。支持一些动态加载,但大多数用户不使用这种情况。
正如我在评论 RTEMS 中已经提到的那样,我的 nm 有很多 POSIX API(至少是嵌入式子集)。因此,您可以像在 Linux 上一样使用许多相同的 API。
一个很大的区别是 RTEMS 有一个全局地址空间(在大多数目标上)。所以你没有任务之间的分离。这使得指针错误更难调试。
还有一个区别:大多数嵌入式系统都针对长时间运行的应用程序。在这样的应用程序中(无论您是在 Linux 上还是在 RTEMS 上或在任何其他系统上),您都应该小心清理您的东西(关闭文件、释放内存等)。在 Linux(或其他桌面类系统)中,您有进程,并且内核会在您的进程退出后清理所有资源。尽管您可以在 RTEMS 中创建线程,但没有人会在线程退出后进行清理。
于 2019-10-03T08:35:11.630 回答