ADI Blackfin DSP处理器-BF533的开发详解12:Memory DMA的使用详解(含源代码)

news2025/1/11 19:52:08

硬件准备

ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器

软件准备

Visual DSP++软件

硬件链接

在这里插入图片描述

接口功能介绍

MDMA 全称是 memoryDMA ,是内存到内存搬运数据的 DMA。在 DSP 做算法时,经常会遇到数据重组或者搬移,如果用 core 搬运这些数据,是对 DSP 资源的一种浪费,此时就可以用到 MDMA 进行数据搬移。

接口寄存器说明

在这里插入图片描述

核心代码分析

*pMDMA_S0_START_ADDR = pSrc; //设置源地址
*pMDMA_S0_X_COUNT = 8; //传输次数 8 次
*pMDMA_S0_X_MODIFY = 2; //地址修改增量 2,16bit 模式一次读 2 个 byte
*pMDMA_D0_START_ADDR = pDest;
*pMDMA_D0_X_COUNT = 8;
*pMDMA_D0_X_MODIFY = 2;
*pMDMA_S0_PERIPHERAL_MAP = 0x0040; //配置使用的 DMA 通道
*pMDMA_D0_PERIPHERAL_MAP = 0x0040;

*pMDMA_S0_CONFIG = 0x0024; //配置源 DMA 工作模式
*pMDMA_D0_CONFIG = 0x00a6; //配置目的 DMA 工作模式
*pSIC_IAR5 = 0xfffff6ff; //设置中断等级
register_handler(ik_ivg13, MDMA_ISR); //注册中断
*pSIC_IMASK1 = 0x00000400; //打开中断屏蔽

代码实现功能

代码实现了将源地址 buffer 中的 8 个数据搬到目的地址中,完成搬运后会进入中断程序,然后在中断中再次使能 MDMA,重复搬运数据。

在中断函数中打个断点,运行代码后,Src_Buf 中的数据会被搬运到 Dest_Buf 中去,完成搬运后会进入中断函数,通过 Visual DSP 下的 memory 窗口,可以查看 Dest_Buf 中的数据。

在这里插入图片描述

完整代码

  1. CPU.C

#include <cdefBF533.h>

void Set_PLL(int pmsel,int pssel)
{
int new_PLL_CTL;
*pPLL_DIV = pssel;
asm(“ssync;”);
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm(“ssync;”);
asm(“idle;”);
}
}

void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
ssync();
}

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0x7bb07bb0;
*pEBIU_AMGCTL = 0x000f;
}

  1. MDMA.c

#include <cdefBF533.h>
#include <ccblkfn.h>
#include <sys/exception.h>
#include “cpu.h”

//*pSrc :源地址
//*pDest :目的地址
void Init_MDMA(unsigned short *pSrc,unsigned short *pDest)
{
*pMDMA_S0_START_ADDR = pSrc; //设置源地址
*pMDMA_S0_X_COUNT = 8; //传输次数 8次
*pMDMA_S0_X_MODIFY = 2; //地址修改增量2,16bit模式一次读2个byte

*pMDMA_D0_START_ADDR = pDest;			
*pMDMA_D0_X_COUNT = 8;
*pMDMA_D0_X_MODIFY = 2;

*pMDMA_S0_PERIPHERAL_MAP = 0x0040;		//配置使用的DMA通道
*pMDMA_D0_PERIPHERAL_MAP = 0x0040;

*pMDMA_S0_CONFIG = 0x0024;				//配置源DMA工作模式
*pMDMA_D0_CONFIG = 0x00a6;				//配置目的DMA工作模式

}

void MDMA_Enable(void) //使能MDMA
{
*pMDMA_S0_CONFIG |= 0x0001;
*pMDMA_D0_CONFIG |= 0x0001;
}

EX_INTERRUPT_HANDLER(MDMA_ISR) //中断函数
{
*pMDMA_D0_IRQ_STATUS=0x1; //清楚中断标志位
MDMA_Enable(); //使能MDMA继续传输
}

