今天调试一个电路板用DMA控制串口发送,移植了以前的程序但是怎么调试都不发送数据,最后想起可能是由于变量地址被自动分配在CCM区域。CCM是IRAM2,指在地址 0x1000 0000 映射的 64 KB 块,只能供 CPU 通过数据总线访问。所以DMA是不能访问的。
因此当使用DMA同时打开IRAM2时候要注意目标内存的地址分配,只能在IRAM1或者外部内存总线上。
今天调试一个电路板用DMA控制串口发送,移植了以前的程序但是怎么调试都不发送数据,最后想起可能是由于变量地址被自动分配在CCM区域。CCM是IRAM2,指在地址 0x1000 0000 映射的 64 KB 块,只能供 CPU 通过数据总线访问。所以DMA是不能访问的。
因此当使用DMA同时打开IRAM2时候要注意目标内存的地址分配,只能在IRAM1或者外部内存总线上。