DMA裸板驱动使用说明
1 DMA简要说明1.1 GDP812的dmac812 dmac在4个subsys中集成分别是sysctrl、safety、mem、audiodmac的apb slv memmap要根据各subsys 在SOC分配的地址空间决定dmac的axi master能访问到的memmap 同样的需要去根据各subsys访问能力子系统内L2 noc matrix和mainnoc matrix决定dmac 本身是支持44bit地址全SOC访问1.2 DMA-330的使用DMA-330采用MicroCode的方式实现DMA的独立控制可以理解为该DMA Controller为ARM的一个Coprocessor。按照MicroCode的指令集规则编写指令存放到指定地址的内存中ARM处理器只需要告诉DMA Controller汇编指令的起始地址DMA Controller就可以执行内存中存放的汇编指令实现独立于处理器的数据搬运工作。2 裸驱代码使用介绍目前是第一版裸驱代码在rk-3588开发板平台验证过Mem2MemMem2Uart_Tx和Uart_Rx2Mem三种情况在GDP812平台仅验证过Mem2Mem的情形。若实际调试过程中遇到DMA相关问题请及时沟通。该裸驱代码共有3个文件dma-hw.h 用于存放和硬件相关的配置信息dma-330.h 与硬件无关的驱动代码头文件dma-330.c 与硬件无关的驱动代码文件从裸驱代码的使用角度有如下需要修改的几个地方2.1 硬件相关的配置信息/** * dma-hw.h */ /* DMAC寄存器的Base Address对于不同的Subsystem这个值是不同的 */ #define PL330_BASE_ADDR DMA0_NS_BASE_ADDR /* MicroCode指令放置的内存地址 */ #define MCODE_CPU_ADDR 0x08001000 /* cpu access desc addr */ #define MCODE_BUS_ADDR 0x08001000 /* bus access desc addr */ /* 数据搬运的源地址和目的地址 */ #define MEM_SRC_ADDR 0x80000000 #define MEM_DST_ADDR 0x800100002.2 SoftReset和Clock配置需要在测试代码中自行实现软复位和时钟的配置如下示例给出了sysctrl DMA的软复位和时钟配置static void sys_init(void) { /* sysctrl dma */ writel(0x1, (void*)0x49800104); writel(0x1, (void*)0x49800100); }2.3 配置结构体的填充需要在测试代码中自行实现配置结构体的填充2.3.1 配置结构体的成员说明/* 传输配置结构体 */ struct pl330_trans_cfg { unsigned int src_phy_addr; unsigned int dst_phy_addr; enum __tfr_type tfr_type; int trans_len; unsigned char privileged; unsigned char nonsecure; enum burst_cfg user_cfg_bst; unsigned int tfr_data_width; unsigned int tfr_data_len; unsigned int peri_num; };src_phy_addr 数据传输的源地址dst_phy_addr 数据传输的目的地址tfr_type 数据传输的类型有以下三种可选类型DMAC_TFR_TYPE_M2M适用于Mem to Mem的数据传输Src和Dst地址都递增的情形DMAC_TFR_TYPE_M2P 适用于Mem to Peri的数据传输Src地址递增Dst地址固定的情形DMAC_TFR_TYPE_P2M 适用于Peri to Mem的数据传输Src地址固定Dst地址递增的情形trans_len 数据传输的总长度privileged AXI总线特权访问配置位0非特权访问AXI总线1特权访问用于高权限操作nonsecure AXI总线安全访问配置位0安全访问用于安全模式下的数据访问1非安全访问user_cfg_bst 目前只支持两种配置选择USE_AXI_MAX_CAP 以硬件配置的AXI总线位宽进行数据传输Mem to Mem的数据传输时使用USE_DEFINED 以用户自定义的burst_size和burst_len进行数据传输M2P和P2M时使用tfr_data_width用户自定义的burst_sizetfr_data_len 用户自定义的burst_lenperi_num Mem2Mem时无效用于配置DMAC与硬件握手时的握手编号2.3.2 配置结构体的配置示例针对配置结构体的成员说明以Mem2PeriUART_TX为例提供如下示例static void transfer_cfg(struct pl330_trans_cfg *cfg) { cfg-dst_phy_addr MEM_SRC_ADDR; cfg-src_phy_addr MEM_DST_ADDR; cfg-tfr_type DMAC_TFR_TYPE_M2P; cfg-trans_len 8; /* 数据传输的总长度 8-byte */ cfg-privileged 0; /* 非特权访问 */ cfg-nonsecure 1; /* 非安全访问 */ /** * 以Mem2Uart_Tx为例 * 一个burst内Memory向UartTx buffer发送1-Byte数据并等待Uart做出回应后再进行下一次数据发送。 * * 1 burst的数据量大小 burst_size * burst_len因此tfr_data_width和tfr_data_len都为1。 */ cfg-user_cfg_bst USE_DEFINED; cfg-tfr_data_width 1; /* 用户自定义的burst_size */ cfg-tfr_data_len 1; /* 用户自定义的burst_len */ cfg-peri_num UART_TX; /* UART2_TX的设备编号 */ }3 GDP-812与DMA相关的配置3.1 DMAC Base Address如下图所示有些Subsystem中用于DMA IP配置的基地址相对于Memory Map提供的Base Address存在4K的偏移。3.1.1 SysCtrlMemory Map中的地址dmac apb_slv_NS0x4a002000dmac apb_slv_S 0x4a005000实际使用的地址DAMC_BASE_ADDR(ns) 0x4a003000即dmac apb_slv_NS(0x4a002000) 0x1000DMAC_BASE_ADDR(s) 0x4a006000即dmac apb_slv_S(0x4a005000) 0x10003.1.2 safetyMemory Map中的地址Safety DMA sec apb0x4a800000Safety DMA apb 0x4ac00000实际使用的地址是否偏移0x1000需要IP Owner确认DMAC_BASE_ADDR(sec apb) : 0x4a801000DMAC_BASE_ADDR(non-sec) : 0x4ac010003.1.3 MemoryMemory Map中的地址noc2damc_apb_slv(ns) 0x52628000noc2dmac_sec_apb_slv0x52638000实际使用的地址是否偏移0x1000需要IP Owner确认DMAC_BASE_ADDR(non-sec) : 0x52629000DMAC_BASE_ADDR(sec) : 0x526390003.1.4 AudioMemory Map中的地址DMAC_0audio_noc2dmac0_s_apb_slv 0x5cc50000audio_noc2dmac0_ns_apb_slv0x5cc60000DMAC_1audio_noc2dmac1_ns_apb_slv0x5cd10000audio_noc2dmac0_s_apb_slv 0x5cd20000实际使用的地址是否偏移0x1000需要IP Owner确认DMAC_0DMAC_BASE_ADDR(sec) 0x5cc51000DMAC_BASE_ADDR(ns) 0x5cc61000DMAC_1DMAC_BASE_ADDR(ns) 0x5cd11000DMAC_BASE_ADDR(sec) 0x5cd210003.2 Periphal Num根据各Subsystem的Design Spec的描述在dma-hw.h中列出各Subsystem的DMAC握手信号的Peripheral Number不保证正确请各IP Owner自行确认如下3.2.1 SysCtrl/** * Sysctrl Subsystem DMA-Peripheral Handshake */ enum { SYSCTRL_QSPI_FLASH_TX, SYSCTRL_QSPI_FLASH_RX, SYSCTRL_USI0_TX, SYSCTRL_USI1_TX, SYSCTRL_USI2_TX, SYSCTRL_USI3_TX, SYSCTRL_USI4_TX, SYSCTRL_USI5_TX, SYSCTRL_USI6_TX, SYSCTRL_USI7_TX, SYSCTRL_USI0_RX, SYSCTRL_USI1_RX, SYSCTRL_USI2_RX, SYSCTRL_USI3_RX, SYSCTRL_USI4_RX, SYSCTRL_USI5_RX, SYSCTRL_USI6_RX, SYSCTRL_USI7_RX, };3.2.2 safety3.2.3 Memory3.2.4 Audio3.3 软复位和Clock配置3.3.1 SysCtrl0x49800100 0x10x49800104 0x13.3.2 safety软复位和时钟配置需要IP Owner确认3.3.3 Memory软复位和时钟配置需要IP Owner确认3.3.4 Audio软复位和时钟配置需要IP Owner确认DMAC_0DMAC_1

