您的位置:首页 > 其它

嵌入式系统安全复习(一)

2015-11-09 21:34 211 查看

嵌入式系统安全复习(一)

嵌入式系统可以理解为任何一个非通用计算机的计算机系统。在课堂上主要了解的是ARM9体系架构

ARM公司非常有意思,是一个设计芯片的公司,却不生产芯片,靠知识产权(Intellectual Property)盈利

指令集

课程主要讲的是三星公司的S3C2410/2440。首先可以从ARM体系结构中的指令集讲起。指令集分为两种,一种是复杂指令集,CISC(Complete Instructions Set Computing),它的指令长度可变,为1到15个字节;另一个是精简指令集,RISC(Reduced Instructions Set Computing),指令长度固定为4个字节,也就是32位。CISC的指令并不适合用于嵌入式编程,主要由于CISC指令的使用频率不均衡,无法高效的使用每一个指令,而且CISC的微程序处理制约了采用VLSI(超大规模集成电路 Very Large Scale Integration)的芯片的速度的提高。而RISC指令采用硬接线代替了微程序的控制,使得嵌入式可以使用流水线高效作业,大大的减少了指令平均执行周期数CPI(Cycles per Instruction)。ARM920T还实现了Thumb指令集,这是比RISC更加精简的指令集合,用16位表示。Thumb指令集是RISC指令集的子集,两者切换的时间开销相当于切换到子程序的开销

体系结构和Cache结构

为了提高效率,ARM9以及之后的系列采用哈佛体系结构分开存储程序指令和数据,拥有较高的执行效率和数据吞吐率,Cache结构也是哈佛结构,分开存储数据和指令。关于冯诺依曼体系结构和哈佛体系结构的对比可以看这里

流水线作业

从ARM7开始就采用3级流水线,把指令分为取值,译码,和执行三个步骤,到ARM9之后,流水线升级到5级,分为取值,译码,执行,访存和写入。流水线作业允许多个操作同时处理,比逐条执行指令更快。ARM9系列之后的流水线级别还要更多,也意味着CPI更快

7种处理器模式



需要注意的是,除了用户模式以外,其他模式都是特权模式。除了用户模式外,其他的模式皆为特权模式,用户模式不能直接切换到别的模式,而特权模式可以自由切换处理器模式。除了用户和系统模式外,其余的五种处理器模式称为异常模式,异常模式除了切换还可以由特定的异常进入,每个异常模式都有一些独立的寄存器来保持用户模式的可靠性。用户模式和系统模式共享存储器

寄存器



一共有37个寄存器,其中有31个通用寄存器和6个状态寄存器。R0—R15是通用的寄存器,用来保存数据或者地址,每一个操作系统模式有对应的寄存器。在不同的处理器模式下,编译器会对应相应模式下的物理寄存器。但是R0~R7是通用的,每个模式使用的都相同。

几个特殊的寄存器:

R9 SB Stack Base 静态基址寄存器 。 当调用任何外部可见例程时,它必须指向适当的静态数据段基址.

R10 SL Stack Limit 数据栈限定指针,相当于栈顶。

R11 FP Frame Pointer

R12 IP

R13 SP Stack Pointer 数据栈指针。根据它向高地址还是低地址递增,指向的是空还是数据,可以有4种装载数据到栈的方式

R14 LR Link Rigister 链接寄存器。保存子程序的返回地址,如果在一个模式下有多层子程序的话,需要入栈保存。

R15 PC Program Count 程序计数器。永远指向正在取指的地址

对于Thumb状态来说,只使用R0~R7通用寄存器和SP,LR,PC以及CPSR

程序状态寄存器



进入异常后,当前的程序状态会保存在SPSR_< mode >中,异常处理完成后强制把状态恢复成SPSR_< mode >的样子



目前一共有7种处理器模式,而采用5位表示,所以还有32-7=25个保留位。更改保留位要确保不会影响到后续的程序。

异常



异常产生后,处理器的PC值被强制赋予成该异常对应的存储器地址。异常程序的入口地址统称为异常向量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: