4. 多核任务模型

在 AURIX 多核实时系统中,软件并不是“一大段顺序执行的代码”,而是被拆分为若干可独立调度、可并发推进的执行单元。理解这些执行单元的类型、状态与调度规则,是后续进行多核任务划分、实时性分析和资源保护设计的基础。本节从任务模型的基本概念出发,建立一套贯穿全课程的术语体系。

一、核心执行单元:进程、线程、任务与 ISR

在通用操作系统中,进程是资源分配的基本单位,拥有独立的地址空间;线程是调度的基本单位,共享所属进程的资源。而在 AURIX 这类深度嵌入式实时系统中,通常不引入完整的 MMU 隔离进程,而是以任务(Task)和中断服务例程(ISR)作为主要执行单元。

  • 任务(Task):一段具有明确入口、可被调度器激活和挂起的函数,通常对应一个功能闭环,如“电机电流环控制”“CAN 报文解析”。任务共享同一地址空间,通过优先级和状态参与调度。
  • 线程(Thread):在 AUTOSAR OS 或 RTOS 语境下,常与任务同义;严格来说线程强调共享地址空间下的并发执行流,任务更强调功能语义。
  • 进程(Process):在 AURIX 裸机或轻量 RTOS 中较少使用;若使用,多指带独立保护域(MPU)的隔离单元,用于安全相关功能隔离。
  • 中断服务例程(ISR):由硬件事件(定时器、CAN 接收、ADC 完成)触发,优先级通常高于所有任务,执行时间必须极短,只做“搬运”和“置位”,把重活交给任务。
关键区分:任务由调度器“主动”选择执行,ISR 由硬件“强制”打断当前执行流。ISR 的优先级概念与任务优先级属于两套体系,但会相互影响。

二、任务状态与状态迁移

一个任务在其生命周期内会经历多种状态。AURIX 上常见的 RTOS(如 AUTOSAR OS、FreeRTOS)状态模型基本一致:

  • 就绪(Ready):任务已具备运行条件,等待调度器分配 CPU。
  • 运行(Running):任务正在某个核上执行。
  • 等待/阻塞(Waiting/Blocked):任务在等待事件,如信号量、消息、延时到期。
  • 挂起(Suspended):任务被显式停止,不参与调度,直到被激活。

状态迁移由调度器、事件和系统服务共同驱动。下图展示了任务状态与 ISR 触发之间的典型关系:

AURIX 任务状态迁移与 ISR 触发关系 挂起 Suspended 就绪 Ready 运行 Running 等待 Waiting ISR 执行 激活 调度选中 时间片到 / 被抢占 等待事件 事件到达 中断返回 硬件中断抢占 任务状态 中断上下文 中断触发路径

三、优先级与调度基本概念

优先级是实时系统表达“谁更重要”的核心手段。AURIX 多核环境下,优先级体系分为两层:

  1. 中断优先级:由中断控制器(如 IR)配置,数值越小通常优先级越高,决定 ISR 之间以及 ISR 对任务的抢占关系。
  2. 任务优先级:由 RTOS 调度器管理,决定就绪任务之间的执行顺序。

常见调度策略包括:

调度策略选择依据特点AURIX 典型场景
抢占式优先级调度最高优先级就绪任务实时性强,响应快电机控制、安全监控
时间片轮转同优先级轮流执行公平,但抖动较大通信协议栈后台任务
协作式调度任务主动让出 CPU实现简单,实时性差简单裸机循环
静态表驱动调度预定义时间表可预测性最高时间触发安全系统
在 AURIX 多核系统中,每个核可以运行独立的调度器实例,也可以采用全局调度器。跨核任务优先级需要统一编号,否则会出现“同优先级任务在不同核上行为不一致”的问题。

四、案例场景:电流环控制中的任务与 ISR 协作

以电机 FOC 电流环为例,典型执行链如下:

ADC 转换完成中断 (ISR, 最高优先级)
   └─ 读取电流采样值,置位事件标志
        └─ 唤醒电流环任务 (Task, 高优先级)
             ├─ Clarke/Park 变换
             ├─ PI 调节
             ├─ SVPWM 计算
             └─ 更新 PWM 占空比
                  └─ 等待下一次 ADC 中断

这里 ISR 只做最紧急的数据搬运,电流环任务承担计算密集工作。若把 PI 计算放进 ISR,会阻塞其他中断,导致系统实时性崩溃。这就是“ISR 短小、任务承担重活”的经典分工。

五、常见误区与复盘

  • 误区一:任务越多越好。任务数量增加会带来上下文切换开销和栈内存消耗,AURIX 每个核的 RAM 有限,需权衡。
  • 误区二:优先级越高越安全。高优先级任务若长时间占用 CPU,会饿死低优先级任务,必须配合时间片或让出机制。
  • 误区三:ISR 里可以随意调用 RTOS API。只有带 FromISR 后缀的 API 才允许在中断上下文调用,否则会破坏调度器内部状态。
  • 误区四:忽略优先级反转。当低优先级任务持有互斥量、高优先级任务等待时,中等优先级任务可能长期抢占,需使用优先级继承或天花板协议。
在多核 AURIX 上,跨核共享资源的互斥比单核更复杂。自旋锁会浪费 CPU 周期,建议优先使用核间中断 + 消息传递,或由 AUTOSAR OS 提供的跨核互斥机制。

掌握任务、线程、进程、ISR、优先级、状态与调度这些基本概念后,才能进一步讨论多核任务划分、负载均衡与实时性分析。这些术语将贯穿后续所有章节,是构建可靠 AURIX 多核系统的共同语言。