012011
 

这学期开了一门课,嵌入式系统与普适计算,刚好在实验室能用得到,一边学习一边做个笔记吧。

一,什么是嵌入式系统?
传统的嵌入式系统定义是:嵌入式计算系统是嵌入在其他设备中,起智能控制作用的专用计算机系统。 目前流行的嵌入式系统定义是:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

二、嵌入式系统的特殊要求
1、实时性
2、功耗
3、低成本
4、环境相关性

三、嵌入式系统开发的层次
一种是与硬件相关的设计,包括根据需要来组织系统的架构、硬件的初始化、底层引导代码的编写和操作系统移植等等。 再一种则是嵌入式平台的应用程序开发,比如在搭载了某种操作系统的嵌入式硬件上编写应用程序。

四、ARM9嵌入式系统体系结构

ARM9系列微处理器是低功耗的32位RISC结构,最适合要求低成本、低功耗的消费类应用产品,是目前应用最广泛、高性价比的嵌入式处理器。国际许多著名的IT芯片制造公司,基于ARM9处理器核生产了多种微控制器芯片,如三星公司的S3C2410、Atmel公司的AT91RM9200、Intel公司的PXA255、Motorola公司的MC9328、Cirrus Logic公司的EP93XX系列、等等。

 

ARM9体系结构
 
ARM920T微处理器的指令流水采用了典型的RISC五级流水线结构,将指令执行过程分为取指、译码、执行、访存和写回5个步骤。五级流水线结构采用分离指令cache和数据cache,将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时可能有5个指令在执行,消除了指令执行的性能瓶颈,加快了指令执行速度。
 
注意:由于流水结构的存在,对于JMP一类的转移指令,指令执行阶段的PC=取指阶段PC+2个存储区间长度。
 
ARM920T核内部具有指令缓存和数据缓存,允许处理器同时进行取指和读写数据操作。数据可以是:8位(字节)、16位(半字)、32位(字)。字必须是4字节边界对准,半字必须是2字节边界对准。ARM920T核允许32位长的地址,它把存储器看成是0地址开始的字节的线性组合,即一个地址对应于一个存储字节,其范围是232个字节(8位二进制数)
 
ARM9微处理器核共支持7种工作模式,他们的名称及意义如下表所示。不同的工作模式下,算术运算及逻辑运算等操作所使用的通用寄存器组不同。ARM9处理器核中每组通用寄存器有16个,整个ARM9核共有31个通用寄存器。
 
处理器工作模式
 
 
ARM9默认使用的存储模式是小端存储模式,即“高对高,低对低”的模式,如下图所示:
 
 
存储模式
ARM9汇编指令集中,没有相应的指令来选择是采用大端存储系统还是小端存储系统,但可以通过硬件输入引脚来配置它。
ARM9的每个地址是对应于一个存储字节而不是一个存储字,但ARM9可以访问存储字,访问存储字时,其地址应该是字对准的,既字地址可以被4整除。也就是说,若第1个字在存储空间中是在第0个地址对应的单元(32位),那么,第2个字则应在第4个地址对应的单元,第3个字在第8个地址对应的单元,以此类推。一个字(32位二进制数)是由4个字节组成,假如某个字其地址是X(X能被4整除),那么,该字的4个字节对应的地址是X、X+1、X+2、X+3。
程序中若遇到分支指令,大多数是通过把指令中的偏移量加到PC寄存器的值上来计算目的地址,然后把计算结果写回到PC寄存器,此时PC寄存器中的值就不再是顺序的,从而实现了程序分支。目的地址的计算公式如下:
目的地址=当前执行的指令地址+8+偏移量 (原因在上文流水结构出已经给出)
 
ARM9的内部寄存器:
ARM9处理器的内部总共有37个32位的寄存器,其中31个用作通用寄存器,6个用作状态寄存器,每个状态寄存器只使用了其中的12位。这37个寄存器根据处理器的状态及其工作模式的不同而被安排成不同的组。程序代码运行时涉及的工作寄存器组是由ARM9微处理器的工作模式确定的。

 
 
R0~R15称为通用寄存器,其中,R0~R7是不分组的寄存器;R8~R14是根据工作模式进行分组的寄存器;R15是程序计数器,也是不分组的。
R0~R7寄存器是不分组的,在所有的工作模式下,它们物理上是同一个寄存器。
R8~R14是分组寄存器,它们中的每一个寄存器根据当前工作模式的不同,所访问的寄存器实际可能不是同一个物理寄存器。  /*所以无需堆栈保存寄存器值,实现了上下文快速切换*/

R13寄存器的作用通常是堆栈指针,又称为SP。每种异常模式都有对应于该模式下的R13物理寄存器。
R14寄存器可用作子程序链接寄存器,又称为LR(Link Register)。当ARM9处理器执行带链接的分枝指令(如:BL指令)时,R14保存R15的值。当异常发生时,相应的寄存器分组R14_svc、R14_abt、R14_und、R14_irq和R14_fiq用来保存R15的返回值。 /*R14用来保存做PC用的R15的值*/
CPSR寄存器称为当前程序状态寄存器,又称为R16。在所有处理器模式下,CPSR都是同一个物理寄存器,它保存了程序运行的当前状态。
当前程序状态寄存器
N Z C V   DNM(RAZ) I F T M4 M3 M2 M1 M0

N: negative; Z: zero; C: carry; V: overflow; 这四个为标志位

I和F为中断禁止位,I=1时禁止IRQ中断,F=1时禁止FIQ中断。
T位 T=0时指示ARM执行;T=1时指示Thumb执行。
模式位  M0、M1、M2、M3和M4是模式位。这些位决定处理器的工作模式:
M[4:0]寄存器意义

10000用户模式;10001快速中断模式;10010外部中断模式;10011管理模式;10111中止模式;11011未定义模式;11111系统模式。

 Leave a Reply

(必须填写)

(必须填写,邮件地址不会被泄露)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>