cyclictest

如何给嵌入式Linux打实时补丁?

人走茶凉 提交于 2020-04-30 10:21:22
相关推荐: https://www.forlinx.com/article_view_261.html 一、实时系统分类 实时系统可以分为硬实时(Safety-Critical,低延时,比如几十个us内)和软实时(几百个us~几个/几十个ms),硬实时通常跟高确定性、可靠性要求同时出现,如果达不到,可能会造成重大生命或者财产损失,比如说航天飞控、汽车制动系统、精密仪器等都有较高的硬实时要求。对于软实时,可靠性要求没那么高,即使出现了延迟,造成的损失可控,比如说音频失真,视频不顺畅。 二、已有方案 Linux 本身已经有硬实时的方案,比如来自风河的 RT Linux,或者西班牙一家研究所的 XtratuM + PartiKle,还有其他的比如 Xenomai,RTAI 等。另外,内核官方还有完全抢占内核(Preempt-RT Linux)的支持,这个在某些情况下也达到了硬实时要求,改补丁现在有OSADL维护。 然后就是各种优化,包括驱动(irq, preempt disable), spin lock 等使用,中断函数线程化,mdelay 替换为 usleep_range() 等。优化时需要用到很多工具,比如 Ftrace, Perf, Cyclictest, Oscilloscope 等。 硬件本身的低延迟设计、可靠性设计等也会严重影响系统的实时性,比如说 ARM Cortex A