首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    AXI DMA详解与应用篇 | 第二讲、AXI DMA工程搭建及SDK代码分析

    本次的重点就是搭建一个AXI_DMA环路工程,并从C语言角度分析其SDK代码 一、AXI_DMA工程设计 在工程设计中,DMA一般与产生数据或需求数据的IP相连,该IP core可以是带有AXI_Stream...在处理器系统中,PL侧的DMA通过HP接口从DDR中读取数据,AXI DMA核作为AXIS Data FIFO和AXI4内存映射之间提供高宽带直接存储访问。...XPAR_AXIDMA_0_DEVICE_ID //位于PL侧的DMA,xparameters.h // DMA接收与发送通道的中断ID #define RX_INTR_ID...配置参数传递 通过调用DMA查找配置函数,传入设备ID,获取设备参数 需要注意的是,其中的参数是根据PL端的IP core的配置选项生成的参数 */ config =...} /* //初始化DMA引擎 根据PL端对DMA core的配置参数,PS对DMA进行真正的配置初始化过程, axidma还存储在PS端的AXI——DMA配置表,

    7.6K45

    python调用调用Linux命令

    如何调用Linux命令 下面代码演示了调用一个shell命令, 其中,命令的输出会存储到result变量中, 而命令的返回值,则存储到exitcode中,由此可见,调用shell命令还是很方便的: import...编译成动态库: g++ -fPIC api.cpp -o api.so -shared -I/usr/include/python2.7 -I/usr/lib/python2.7/config 在python中调用...add函数: import ctypes plib = ctypes.CDLL('/tmp/api.so') print "result: %d" %(plib.add(1,2)) 系统调用 虽然需求好像有点...“过份”,但是强大的python是可以调用诸如ioctl这类的Linux系统调用的, 以下的例子是让蜂鸣器响: import fcntl fd = open('/dev/pwm', 'r') fcntl.ioctl...Killer Apps Zope Zope是一个开源的web应用服务器,主要用python写成。

    5.2K20

    LinuxLinux系统调用

    Linux系统调用 前言 操作系统——管理计算机硬件与软件资源的软件,是用户和系统交互的操作接口,为它上面运行的程序提供服务。...例如LinuxLinux操作系统——基于Linux内核的操作系统。通常由Linux内核、shell(特殊的应用程序,提供运行其他程序的接口)、文件系统和应用程序组成。...Linux的运行空间: Linux的运行空间:内核空间+用户空间 ---- 内核空间——存放的是整个内核代码和所有内核模块,以及内核所维护的数据。 用户空间——用户程序的代码和数据。...---- 系统调用的实现 通过软件中断实现。 **软件中断:**它是通过软件指令触发的中断。Linux系统内核响应软件中断,从用户态切换到内核态,执行相应的系统调用。...调用相应的执行程序来处理系统调用。 从系统调用返回。 系统调用号: 每个系统调用被赋予一个系统调用号,与具体的系统调用相关联。

    27.8K10

    宋宝华:那些年你误会的Linux DMA(关于Linux DMA ZONE和API最透彻的一篇)

    创作目的 互联网、Linux内核书籍上充满了各种关于Linux DMA ZONE和dma_alloc_coherent、dma_map_single等的各种讲解,由于很多童鞋缺乏自身独立的思考,人云亦云...DMA ZONE的作用是让有缺陷的DMA对应的外设驱动申请DMA buffer的时候从这个区域申请而已,但是它不是专有的。其他所有人的内存(包括应用程序和内核)也可以来自这个区域。 ?...这样当primaII的SD驱动调用dma_alloc_coherent()的时候,GFP_DMA标记被设置,以指挥内核从DMA ZONE申请内存。...但是,其他的外设,mask覆盖了整个4GB,调用dma_alloc_coherent()获得的内存就不需要一定是来自DMA ZONE。 ?...我觉得最最牛逼的是:外设共享了你写的app的进程的地址空间,外设直接融入你的应用成为它的一部分,帮应用完成部分功能(当然最主要是加速功能)。

    7.7K57

    AXI DMA详解与应用篇 |第一讲

    使用DMA时,CPU向DMA控制器发送一个存储器传输请求,这样当DMA控制器在传输的时候,CPU执行其他的操作,传输完成时DMA以中断的方式通知CPU。 DMA传输过程的示意图为: ?...DMA,一种是集成在PS中的硬核DMA,另一种是PL中使用的软核AXI DMA IP。...在ARM APU(Application Processor Unit,应用处理单元)设计过程中,已经考虑到大量数据搬移的情况,因此在APU中自带了一个DMA控制器DAMC,这个DMAC驻留在PS内,而且必须通过驻留在内存中的...有两个通道:一个从Device到DMA,另一个从DMA到Device。应用程序必须设置缓冲区地址和长度字段以启动相应通道中的传输。...(2)、Enable Micro DMA 改选项会生成高度优化的DMA,资源数量较少,用于传输极少量数据的应用程序。

    14.6K64

    图文并茂|彻底搞懂零拷贝(Zero-Copy)技术

    系统调用syscall是应用程序和内核交互的桥梁,每次进行调用/返回就会产生两次切换:调用syscall 从用户态切换到内核态syscall返回 从内核态切换到用户态来看下完整的数据拷贝过程简图:读数据过程...:应用程序要读取磁盘数据,调用read()函数从而实现用户态切换内核态,这是第1次状态切换;DMA控制器将数据从磁盘拷贝到内核缓冲区,这是第1次DMA拷贝;CPU将数据从内核缓冲区复制到用户缓冲区,这是第...,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协,DPDK,ffmpeg等)4....从图中可以看到,应用程序只需要调用sendfile函数即可完成,只有2次状态切换、1次CPU拷贝、2次DMA拷贝。...4.2.3 sendfile+DMA收集Linux 2.4 内核对 sendfile 系统调用进行优化,但是需要硬件DMA控制器的配合。

    2.9K03

    Linux 系统调用

    举例来说,当需要读写文件的时候,应用程序就可以不去管磁盘类型和介质,甚至不用去管文件所在的文件系统到底是哪种类型。 第二,系统调用保证了系统的稳定和安全。...在 Linux 中,系统调用是用户空间访问内核的唯一手段﹔除异常和陷入外,它们是内核唯一的合法入口。实际上,其他的像设备文件和/proc之类的方式,最终也还是要通过系统调用进行访问的。...而有趣的是,Linux 提供的系统调用却比大部分操作系统都少得多。 要访问系统调用(在 Linux 中常称作 syscall),通常通过C库中定义的函数调用来进行。...系统调用在出现错误的时候C库会把错误码写人errno全局变量。通过调用perror()库函数,可以把该变量翻译成用户可以理解的错误字符串。 在 Linux 中,每个系统调用被赋予一个系统调用号。...假设系统调用在内核空间定义为 sys_ioctl,那么该系统调用的用户空间接口为 ioctl Linux kernel-5.18.8 有 440 个系统调用,这些系统调用讲究通用性,一旦固定,很少修改,

    9.8K20

    LINUX网络子系统中DMA机制的实现

    我们先从计算机组成原理的层面介绍DMA,再简单介绍Linux网络子系统的DMA机制是如何的实现的。 一、计算机组成原理中的DMA 以往的I/O设备和主存交换信息都要经过CPU的操作。...总之,在同样的时间内,DMA方式下CPU执行现行程序的时间最长,即CPU的效率最高。 二、Linux网络子系统中DMA机制的实现 1....网卡通过DMA方式将数据发送到Receive Ring Buffer,然后Receive Ring Buffer把数据包传给IP协议所在的网络层,然后再由路由机制传给TCP协议所在的传输层,最终传给用户进程所在的应用层...这里就以该网卡的驱动程序为例,初步分析它是怎么建立DMA机制的。 源码目录及文件: ? 内核模块插入函数在e1000_main.c文件中,它是加载驱动程序时调用的第一个函数。.../include/linux/dma-mapping.h /* * Set both the DMA mask and the coherent DMA mask to the same thing

    5.2K62

    【说站】python Task如何在协调用

    python Task如何在协调 说明 1、Tasks用于并发调度协,通过asyncio.create_task(协对象)创建Task对象。 2、使协能够加入事件循环,等待调度执行。...将协封装到一个Task对象中并立即添加到事件循环的任务列表中,等待事件循环去执行(默认是就绪状态)。     ...task1 = asyncio.create_task(func())     # 创建协,将协封装到一个Task对象中并立即添加到事件循环的任务列表中,等待事件循环去执行(默认是就绪状态)。     ...task2 = asyncio.create_task(func())     print("main结束")     # 当执行某协遇到IO操作时,会自动化切换执行其他任务。     ...     asyncio.run(main()) 以上就是python Task在协调用,希望对大家有所帮助。

    38020

    AXI DMA详解与应用篇 | 第三讲、Data Cache与DMA一致性问题分析

    在进行DMA操作时,如果没有对Cache进行适当的操作,可能导致以下两种错误: 1、DMA从外设读取数据供处理器使用,DMA将外部数据直接传到内存中,但是Cache中保留的是旧数据,这样处理器在访问数据时直接访问缓冲将得到错误的数据...2、DMA向外设写入由处理器(Cortex-A9)提供的数据,处理器在处理数据时会先将数据存放到Cache中,此时Cache中可能还有没来得及写到内存中的数据,这时如果DMA直接从内存中取出数据传送到外设...将两种错误翻译一下就是说: (1)、当AXI_DMA从DDR中读取读取数据时,处理器写给DDR的数据可能还没进入到DDR,停留在Cache上,DMA读取DDR时就会得到错误的数据。...在DMA使用Cache时,根据DMA缓冲区期望保留的时间长短来决策。DMA的映射就分为:一致性DMA映射和流式DMA映射。 一致性DMA映射申请的缓存区能够使用Cache,并且保持cache一致性。...),还是将数据从外设通过DMA接收,宏定义:(XAXIDMA_DEVICE_TO_DMA)。

    5.8K36

    Linux系统调用原理

    系统调用Linux 内核提供的一段代码(函数),其实现了一些特定的功能,用户可以通过 int 0x80 中断(x86 CPU)或者 syscall 指令(x64 CPU)来调用 系统调用。...二、进入系统调用 本文主要介绍的是 x86 CPU 进入系统调用的方式 Linux 提供了 int 0x80 中断来让用户程序进入 系统调用,我们来看看 Linux 对 int 0x80 中断的处理初始化过程...原理如下图(图片来源 https://developer.ibm.com/zh/technologies/linux/tutorials/l-system-calls/ ): ?...Linux 使用寄存器来传递参数,参数与寄存器的关系如下: 第1个参数放置在 ebx 寄存器。 第2个参数放置在 ecx 寄存器。 第3个参数放置在 edx 寄存器。...而 Linux 进入中断处理程序时,会把这些寄存器的值保存到内核栈中,这样 系统调用 就能通过内核栈来获取到参数。

    4.2K30

    linux | 数据包到网卡在通过DMA到内存过程

    对于第一种情况,所涉及的步骤可以概括如下: 当进程调用read时,驱动程序方法会分配一个 DMA 缓冲区并指示硬件传输其数据。进程进入休眠状态。 硬件将数据写入 DMA 缓冲区并在完成时引发中断。...在这种情况下,驱动程序应该维护一个缓冲区,以便后续的读取调用将所有累积的数据返回到用户空间。这种转移涉及的步骤略有不同: 硬件发出中断以宣布新数据已到达。...https://www.oreilly.com/library/view/linux-device-drivers/0596000081/ch13s04.html https://en.wikipedia.org.../ https://blog.packagecloud.io/monitoring-tuning-linux-networking-stack-receiving-data/ https://www.linuxjournal.com.../content/queueing-linux-network-stack

    3K20

    干货 | 携鸿蒙应用开发实践

    作者简介 Gordon,携资深移动开发工程师,关注鸿蒙开发。 背景 作为全球领先的一站式旅游服务平台,携始终坚持以技术创新为发展核心。...系统服务层分布式软总线技术将物联网通讯技术(NFC、蓝牙、WIFI……)与协议(CoAP、RPC……)做了良好的封装,以及对数据格式(HarmonyOS IDL)以及服务(PA)做了良好的抽象,使局域网内的设备之间可以方便的通讯、交换数据、调用远程服务...三、携鸿蒙服务卡片 携很早就在鸿蒙OS发力,基于HarmonyOS分布式能力,开发了携机票手机、手表联动项目。...在HarmonyOS推出原子化能力后,又上线了携会员中心、核酸检测、携火车票服务卡片,以期给到用户更多的选择。...Flutter性能优化实践 携机票 App KMM 跨端 KV 存储库 MMKV-Kotlin 携机票iOS Widget实践 Trip.com APP QUIC应用和优化实践  “携技术”公众号

    1.4K20

    Kafka为什么这么快?

    是比较常用的消息队列,我们都知道 Kafka 的吞吐量很大,即使是普通的服务器,Kafka也可以轻松支持每秒百万级的写入请求,超过了大部分的消息中间件,这种特性也使得Kafka在日志处理等海量数据场景广泛应用...image.png 我们在 Linux 上查看内存的时候,经常可以看到 buff/cache,两者都是用来加速 IO 读写用的,而 cache 是作用于读。...关于零拷贝 传统的一次应用请求数据的过程: image.png 这里大致可以发传统的方式发生了 4 次拷贝,2 次 DMA 和 2 次 CPU,而 CPU 发生了4次的切换。...DMA 简单理解就是,在进行 I/O 设备和内存的数据传输的时候,数据搬运的工作全部交给 DMA 控制器,而 CPU 不再参与任何与数据搬运相关的事情。...Linux 系统提供了系统事故调用函数 “sendfile()”,这样系统调用,可以直接把内核缓冲区里的数据拷贝到 socket 缓冲区里,不再拷贝到用户态。

    57720
    领券