最后,讲前述几种实时内核的方式进行一下比较:
方案id | 方案名称 | 方案简介 | 方案优势 | 备注 |
---|---|---|---|---|
1 | 实时补丁(preempt rt) | kernel+ingo molnar patch(preempt_rt)方式,主要修改包括中断线程化, Spinlock可休眠,以及优先级继承 | 1,操作简便,主线kernel加对应版本的patch即可 (打开CONFIG_PREEMPT_RT_FULL) 2,kernel5.3版本以后preempt rt合入主线,不用单独打patch了,这样对代码管理和版本维护的成本会降低 | |
2 | Xenomai cobalt | 宏微内核方案,其中微内核为cobalt,同时还有ipipe提供中断的优先级控制, 宏内核处理普通应用,cobalt处理实时任务,xenomai提供标准posix接口和一些 常用rtos的非标准posix接口 | 1,理论上比preempt的实时性更好 2,提供了标注POSIX和非标准的RTOS接口,移植应用很方便 3,增加了RTnet等实时特性 | |
3 | Xenomai mercury | 内核为kernel+preempt patch,没有微内核,但xenomai提供标准posix接口和一些 常用rtos的非标准posix接口 | 1,提供了标注POSIX和非标准的RTOS接口,移植应用很方便 2,同时也能方便的移植linux标准的实时应用程序 | mercury是否支持RTnet还不清楚, 我理解RTnet涉及到内核驱动的修改, 所以没打ipipe patch的话,应该不支持 |