第 1 天:RTLinux 实时基础与实时任务开发(6h)
1. 半导体设备实时系统基础与 RTLinux 工程实践(3h)
1.1 半导体设备对实时系统的工程化需求(0.5h)
⚫ 半导体设备(刻蚀 / 薄膜沉积 / CMP / 运动平台)的典型实时控制场景
✓ 运动控制周期(1ms~100µs)
✓ 工艺同步控制(气体、温控、真空)
✓ 报警与联锁的确定性响应要求
⚫ 实时系统三大核心指标
✓ 确定性延迟
✓ 最坏响应时间
✓ 长期稳定性(7×24 小时运行)
⚫ 普通 Linux 在设备控制中的局限
✓ 抢占不可控
✓ 中断不可预测
✓ 多任务抖动问题
1.2 RTLinux / PREEMPT_RT 在设备控制中的工程定位(1h)
⚫ RTLinux 的工程实现路径(弱内核、强应用)
✓ PREEMPT_RT 的定位
✓ 与“双内核 RTLinux”思想的关系
⚫ PREEMPT_RT 的核心特性
✓ 全内核抢占
✓ 中断线程化
✓ 实时调度策略(SCHED_FIFO / SCHED_RR)
⚫ 半导体设备软件常见架构示例
实时控制线程 + 非实时 UI / 日志 / 网络
1.3 实验一:RTLinux 实验环境搭建与实时基线测试(1.5 h)
实验环境
⚫ VMware + Ubuntu 20.04(统一镜像)⚫ PREEMPT_RT 内核(已编译或提供包)
⚫ C/C++ 编译环境(gcc / pthread / rt)
实验内容
⚫ 安装并验证 PREEMPT_RT 内核
⚫ 使用 cyclictest 测试:
✓ 最大延迟
✓ 抖动分布
⚫ 对比:
✓ 普通 Ubuntu 内核
✓ PREEMPT_RT 内核
2. 实时任务编程与精密定时控制(3h)
2.1 基于 C/C++ 的实时任务编程模型(1.5h)
⚫ 实时任务 ≠ 内核模块
⚫ 实时线程创建与管理
✓ pthread + SCHED_FIFO
✓ 优先级规划原则
⚫ 高精度周期任务实现
✓ clock_nanosleep()
✓ 绝对时间 vs 相对时间
⚫ 定时抖动来源分析
✓ 系统调用
✓ 缓存未命中
✓ 调度干扰
2.2 实验二:模拟工艺周期的实时控制任务(1.5h)
实验内容
⚫ 编写 C++ 实时周期线程:
✓ 周期:1ms
✓ 模拟工艺步骤状态机
⚫ 模拟 IO 控制(GPIO / 内存变量)
⚫ 记录并分析:✓ 周期抖动
✓ 最大执行时间
第 2 天:实时多线程架构与系统级优化(6h)
3. 面向半导体设备的实时多线程架构设计(3h)
3.1 多优先级实时线程调度策略(1.5h)
⚫ 半导体设备典型任务分级
✓ 高优先级:运动 / 联锁 / 报警
✓ 中优先级:工艺控制
✓ 低优先级:日志 / 通信
⚫ SCHED_FIFO 调度策略详解(工程规则)
⚫ CPU 亲和性绑定(CPU Affinity)
✓ 核心隔离思想
✓ 实时线程独占核心
3.2 实验三:多优先级实时控制系统(1.5h)
实验内容
⚫ 构建三类线程:
✓ 高优先级:运动控制模拟
✓ 中优先级:温控任务
✓ 低优先级:日志记录
⚫ 观察:
✓ 抢占关系
✓ 延迟变化
⚫ 实际工程调优示范
4. 实时数据交互、中断模拟与系统稳定性(3h)
4.1 实时与非实时线程通信机制(1.5h)
⚫ 实时 FIFO 与无锁队列
⚫ 共享内存的工程使用方式
⚫ 实时同步机制选型
✓ mutex(优先级继承)
✓ semaphore⚫ 避免优先级反转的工程策略
4.2 实验四:实时采集与数据交互系统(1.5h)
实验内容
⚫ 实时采集线程(高优先级)
⚫ 非实时数据处理线程
⚫ 共享内存 + 环形缓冲区
⚫ 验证零拷贝低延迟通信
5. 系统调优、调试与长期可靠性保障(3h)
5.1 实时系统性能分析与问题定位(1.5h)
⚫ 实时系统常见问题
✓ 优先级反转
✓ 中断占用过长
✓ 内存抖动
⚫ 工程调试工具
✓ trace-cmd
✓ ftrace
✓ latencytop
⚫ 实时日志记录最佳实践
5.2 实验五:实时问题诊断与系统优化(1.5h)
实验内容
⚫ 构造一个存在优先级反转的问题程序
⚫ 使用工具定位问题
⚫ 引入优先级继承机制进行修复
6. 半导体设备实时系统最佳实践总结(1.5h)
6.1 系统级实时优化要点
⚫ 内存管理
✓ 锁页(mlockall)
✓ 内存池
⚫ 启动参数优化
✓ isolcpus✓ nohz_full
✓ rcu_nocbs
⚫ PREEMPT_RT 关键配置项解读
6.2 综合案例与客户场景讨论
✓ 典型半导体设备控制器软件架构拆解
✓ 与屹唐半导体实际项目场景对标
✓ Q&A 与自由交流