擦鞋匠 发表于 2021-8-9 11:27:43

请教:在DMA传输期间禁止CPU读-改-写操作有什么意义?

额,我看网上例程,msp430在DMA操作时,都喜欢将DMACTL4置位,但是我没明白这样做有啥意义,还请各位指教!

DMACTL4
Read-modify-write disable. When set, this bit inhibits any DMA transfers from
occurring during CPU read-modify-write operations.
0b = DMA transfers can occur during read-modify-write CPU operations.
1b = DMA transfers inhibited during read-modify-write CPU operations

yunqing_abc 发表于 2021-8-9 11:36:05

是不是为了保证读取的数据准确性?如果在DMA传输未完成的时候,读了数据,会不会读的数据不准确?

擦鞋匠 发表于 2021-8-9 13:40:28

yunqing_abc 发表于 2021-8-9 11:36
是不是为了保证读取的数据准确性?如果在DMA传输未完成的时候,读了数据,会不会读的数据不准确? ...

嗯,有这种可能性。
但是它这里说的是不能执行CPU相关读-改-写操作,而并没有强调是DMA可以寻址的这段内存。
我猜可能在DMA执行期间,读-该-写所有RAM地址都存在被篡改的风险。
不知道我的理解是否准确。

初音之恋 发表于 2021-8-9 14:17:17

但是DMA存在的意义就是在数据传输过程中CPU可以空出来干其他事啊。。。程序在运行肯定会有读写。。。

初音之恋 发表于 2021-8-9 14:19:02

初音之恋 发表于 2021-8-9 14:17
但是DMA存在的意义就是在数据传输过程中CPU可以空出来干其他事啊。。。程序在运行肯定会有读写。。。 ...

而且既然有0和1这两个选项不应该有问题,除非有bug
页: [1]
查看完整版本: 请教:在DMA传输期间禁止CPU读-改-写操作有什么意义?