总线、IO、中断_第1页
总线、IO、中断_第2页
总线、IO、中断_第3页
总线、IO、中断_第4页
总线、IO、中断_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

1、CPUsz总线的概念与分类zPC的总线与接口z嵌入式系统总线zIO 接口电路z中断总线z计算机系统中模块到模块间传送信息的一束信号线z总线实现了CPU、内存和I/O设备之间的通信.z定义了通信协议.总线的分类y按功能分:x地址总线x数据总线x控制总线y按层次结构分:x内部总线x系统总线系统总线x外部总线外部总线y按通信方式分:x串行总线x并行总线CPUz总线的概念与分类zPC的总线与接口z嵌入式系统总线zIO 接口电路z中断CPU内存I/O接口I/O设备数据总线DB地址总线AB控制总线CB主机数据总线、控制总线是双向的,地址总线是单向的地址总线用来寻址内存单元和外设端口计算机组成数据总线数据总

2、线DB(Data Bus)双向传送数据(指令、数值)双向传送数据(指令、数值)地址总线地址总线AB(Address Bus)发送数据的来源地址和目的地址发送数据的来源地址和目的地址控制总线控制总线CB(Control Bus)发送各种控制指令信息发送各种控制指令信息计算机系统中模块到模块间传送信息的一束信号线总线PC I/O PORTPC I/O PORTUSB音频音频网口PS2IDE串口并口IEEE1394PCIUSB+蓝牙+WIFI 搞定一切CPUz总线的概念与分类zPC的总线与接口z嵌入式系统总线zIO 接口电路z中断10MPU总线单总线多总线结构z多总线结构:y低速设备连到低速总线上.

3、y高速设备连到高速总线.z桥实现高速总线和低速总线的互联.CPUslow devicememoryhigh-speeddevicebridgeslow deviceARM总线结构z两类总线:yAHB 高速总线: AHB 支持 流水线,突发传输,分离事务和多总线控制器.yAPB 低速总线:所有低速设备连接到AHB上.ARM总线结构DMAzDirect memory access (DMA) 允许不由CPU控制读写的总线操作.y总线请求.y总线授权.zDMA 控制器.常见的片内外设zTimerzAD/DAz外部中断接口zGPIOzUARTzI2C/USB/SPI外部总线 CPUz总线的概念与分类z

4、PC的总线与接口z嵌入式系统总线zIO 接口电路z中断嵌入式系统应用多样性嵌入式计算系统,lecture1-118n打印机、路由器n汽车:发动机、刹车等.n飞机:发动机、飞行控制、导航、通信.n数字电视.n家用电气.n手环、手表、插座、窗帘n智能车、机器人、物联网设备n智能手机、平板(趋向于通用平台)多种多样的外设z工作原理不同比如键盘:机械、电子、机电、电磁z传送信息类型多样比如传感器:数字量、模拟量、开关量z传送速度差别极大z传送方式不尽相同串行、并行z编码方式不同二进制、BCD码、ASCII码I/O接口基本概念为什么需要I/O接口(电路)?z外部设备多种多样z工作原理、驱动方式、信息格式

5、、以及工作速度、时序方面与CPU不匹配z必须经过中间电路再与系统相连z这部分电路被称为I/O接口电路多种外设多种外设I/O接口基本概念(续1)什么是I/O接口(电路)?zI/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路系统总线I/O接口基本概念(续2)什么是接口技术?z处理CPU与外设间联系的技术z注意其软硬结合的特点z根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备接口技术是编程人员的一项基本技能。接口技术是编程人员的一项基本技能。嵌入式系统中的常用I/O接口zGPIO通用I/O接口zUART串口,数据通信zI2CIC器件之间的通信

6、zSPIIC器件之间的通信zCAN高性能和可靠性的串行通信协议zUSB通用串行总线zA/D and D/A数模转换,模数转换应用示例应用示例GPIOSPI温湿度传感I2CI2CAT86RF231-SPIRF 模块UARTGPIOGPIO的作用的作用z输出数据/控制yLED的控制z输入数据y读取当前LED的状态y按键STM32的GPIO功能实验课的LEDz如何连接的?zI/O端口选择的是输入还是输出?z输入输出的模式?GPIO基本输入结构GPIO 输入电路工作原理工作原理弱上拉输入弱上拉弱上拉输入下拉输入如何实现?下拉输入总结推挽输出电路推挽输出电路推挽输出电路推挽输出推推挽输出挽总结开漏输出开

7、漏输出双向开漏双向开漏双向开漏开漏输出开漏输出总结GPIO与复用I/OSTM32 I/OCPUz总线的概念与分类zPC的总线与接口z嵌入式系统总线zIO 接口电路z中断61I/0编程z使用I/O设备:y通过CPU读取和写入I/O设备的寄存器z使用I/O设备要解决的问题:yI/O寄存器的地址问题yI/O寄存器的读写问题I/0编程z有两种方式可以是I/O端口程序控制:yI/O指令指令:I/O提供单独的地址空间,用特殊的 I/O 指令进行操作;xIntel x86y内存映射内存映射I/O: I/O地址映射到内存地址,通过内存 load/store指令操作.x其他CPUs:ARM,MIPSARM me

