CPU 与外设通信

作者: 一块大番薯 | 来源:发表于2018-04-17 20:18 被阅读82次

2018.04.17

IO 设备分为块设备、字符设备。

块设备:U 盘、硬盘、CD。数据存储在固定大小的块中,有地址。

字符设备:鼠标、键盘、打印机。字符流。无地址。

IO 总线:为了 CPU 与外设通信。但同一时间只能有一条通道。

IO 端口:为了 CPU 能识别出外设。

内存映射 IO 端口:把 IO 地址写入内存中,方便 CPU 访问。

轮询(程序式 IO):CPU 不断询问硬盘有没有把数据送到磁盘控制器缓冲区了。且 CPU 会一直霸占总线。

中断:CPU 有一条中断请求线,硬盘把数据送到磁盘控制器缓冲区后往这个地方发一个信号,CPU 每执行一条指令后会检查。
异步、事件驱动的思想。node.js、AJAX。

中断控制器:决定中断的优先级。

CPU 只认内存。鼠标、键盘、硬盘的数据通通得搬到内存。

磁盘控制器:把数据从硬盘搬运到内存。

总线

把硬盘数据送到 CPU 过程是这样的:
硬盘先把数据送到磁盘控制器缓冲区,发出中断,CPU 发出指令把数据送到内存,最后才送到 CPU。

对于小数据,如键盘,鼠标产生的数据,磁盘控制器缓冲区能一次性就能缓存这些数据,只需发一次中断给 CPU,CPU 再发出指令就能把数据送到内存。

对于大数据,如硬盘上的数据,磁盘控制器缓冲区每次装满后都要向 CPU 申请中断把数据运到内存,由于数据量大,磁盘控制器缓冲区都有装多次才能装完,相应地,也要申请多次中断,这样 CPU 也要发出多次指令。

DMA 是用来解决大数据传输的。直到所有数据发送到内存后才向 CPU 发出中断。
注意没有 DMA 的小数据传输是把数据发送到磁盘控制器缓冲区,就向 CPU 发出中断,然后在 CPU 指令下把数据送到内存。

但 DMA 把数据从磁盘控制器缓冲区运到内存动用到总线,这时 CPU 就没法用了。

相关文章

  • CPU 与外设通信

    2018.04.17 IO 设备分为块设备、字符设备。 块设备:U 盘、硬盘、CD。数据存储在固定大小的块中,有地...

  • cpu与外设通信IO接口

    cpu与外设之间的种种不匹配,速度不匹配,缓冲,信号电平不同等等。所以必须有专门的代理来处理IO事件。输入输出控制...

  • Linux内核设计与实现 中断I/O: 顶部

    中断I/O CPU与外设之间的一种通信方式。 与CPU内部的异常类似。但区别就在于异常的发生是与处理器的时...

  • CPU外设中断

    中断向量和中断服务例程的对应关系主要是由 IDT(中断门描述符表)来描述。操作系统在IDT 中设置好各种中断向量对...

  • 8.1 Linux I2C框架_Overview

    1. 前言 I2C协议是嵌入式系统中广泛使用的一类通信协议,主要用于CPU和各种外设之间的低速数据通信。Lin...

  • STM32(5):轮训方式让按键点亮LED

    概述 CPU和外设通信的方式有轮训和中断两种方式;所谓轮训就是主动询问某个状态,看看是否是某个值,如果是则采取行动...

  • 以DSP为例·使用C语言操作寄存器的实现

    寄存器能够实现对系统和外设功能的配置与控制,接下来将以TMS320F2812的外设串行通信接口SCI为例,来介绍如...

  • 循环缓冲区RingBuffer

    stm32和外设通信的时候,需要对外设发来的串行数据做同步。参考过下面这个链接的方法:串口通信帧的同步方法(识别一...

  • SPI协议详解

    SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。正是由于有了通信方...

  • STM32F767 SPI通信实验

    SPI通信实验 SPI简介 串行外设接口(Serial Peripheral Interface Bus,SPI)...

网友评论

    本文标题:CPU 与外设通信

    本文链接:https://www.haomeiwen.com/subject/usupkftx.html