草庐IT

dma_mmap_coherent

全部标签

从内核世界透视 mmap 内存映射的本质(源码实现篇)

本文基于内核5.4版本源码讨论通过上篇文章《从内核世界透视mmap内存映射的本质(原理篇)》的介绍,我们现在已经非常清楚了mmap背后的映射原理以及它的使用方法,其核心就是在进程虚拟内存空间中分配一段虚拟内存出来,然后将这段虚拟内存与磁盘文件映射起来,整个mmap系统调用就结束了。而在mmap内存映射的整个过程中,最为核心且复杂烧脑的环节其实不是内存映射的逻辑,而是虚拟内存分配的整个流程。笔者曾在之前的文章《深入理解Linux物理内存分配全链路实现》中详细地为大家介绍了物理内存的分配过程,那么虚拟内存的分配过程又是什么样的呢?本文我们将进入到内核源码实现中,来看一下虚拟内存分配的过程,在这个过

【ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍】

文章目录STMRegistersummarySTMDMA相关的寄存器DMATransferBurstrequestSingleandburstrequest上篇文章:ARMCoresight系列文章10.2-ARMCoresightSTMTracepacketsSTMRegistersummarySTM的寄存器主要可以分为以下几类:STMDMA相关的;STMHWTrigger相关的;系统控制及状态寄存器;只读寄存器。STMDMA相关的寄存器STM处

STM32F103 UART4串口使用DMA接收不定长数据和DMA中断发送

一、前言    使用DMA通信的好处是,不占用单片机资源(不像普通串口中断,发送一个字节触发一次中断,发送100个字节触发100次中断;接收一个字节触发一次中断,接收200个字节触发200次中断),数据接收完毕触发一次DMA中断;发送数据完毕触发一次DMA中断。    下图是STM32F103单片机DMA通道关系图。从上表可以观察到,串口使用DMA的对应关系如下:         USART1-RX使用DMA1的channel5        USART1-TX使用DMA1的channel4        USART2-RX使用DMA1的channel6         USART2-TX使用

ARMv8-缓存一致性(cache coherency)解决方案:MOESI protocol

目录一,MOESI状态释义二,MOESI状态转换  1,InvalidafterReset2,Invalid=>Exclusive3,Exclusive=>Modified 4.1,Modified=>Owned,Invalid=>Shared 4.2 Modified=>Invalid,Invalid=>Modified5,Owned=>Invalid,Shared=>Invalid,Shared=>Modified 6,Clean和Invalidate操作对MOESI状态的影响6.1对Owned状态进行clean&Invalidate6.1对Shared状态进行clean&Invalida

STM32——DMA详解

目录DMA简介DMA系统框图DMA处理流程仲裁器:通道的优先级DMA通道详解DMA传输数据总量数据传输宽度指针增量循环模式(数据传输模式)存储器到存储器模式(传输方向)通道配置过程DMA中断实验小白需要系统的掌握微机原理的知识DMA简介DMA全称DirectMemoryAccess,即直接存储器访问。DMA传输将数据从一个地址空间复制到另一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。存取方向:

stm32F407学习DAY.14 在DMA模式下进行USART串口数据收发(正点原子例程为例)

目录一、DMA配置1、DMA1和DMA2的请求映射2、DMA挂载总线3、DMA相关库函数​4、DMA配置过程(以串口1为例)1)进行时钟使能2)等待DMA可配置3)初始化DMA(串口1的TX为DMA2数据流7通道4,RX为DMA2数据流5 通道4)a.DMA外设地址par:b.DMA存储器0地址mar:c.数据传输量ndtr:4)开启DMA数据传输(初始化函数后写)二、USART串口配置0、串口相关库函数1、串口发送与接收函数初始化思路 2、senddata和receivedata库函数(一般在主函数中调用)1)USART_SendData(USART_TypeDef*USARTx,uint1

【STM32】SPI屏幕刷图总结:GPIO模拟,硬件SPI,DMA+硬件SPI

文章目录GPIO模拟SPI硬件SPI外设DMA+硬件SPI外设总结代码工程:https://github.com/liefyuan/stm32-spi-st7789-tft.git前言我的屏幕的分辨率是:240*320驱动是:ST7789V线驱动方式:四线SPI(CS,DC,SDA,SCL)以下分别使用了三种方式来实现刷图。头文件:#ifndef__ST7789_DRIVER_H__#define__ST7789_DRIVER_H__#include"stdint.h"#include"stm32f4xx.h"#include"system_stm32f4xx.h"#defineST7789_

GD32实现串口空闲(IDLE)中断 + DMA机制接收数据

前言串口功能在单片机开发中,是比较常用的外设,熟练使用串口功能也是驱动开发必备的技能之一。DMA是一种CPU辅助手段,可以在CPU不参与的情况下,是做一些辅助CPU的事情,如通常的数据搬运。在没有DMA之前,数据读取时,需要CPU的处理,在多任务处理时,增加资源紧缺(CPU调度);引入DMA之后,数据可以直接先进入DMA中处理,然后通过相应的标志,在需要的时候去DMA拿去即可,这样就极大的减轻CPU负担,提高了CPU的利用效率,有更多的时间去处理其它的事情。本文讲的即是利用串口空闲(IDLE)中断+DMA的机制来处理接收的数据。关于空闲的概念我在之前文章模拟串口收发驱动(采用IDLE信号机制)

STM32 RS485串口DMA发送问题记录及调试解决

文章目录@[toc]STM32RS485串口DMA接收及发送,问题记录及调试解决1.数据接收2.数据发送2.1调用HAL_UART_Transmit()进行发送2.2调用HAL_UART_Transmit_DMA()进行发送STM32RS485串口DMA接收及发送,问题记录及调试解决芯片型号:STM32F767IGT6、SP3485,如图1、图2所示。图1主芯片型号图2485芯片型号开发环境:KeiluVision5、STM32CubeMX,如图3、图4所示。图3KeiluVision版本信息图4STM32CubeMX版本信息之前与上层设备的通讯协议是基于MODBUSTCP进行地相应开发,但因

[HAL]STM32 SPI+DMA驱动WS2812

该程序是纯手敲,非Cube生成!所有代码均注释。源码在文章后面获取WS2818简介Keyword:单线通讯、归零码、Reset、RGB顺序RGB一共有24bit位->相当于驱动一个灯要24bit位->驱动若干个灯要24*nbit位,通过Reset码决定数据终止(保持)24bit位应该如何发送?可见:表示低电平需要T0H和T0L的配合,其关键在于高电平的时间,图中所示T0H时间为0.85us±150nsQ:怎么控制高低电平的时间数据发送速度可达800Kbps,就是1.25us发送一位数据,因为协议有一定的兼容性,所以实际上一个位的周期在1.25us±300ns之间都能识别到,因为是us级延时,所