微处理器芯片的位数即指(处理器基础知识整理)

ntechnologytr778 2024-01-03 阅读:9 评论:0
大家好,今天给大家分享微处理器芯片的位数即指,一起来看看吧。1、ARM,32位的,寻址4GB空间,内存(SDRAM)和端口(特殊寄存器),还有ROM都映射到同一个4G空间里.2:一般都用SDRAM做内存flash(nor、nand)来当做R...

大家好,今天给大家分享微处理器芯片的位数即指,一起来看看吧。

1、ARM,32位的,寻址4GB空间,内存(SDRAM)和端口(特殊寄存器),还有ROM都映射到同一个4G空间里.

2:一般都用SDRAM做内存flash(nor、nand)来当做ROM。其中nand flash没有地址线,一次至少要读一页(512B).其他两个有地址线

3:norflash不用来运行代码,只用来存储代码,NORflash,SDRAM可以直接运行代码)

4:s3c2440总共有8个内存banks

6个内存bank可以当作ROM或者SRAM来使用

留下的2个bank除了当作ROM 或者SRAM,还可以用SDRAM(各种内存的读写方式不一样) 7个bank的起始地址是固定的

还有一个灵活的bank的内存地址,并且bank大小也可以改变

5、FLASH启动,有两种模式:NAND和非NAND(这里是nor flash)。具体采用的方式取决于OM0、OM1两个引脚

OM[1:0]所决定的启动方式

OM[1:0]=00时,处理器从NAND Flash启动

OM[1:0]=01时,处理器从16位宽度的ROM启动

OM[1:0]=10时,处理器从32位宽度的ROM启动。

OM[1:0]=11时,处理器从Test Mode启动。

Arm的启动都是从0地址开始,所不同的是地址的映射不一样。在arm开电的时候,要想让arm知道以某种方式(地址映射方式)运行,不可能通过你写的某段程序控制,因为这时候你的程序还没启动,这时候arm会通过引脚的电平来判断。

1当引脚OM0跟OM1有一个是高电平时,这时地址0会映射到外部nGCS0片选的空间,也就是Norflash,程序就会从Norflash中启动,arm直接取Norflash中的指令运行。

2当OM0跟OM1都为低电平,则0地址内部bootbuf(一段4k的SRAM)开始。系统上电,arm会自动把NANDflash中的前4K内容考到bootbuf(也就是0地址),然后从0地址运行。

这时NANDFlash中的前4K就是启动代码(他的功能就是初始化硬件然后在把NANDFlash中的代码复制到RAM中,再把相应的指针指向该运行的地方)

为什么会有这两种启动方式,关键还是两种flash的不同特点造成,NOR FLASH容量小,速度快,稳定性好,输入地址,然后给出读写信号即可从数据口得到数据,适合做程序存储器。NAND FLASH 总容量大,但是读写都需要复杂的时序,更适合做数据存储器。这种不同就造成了NORflash可以直接连接到arm的总线并且可以运行程序,而NANDflash必须搬移到内存(SDRAM)中运行。

在实际的开发中,一般可以把bootloader烧入到Norflash,程序运行可以通过串口交互,进行一定的操作,比如下载,调试。这样就很可以很方便的调试你的一些代码。Norflash中的Bootloader还可以烧录内核到Norflash等等功能。

arm寻址方式

1. 立即数寻址

这是一种比较简单的寻址方式,操作数包含在指令当中。取出指令,即取出了操作数。对应的寻址方式也就叫做立即数寻址。

例:

;注意arm汇编中,指令不能顶格写,在前面加空格。

;而定义变量的时候,必须顶格写,这里新手要注意。

ADD R0,R0,0x30 ;R0 <==R0 0x30,把R0的内容加 0x30。

说明:以上两条指令中,第二个源操作数 0x30为立即数。立即数必须以34;0x&34;&&3 ;R0 <== R0 R3*8 ,R3的值左移3位就是乘以8,结果与R1的值相加,存放到R0.

ARM的移位(或者循环移位)操作有如下几种:

LSL 逻辑左移,寄存器中低位空出的有效位用0填充

LSR 逻辑右移,寄存器中高端空出的有效位用0填充

ASR 算数右移,移位过程中必须保持符号位不变,即若源操作数为正,则高位用0填充,若为负,则高位用1填充。其每移一位的操作和逻辑右移相同,仅是如果原最高位为1,则移位后最高位补1,所以在移大于1位时左边的高位都是1.

即:

MOV R1,&80000000 ;此处立即数为负数,

MOV R1,R2,ASR 4] ;R0 <==[R1 4]