相关新闻

丹摩平台 | 如何在丹摩平台创建一个自己的GPU云实例

丹摩平台 | 如何在丹摩平台创建一个自己的GPU云实例

丹摩平台介绍与说明 丹摩平台,特别是其丹摩智算(DAMODEL)平台,是一个专为AI打造的智算云平台。以下是对丹摩平台的详细介绍及其主要功能的概述: 1、平台介绍 丹摩智算平台致力于提供丰富的算力资源与基础设施&#xff…

2026/8/22 11:51:37 阅读更多 →
揭秘 GitHub 最火的开源 Skills 仓库,夯爆了!30 秒带你用上,让 AI 效率起飞

揭秘 GitHub 最火的开源 Skills 仓库,夯爆了!30 秒带你用上,让 AI 效率起飞

大家好,我是程序员鱼皮。 如今的 GitHub 真是太魔幻了,有个 AI 相关的项目,几乎全是 Markdown 文本文件,但是不到半年就拿到了 18 万 Star! 这个仓库叫 skills,作者 Matt Pocock 是前端 TypeScript 领域很…

2026/8/11 7:20:31 阅读更多 →
非接触式激光雪深监测站,气象积雪观测新方案

非接触式激光雪深监测站,气象积雪观测新方案

积雪观测是气象生.态监测、冰雪灾害预警、交通与农林安全生产的重要基础工作。传统积雪观测普遍采用雪尺、测杆人工接触式测量,不仅观测效率低、人力投入大,且低温暴雪天气下人工作业风险高,同时容易因触碰积雪造成表层扰动,产生测…

