Xilinx Petalinux与FreeRTOS的定性比较

Xilinx Petalinux与FreeRTOS的定性比较,xilinx,freertos,zynq,petalinux,Xilinx,Freertos,Zynq,Petalinux,我将开始在Zynq板上开发一个应用程序。我的任务基本上是在双核ARM上移植运行在Microblaze上的现有应用程序 我想知道的是在新系统上使用哪种操作系统,因为我在这个领域根本没有经验。 在我看来,主要有四种方法: 1) Petalinux(使用两个内核) 2) Petalinux+FreeRTOS(使用两个内核) 3) FreeRTOS(仅使用核心) 4) 裸金属(仅使用芯) 我的应用程序要做的是在以太网和多个自定义链路之间移动大量数据,因此它必须服务于大量中断并命令大量DMA操作 相对于裸

我将开始在Zynq板上开发一个应用程序。我的任务基本上是在双核ARM上移植运行在Microblaze上的现有应用程序

我想知道的是在新系统上使用哪种操作系统,因为我在这个领域根本没有经验。 在我看来,主要有四种方法:

1) Petalinux(使用两个内核)

2) Petalinux+FreeRTOS(使用两个内核)

3) FreeRTOS(仅使用核心)

4) 裸金属(仅使用芯)

我的应用程序要做的是在以太网和多个自定义链路之间移动大量数据,因此它必须服务于大量中断并命令大量DMA操作

相对于裸机或FreeRTOS,Petalinux在中断服务中引入的开销是多少?您认为,对于这种工作,单核应用程序在没有任何操作系统的情况下运行会更快吗?或者,例如,具有操作系统(以及信号量或互斥量等同步机制)开销的Petalinux应用程序会更快吗

我知道这个问题不是很精确,也不是很模糊,但由于没有这方面的经验,我迫切需要一些初步的提示


谢谢。

正如您所说,这太模糊了,无法给出一个经过深思熟虑的答案,因为它确实取决于您的应用程序(何时不取决)。如果您需要Linux可用的所有“东西”,并且启动时间不是问题,那么就这样做吧。如果您需要实际的实时行为、快速启动时间、简单性,并且不需要任何特定于Linux的东西,那么FreeRTOS可能是您的最佳选择。这里有一个Zynq FreeRTOS TCP项目,它使用BSD样式的套接字接口(如Linux):

通常性能应该不会有太大差异。 如果您使用优化良好的编译器编译linux,那么与裸机相比,很有可能更快

但是如果你需要硬实时,linux并不适合你

Altera有一份很好的白皮书,但也应该适合Xilinx:

谢谢您的评论。我的主要疑问是,一个开销更大但同时使用内核的petalinux应用程序和一个只使用单个内核的FreeRTOS解决方案之间的性能折衷。我要寻找的主要是中断服务的速度。非常有用的答案。那么内核和用户空间之间的内存拷贝呢?我不得不严重依赖以太网(使用TCP),因此我想知道,如果使用petalinux解决方案,总线占用率是否会更高(更高),很难说会发生什么,硬件实现之间会有很大的差异。有一些解决方案使用以太网IP核,而不使用arm(因此也不使用Linux)。一般来说,实时以太网是不可能的(存在一些实时实现),但在大多数情况下,它不是必需的。还有一件事,对你来说什么是实时的,每秒数据包,1us,1ms,1s延迟?我对硬实时不感兴趣,但对穿透性有什么理由让你使用fpga吗?你的问题听起来像你只需要一个嵌入式以太网适配器,市场上有更便宜更快的ARM。关于速度,只需使用谷歌搜索“vxworks vs linux ethernet Throughts”之类的内容,就可以找到更多关于这方面的信息。我个人会避免实施您自己的以太网解决方案,因为通常您没有时间,也可能没有技能这样做。我必须使用fpga,因为我要做的是将数据从以太网传输到自定义链路(在fpga中实现)。该链路是一个非常高的数据速率链路,因此我需要尽可能提高以太网性能,以避免丢失太多带宽