第2章 微控制器及微处理器结构_第1页
第2章 微控制器及微处理器结构_第2页
第2章 微控制器及微处理器结构_第3页
第2章 微控制器及微处理器结构_第4页
第2章 微控制器及微处理器结构_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 2 章 微控制器/微处理器体系结构MCS-51 MCUIA-32 处理器体系结构2.1 MCS-51概述 2K64K ROM(Flash) 128256内部RAM 64K外部RAM/扩展IO地址空间 23个定时器 56个中断源(某些型号10余个) 并行口(4口32线I/O) 全双工串行口 时钟 DC24MHz(某些到40MHz)2.1.1 存储器组织申请C51变量还指定存储空间idata80 FF间接寻址间接寻址内部内部RAMdata00 7F直接寻址直接寻址间接寻址间接寻址内部内部RAMsfr,sbit80-FF直接寻址直接寻址不连续不连续xdata0000 FFFF 64 KB 扩展R

2、AM(MOVX)code0000FFFF 64 KBROM 程序或常数bit(共享共享),sbit202F 位寻址内部RAM20H.020H.721H.021H.12FH.02FH.7R0R74组00H-1FH寄存器C函数可以用函数可以用using 0 using 1 using 2using 3 指定指定PSW 中的中的PS1,PS0用于选用于选择当前的寄存器择当前的寄存器组(组(R0R7)2.1.2 MCS-51片上的基本部件 并行口P1P3 定时器T0,T1,T2 中断 串行口(UART,新型器件带有I2C,SPI)Special Function Registors A(ACC),B,

3、PSW,PC,DPTR 定时器TMOD,TH0,TL0,TH1,TL1 中断IE,IP 串行口SCON,SBUF 电源管理PCON 地址空间80HFFH(直接寻址) 能被8整除的特殊功能寄存器也可位寻址 增加特殊功能(片上资源),但不需要修改指令系统2.1.3 MCS-51中断 中断源 优先级管理 中断服务程序 应用举例MCS-51 的中断源中断的屏蔽与优先级MCS-51中断系统总图nC51与ANSI C的区别n需要了解MCS-51的体系结构C、ANSI C 、C51 C语言 ANSI Cthe American National Standards Institute (ANSI) stan

4、dard for the C language. C51结合51系列单片机的存储特点Franklin C51 / Keil C51 C51增加的保留字_at_alienbdatabitcodecompactdatafaridatainterruptlargepdata_priority_reentrantsbitsfrsfr16small_task_usingxdataC51的数据类型注意对标准C的扩展Data Types Bits Bytes Value Rangebit 1 0 to 1sbit 1 0 or 1signed char 8 1 -128 to +127unsigned ch

5、ar 8 1 0 to 255signed int 16 2 -32768 to +32767unsigned int 16 2 0 to 65535signed long 32 4 -2147483648 to +2147483647unsigned long 32 4 0 to 4294967295float 32 4 1.175494E-38 to 3.402823E+38sfr 8 1 0 to 255sfr16 16 2 0 to 65535浮点数浮点数! 这就可以支持复杂的运算!这就可以支持复杂的运算! C51的存储空间说明(关键词) 显式变量存储区域说明 code data id

6、ata bdata xdata pdata 存储模式(默认变量存储区域) small: 在data compact: 在pdata large: 在xdatainterrupt,using关键词关键词 Interrupt 后跟中断的类型号0,1,2,3,4,不再要求记住中断矢量地址 using 后面跟的是寄存器组的选择中断函数的定义方法中断函数的定义方法(1)void Int0srv(void) interrupt 0 using 1/ INT0的中断处理 类似的void T0srv(void) interrupt 1 using 1/ T0的中断处理 中断函数的定义方法中断函数的定义方法(2

7、)void Int1srv(void) interrupt 2 using 1/ INT1的中断处理 void T1srv(void) interrupt 3 using 1/ T1的中断处理 中断函数的定义方法中断函数的定义方法(3)void Sportsrv(void) interrupt 4 using 2/ 串行口的中断处理 void T2srv(void) interrupt 5 using 2/ T2的中断处理 2.2 IA-32 80 x86处理器回顾 80386/80486的保护模式2.2.1 80 x86系列微处理器的发展系列微处理器的发展 80188/80186 嵌入式处理

8、器 8088/8086 CPU + 8253 + DMAC +8259 80286 实地址模式(1M)相当于快速的8086 24位地址线(16M物理地址)支持多任务系统每个任务1G虚拟地址 80386/80486/Pentium/ /Core 多核多线程 IA-32 IA-64 已经商用化2.2.2 8086/8088的体系结构的体系结构 数据总线 内部 16bit Bus 外部 16bit / 8bit Bus 地址总线 20bit (1MB) I/O独立编址(逻辑独立,共享:低16位地址线,16bit/8bit数据线。)因此需要 /MEMR,/MEMR,/IORD,/IOWR 因此需要 I

9、N,OUT端口操作指令 支持多主和 DMA (总线请求,HOLD/HLDA) 中断(矢量)出错,陷阱单步,断点,溢出,软件中断;非屏蔽中断,可屏蔽中断 典型应用是IBM PC-XT(8088)Personal Computer !DOS OS 640K内存,单用户 OS提供系统服务(兼容方式使用计算机资源),提供文件系统,单色字符显示器,键盘,磁盘,并行和串口接口没有保护机制23 具体型号:80386SX/DX/EX 32位寄存器;32位地址线 寻址4GB 物理地址,虚拟寻址64TB 三种工作模式 实地址(Real Address Mode) - (1M)快速8086 虚拟地址保护模式(Pro

10、tected Virtual Address Mode) 虚拟8086方式(Virtual 8086 Mode) 保护模式支持多用户、多任务(操作系统) 特权级 分页系统 2.2.3 80386 (1985年)年)微机系统与接口技术微机系统与接口技术东南大学东南大学24 Logic Diagram25 80386MPU内部结构内部结构 26 80386功能结构:功能结构:CPU/MMU/BIUCPU IUInstruction (Prefetch + Decode) UnitEU执行:微操作、高速乘除、执行:微操作、高速乘除、EA计算;计算;ALU、GR64位筒式移位器位筒式移位器保护测试(段

11、边界、段访问权限)保护测试(段边界、段访问权限) MMU Segmentation UnitPaging UnitBIU 总线接口部件总线接口部件27 软件模型软件模型 实模式实模式 (.386C)(.386C) 16 16位模式,但是可以使用位模式,但是可以使用3232位位寄存器寄存器保护模式保护模式 (.386P) 通用通用(3232位):位):EAXEAX,EBXEBX,ECXECX,EDXEDX,EBPEBP,ESPESP,ESIESI,EDIEDI; 段寄存器段寄存器(1616位):位):CSCS,DSDS,ESES,SSSS,+ +(附加数据段)(附加数据段)FSFS,GSGS;

