Chinaunix首页 | 论坛 | 博客
  • 博客访问: 221449
  • 博文数量: 93
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 542
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-09 16:59
文章分类

全部博文(93)

文章存档

2016年(27)

2015年(66)

我的朋友

分类: 嵌入式

2015-09-02 20:39:59

1. SoC片上系统为一块芯片,SoC一般由以下几部分组成:

        1. CPU。CPU部分一般包括一个或多个处理器核心,处理器核心即通常所说的内核,JTAG接口直接与内核相连;包括MMU,可分为指令MMU和数据MMU;包Cache,可分为指令Cache和数据Cache;包括一定大小的RAM;包括寄存器,如CP15;还包括外部协处理器接口和AMBA总线接口。如S3C2440(片上系统)的CPU为ARM920T处理器系列,ARM920T的处理器核心是ARM9TDMI,ARM9TDMI是采用ARM V4T体系架构的内核。

        2. 时钟发生器。时钟发生器给包括CPU在内的各个部件提供时钟信号。

        3. AHB总线上的高速设备。一般包括总线控制器(总裁/译码),中断控制器,电源管理模块,摄像头接口,存储器控制器(SRAM/NOR/SDRAM),LCD控制器+LCD DMA,USB主机控制器,ExtMaster,NAND控制器(包括NAND Flash引导启动加载)等

        4. APB总线上的低速设备。一般包括总线控制器(总裁/译码),I2C,I2S,GPIO,RTC,ADC,定时器/PWM,AC’97,UART,USB设备控制器,SDI/MMC,看门狗定时器,SPI。

        5. 桥路和DMA。桥路是用于连接AHB和APB总线的;DMA用于实现除CPU外的其他设备间的数据不经过CPU的直接移动。 

        注: 1.NAND控制器负责控制NAND Flash芯片的读写和把NAND Flash芯片前4KB的内容加载到启动石,启动石可能为CPU内部集成的RAM,也可能为CPU外SoC上集成的RAM。

                2. DMA既不属于AHB也不属于APB总线上的设备,它用于实现CPU外其他设备间数据的直接移动,所以可以用于沟通AHB和APB总线上的设备。所以可用于沟通AHB和APB总线的设备不仅有桥路还有DMA。


2. ARM体系的变种:

        1. Thumb指令集(T变种)
Thumb指令集是把32位的ARM指令集的一个子集重新编码后而形成的一个特殊的16位的指令集。

        2. 长乘指令(M变种)
长乘指令是一种生成64位相乘结果的乘法指令(此指令为ARM指令),M变种增加了两条长乘指令。

        3. 增强型DSP指令(E变种)
E变种的ARM体系增加了一些增强处理器对典型的DSP算法处理能力的附加指令。

        4. Java加速器Jazelle(J变种)
ARM的Jazelle技术是Java语言和先进的32位RISC芯片完美结合的产物。

        5. ARM媒体功能扩展(SIMD变种)


3. ARM的命名规则(分为两类):

        1. 基于ARM体系架构的命名,如ARMv6TxE表示ARM指令集版本为6,支持T变种,不支持E变种。

        2. 基于处理器系列的命名,如ARM920T,9代表基于ARM9核心,20代表存储管理/保护单元和Cache,T代表支持Thumb指令集。ARM920T的处理器核心为ARM9TDMI,D表示支持片上调试,I表示支持Embedbed ICE,支持嵌入式跟踪调试(硬件调试,可设置断点和观察点)。此外还有F表示具备向量浮点单元VFP,-S表示可综合版本。

        D, I, F, -S,不用于修饰指令集版本,只用于修饰处理器核心;-S表示可综合版本,意味着处理器内核是以源代码形式提供的,这种源代码形式可被编译成一种易于EDA工具使用的形式;ARM7TDMI之后的所有ARM内核,即使“ARM”标志后没有包含“TDMI”字符,也都默认包含了TDMI的功能特性;


4. 嵌入式处理器分类:

        1. MPU: 微处理器(Micro Processor Unit)

        2. MCU: 微控制器(Micro Controller Unit),又称单片机

        3. 嵌入式DSP,DSP: 数字信号处理器(Digital Signal Processor) 

        4. SOC: 片上系统(System On Chip)

        单片机和片上系统的区别:单片机一般以某一微处理器核心(CPU核)为基础,把包括SRAM部件,ROM部件,晶振部件,中断部件,定时器部件等集成到一块芯片上,即把整个计算机系统集成到一块芯片上。片上系统包括CPU,一般不包括SRAM和ROM部件(也可能集成有少量,如可能作为启动石的SRAM),只提供接口(存储器控制器),所以片上系统不能算一个完整的计算机系统(未集成RAM(主存)和ROM)。


5. AMBA总线是一个多总线系统。规范定义了三种可以组合使用的不同类型的总线:AHB(Advanced High-performance Bus),ASB(Advanced System Bus)和APB(Advanced Peripheral Bus)。

ASB是连接高性能系统模块,在某些需要高速且不必使用AHB总线的场合使用。


6. 随机存储器(RAM)

        静态随机存储器(SRAM):不需要刷新电路,存储速度快,可用作高速存储器或Cache

        动态存储器(DRAM):需要刷新电路(一般使用电容存储),存储密度高,功耗较低

        同步动态随机存储器(SDRAM):DRAM中的一种,因与处理器同步,故能突发式地输出到总线

