当前位置: 首页 > news >正文

DMA STM32H7 Domains and space distrubution

DMA这个数据搬运工,对谁都好,任劳任怨,接受雇主设备的数据搬运业务。每天都忙碌着!哈哈哈。

1. DMA 不可能单独工作,必须接收其他雇主的业务,所以数据搬运业务的参与者是DMA本身和业务需求发起者。

2. 一般大体的工作流程是:只要代码配置负责:2.1.给DAM提供时钟源,2.2.配置DMA工作模式和中断,2.3. 需求方设备(比如UART)向DMA发送开始搬运数据的请求信号,就可以开始搬运数据了。2.4 期间UART与DMA的同步方式,通过中断ISR互相关联嵌套。

3. DMA有时候也会遇到问题:比如STM32H743IIT6的BDMA负责LPUART1的发送数据搬运工作。应该会出现 TC 传输错误中断,原因是这个数据搬运工DMA在搬运数据时发现收发地之间没有总线互联,因此无路可走,那就巧妇难为无米之炊了。

所以,当系统复杂起来了,比如从STM32F407到STM32H743的SoC复杂度跨越,需要考虑内部数据总线、指令总线、运行频率等交通主干道的核心配置,达到满足应用目的。

下面附带上图 

下面是一个已经解决的案例:

AMR Keil-MDK 上重新适配了分散散加加载载文文件:

LR_IROM1 0x08000000 0x00200000 {         ; 主Flash区域(根据实际芯片型号调整)ER_IROM1 0x08000000 0x00200000 {       ; 加载地址 = 执行地址*.o (RESET, +First)                   ; 中断向量表*(InRoot$$Sections)                   ; 根段.ANY (+RO)                            ; 所有只读数据(代码、常量)};---------------------------------------------------------; RAM Regions (RM0433-STM32H743-page131/3353-2025年5月27日);---------------------------------------------------------; 128KB DTCM (0x20000000 - 0x2001FFFF)RW_IRAM1 0x20000000 0x00020000 {        ; 最高速度RAM,用于中断/实时数据.ANY (+RW +ZI)                        ; 默认分配未指定区域变量}; 512KB AXI SRAM (0x24000000 - 0x2407FFFF)RW_IRAM2 0x24000000 0x00080000 {        ; 带缓存的大容量RAM*(.RAM_D1)                            ; 手动指定分配到此区域的变量(DMA缓冲区等)}; SRAM1-3 (0x30000000 - 0x30047FFF); SRAM1: 128KB (0x30000000 - 0x3001FFFF); SRAM2: 128KB (0x30020000 - 0x3003FFFF); SRAM3: 32KB  (0x30040000 - 0x30047FFF)RW_IRAM3 0x30000000 0x00048000 {        ; 总288KB,D2域SRAM*(.RAM_D2)                            ; 外设相关数据}; 64KB SRAM4 (0x38000000 - 0x3800FFFF)RW_IRAM4 0x38000000 0x00010000 {        ; D3域低功耗RAM*(.RAM_D3)                            ; 低功耗模式保留数据}; 4KB Backup SRAM (0x38800000 - 0x38800FFF)RW_IRAM5 0x38800000 0x00001000 {        ; 备份域RAM(Vbat供电)*(.RAM_Backup)                        ; RTC/备份寄存器相关数据}
};added by maple. for BDMA and LPUART1 .2025年5月27日 

http://www.xdnf.cn/news/680437.html

相关文章:

  • Android11 访问所有文件
  • 数字孪生技术前沿探索:与5G/6G、区块链的深度融合及伦理治理框架构建
  • 配置文件元数据
  • 【赵渝强老师】HBase的体系架构
  • 从“学术杠精”到“学术创新”
  • 数据结构测试模拟题(2)
  • 改进yolo11模型学习
  • 真话与假话
  • #跟着Lucky学鸿蒙# HarmonyOS NEXT 工程介绍
  • jenkins-jenkins简介
  • 【Redis】Redis使用规范
  • 鸿蒙OSUniApp 制作带有分页功能的列表组件#三方框架 #Uniapp
  • Python实战:打造高效通讯录管理系统
  • 汽车副水箱液位传感器介绍
  • 项目中的流程管理之Power相关流程管理
  • 牛客周赛 Round 94
  • Linux中磁盘分区与挂载
  • c#基础08(数组)
  • 数据结构-散列表查找(哈希表)
  • qt QAxWidget
  • 嵌入式使用snprintf(str, sizeof(str), “ULV: %.3fV“,values);后出现小数部分丢失的错误以及解决方案
  • thinkadmin中使用layui日期选择器,数据库存储时间戳
  • 记录一ubuntu22.04做开机启动mysql、nginx、redis
  • java 数据输出占5列,右对齐
  • 柠檬(lemon)是什么东西?
  • 全视通智慧病房在护士站、病房及卫生间场景中的创新应用
  • brep2seq 源码笔记2
  • ISP图像处理算法之Demosaic
  • ns-3仿真_wifi发送链路简单解析
  • IEEE出版|2025年智能制造、机器人与自动化国际学术会议 (IMRA2025)