12、指令指针指令指针EIPEIP(IP16IP16位经扩展)位经扩展) 机器状态机器状态(标识)(标识) EFLAGSEFLAGS 80386寄存器寄存器控制寄存器控制寄存器CR0CR4 PG 页式地址使能 CD Cache禁止 NW 不透写 AM 对齐标识 EM 仿真协处理器 PE 保护允许 WP 写保护 NE 数字运算错 ET 协处理器类型 TS 任务转换PE = 1 保护模式PE = 0 实地址模式WP = 1 用户级对写核心级页面访问的写保护; WP = 0 核心级可以写用户级的只读页面;例如保存全局性机器状态保存全局性机器状态EFLAGS 寄存器 CF,PF,AF,ZF,SF,OF 一组

13、与运算相关的标识 TF,IF,DF 一组控制位(自陷,单步调试;非屏蔽中断允许, 串操作方向) IOPL IO特权保护,值为0,1,2和3,现行任务的优先级CPL高于或等于IOPL时,指令IN,OUT,INS,OUTS,STI,CLI和LOCK等前缀指令正常执行,否则会引起13号异常 RF恢复标志(如果RF = 1,下一条指令引起的任何异常被忽略,每执行完一条无异常的指令,自动使RF=0;避免断点和单步重复异常) VM 虚拟8086方式 (1:是,0:非) AC 对齐检查(仅486及以上,字,双字或4字对齐检查)低16位,与8086保持兼容30 对对EXX操作(原操作(原16位操作指令加位操作

14、指令加操作尺寸前缀操作尺寸前缀refix(66H)) PUSH EAX (机器码机器码 33 C0)PUSH AX (机器码机器码 66 33 C0) 改变默认操作改变默认操作(16/32) SHL EDX,7; MOV EAX,34567890H; ADD EAX,ESI; MOV FS:ESI+20, AL;MOV GS,AX; MOV FS,DX ADD EAX,FS:EDI+10016位、32位指令兼容性 间址寄存器间址寄存器 (86) BX,BP, (386)EBX,EBP,ESI,EDI, MOV BX,EAX MOV AX,EDX+TABLE; MOV SI,DATAAX; 变址

15、寄存器变址寄存器 (86)(SI,DI) (386) 除除ESP外的所有外的所有32位寄存器位寄存器 MOV AX,ESI*4;MOV EDI*4,EBX; 变址寄存器可乘系数变址寄存器可乘系数 指令编码增加了指令编码增加了寻址尺寸前缀寻址尺寸前缀(67H) 改变默认寻址改变默认寻址(16/32) .寻址方式扩充32 80386系统控制指令系统控制指令存储器管理Figure 8.21 Logical to physical address translation in IA-32.虚拟地址:虚拟地址:用户程序采用虚拟地址,最大用户程序采用虚拟地址,最大64TB64TB; 实际使用,按代码、数据

16、和堆栈必须分段实际使用,按代码、数据和堆栈必须分段逻辑地址:逻辑地址: 逻辑地址逻辑地址 = = 段基址(段基址(3232位)位)+ + 偏移量(偏移量(3232位)位) 段既是虚拟地址空间中的基本单位,也是共享和保段既是虚拟地址空间中的基本单位,也是共享和保护的基本单位。护的基本单位。段的概念 段的描述也方便多任务保护:段的描述也方便多任务保护: 设置各段的限制(长度)和允许的操作设置各段的限制(长度)和允许的操作段基址段基址 (Base Address)段限制段限制 (Limit)段属性段属性 (Attributes) R W E C基地址与限制限制用于操作的合法性检查分段与重定位功能段寄

17、存器与段描述符寄存器段寄存器与段描述符寄存器 保护模式下,段寄存器的高13位是选择符 只要段寄存器内容发生变化,则根据选择符,从描述符表中查找对应的项,并透明地加载到描述符寄存器 透明:自动,描述符寄存器对程序员不可见IA-32 选择符格式选择符格式 保护模式下的 CS,DS,ES,FS,GS,SS RPL 请求特权级 03 TI 0:在GDT中;1:在LDT中段描述符G段限制的粒度 0: Byte 1: (page, 4KB) D/B操作方式 1: 32位操作;0: 286兼容的16位方式P存在位 1: 存在于内存中;0: 不在内存中DPL 段描述符被访问的权限,03S描述符性质0:系统描述

18、符 1:代码段或数据类段描述符E可执行性质0:不可执行(数据)1:可执行代码ED/C 数据段表示扩展方向,代码段表示一致性ED = 0,向上 扩展,偏移量段限制;ED = 1 向下扩展,偏移量段限制(?堆栈)C = 0 只能执行,不可读;C=0 可读,可执行 W/R 在数据段 0:只读;1:读/写在代码段 0:只执行;1:执行/读41 系统描述符 DPL 系统描述符被访问的权限,03 TYPE (下列以外的其余值,不用或在中断描述符中使用) 0001:可用的286TSS描述符 0010:LDT描述符 0011:忙的286TSS描述符 1001:可用的486/386TSS描述符 1011:忙的4

19、86/386TSS描述符中断描述符(中断门,异常门和调用门)系统地址寄存器系统地址寄存器 GDTR (Globe Describe Table Register) GDT包含操作系统使用的和所有任务公用的描述符 IDTR (Interrupt Describe Table Register ) IDT包含所有中断描述符 LDTR (Local Describe Table Register) LDT包含某一任务私用的描述符 TR (Task Register) 任务寄存器 OS的每个任务有一个任务状态段TSS,全体构成TSS描述符存放在GDT中;当前任务的TSS选择符存放在TR中。访问存储器中

20、的段GDT based访问存储器中的段 LDT based46 386、486异常异常/中断中断 (Exceptions/ Interrupt) IDT0-31:异常异常 0零除零除 1 调试异常调试异常 2 NMI 3 断点断点 4 溢出溢出 5 界限检查界限检查 6 非法非法Op code 7 FPU不可用不可用 8 双重错误异常双重错误异常10 非法非法TSS 11段不存在段不存在 12 堆栈异常堆栈异常 13 GP 14 页页Fault 17对齐检查异常对齐检查异常 18-31 未用未用 IDT32-255:外部硬件中断外部硬件中断 中断门描述符表的定位 只有一个全局的中断门描述符表;

21、 IDTR指令的内容由指令LIDT装入; 某类型的中断/异常发生,则通过中断门描述符,获得选择符CS和偏移地址EIP。48 80386保护机制保护机制1每个任务分配的地址空间不同(各种表),使任务之间完全隔离); 2段基址、段限制及权限,使任务与任务之间,任务与操作系统之间,相互隔离;3. 关于系统寄存器的操作指令属于特权指令;控制特权指令和I/O指令的使用并控制了对段和描述符的存取。 4. I/O操作指令也是特权指令。这是为了防止任务通过I/O操作,绕过操作系统的保护机制,来破坏系统。5. 特权为0 3用户特权级最低为3。Windows操作系统只使用了两个特权级0和3特权级的校验CPL(Cu

22、rrent Privilege Level ) 当前特权级当前特权级, 在在CS寄存器寄存器的的RPL字段,表征字段,表征CPU的特权级;的特权级;RPL(Requested Privilege Level ) 请求特权级请求特权级DPL (Descriptor Privilege Level ) 描述符特权级在描述符描述符特权级在描述符里面。里面。 DPLMAX(CPL,RPL)在IA-32架构,CS不可以被赋值,所以,包括CPL也不可以被指令修改。但是JMP,CALL,INTERRUPT,EXCEPTION,task-switching导致选择符变化,从而可以改变它CPL。但是有个例外:从

