草庐IT

AXI总结

AXI总线学习整理一、axi的定义以及特点axi的定义:是一种面向高性能、高带宽、低延迟的片内总线。特点:单向通道体系结构,能够减少延时以及门数量;支持多主机多从机间的数据传输(通过仲裁实现)AXI总线上具有相应的buffer,提供了outstanding传输的能力(一个MASTER发出一个读写的request,中间要经过很多buffer,最后才能送到memory)提供了低功耗接口二、AXI的五个数据通道包含写地址、写数据、写相应、读地址、读数据1、写地址通道写地址通道需要包含的信息有三类:第一类为事务信息:包含事务传输的突发大小、类型、长度,以及事务ID,事务ID主要用于乱序传输。第二类为数

STM32 DMA1和DMA2通道一览表、STM32F103C8T6定时器通道对应的引脚

TIM1_BRK_IRQn       =24,   TIM1_UP_IRQn        =25,   TIM1_TRG_COM_IRQn     =26,  TIM1_CC_IRQn        =27,  TIM2_IRQn         =28,  TIM3_IRQn         =29,  这个函数TIM_SetCompare1,这个函数有四个,分别是TIM_SetCompare1,TIM_SetCompare2,TIM_SetCompare3,TIM_SetCompare4。位于CH1那一行的GPIO口使用TIM_SetCompare1这个函数,位于CH2那一行的GPIO

performance - NET_DMA TCP 在 Linux 中接收卸载

Linux内核可以选择启用TCP接收副本卸载功能(CONFIG_NET_DMA)。我用了iperf(TCP窗口大小=250KBytes和缓冲区长度=2MBytes)和oprofile在三种情况下测试性能:启用和不启用NET_DMA,启用NET_DMA和sk_rcvlowat设置为200KB。结果如下:禁用NET_DMA:带宽可以达到930Mbps,__copy_tofrom_user消耗36.1%的CPU时间。启用NET_DMA:带宽小于上述情况40Mbps(890Mbps),__copy_tofrom_user消耗33.5%的CPU时间。启用NET_DMA(sk_rcvlowat=2

Linux DMA子系统(3):DMA设备驱动(consumer)

目录1.前言2.重要的结构体2.1 structdma_slave_config2.2 structdma_async_tx_descriptor3.设备驱动使用DMAEngine的方法3.1 分配一个DMA从通道3.2设置DMA通道的具体参数3.3 获取描述符3.4 提交传输并启动传输3.5等待传输完成4.参考文章1.前言上文从DMA控制器驱动的角度去分析了DMAEngine,即从provider的角度,本文将从需要使用DMA传输的设备驱动的角度,即consumer的角度去分析DMAEngine,看看DMAEngine为clientdriver提供了哪些功能和API。2.重要的结构体2.1 

AXI-Lite 学习笔记

AXI-Lite学习笔记参考FPGA:AXI_Lite总线基础2-1]、第二节AXI总线介绍、ZYNQPL与PS交互专题_哔哩哔哩_bilibiliAXI-Lite总线系列1-基础知识_哔哩哔哩_bilibiliAXI4介绍AXI4是ARM公司提出的一种片内总线,描述了主从设备之间的数据传输方式。主要有AXI4_LITE、AXI4_FULL、AXI4_STREAM三种。AXI4_LITE:不支持突发传输,一般用于小数据量的IP初始化和嵌入式设备数据传输。AXI4_FULL:可称为AXI4,支持突发传输,突发长度为1~256。AXI4_STREAM:流数据,丢弃了地址项,用于高速数据传输。AXI

带你快速入门AXI4总线--AXI4-Stream篇(3)----详解XILINX IP AXI4 STREAM DATA FIFO

写在前面    AXI4系列链接:带你快速入门AXI4总线--汇总篇(直达链接)1、AXI4STREAMDATAFIFO是什么?    IP核----AXI4STREAMDATAFIFO也是一种先入先出形式的数据缓存队列(FIFO),不过输入输出接口均为AXIS接口。可用在数据缓存,跨时钟域传输等各类场景。搭载的AXIS接口方便了模块移植,比较适合SOC系统。    在IPcatalog搜索,AXI4STREAMDATAFIFO,再双击出现其配置界面:    点击documentation--productguide有XILINX提供的IP手册,需要注意的是这个IP的手册是和其他多个IP构成的

STM32CubeMX配置串口DMA传输实现不定长数据收发

串口简介串口是全双工的串行通信协议。串口通信指串口按位(bit)发送和接收字节(一个字节有8位)。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。串口通信协议是基于串口使得通信双方能够相互沟通信息的一种约定,其定义了双方遵循的协议数据帧格式和其传输方式。因为串口通信没有时钟线,说设备双方必须约定好相同的波特率,这样才能保证数据收发准确无误。常见的波特率有4800、9600、115200等。起始位、停止位数据包从起

WS2812B彩灯 STM32HAL库开发:PWM+DMA(stm32f103c8t6)

目录一、摘要二、WS2812B介绍三、CUBEMX配置四、程序介绍(KEIL编译器)五、数据手册一、摘要    1、本文使用示例单片机型号为stm32f103c8t6,RGB型号为WS2812B;        2、主要实现功能是实现用PWM+DMA使RGB_LED亮起不同颜色的灯光;        3、目的:简单调通该型号RGB_LED,方便后续改编使用,希望各位读者可以依次做出更炫酷的效果。为了便于更好理解数据手册和单片机配置的关联,第二部分也放入了CUBEMX的部分配置图片    4、优点:DMA转运,硬件自动数据搬运(由内存到外设),减少CPU资源占用,第一次使用DMA可以先大致看一下

linux - 将 DMA 缓冲区写入内存映射文件

我需要在嵌入式Linux(2.6.37)中尽可能快地将传入的DMA缓冲区写入到HD分区作为原始设备/dev/sda1。缓冲区按要求对齐,长度相等,为512KB。该过程可能会持续很长时间并填充多达例如256GB的数据。我需要使用内存映射文件技术(O_DIRECT不适用),但无法理解如何执行此操作的确切方法。所以,在伪代码“正常”写作中:fd=open(/dev/sda1",O_WRONLY);while(1){p=GetVirtualPointerToNewBuffer();if(InputStopped())break;write(fd,p,BLOCK512KB);}现在,我将非常感谢

linux - 是否有用于 FPGA 的 PCIe 的 DMA Linux 内核驱动程序示例?

我想在内核空间中编写一个驱动程序:在嵌入式系统(使用powerPC)中与通过PCIe连接的FPGA进行通信。它使用DMA将信息从FPGA传输到RAM。用户程序必须访问这些信息。我需要一些类似的例子来指导我。有人知道我在哪里可以找到一些资源吗? 最佳答案 Connectal(http://www.connectal.org)是一个开源框架,支持用户空间软件与Xilinx或AlteraFPGA通信。实际上,这种通信很少涉及设备驱动程序。Connectal支持通过内存映射硬件FIFO在软件和硬件之间传递消息,并支持通过DMA从FPGA共享