linux dma的使用

设备树配置

驱动代码

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://xiahunao.cn/news/2999034.html

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

相关文章

当Kubeflow遇上GPU池化

随着人工智能技术的迅猛发展,AI开发已成为企业创新的重要驱动力。然而,在AI开发过程中,企业面临着诸多挑战,如开发工具的选择和开发资源如何高效利用等。本文将围绕这些挑战,探讨GPU池化如何赋能Kubeflow进行AI开发&am…

【git】.gitignore 个人总结

文章目录 1. 简介2. 格式3. 参考1. 文件名2. *.后缀3. ?.后缀4. []5. \6. **7. /8. ! 1. 简介 .gitignore是一个用于指定Git版本控制系统忽略特定文件或文件夹的配置文件。当我们在项目中添加文件并想要将它们纳入到版本控制中时,有时我们也会有一些不希望纳入版本…

VCSA6.7重置root密码

VCSA6.7重置root密码 1、登录VCSA所运行的ESXI主机 2、打开VCSA虚拟机Web控制台,先拍摄一个快照,然后重启虚拟机,在如下界面按"e" 3、找到linux开头的段落,在末尾追加rw init/bin/bash; 4、输入完成后,按&…

Windows编译OpenCV及扩展模块

OpenCV官网只提供了OpenCV Windows 64位动态库且不包括扩展模块,如果需要32位动态库,或者需要扩展模块的功能,则需要下载源码进行编译。 1. 版本说明与下载地址 OpenCV下载 https://github.com/opencv/opencv/releases/tag/4.9.0 OpenCV扩展模…

Python俄罗斯方块

文章目录 游戏实现思路1. 游戏元素的定义2. 游戏区域和状态的定义3. 游戏逻辑的实现4. 游戏界面的绘制5. 游戏事件的处理6. 游戏循环7. 完整实现代码 游戏实现思路 这个游戏的实现思路主要分为以下几个步骤: 1. 游戏元素的定义 Brick类:表示游戏中的砖…

《深入解析Windows操作系统》第7章读书笔记

1、远程过程调用RPC:传统上,网络软件是围绕着IO处理模型来组织结构的。例如在Windows中,当一个应用程序发出一个IO请求时,它就会发出一个网络操作。操作系统酌情处理,它将此请求转发给一个重定向器,此重定向…

Go 语言基础(二)【数组、切片、指针、map、struct】

1、数组 特别需要注意的是:在 Go 语言中,数组长度也是数组类型的一部分!所以尽管元素类型相同但是长度不同的两个数组,它们的类型并不相同。 1.1、数组的初始化 1.1.1、通过初始化列表{}来设置值 var arr [3]int // int类型的数…

ArcGIS+ChatGPT双剑合璧:从数据读取到空间分析,一站式掌握GIS与AI融合的前沿科技!

目录 专题一 AI大模型应用 专题二 ArcGIS工作流程及功能 专题三 prompt的使用技巧 专题四 AI助力工作流程 专题五 AI助力数据读取 专题六 AI助力数据编辑与处理 专题七 AI助力空间分析 专题八 AI助力遥感分析 专题九 AI助力二次开发 专题十 AI助力科研绘图 专题十一…

Slave SQL线程与PXB FTWRL死锁问题分析

1. 问题背景 2.27号凌晨生产环境MySQL备库在执行备份期间出现因FLUSH TABLES WITH READ LOCK未释放导致备库复制延时拉大,慢日志内看持锁接近25分钟未释放。 版本: MySQL 5.7.21PXB 2.4.18 慢查询日志: 备份脚本中的备份命令:…

Linux内核之设定inode链接计数:set_nlink用法实例(六十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

QT:小项目:登录界面 (下一个连接数据库)

一、效果图 登录后&#xff1a; 二、项目工程结构 三、登录界面UI设计 四主界面 四、源码设计 login.h #ifndef LOGIN_H #define LOGIN_H#include <QDialog>namespace Ui { class login; }class login : public QDialog {Q_OBJECTpublic:explicit login(QWidge…

金三银四面试题(二十三):装饰器模式知多少?

什么是装饰器模式 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许动态地向对象添加新的行为&#xff0c;而无需修改原始对象的结构。通过将对象包装在一个或多个装饰器对象中&#xff0c;装饰器模式可以增强原始对象的功能。 装…

最详细的SSL证书说明及免费申请方法

JoySSL官网 注册码230918 SSL&#xff08;Secure Sockets Layer&#xff09;证书&#xff0c;现在通常指的是其继任者TLS&#xff08;Transport Layer Security&#xff09;证书&#xff0c;是确保数据传输安全的核心技术之一。本文将深入探讨SSL证书的工作原理、重要性、类型以…

闪存存储和制造技术概述

闪存存储技术 引言 性能由高到低排序&#xff1a;SLC -> MLC -> TLC -> QLC 根据这个排序读写速度也越来越低&#xff0c;价格越来越便宜 1. SLC SLC&#xff08;Single-Level Cell&#xff0c;单层单元&#xff09;&#xff1a; SLC 闪存具有最高的性能、耐用性和可…

蓝网科技临床浏览系统 deleteStudy SQL注入漏洞复现(CVE-2024-4257)

0x01 产品简介 蓝网科技临床浏览系统是一个专门用于医疗行业的软件系统,主要用于医生、护士和其他医疗专业人员在临床工作中进行信息浏览、查询和管理。 0x02 漏洞概述 蓝网科技临床浏览系统 deleteStudy接口处SQL注入漏洞,未经身份验证的恶意攻击者利用 SQL 注入漏洞获取…

JAVA顺序表相关习题1

1.笔试题:cvte str1 :welcome to cvte str2:come 描述:删除第一个字符串当中出现的所有的第二个字符串的字符!结果:wlt vt 要求 用ArrayList完成! public class Test {public static List<Character> findSameWords(String u1, String u2){List<Character> listn…

gateway全局token过滤器

添加gateway依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>创建一个tokenFilter 实现全局过滤器GlobalFilter,并且实现fitler方法 Value("${…

工信部CAPPVD公布24年一季度积分情况,海云安位居全国第二!

近日&#xff0c;工业和信息化部移动互联网APP产品安全漏洞专业库&#xff08;以下简称“CAPPVD漏洞库”&#xff09;根据《CAPPVD漏洞库支撑单位能力评定办法》和综合24年第一季度的漏洞报送、重要行业企事业单位漏洞加分、高危漏洞处置加分、标准支撑等&#xff0c;最终公布了…

如何保证Redis双写一致性?

目录 数据不一致问题 数据库和缓存不一致解决方案 1. 先更新缓存&#xff0c;再更新数据 该方案数据不一致的原因 2. 先更新数据库&#xff0c;再更新缓存 3. 先删除缓存&#xff0c;再更新数据库 延时双删 4. 先更新数据库&#xff0c;再删除缓存 该方案数据不一致的…

值得推荐的文档透明加密软件TOP3

文档透明加密软件是一种可以对文档进行加密处理&#xff0c;同时保持文档的可读性和可编辑性的软件。通常&#xff0c;这种软件会在用户对文档进行保存或传输时自动对文档进行加密&#xff0c;而在用户需要访问文档时则会解密文档&#xff0c;以便用户正常地查看和编辑文档内容…