23、低优先级调用高优先级的代码,CPL维持不变。利用CPL/DPL访问存储器和子 程序调用的规则 不能访问更高优先级中的数据,可以访问同级或低级优先级的数据; 不能调用低优先级的子程序,因为相对来说,低级的程序可靠性差,通过调用门也不行。 可以调用高优先级的子程序,但是必须使用同级或下级提供的调用门,并且所执行的是一致性代码(共享) 不可以使用高优先级中的调用门。调用子程序代码 一致性代码段: 可以共享的代码段;非一致性代码段:不可以共享的代码。是否一致性代码,取决于被调用者(描述符)。 段内调用,无优先级问题,且不使用调用门 段间,同优先级,使用调用门; 段间调用,使用调用门: 如果目标代码段是

24、一个特权级更高的一致代码段,那么转移成功;并且CPL不会改变; 如果目标代码段是一个特权级更高的非一致代码段,那么跳转失败;如果目标代码段是一个特权级更低的代码段(不论是否一致),那么跳转总是会失败的,除非使用RETF跳转。 52 多任务系统与多处理系统多任务系统与多处理系统应用应用:多个任务集合多个任务集合 任务任务:共同完成某项功能的多个程序集合共同完成某项功能的多个程序集合(GDT公用公用) 每个任务每个任务: 1.私用局部描述符表私用局部描述符表LDT -虚拟地址空间虚拟地址空间(段段/页页) 2.任务状态段任务状态段TSS(最小最小103字节字节),保存任务的全部运行状态信息保存任务

