【Linux系统满足产品实时性需求】
一、背景:
应用实时性:应用程序1以固定周期执行实时算法;
应用程序2以固定周期,执行串口收发;
驱动实时性:驱动sdio接口,实现与FPGA数据交互,实现串口数据收发。
二、实时性保证:
1、linux系统:
打上rt_preempt补丁;
2、linux驱动:
sdio以工作队列方式发起sdio请求,工作队列选取hi优先级,绑定固定core3;并且通过iso_late方式隔离core3。让core3只参与sdio的中断以及工作队列。
3、linux应用:
deadline调度策略,保证应用程序的实时调度。
4、系统接口:
使用异步接口,mmap方式共享内核内存。
三、场景复杂性:
应用程序占用CPU会比较高,特别是应用中的实时任务比较多,会占用CPU大概到60%左右,导致系统负载过大。基于RT_FULL的kernel_patch,甚至会导致cpu stall现象出现。