只读存储器(ROM)

        PROM:可编程ROM EPROM:可擦除,可编程ROM
        EEPROM:电可擦除,可编程ROM

        FLASH:即能快速地擦写和读取,又具有断电后不丢失信息的特点,集成度高,制造成本低

        NOR FLASH:可芯片内直接执行程序(XIP),传输效率高,擦除和写入速度慢,在1-4MB的小容量时具有很高的成本效益

        NAND FLASH:存储密度高,应用时需要特殊的系统接口,一般小型存储卡,随身电子盘使用的是NAND FLASH


7. ARM指令流水线:
        ARM7采用三级流水线:取指,解码,执行;

        ARM9采用五级流水线:取指,解码,执行,访存(访问数据存储器),回写(回写目的寄存器),编程时要注意避免其中的寄存器冲突问题,即当前指令的目的寄存器(写寄存器)和下一条指令的源寄存器(读寄存器)相同的问题,寄存器冲突问题会导致下一条指令需要等待当前指令回写后才能译码(读取源寄存器)。

        PC指向正被取指的指令,而非正在执行的指令。


8. 处理器状态:
        ARM处理器包括32位ARM指令集和16位Thumb指令集。因此ARM处理器有两种操作状态:
        ARM状态:32位,这种状态下执行的是字方式的ARM指令,在ARM状态PC寄存器的最低两位始终为0;
        Thumb状态:16位,这种状态下执行半字方式的Thumb指令,在Thumb状态下,PC寄存器的位1用来选择一个字中的哪个半字,PC寄存器的位0始终为0。

状态切换:
        执行一个BX指令可以实现进入到Thumb状态,在执行时必须先将操作数寄存器的状态位(即位0)置1。
        如果处理器在Thumb状态进入异常状态(如IRQ,FIQ,UNDEF,ABORT,SWI等)异常处理返回时也将自动切换回Thumb状态。(进入异常状态时自动切换到ARM状态)

        执行BX指令可以进入ARM状态,在执行时必须先将操作数寄存器的状态位(即位[0])清零。

        当处理器发生异常时,PC值保存在异常模式下的链接寄存器中,并从异常向量地址处开始执行处理程序。

跳转指令:
        1. B
        B是跳转指令,跳转到指定的地址执行程序。跳转指令B限制在当前指令的正负32MB的范围内。

        B   lable    位置无关跳转指令,代码放在任何地址都可执行,都可跳转
        ldr  pc, =lable  位置有关跳转指令,代码只有放在指定的运行地址才会被执行

        2. BL
        BL是带链接的跳转指令。指令将下一条指令的地址复制到R14(即LR)链接寄存器中,然后跳转到指定地址运行程序。带链接的跳转指令BL也限制在正负32MB的范围内,BL指令可用于字程序的调用。

        3. BX
        BX是带状态切换的跳转指令。跳转到Rm指定的地址执行程序,若Rm的位[0]位1,则跳转时自动将CPRS中的标志T置位(已经切换为Thumb状态),即把目标地址的代码解释为Thumb代码;若Rm的位[0]为0,则跳转时自动将CPRS中的T清零,即把目标代码解释为ARM代码。


9. ARM处理器中有7种异常情况:

        快速中断请求,中断请求,预取指中止,数据中止,软件中断,未定义指令,复位

        快速中断请求异常进入快中断模式(fiq),支持高速数据传输及通道处理(FIQ异常响应时进入此模式)
        中断请求异常进入中断模式(irq),用于通用中断处理,(IRQ异常响应时进入此模式)
        预取指中止,数据中止异常进入中止模式(abt),用于支持虚拟内存和/或存储器保护
        未定义指令异常进入未定义模式(und),支持硬件协处理器的软件仿真(未定义指令异常响应时进入此模式)
        软件中断,复位异常进入管理模式(svc),操作系统保护代码(系统复位和软件中断响应时进入此模式)
        除上述五种模式外,还有用户模式和系统模式
        用户模式(usr):正常程序工作模式,不能直接切换到其他模式
        系统模式(sys):用于支持操作系统的特权任务等,与用户模式类似,但具有直接切换到其他模式等特权

        模式的改变可由软件控制,或者由外部中断或进入异常引起。大部分应用程序都将在用户模式执行。

        特权模式:除用户模式外的6种模式
        异常模式:除用户模式和系统模式外的5种模式
        ARM和Thumb两个状态之间的切换并不影响处理器模式。


10. 寄存器(嵌入式Linux应用开发完全手册 P159):
        
        PC(r15):程序计数器 SP(r13):栈指针寄存器
        LR(r14):程序链接寄存器(保存程序返回地址) IP:r12
        r0 - r12: 通用寄存器。当C和汇编互相调用时,r0 - r3用来传递函数参数,可记为a0 - a3
        当处于快中断模式时有自己专用的r8_fiq - r12_fiq,所以没有使用公用的r8_user - r12_user。
        ARM状态总共有37个用户可见的寄存器,Thumb状态总共有27个用户可见的寄存器,比ARM状态少了r8_user - r12_user和r8_fiq - r12_fiq总共10个寄存器,所以处理器状态的切换对用户可见的寄存器有影响。


11. 程序状态寄存器:

        0-4:M0-M4, 模式位,用于设置ARM的7种模式
        5:T, 状态位
        6:F, FIQ禁止位
        7:I, IRQ禁止位
        8-27: 保留
        28:V, 溢出标志
        29:C, 进位或借位扩展
        30: Z, 零
        31: N, 负或小于
阅读(1062) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~