结论

随着实时系统变得更加复杂,并且需要更高级的特性,使用完整的通用操作系统来帮助更快速地实现其中一些需求的好处变得越发具有吸引力。如果实时需求不太严格,那么使用Linux内核和众多官方支持的架构中的PREEMPT_RT补丁是目前实现这一目标最可行的方法之一。与此同时,RISC-V已经在工业领域得到了大量的关注,并且在未来,它可能会成为嵌入式设备领域的一个重要参与者。一旦商业RISC-V解决方案的可用性提高,Linux内核对RISC-V体系结构的支持也有所进展,它们就带来了一个非常有趣的平台,可以与其他体系结构竞争。不可避免的是,在某个时候,对运行实时Linux的高级RISC-V系统将会有真正的需求和支持。

通过本文中提出的一些小调整,RISC-V上的PREEMPT_RT补丁的核心看起来已经完全功能化了。最重要的是,它似乎不包含任何导致内核panic、死锁或其他重大问题的根本问题代码部分。此外,延迟测量显示了在实时使用场景上可能实现的结果。这种运行在RISC-V平台上的未经优化的实时Linux已经可以实现与其他官方支持的架构类似的结果。然而,评估的系统非常简单,因此还不一定代表一个实际的系统。

使用PREEMPT_RT后,即使在高负载的情况下,最大观察延迟也保持在150µs以下。在系统内存不足的严重错误情况下,最大延迟远低于250µs。与主线内核相比,这明显更低,主线内核在毫秒区域内经历了良好的延迟。总的来说,观察到的最大延迟似乎是非常确定的,因此它们不取决于系统负载,而系统负载是所有实时系统运行的唯一最重要的要求。这些数据令人印象深刻,因为目前还没有完成任何RISC-V架构或特定于驱动程序的延迟优化。导致PREEMPT_RT内核中仍然存在当前延迟的主要因素似乎与计时器中断以及偶发的自旋锁有关,优化其中一些部分可以进一步改善经历的延迟。

基于延迟测量,RISC-V上的PREEMPT_RT可能已经适用于一些不需要比200µs更好的响应时间的情况。没有任何错误的情况下,当前系统应该能够在该时间限制内可靠地响应。此外,RT-Linux还没有实际的应用,因为对于一些严重的问题,都需要有对LAZY_PREEMPT_RT补丁中的RISC-V架构的官方支持。可能除此之外,还需要有一些可靠的跟踪记录,以给予在工业项目中使用这样的系统足够的信心。我们至少还需要几年的时间才能考虑到这一点。同样值得注意的是,向内核中添加更多的选项可能会导致一些更长的延迟。这一问题今后还需要进行进一步的研究,以了解可能导致问题的不同选择。

总体来说,运行在RISC-V架构上的具有实时能力的Linux系统的未来可能会非常有前景。Linux的不同实时扩展将比以往任何时候都更加突出,而PREEMPT_RT将在该开发中发挥重要作用。将PREEMPT_RT补丁完全维护到Linux内核源代码只会加速开发,因为它会出现在一个更大的社区中。从Kernel 6.6起,RISC-V正式支持Linux系统。在官方的支持下,能够更好跟踪解决RT-Linux内核问题。此外,主线内核中的RISC-V架构代码,以及PREEMPT_RT本身与体系结构无关的部分,也将不断发展。甚至可能为Linux内核实现一些全新的特性,在未来实现更低的延迟。这项工作很大程度上将有助于未来采用RISC-V作为其他现有架构的可行替代方案。