2026/8/23 12:04:30 阅读更多 →

最新新闻

purescript-native编译器原理(一):PureScript源码到corefn JSON再到IL中间语言的完整旅程

purescript-native编译器原理(一):PureScript源码到corefn JSON再到IL中间语言的完整旅程

purescript-native编译器原理(一):PureScript源码到corefn JSON再到IL中间语言的完整旅程 【免费下载链接】purescript-native A native compiler backend for PureScript (via C or Golang) 项目地址: https://gitcode.com/gh_mirrors/pu/purescript-native purescript…

2026/8/24 12:00:58 阅读更多 →
从初等数学到微分方程:数学建模核心思想与实战应用

从初等数学到微分方程:数学建模核心思想与实战应用

1. 从“板凳龙”到“微分方程”:初等数学建模的实战起点如果你最近关注过数学建模竞赛,可能会被“板凳龙闹元宵”这样的赛题吸引。这听起来像是一个充满民俗风情的文化问题,但本质上,它考察的是如何用数学语言描述一个动态、有约束…

2026/8/24 12:00:58 阅读更多 →
博弈论入门:从取石子游戏到必胜态分析,掌握算法竞赛核心思维

博弈论入门:从取石子游戏到必胜态分析,掌握算法竞赛核心思维

1. 项目概述:从一道竞赛题到策略思维的深度剖析“CF1558A Charmed by the Game” 这个标题,对于不熟悉Codeforces平台的朋友来说,可能有些不知所云。但如果你是一位算法竞赛的参与者,或者是对策略性思维游戏感兴趣的开发者&#x…

2026/8/24 12:00:58 阅读更多 →
如何用一条命令看穿文件身份:Detect It Easy 新手完整上手指南

如何用一条命令看穿文件身份:Detect It Easy 新手完整上手指南

如何用一条命令看穿文件身份:Detect It Easy 新手完整上手指南 【免费下载链接】Detect-It-Easy Program for determining types of files for Windows, Linux and MacOS. 项目地址: https://gitcode.com/gh_mirrors/de/Detect-It-Easy 拿到一个来路不明的可…

2026/8/24 12:00:58 阅读更多 →
applegpu逆向路线图:Apple G13 GPU架构还有哪些未解之谜等待攻克

applegpu逆向路线图:Apple G13 GPU架构还有哪些未解之谜等待攻克

applegpu逆向路线图:Apple G13 GPU架构还有哪些未解之谜等待攻克 【免费下载链接】applegpu Apple G13 GPU architecture docs and tools 项目地址: https://gitcode.com/gh_mirrors/ap/applegpu applegpu 是一个针对 Apple G13 GPU 架构(即 M1 S…

2026/8/24 12:00:58 阅读更多 →
如何让你的AI接管浏览器自动化:web-ui 5 分钟跑通实操指南

如何让你的AI接管浏览器自动化:web-ui 5 分钟跑通实操指南

如何让你的AI接管浏览器自动化:web-ui 5 分钟跑通实操指南 【免费下载链接】web-ui 🖥️ Run AI Agent in your browser. 项目地址: https://gitcode.com/GitHub_Trending/web/web-ui 你有没有反复干过这种事:打开页面、点按钮、填表单…

2026/8/24 11:59:57 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →