CPU 和 DMA 如何避免为抢占 xdata 总线而产生的总线总裁 ?
现在xdata,edata,然后在keil的时候,有code啊啥的这些存储器,究竟有多少,然后在keil里需要怎么强制转换,最后,哪些data是可以直接访问的,哪些是需要总线控制的,额,大概就是这么一回事,我假设一下,比如edata是直接访问变量的,xdata是需要通过总线去访问变量的,那如果我edata在dma读取或写入的时候,理论上来说,cpu在调取xdata的变量,应该不会两个路线堵车了,谢谢大神当 CPU 只使用 edata 时,
CPU 和 DMA 不会有为抢占 xdata 总线而产生的 总线总裁
STC32G12K128:
DMA 只会用到 8K的 xdata, 不会用到 4K的 edata;
CPU可以使用 8K的 xdata, 也可使用 4K的 edata;
当 CPU 只使用 edata 时,
CPU 和 DMA 不会有为抢占 xdata 总线而产生的 总线总裁
顶一下 这一页介绍的很明白
1.DMA与外设之间有单独的DMA总线。
2、DMA是独立在CPU之外的的。
3、DMA搬运数据的时候CPU可以做其他操作。 {:4_166:}{:4_166:}{:4_166:}喜欢看别人提问,总结不断进步 强制转换什么意思? Snapdragon 发表于 2024-1-20 09:15
强制转换什么意思?
类似于a=(int)b*10; lzl1okOK 发表于 2024-1-20 09:30
类似于a=(int)b*10;
这个和存储位置没关系,编译器自动完成的。 看下陈老师的教学视频 飞捷 发表于 2024-1-20 08:24
1.DMA与外设之间有单独的DMA总线。
2、DMA是独立在CPU之外的的。
3、DMA搬运数据的时候CPU可以做其他操作。 ...
我的意思是dma存储的位置应该是xdata位置吧,还是哪个位置{:4_167:},比如,我换个说法,我想dma不是最大缓存256个字节么,我cpu就一直在查询缓存了多少了,比如缓存了128字节,我就开始把前半段的数据转存出来,那这样就设置访问xdata,如果说xdata需要总线仲裁话,说明我不可能极快效率转存数据,或者是xdata是不需要经过总线的,那哪几个存储区是需要经过总线的么,谢谢你{:4_201:}
页:
[1]
2