嵌入式Linux实时性能优化与U-boot命令详解
1. 嵌入式Linux实时性能问题
在许多应用场景中,传统主线内核的改进虽然显著,但仍无法实现确定性的实时性能。默认调度器虽优秀,但追求“公平性”,且块I/O系统会为提高吞吐量对I/O请求进行重新排序和合并,这对于真正有实时需求的应用部分是个问题。
实际上,很多应用中只有一小部分系统需要严格的实时确定性,例如控制高速PID回路或移动机器人手臂。而记录PID回路试图维持的温度,或图形化显示机器人手臂的当前位置,通常不属于实时需求。
2. 中断抽象(Interrupt Abstraction)方法
为解决上述问题,可采用中断抽象方法,让Linux作为小的实时内核下的最低优先级任务(即空闲任务)运行。实时功能由该内核下的高优先级任务处理,非实时任务(如图形、文件管理和网络)则由Linux处理。
这种方法被称为“中断抽象”,因为实时内核接管了Linux的中断处理。当Linux尝试禁用中断时,实际上并未生效,实时内核只是清除内部软件中断使能标志,仍保持中断开启。
当硬件中断发生时,实时内核会先判断中断指向对象:
- RT任务 :调度该任务。
- Linux :检查软件中断标志。若启用,则调用相应的Linux中断处理程序;若禁用,则记录中断发生,待Linux重新启用中断时再传递。
实时任务可以作为内核空间可加载模块或用户空间进程运行。用户空间的实时任务通过内核空间的“伙伴任务”与实时内核通信,而内核空间的实时任务通常需要与用户空间进程进行文件访问、网络通信或用户界
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