8、mory-mapped I/Oz定义 I/O设备在内存单元中的名称: DEV1 EQU 0 x1000z读写代码:LDR r1,#DEV1 ; /set up device adrsLDR r0,r1 ; /read DEV1LDR r0,#8 ; /set up value to writeSTR r0,r1 ; /write value to deviceC语言#define DEV1 0 x1000/读操作int peek(char *location) return *location; dev_status = peek(DEV1);/写操作void poke(char *locat

9、ion, char newval) (*location) = newval; poke(DEV1, 8);I/O操作忙等 I/O#define OUT_CHAR Ox1000#define OUT_STATUS Ox1001char *current_char = “hello world!”;while (*current_char != 0) poke(OUT_CHAR,*current_char); /write a charpoke(OUT_STATUS,1);/read statuswhile (peek(OUT_STATUS) != 0); /status !=0: busycu

10、rrent_char+;/ next输入复制到输出while (TRUE) /* read */while (peek(IN_STATUS) = 0); /status, =0: no inputchar achar = (char)peek(IN_DATA);/* write */poke(OUT_DATA,achar);poke(OUT_STATUS,1);while (peek(OUT_STATUS) != 0);忙等 I/O:前台程序: 输入/输出CPUI/O设备查询设备状态(轮询)设备操作 时间中断中断 I/Oz忙等I/O效率低yI/O事务未完成,CPU不能执行其他操作 y不能同时执

11、行I/Oz中断中断机制允许设备发送信号到CPU, 改变CPU程序执行过程yCPU调用子程序处理设备操作(中断处理程序)中断接口CPU状态寄存器数据寄存器设备管理机制PC中断请求中断应答数据/地址IR中断行为描述z基于子程序调用机制z中断发生时强制CPU执行一段特定代码(中断处理程序)y存储当前正在执行的程序地址,执行中断处理程序后能够返回到被中断的程序y“上下文”切换到中断服务程序中断物理接口zCPU和设备之间通过CPU总线连接zCPU和设备的握手过程:y设备向CPU发送中断请求y当CPU能够处理该中断时,向设备发送发送中断应答中断中断机制:前台程序:输入/输出:中断处理CPUI/O设备其他操

12、作设备操作 时间实例3.4:应用中断将字符从输入设备复制到输出设备/*输入中断处理程序*/void input_handler() /achar = IN_DATA; /全局变量gotchar = TRUE; /通知主程序IN_STATUS=0;/设置状态值#define IN_DATA (*(volatile unsigned byte *) 0 xE0028018) /输入寄存器#define IN_STATUS (*(volatile unsigned byte *) 0 xE002801C)/输入状态寄存器中断驱动的main程序main() while (TRUE) if (gotch

13、ar) OUT_DATA = achar;/写入字符OUT_STATUS = 1;/设置状态值gotchar = FALSE; /重设标志位#define OUT_DATA (*(volatile unsigned byte *) 0 xE0028020) /输出寄存器#define OUT_STATUS (*(volatile unsigned byte *) 0 xE002802C)/输出状态寄存器Example: interrupt-driven main program executionmainInput_handlerpeek a charpeek a charpeek a cha

14、rpoke a charwhilepoke a charwhilepoke a charwhile:Input:Output中断代码调试z中断处理程序有错误,可能导致:y前台程序发生奇怪的错误yBug很难复现取决于中断的频率.Context save/restore中断代码调试举例:/*输入中断处理程序*/void input_handler() /achar = IN_DATA; /全局变量gotchar = TRUE; /通知主程序通知主程序IN_STATUS=0;/设置状态值#define IN_DATA (*(volatile unsigned byte *) 0 xE0028018)

15、 /输入寄存器#define IN_STATUS (*(volatile unsigned byte *) 0 xE002801C)/输入状态寄存器中断优先级和中断向量z有两种机制可以使中断机制更有效:y中断优先级决定了哪个中断被CPU优先执行y中断向量允许中断设备指定其中断处理程序z多数CPU同时支持这两种机制带优先级的中断机制CPU设备 1设备 2设备 nL1 L2 . Ln中断应答中断优先级z 中断屏蔽 (Masking):优先级低于当前中断的不被执行,直到当前中断处理程序执行完毕z 不可屏蔽中断 (Non-maskable interrupt,NMI): 最高优先级中断,不被屏蔽y通常

16、为由电源故障引发的中断准备例子: 优先级中断A prior B, B prior C中断向量z需求举例:y设备只有一个中断管脚,但是有多个中断源y例如:射频芯片有发送完成中断、接收中断、异常中断等等中断向量z硬件结构支持中断处理程序 0中断处理程序 1中断处理程序 2中断处理程序 3中断向量表表头设备CPU中断请求中断响应向量中断向量获取:CPU:设备收到中断请求收到中断应答收到中断向量中断执行过程zCPU 响应中断请求z设备发送中断向量zCPU 调用中断处理程序z执行中断处理程序zCPU恢复执行前台程序中断开销z分支跳转及返回开销z额外的时钟周期应答中断和获取中断向量z寄存器的保存与恢复.z流水线相关的开销.zCache相关的开销.ARM interruptszARM7 支持两种中断:y快速中断请求(FIQs).y一般中断请求(IRQs).z中断向量表保存在内存低地址部分,一般从 0 地址开始.管态、异常和陷阱z管态:提供用户态不具有的特权指令

温馨提示

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

评论

0/150

提交评论