我在看ARMv7异常部分,看到Vector tables发现和以前不一样了,有Secure和Non-secure状态(还有Hyp和Monitor),请问怎么理解这两种状态?读那个寄存器可以知道当前ARM处于哪种状态?
secure、non-secure、monitor是ARM TrustZone架构引入的,目前大部分os如android都是运行在non-secure mode下,secure mode下主要是由厂商提供的bin控制。hyp是虚拟化相关的,cortex-a15才开始有。
严格来讲,在non-secure mode下是无法知道当前ARM处于哪个状态下,因为那个状态的寄存器只能在secure mode下读写。
希望以上回答可以帮到你。
Hi yuanfang (元方?):
这里有一篇讲TrustZone的white paper,供参考:
http://infocenter.arm.com/help/topic/com.arm.doc.prd29-genc-009492c/PRD29-GENC-009492C_trustzone_security_whitepaper.pdf
BR
Xingguang
读CPSR,可知当前CPU Mode。
参考:Cortex-A Series Porting Guide.pdf的Chapter 3
Chapter 21讲Secure/Non-Secure
我没找到你说的文档,找到了一篇Cortex-A Series Programmer’s Guide,还没下载下来,不知道是不是这篇?另外CPSR寄存器的M位标识的模式没有Secure和Non-secure吧?
没关系,我刚上传到了社区:
Trustzone Security白皮书
大家可以参考。
另外,Yuanfang你说的无法登陆,可能是因为Inforcenter是在ARM的官网上,官网有自己独立的账号和社区不一样。
是源方
不错的文档
非常感谢您的回答,有个大概的了解,细节我看看trustzone技术,可能理解的更好些。我现在想知道arm处于哪种模式。我只能猜测是Secure mode。因为其他模式reset没有跳转地址,都没用。楼下的兄弟说CPSR.M,但是我看了没有。
回复的真快,我都重新编辑了,我又换个邮箱注册了一下,可惜mail.google.com又无法登陆,没法确认注册。另外我说的是Cortex-A Series Programmer’s Guide不能下载,没找到Cortex-A Series Porting Guide。二楼那个白皮书是不需要注册就可以下载的,有的文档是必须注册下载。
我找到了,是SCR,在你的另一个帖子里有,哈哈
Sorry我搞错了,你要的那个PDF也是Non-Confidential的,可以随便下载,不过有个电子协议需要你本人确认。 (就是打个勾)
最近Google被严打了,我也正头疼,GA也上不去,工作来不及做
建议你可以用个163之类的邮箱注册一下,比较快。