我希望生成原始以太网帧,其有效负载预加载到内存中。以太网帧(10-60 个完整帧)应以 1 ms 间隔生成,无一例外。
我会选择什么来做到这一点?我担心的是此类应用程序的实时要求。应尽量减少中断,并且该进程也许应该有一个专用于其执行的核心?如果无法选择 Linux/软件,则替代方案是 FPGA。
期待听到潜在的解决方案。
答案1
1ms 足以生成一些以太网帧,但在典型的 Linux 系统上,您不能指望没有偶尔的暂停。即使您将流程设置为高优先级,我也不认为您可以期望始终设定 1 毫秒的截止日期。
实时Linux将实时操作系统与 Linux 相结合。 Linux 在实时调度程序中作为非实时优先级任务运行。
我缺乏 RTLinux 的经验,所以我无法提供具体的建议,但它确实包含以太网驱动程序,所以它看起来适合您的用例。
答案2
除非您使用的是非常深奥的发行版,否则 Linux 或 UNIX 系统的任何常见衍生版本都不是实时的。如果您正在研究像 1 毫秒这样的时间片,没有任何例外,那么您需要寻找其他地方,寻找实时操作系统。无论任何人告诉您在 Linux 上做什么,都是尽力而为,如果 CPU、I/O 或任何其他资源存在争用,该进程将继续执行,但可能会跳过一两个节拍,或者比预期更快1 毫秒间隔。这并非异常现象。这是设计使然。