LDR R0,[R1,4 ;R0<==[R1] 、R1 <==R1 4

LDR R0,[R1,R2] ;R0 <==[R1 R2]

以上是常见的4中变址寻址方式,通过前面4中寻址的学习,我们可以认为 符号&34;意为里面的数是地址,用符号作用后是取地址对应的值。即 *(int *)强制类型转换,

#即代表的立即数。那么第一条和第四条就很容易理解了。

第二三条指令可以看出,相当于两个动作,第一个动作是将取得的值存放到R0,第二个都是R1的地址自加4.

6.多寄存器寻址

多寄存器寻址方式可以实现一条指令完成多个寄存器值的传送。最多可以传送16个通用寄存器的值。

例:

LDMIA R0,{R1,R2,R3,R4} ;R1 <==[R0]

;R2 <==[R0 4] ; R3 <==[R0 8] ;R4 <==[R0 12]

该条指令的后缀 IA 即 Increment After 的缩写,表示在每次执行完加载/存储操作之后,R0按字长度(即4字节)增加,因此,指令可以将连续多个存储单元的值传送到R1-R4中。

7.相对寻址

这种寻址方式从名称上就可以看出和基址变址寻址方式类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号为偏移量,将两者相加之后得到操作数的有效地址。

以下程序完成了子程序的调用和返回,跳转指令BL采用相对寻址方式:

[plain] view plaincopyprint?

  • BL NEXT ;跳转到子程序NEXT处执行 ,采用BL或者BLX跳转时, LR(即寄存器R14)保存了返回地址
  • [plain] view plaincopyprint?

  • ……
  • EXT
  • ……
  • MOV PC,LR ;从子程序返回,将返回地址存到PC(即寄存器R15)
  • 8.堆栈寻址

    堆栈(STACK)是一种十分常用的数据结构,按照先进后出(First In Last Out,FILO)的方式工作。堆栈使用一个叫做堆栈指针的专用寄存器指示当前操作位置,堆栈指针总是指向栈顶。ARM中使用LDMFD和STMFD指令来支持POP出栈操作和PUSH进栈操作,R13被用作堆栈指针。

    例:

    STMFD R13!,{R0~R4} ;

    LDMFD R13!,{R0~R4} ;

    第一条指令将R0~R4中的数据压入堆栈

    第二条指令将数据出栈,回复R0~R4的值。

    ARM内存管理单元

    MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表,此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由MMU决定数据是在RAM中还是在大容量存储器设备中。如果数据不在RAM中,MMU将产生缺页中断。

    MMU的两个主要功能如下:

    1.将虚地址转换成物理地址。

    2.控制存储器存取允许。

    嵌入式系统中,存储系统差别很大,可包含多种类型的存储器件,如FLASH、SRAM、SDRAM、ROM等,这些不同类型的存储器件速度和宽度等各不相同;在访问存储单元时,可能采取平板式的地址映射机制对其操作,或需要使用虚拟地址对其进行读写;系统中,需引入存储保护机制,增强系统的安全性。为适应如此复杂的存储体系要求,ARM处理器中引入了存储管理单元来管理存储系统。

    在实践中,使用MMU解决了如下几个问题:

    1.使用DRAM作为大容量存储器时,如果DRAM的物理地址不连续,这将给程序的编写调试造成极大不便,而适当配置MMU可将其转换成虚拟地址连续的空间。

    2.ARM内核的中断向量表要求放在0地址,对于ROM在0地址的情况,无法调试中断服务程序,所以在调试阶段有必要将可读写的存储器空间映射到0地址。

    3.系统的某些地址段是不允许被访问的,否则会产生不可预料的后果,为了避免这类错误,可以通过MMU匹配表的设置,将这些地址段设为用户不可存取类型。

    启动程序时生成的匹配表中包含地址映射,存储页大小(1M、64K、4K)以及是否允许存取等信息。MMU通过虚拟地址和页面表位置信息,按照转换逻辑获得对应物理地址,输出到地址总线上。

    MMU的作用有两个:地址翻译和地址保护。软件的职责是配置页表,硬件的职责是根据页表完成地址翻译和保护工作。如果CPU没有硬件MMU,那么这张表将毫无意义。必须从CPU的角度去理解内存映射这个概念,内存映射是CPU通过MMU把一条指令中要访问的地址转换为物理地址,然后发送到总线上的过程。

    在实际的应用中,可能会把两片不连续的物理地址空间分配给SDRAM。而在操作系统中,习惯于把SDRAM的空间连续起来,方便内存管理,且应用程序申请大块的内存时,操作系统内核也可方便地分配。通过MMU可实现不连续的物理地址空间映射为连续的虚拟地址空间。

    操作系统内核或者一些比较关键的代码,一般是不希望被用户应用程序所访问的。通过MMU可以控制地址空间的访问权限,从而保护这些代码不被破坏。

    MMU的实现过程,实际上就是一个查表映射的过程。建立页表(translatetable)是实现MMU功能不可缺少的一步。页表位于系统的内存中,页表的每一项对应于一个虚拟地址到物理地址的映射。每一项的长度即是一个字的长度(在ARM中,一个字的长度被定义为4字节)。页表项除完成虚拟地址到物理地址的映射功能之外,还定义了访问权限和缓冲特性等。

    MMU的映射分为两种,一级页表的变换和二级页表变换。两者的不同之处就是所实现的变换地址空间大小不同。一级页表变换支持1M大小的存储空间的映射,而二级可以支持64KB、4KB和1KB大小地址空间的映射。

    要实现从虚拟地址到物理地址的映射,必然会遇到一个问题,如何找到这个页表。对于表的查找,要知道这个表的基地址和偏移地址,在具有MMU功能的处理器中,集成了一个被称为CP15的协处理器,该协处理器的C2寄存器中用于保存页表的基地址,

    ARM MMU执行以下一些功能,将虚拟地址转换成物理地址;控制存储访问权限;决定存储器中每一页的Cache和写缓冲器的行为。当禁用MMU时,所有的虚拟地址一一映射到与其相同的物理地址。如果MMU在转换一个地址时失败,就会产生一个中止异常。MMU只有在转换失败、权限错误和域(domain)错误时,才会中止。

    MMU的主要配置和控制模块如下:页表、转换旁路缓冲器、域和访问权限、Cache和写缓冲器、CP15、快速上下文切换扩展。

    以上就是微处理器芯片的位数即指的内容分享,希望对大家有用。

    版权声明

    本文仅代表作者观点,不代表百度立场。
    本文系作者授权发表,未经许可,不得转载。

    «    2024年3月    »
    123
    45678910
    11121314151617
    18192021222324
    25262728293031
    最近发布
    热门文章