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日 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值