SciTech-EECS-MCU/CPU: DMA(直接内存访问): 开始时由CPU进行协调配对+传数据时DMA+结束时触发硬件中断通知MCU/CPU并解除配对
- MEM可以是:
MCU/CPU自带的内存:
容量由“芯片设计师”根据常用场景统计确定大小。
常能满足大多数用途。MCU/CPU的外部内存:
容量由“硬件设计师”根据需要确定。
在设计电路阶段,为MCU/CPU增加的外围物理“大内存”,
安放布设在MCU/CPU的周围, 直连其高速总线, 可满足硬件特定需求。MCU/CPU的可扩展外存:
容量由“终端用户”自由扩展。
在设计电路阶段,要为MCU/CPU增加通用的“硬件接口 或,扩展槽”, 常用的有SD卡槽、U盘接口。
直连MCU/CPU高速总线, 可满足“购买设备”的终端用户自由扩展外部存储容量的需求。
- DMA常用于大量数据的读写;
少量数据, 要调用MCU/CPU指令,实现上是“'register'转发”方式存取MEM(内存)。
常常数据只是8bit、16bit, 32bit, 64bit, 128bit, 256bit, 根据MCU/CPU的Datasheet确定。
CPU(汇编)指令上,每一笔“小数据”要两步完成:- 首先, 将MEM地址的数据读入register, 这是一条MCU/CPU指令。
- 其次, 其他“电路单元”读写register内容, 另一条MCU/CPU指令.
大量数据时, 先进MCU/CPU的DMA(Direct Memory Access)方式:
- 开始时, 由CPU总线协调好“配对”, 并保存一条“DMA记录”
每条“DMA记录”要有{"收"设备ID及其起始地址, "发"设备ID及其起始地址,数据大小}; - 传数时, DMA(分block块方式):
- 分“大块”传,一次传"一大块"(常有KB或MB为单位的大小), 直到传完;
- 不占用CPU执行指令。
- 结束时, 触发"硬件中断", 通知MCU/CPU已传完, 并由其解除“配对”并清除对应的"DMA记录"。
避免拆分为一笔笔“小数据收发”的方式,是因为:
- MCU/CPU将一直被占用执行两条汇编指令。
- 每一笔“小数据”都经过MCU/CPU(的register)转发, 传输路径上绕不必要的弯路。
- 开始时, 由CPU总线协调好“配对”, 并保存一条“DMA记录”
- DMA的条件:
- 首先数据的“收方”、“发方”与MCU/CPU, 都要有DMA功能.
例如, 收方是ADC( MCU/CPU自带的或其高速总线外接的), 总之此ADC的Datasheet上要有DMA功能。
发方是“终端用户”外插在可扩展槽的SD卡存储, 则此SD卡槽连接的MCU/CPU高速总线要有DMA功能;
SciTech-EECS-MCU/CPU: DMA(直接内存访问): 开始时由CPU进行协调配对+传数据时DMA+结束时触发硬件中断通知MCU/CPU并解除配对的更多相关文章
- Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity) 转
硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能.现在的服务器上动不动就是多 CPU 多核. ...
- 直接内存访问(DMA)
1. 什么是DMA 直接内存访问是一种硬件机制,它允许外围设备和主内存之间直接传输它们的I/O数据,而不需要系统处理器的参与.使用这种机制可以大大提高与设备通信的吞吐量. 2. DMA数据传输 有 ...
- (转)CPU Cache与内存对齐
转自:http://blog.csdn.net/zhang_shuai_2011/article/details/38119657 原文如下: 一. CacheCache一般来说,需要关心以下几个方面 ...
- DMA(direct memory access)直接内存访问
DMA(Direct Memory Access),这里的 memory,指的是计算机的内存,自然与外存(storage)相对.这里的关键词在 Direct (直接),与传统的相对低效的,需要通过 C ...
- 多线程编程,CPU是如何解决多线程内存访问问题的
CPU对内存变量的修改是先读取内存数据到CPU Cache中,然后再由CPU做运算,运算完成后继续写入到内存中 在单核CPU中,这完全没有问题,然而在多核CPU中,每一个CPU核心都拥有自己独立的Ca ...
- Memory Ordering (注意Cache带来的副作用,每个CPU都有自己的Cache,内存读写不再一定需要真的作内存访问)
Memory Ordering Background 很久很久很久以前,CPU忠厚老实,一条一条指令的执行我们给它的程序,规规矩矩的进行计算和内存的存取. 很久很久以前, CPU学会了Out-Of ...
- DMA直接内存存取20160525
说一下工作中接触到的DMA1)在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题.即DMA传输前,CPU要把 总线控制权交给DMA控制器,而在结束DMA传输后,DMA ...
- DMA (直接存储器访问)
DMA (直接存储器访问) 编辑 DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载.否 ...
- Buffer Data RDMA 零拷贝 直接内存访问
waylau/netty-4-user-guide: Chinese translation of Netty 4.x User Guide. 中文翻译<Netty 4.x 用户指南> h ...
- GNU C - 关于8086的内存访问机制以及内存对齐(memory alignment)
一.为什么需要内存对齐? 无论做什么事情,我都习惯性的问自己:为什么我要去做这件事情? 是啊,这可能也是个大家都会去想的问题, 因为我们都不能稀里糊涂的或者.那为什么需要内存对齐呢?这要从cpu的内存 ...
随机推荐
- .NET 原生驾驭 AI 新基建实战系列(五):Milvus ── 大规模 AI 应用的向量数据库首选
1. 引言 Milvus 是一个强大的工具,帮助开发者处理大规模向量数据,尤其是在人工智能和机器学习领域.它可以高效地存储和检索高维向量数据,适合需要快速相似性搜索的场景.在 .NET 环境中,开发者 ...
- Sublime Text4 4192 安装和一键激活
介绍 此教程用于Windows 下Sublime Text4 4192版本的安装和激活. 无需安装其他软件,无需下载替换文件,无需注册机等. 官网: https://www.sublimetext.c ...
- Web前端入门第 49 问:CSS offset 路径动画演示
什么是路径动画? 随手画一条不规则的线,让元素按照这条不规则的线运动起来,这就是所谓的路径动画. 前面说过的动画都只能针对某一个 CSS 属性,要想实现路径动画可没办法,路径动画必须借助 CSS3 的 ...
- 基于libwchnet&Mbedtls实现HTTPS
引言: 本文将介绍使用CH32V307VCT6以及官方协议栈(libwchnet)搭配Mbedtls作为客户端通过HTTPS访问百度并获取百度首页数据. 一.HTTPS概述与SSL/TSL简介 HTT ...
- 应用内存管理:Linux的应用与内存管理
应用程序想要使用内存,必须得找操作系统申请,那就有必要先了解下Linux内核怎么管理内存的,然后再去分析应用程序的内存管理细节. 硬件架构 现代计算机体系结构被称为Non-Uniform Memory ...
- 网络编程:epoll
原理 select 的几个缺点: 1)每次调用select,都需要把fd集合从用户空间拷贝到内核空间,这个开销在fd很多时会很大 2)每次调用select都需要在内核遍历传递进来的所有fd,这个开销在 ...
- C#快速排序算法实现及循环条件细节思考
C#快速排序算法实现及循环条件细节思考 快速排序是一种分治思想的递归排序算法,其基本思想为: 在每一步中,挑选一个主元(pivot)出来,比如第一个元素 然后遍历除主元外的剩下的元素,把所有小于主元的 ...
- Tomcat启动信息乱码
异常描述:大概看到这个鬼样子-- 打开tomcat解压后文件: conf -> logging.properties 右键,选择以记事本或其他方式打开(只要能修改文件内容的软件都OK) 找到 j ...
- VSCode将本地项目代码上传到gitee中
1.创建远程仓库,这个就是该仓库的地址 2.查看git的版本 git --version 3.使用git init命令初始化git 4.使用git status命令来查看文件是否被修改 : gi ...
- Jenkins自动化部署-----持续交付
前言: 感谢之前带领过我的leader,让我能够知道什么是好的开发方法. 在很早之前就接触过敏捷开发.什么是敏捷开发,简单来说就是让软件可靠地,快速地发布出来的一种开发方法和技巧. 而敏捷开发中有许多 ...