void Init_MDMA_Interrupt(void) //初始化中断
{
*pSIC_IAR2 = 0xff6fffff; //设置中断等级
register_handler(ik_ivg13, MDMA_ISR); //注册中断
*pSIC_IMASK = 0x00200000; //打开中断屏蔽
}

  1. Main.c

#include <cdefBF533.h>
#include “cpu.h”

unsigned short Src_Buf[8]={1,2,3,4,5,6,7,8};
unsigned short Dest_Buf[8]; //目的buffer

void main(void)
{
Set_PLL(16,4); //配置内核时钟400MHz,系统时钟100MHz,25M*16/4
Init_EBIU(); //初始化EBIU
Init_SDRAM(); //初始化SDRAM

Init_MDMA_Interrupt();			//初始化MDMA中断
Init_MDMA(Src_Buf,Dest_Buf);	//初始化MDMA
MDMA_Enable();					//使能MDMA
while(1);	

}

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

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

相关文章

谁说菜鸟不会数据分析 | 学习笔记(全)

一.前言 数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程 数据分析的目的是把隐藏在一大批看似杂乱无章的数据背后的信息集中和提炼出来&#xff0c;总结出所研究对象的内在规律。在实际工作中&#xff0c;数据分析能够帮助管理者进行判断和决策&…

Linux | 进程信号 | 信号的产生 | 进程处理信号过程 | 进程pending,block,handler设置 | 用户态、内核态

文章目录信号的概念Ctrl C信号Linux中的信号信号产生前由终端产生信号由软件条件产生信号硬件异常产生信号core dump信号产生时sigset_tsigprocmask信号产生后用户态和内核态sigaction信号的概念 在日常生活中&#xff0c;我们看到绿灯选择过马路&#xff0c;看到红灯选择等待…

浅谈Java Web经典三层架构和MVC框架模式

从前端到后端整体架构做一个分析&#xff0c;通过这个分析更清楚的了解一下具体的前后端架构。以下三个架构属于三种架构&#xff0c;有共同点&#xff0c;但是并不是从属关系。 01 MVC模型 MVC是一种模型概念&#xff0c;绝大多数架构都是根据他来实现的&#xff0c;但是并不…

使用Docker+Jenkins+Gitee自动化部署Vue+ElementUI项目

参考本文章并打算跟着步骤进行构建部署的朋友们&#xff0c;建议直接先看踩坑总结&#xff0c;看看自己是否存在对应的问题&#xff0c;免得构建完才发现出错了&#xff0c;毕竟构建一次过程还挺长的。也可以自己走一遍后再参考如何解决啦。 1、Docker安装Jenkins 关于如何安…

使用 Monai 和 PyTorch 预处理 3D Volumes以进行肿瘤分割

1.介绍 针对在使用传统图像处理工具时可能遇到的困难&#xff0c;深度学习已成为医疗保健领域的主要解决方案。 因为医学图像比标准图像更难处理&#xff08;高对比度、人体的广泛变化……&#xff09;深度学习用于分类、对象检测&#xff0c;尤其是分割任务。 在分割方面&a…

[附源码]计算机毕业设计健身生活系统论文Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

SQL注入漏洞 | updatexml报错注入

文章目录前言MySQL updatexml报错注入前言 XML XML 被设计用来传输和存储数据&#xff0c;是各种应用程序之间进行数据传输的最常用的工具。 xpath XPath 是一门在 XML 文档中查找信息的语言。XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在…

传统机器学习算法-支持向量机模型详解

原文链接 引言 本篇我们要讲解的模型是大名鼎鼎的支持向量机 SVM&#xff0c;这是曾经在机器学习界有着近乎「垄断」地位的模型&#xff0c;影响力持续了好多年。直至今日&#xff0c;即使深度学习神经网络的影响力逐渐增强&#xff0c;但 SVM 在中小型数据集上依旧有着可以和…

申请澳洲八大,IB成绩多高才有胜算?

鉴于IB文凭项目是全球通用的国际课程&#xff0c;因此几乎所有澳洲大学都可以接受IB文凭直接申请本科&#xff0c;包括澳洲八大。 首先我们要知道&#xff0c;澳洲八大究竟是哪八个顶级大学&#xff1f;澳洲的大学是按星级来分类的&#xff0c;五星级大学就是澳洲八大&#xff…

