linux dma的使用

news2025/1/11 21:49:13

设备树配置

驱动代码

static void bcm2835_dma_init(struct spi_master *master, struct device *dev)

{

        struct dma_slave_config slave_config;

        const __be32 *addr;

        dma_addr_t dma_reg_base;

        int ret;

        /* base address in dma-space */

        addr = of_get_address(master->dev.of_node, 0, NULL, NULL);

        dma_reg_base = be32_to_cpup(addr);

        /* get tx/rx dma */    //根据dmas 和dma-names属性

        master->dma_tx = dma_request_slave_channel(dev, "tx"); 

        master->dma_rx = dma_request_slave_channel(dev, "rx");

        ...

        /* configure DMAs tx */

        slave_config.direction = DMA_MEM_TO_DEV;

        slave_config.dst_addr = (u32)(dma_reg_base + BCM2835_SPI_FIFO);

        slave_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;

        ret = dmaengine_slave_config(master->dma_tx, &slave_config);

        /* configure DMAs rx */

         slave_config.direction = DMA_DEV_TO_MEM;

        slave_config.src_addr = (u32)(dma_reg_base + BCM2835_SPI_FIFO);

        slave_config.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;

        ret = dmaengine_slave_config(master->dma_rx, &slave_config);

    

        /* all went well, so set can_dma */

        master->can_dma = bcm2835_spi_can_dma;

        master->max_dma_len = 65535; /* limitation by BCM2835_SPI_DLEN */

        /* need to do TX AND RX DMA, so we need dummy buffers */

        master->flags = SPI_MASTER_MUST_RX | SPI_MASTER_MUST_TX;

        return;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1635805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

visionPro链接相机

搜索Cognex GigE Vision Configura… 修改子网掩码为255.255.255.0 配置驱动程序 更新驱动(如果能够选择9014Bytes,跳过此步骤) 更新更改 相机ip配置 打开visionPro 选择照相机 查看实时画面 运行保存图像

【C++】哈希表的底层逻辑

目录 一、哈希概念 1、哈希冲突 2、哈希冲突的解决 a、闭散列 🟢插入 🟢查找 🟢删除 🟢其他类型的数据 🟢实现 b、 开散列 🟢插入 🟢查找 🟢删除 🟢析构 &a…

RTMP 直播推流 Demo(一)—— 项目配置与视频预览

音视频编解码系列目录: Android 音视频基础知识 Android 音视频播放器 Demo(一)—— 视频解码与渲染 Android 音视频播放器 Demo(二)—— 音频解码与音视频同步 RTMP 直播推流 Demo(一)—— 项目…

ASR语音转录Prompt优化

ASR语音转录Prompt优化 一、前言 在ASR转录的时候,我们能很明显的感受到有时候语音识别不是很准确,这过程中常见的文本错误主要可以归纳为以下几类: 同音错误(Homophone Errors) 同音错误发生在不同词语发音相似或相…

javafx如何一键打包成exe

javafx如何打包成exe JavaFX-Template-Native 集成jfoenix、commons-math、commons-lang3、netty,方便一些和底层做通信使用,不需要可以自行pom中去掉依赖当前使用的jdk17,理论上jdk14都支持采用模块化,支持一键打包生成很小的ex…

远程桌面的端口配置与优化

在现代企业环境中,远程桌面连接已成为日常工作中不可或缺的一部分。然而,随着网络攻击的增加,确保远程桌面连接的安全性变得尤为重要。其中一个关键的安全因素是端口配置。 一、远程桌面默认端口 远程桌面协议(RDP)默…

深度学习之视觉特征提取器——LeNet

LeNet 引入 LeNet是是由深度学习巨头Yann LeCun在1998年提出,可以算作多层卷积网络在图像识别领域的首次成功应用。我们现在通常说的LeNet是指LeNet-5,最早的LeNet-1在1988年即开始研究,前后持续十年之久。但是,受限于当时计算机…

关于远程桌面与3389端口的深度解析

当我们谈论远程桌面和3389端口时,我们实际上是在探讨Windows操作系统的一个核心功能,该功能允许用户通过网络从任何地点远程控制和管理计算机。而3389端口,正是这一功能所依赖的通信端口。 一、远程桌面的工作原理 远程桌面协议(R…

C++---重载

1、运算符重载 #include <iostream> using namespace std; class complex { int rel; int vir; public: complex(){} complex(int rel,int vir):rel(rel),vir(vir){} void show() { cout << rel << "" << vir << "i" <&l…

nodejs写接口(一)

一、新手上路十大步 &#xff08;1&#xff09;先建一个常用的文件夹 &#xff08;2&#xff09;使用code打开 &#xff08;3&#xff09;在里面新建一个index.js文件 &#xff08;4&#xff09;新建项目 npm init -y //用于自己搭建一个项目框架&#xff08;写框架&#xf…

STL复习

vector STL详解及常见面试题_stl常见面试题-CSDN博客 C vector中resize()和reserve()区别_c vector resize和reserve区别-CSDN博客 释放vectro内存&#xff1a; map释放内存 deque&#xff1a; C STL deque 容器底层实现原理&#xff08;深度剖析&#xff09; - 知乎 (zhihu.…

智能私信软件:转化率提升的神器

在数字化营销领域&#xff0c;利用智能私信软件策略提升转化率已经成为一种不可忽视的趋势。随着人工智能技术的发展&#xff0c;这些软件变得越来越智能&#xff0c;能够根据用户的行为和偏好提供个性化的沟通体验。在这篇文章中&#xff0c;我们将探讨如何有效地运用智能私信…

Opencv_14_多边形填充与绘制

绘制多边形&#xff1a; 1&#xff09;coInvert.polyline_drawing(src); 2&#xff09;void ColorInvert::polyline_drawing(Mat& image) { Mat canvas Mat::zeros(Size(512, 512), CV_8UC3); Point p1(100, 100); Point p2(150, 100); Point p3(200…

2000.1-2023.8中国经济政策不确定性指数数据(月度)

2000.1-2023.8中国经济政策不确定性指数数据&#xff08;月度&#xff09; 1、时间&#xff1a;2000.1-2023.8 2、指标&#xff1a;CNEPU&#xff08;经济政策不确定性指数&#xff09; 3、来源&#xff1a;China Economic Policy Uncertainty Index 4、用途&#xff1a;可…

公开课—京东生产环境海量数据架构优化实战

文章目录 读多写少——主库用来写&#xff0c;从库用来读单库的写压力太大——数据库的垂直和水平拆分分表怎么分呢&#xff1f;hash分表range分表多数据源操作与分布式事务问题 ShardingSphare分库分表&#xff08;京东开源&#xff09;关联查询怎么办&#xff1f;跨多个库&am…

CUDA的基础知识

文章目录 数据精度CUDA概念线程&线程块&线程网络&计算核心GPU规格参数内存 GPU并行方式数据并行流水并行张量并行混合专家系统 数据精度 FP32 是单精度浮点数&#xff0c;用8bit 表示指数&#xff0c;23bit 表示小数&#xff1b;FP16 是半精度浮点数&#xff0c;用…

【C++】封装哈希表 unordered_map和unordered_set容器

目录​​​​​​​ 一、unordered系列关联式容器 1、unordered_map 2、unordered_map的接口 3、unordered_set 二、哈希表的改造 三、哈希表的迭代器 1、const 迭代器 2、 operator 3、begin()/end() ​ 4、实现map[]运算符重载 四、封装 unordered_map 和 unordered_se…

ThinkPHP Lang多语言本地文件包含漏洞(QVD-2022-46174)漏洞复现

1 漏洞描述 ThinkPHP是一个在中国使用较多的PHP框架。在其6.0.13版本及以前&#xff0c;存在一处本地文件包含漏洞。当ThinkPHP开启了多语言功能时&#xff0c;攻击者可以通过lang参数和目录穿越实现文件包含&#xff0c;当存在其他扩展模块如 pear 扩展时&#xff0c;攻击者可…

【城市】2023香港身份与生活定居相关政策(IANG,优才/高才/专才,受养人/单程证)

【城市】2023香港身份与生活定居相关政策&#xff08;IANG&#xff0c;优才/高才/专才&#xff0c;受养人/单程证&#xff09; 文章目录 一、如何获得香港身份1、7年计划2、旅游签 二、港澳相关的证件类别1、HK证件2、CN证件 三、香港生活对比内地 本文仅代表2023年查阅相关资料…

「C/C++ 01」计算结构体/类的大小和内存对齐

目录 一、计算结构体的大小 二、计算类的大小 三、内存对齐 一、计算结构体的大小 计算结构体的大小要遵循内存对齐规则&#xff1a;即从第二个成员变量开始&#xff0c;起始位置要计算&#xff0c;在自己的大小和默认对齐数(VS编译器中默认对齐数为8)中选择较小的那个&#x…