Linux and RTOS using SoC (ARM, Xilinx)



我面临一个设计"问题"。我有一个Xilinx Zynq Soc的董事会,包括双核ARM9,我需要开发一个应用程序来支持实时属性控制应用程序(响应时间的最后期限(和进行重处理的应用程序(图像等(以及它们之间的一些基本通信,但最重要的是,我需要能够控制Linux部分(至少例如,以某种方式暂停它,在最好的情况下"暂停它",以便有可能关闭它,然后再次运行它(。所以我想知道如何组合。

其中一个选项可能是RTLinux,至少可以描述一下,我发现它提供了将实时内核和旁边的linux内核作为线程运行的可能性,但它现在似乎是WindRiver专有的。。

然后我升级到MicroBlaze,在那里可以在可编程逻辑上"创建"软处理器,但我不确定我是否可以在ARM和Linux上运行RTOS?

有两种东西似乎被称为rtlinux。你提到的MERT系统的Wind River复兴就是该公司的产品。另一个看似"RTLinux"的补丁是对主线内核的实时补丁,它提供了确定性调度和细粒度内核抢占。

我想你想要的是后一种。谷歌的10s表明这个SoC有一个kconfig目标,所以你需要的所有部分都应该在那里。

请记住,实时系统不仅仅是实时的能力;子系统也必须表现良好。

根据您的描述,您(至少(有以下设计选项:

  1. 双内核方法:这意味着用一个(相当侵入性的(补丁来修补Linux内核,该补丁在标准内核的同时运行一个小型实时内核。这种方法允许以复杂性为代价达到良好的实时性能(甚至在我们的数量级(。它由RTLinux项目(被Windriver收购,然后停止(、RTAI(主要专注于x86(和Xenomai实现。如果你沿着这条路走,你可以看到Xenomai是否支持你的特定SoC;然后对内核进行补丁、配置和重建;最后根据Xenomai的API编写实时代码
  2. 提高Linux标准内核的响应能力:这就是PREEMPT_RT项目的目标。与以前的方法相比,实时性能较低,但您不必编写实时特定的代码。使用这种方法,您可以修补和构建内核,然后查看实时性能是否足以满足您的需求
  3. 在FPGA上合成Microblaze软核,然后在ARM核上运行Linux,并在Microblaze上运行实时代码(裸金属或RTOS(

很遗憾,您的特定SoC不支持ARM的虚拟化扩展。否则,将有多操作系统方法的额外选择:通过Jailhouse或Xen等管理程序,在一个ARM内核上运行Linux操作系统,在另一个ARM核心上运行实时代码(裸机或ERIKA Enterprise等RTOS(。

最新更新