龙芯多核唤醒流程
stateDiagram-v2 state 上电 { 主核 --> 主核初始化 主核初始化 --> 锁cache跳C执行硬件初始化等 锁cache跳C执行硬件初始化等 --> 跳内核环境准备 跳内核环境准备 --> 写主核Mailbox让从核自枚举 写主核Mailbox让从核自枚举 --> 主核进入内核 主核进入内核 --> 写相应从核的Mailbox让从核进入内核 -- 从核 --> 从核初始化 从核初始化 --> 循环读主核Mailbox 循环读主核Mailbox --> 自枚举统计核的状态 自枚举统计核的状态 --> 循环读自己的Mailbox 循环读自己的Mailbox --> 从核进入内核 从核进入内核 --> 初始化自身堆栈用于调度 }
众所周知, 固件下的中断和异常处理相对内核是非常拉垮的, 所以通常没有必要时, 一些固件会避免使用中断和异常.
又众所周知, 中断通常可以用轮询替代, 所以上面的一些循环读的操作, 完全就是为了避免使用中断, 反之, 那些操作可以使用中断的方式重新实现.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 活在21世纪的孟游!
评论