CSA(Context Save Area)是Tricore系列内核比较有特点的一个机制. 也是一般程序员比较难以理解的一点. 个人总结几点:
-
CSA与常规内核的Stack类似.可以看作把常规内核的Stack中的保护现场的功能抽出来了.这样分离设计的初衷在于加速上下文切换.
-
CSA分为Upper CSA与Lower CSA两种. 其中Upper CSA为硬件自动保存, Lower CSA为程序员视乎需要而保存/恢复.
-
单个CSA大小为16 Word,也就是64 Byte.单个CSA可以保存Upper CSA,也可以保存Lower CSA.也就是两种CSA共用系统的CSA空间.
-
三种情况发生自动上下文切换: 函数调用(非fast call), 中断, Trap