计算机网络期末复习题含解析(第一章)

目录 单项选择 填空题 判断题 单项选择 题号&#xff1a;25995 1.1.15 互联网服务提供商的英文缩写是&#xff08;&#xff09;。 A、ISA B、ISP C、IXP D、RFC 答案&#xff1a; B ISP&#xff1a;Internet Service Provider 题号&#xff1a;25986 1.1.6 网络体系…

如何熟练掌握JDBC编程?

目录 &#x1f433;今日良言:未来可期,人生值得 &#x1f402;一、JDBC &#x1f43c;1.概念 &#x1f43c;2.背景 &#x1f43c;3.使用 &#x1f42f;二、编写数据库代码 &#x1f43c;1.增/删/改数据 &#x1f43c;2.查数据 &#x1f433;今日良言:未来可期,人生值得…

机器学习笔记之受限玻尔兹曼机(六)对数似然梯度求解

机器学习笔记之受限玻尔兹曼机——对数似然梯度求解引言回顾&#xff1a;含隐变量能量模型的对数似然梯度受限玻尔兹曼机的对数似然梯度模型参数求解主体思路求解过程引言 上一节介绍了含隐变量能量模型的对数似然梯度求解。本节针对受限玻尔兹曼机&#xff0c;对模型参数进行…

c#入门-完全限定名,引用命名空间

完全限定名 包含完整命名空间的类名&#xff0c;称为完全限定名。 namespace 黄野平原.古堡 {class 蜡烛怪 { } }例如 黄野平原.古堡.蜡烛怪 a new 黄野平原.古堡.蜡烛怪();引用命名空间 但是很多的类都会写在命名空间下&#xff0c;如果全都这么写代码太长了。 为了省略掉…

Unity-Photon Pun2个人总结

进入房间前的配置 1、使用设定好的Setting private void Start(){PhotonNetwork.ConnectUsingSettings();} 2、MonoBehaviour改为MonoBehaviourPunCallbacks public class NetworkLauncher : MonoBehaviourPunCallbacks{} 这样我们才可以获得Photon服务端的一些反馈资料 3…

高考题改成IB试题,会是什么样子?

从2019年浙江高考语文卷的一篇现代文阅读说起的&#xff0c;振语看过了这道题和推文作者的解读后&#xff0c;一时兴起&#xff0c;就想着能不能把它改成一道IB考题&#xff0c;顺带着也把这篇选文细读评点了一番。&#xff08;一&#xff09;高考试题再现&#xff1a; 这道高考…

百趣代谢组学分享:HSFB2b通过促进类黄酮生物合成赋予大豆耐盐能力

​我国大豆的产量远远不能满足国内需求&#xff0c;提高大豆的耐逆性可以充分利用边际土地增加大豆种植面积从而提高大豆产量。百趣代谢组学分享&#xff0c;热激转录因子基因在植物生长过程中发挥了重要作用&#xff0c;然而在大豆耐盐反应中热激转录因子的功能及机理仍不清楚…

A-Level商务例题解析及练习Cash flow forecasting

今日知识点&#xff1a; Cash flow forecasting Cash inflows Cash outflows Limitations of cash flow forecasting例题 Q: Discuss the view that cash flow forecasts for a newly operating international airport may be of limited use to its senior managers. 解析 Ans…

Mysql 进阶(面向面试篇)事务篇

1、事务 1.1 事务简介 事务 是一组操作的集合&#xff0c;它是不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。保证原子性 就比如: 张三给李四转账1000块钱&#x…

仿英雄联盟网页HTML代码 学生网页设计与制作期末作业下载 大学生网页设计与制作成品下载 DW游戏介绍网页作业代码下载

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

推荐系统CTR方向相关论文一句话总结

Fearure Interaction // CTR纯FM模型及其演变Factorization Machines. 2010Field-aware Factorization Machines for CTR Prediction. 2016Neural Factorization Machines for Sparse Predictive Analytics. 2017Attentional Factorization Machines: Learning the Weight of F…