快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈
- 付费专栏-付费课程 【购买须知】:
- 【精选】TEE从入门到精通-[目录] 👈👈👈
注意: 在默认的情况下,本文讲述的是armv8 aarch64体系,optee 3.12.0代码
1、optee os的四种栈内存
在学习栈之前,我们先回顾下,optee有两种进入方式、三种退出方式:
- Boot
- Normal entry
- Normal exit
- RPC exit
- Foreign interrupt exit
然后我们再看下,optee os种定义的四种栈内存,如果是armv8架构,只要看后面三种:
- Secure monitor stack (128 bytes), 绑定CPU,armv7平台,optee os开启了secure monitor时,会使用该栈
- Temp stack (small ~1KB),绑定CPU,临时使用的栈,使用该栈期间,所有中断都是disabled的,如果有abort那也是fatal的。例如在boot时,会使用temp stack,直至boot完成并退出; normal entry时,也会先使用temp stack,然后再切换程thread stack;
- Abort stack (medium ~2KB),绑定CPU, data abort或pre-fetch abort的时候使用该栈
- Thread stack (large ~8KB),不绑定CPU,给当前线程或任务使用的,使用该栈时,interrupts是打开的

本文详细介绍了Optee OS在armv8-aarch64架构下的四种栈内存:Secure Monitor Stack、Temp Stack、Abort Stack和Thread Stack,以及对应的栈指针SP_EL0和SP_EL1的使用情况。在启动、正常进入和退出时使用Temp Stack,正常运行时使用Thread Stack,异常时使用Abort Stack。同时,文章通过代码解读了栈内存的分配和栈指针的设置过程。
订阅专栏 解锁全文
1483

被折叠的 条评论
为什么被折叠?



