- 主空闲钩子在主内核的空闲任务上运行。
- 被动空闲钩子在没有可执行任务时于从内核上运行。
所有内核空闲要求
除非系统中所有活动内核都处于空闲状态,否则内核 0 不会进入等待中断(WFI)状态。一个全局原子计数器用于跟踪已准备好进入睡眠的内核数量。在进入 WFI 之前,内核 0 会将该值与活动内核数量进行比较。如果任何活动内核仍在处理工作,内核 0 将退出睡眠进入序列,重置其空闲计数器,并等待下一次睡眠机会。 活动内核数量在调度器初始化期间根据 GPIO 启动配置引脚确定:- 在锁步(lock-step)集群模式下,视为有三个活动内核。
- 在正常模式下,视为所有四个内核均处于活动状态。
唤醒序列
从内核唤醒 当收到分配给相应内核的外设中断时,从内核(内核 1、内核 2 和内核 3)退出 WFI。示例包括来自 CAN、IPCC 和其他外设源的中断。注意UART 中断注册在内核 0 上。因此,UART 活动无法将内核 1、内核 2 和内核 3 从睡眠状态唤醒。
IPCC_Trigger,通过 IPCC 通道通知内核 0。该通知会使内核 0 退出 WFI。
注意
因此,在
因此,在
freertos_init.h 中禁用 SLEEP_ENABLE 是一种安全的方法,可在调试和板级启动(bring-up)时完全绕过睡眠子系统,而无需删除任何代码