25、的全部运行状态信息(切换时保存和恢复机器状态)切换时保存和恢复机器状态):所有寄存器值,所有寄存器值,LDT选择符,页目选择符,页目录指针,录指针,I/O位图等位图等 (TR存放当前任务存放当前任务TSS选择符和描述符,选择符和描述符,LDTR存放当前任务的存放当前任务的LDT描述符)描述符) TSSTSS存放存放: :只能在只能在GDTGDT中,中,type=9type=9未执行,未执行,Type=11(0BH)Type=11(0BH)正在执行(忙)正在执行(忙) TSSTSS访问访问: :只能通过任务门间接访问只能通过任务门间接访问(OFFSET(OFFSET等未用)等未用) P DPL

26、0 0101 选择符Type=5:调用门调用门 任务门:任务门:GDT/LDT/IDT 53 多任务切换过程多任务切换过程发生发生: : 1.1.当前任务执行一条选择符指向当前任务执行一条选择符指向TSSTSS描述符或任务门的段描述符或任务门的段间间JMPJMP或或CALL CALL 2.2.发生对应于任务门的中断或异常发生对应于任务门的中断或异常 3.NT=13.NT=1时执行一条时执行一条IRETIRET指令指令 切换切换: : 1.1.离去任务状态保存在相应离去任务状态保存在相应TSSTSS中中; ; 2.2.待切换任务待切换任务TSSTSS对应描述符对应描述符=TR, type=9=1

27、1 =TR, type=9=11 3.TSS3.TSS内容内容= = 寄存器寄存器 保护保护: : CPL=TSS DPL CPL=TSS DPL 指向指向TSSTSS选择符的选择符的RPL=TSS DPL RPL=TSS DPL 异常异常: :10 10 任务状态段TSS多任务切换;暂停现行任务的执行,从就绪的等待任务中选一个,恢复其执行;80386/80486用硬件支持多任务切换。每个任务都有一个任务状态段。如右图,为一个TSS;所有任务的TSS构成一张表,每一个都需要一个描述符;且它们都在GDT中(OS使用)。TR存放当前任务TSS选择符;LDTR指向当前任务的LDT描述符。保护方式下的地址转换保护方式下的地址转换程序的每个段,都是从程序的每个段,都是从0 0地址开始的,地址开始的,4GB4GB;逻辑地址通过分段机构,产生线性地址;且每个用户的线性地址空间,逻辑地址通过分段机构,产生线性地址;且每个用户的线性地址空间,理论上都是理论上都是4GB4GB;操作系统可以根据实际内存的应用情况,将应用程序装载到内存,通操作系统可以根据实际内存的应用情况,将应用程序装载到内存,通过分页,产生物理地址。过分页,产生物理地址。运行中,与逻

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论