【网络】 以太网DMA的一些知识记录
1、以太网DMA是干啥的?
DMA是一种功能,他可以在两个外设之间传递数据,不需要cpu干预,如:
当MCU支持RAM和Device之间DMA传输时,我们就可以使用DMA功能。
这里device是以太网的mac时,就是RAM和MAC可以直接通过DMA功能相互拷贝数据。
以太网是高速外设,一般mcu都会支持RAM和MAC之间通过DMA拷贝数据
2、怎么用DMA
要用DMA,得告诉MAC啥时候可以读,啥时候可以 写吧,这时候有一个寄存器可以控制这个,
同时呢,把ram的地址告诉mac,这样mac就可以操作ram了。
所以,需要自己申请一块ram内存,确定好内存的大小和地址,这样就可以使用DMA了。
假如只收发一个数据,就只申请一个发送/接收地址,上叙工作就完成了。
但是一般可能要读写多包数据,所以需要申请多个DMA描述符
3、DMA描述符是啥
DMA描述符就是表示每包数据的当前状态的,多个描述符就是多包数据的状态。
描述符:就是描述数据包的符合
所以,为了方便一般将多包数据串起来,形成一个链表。通常就把DMA描述符数量等同于DMA通道的数量了(DMA数据包)
4、DMA描述符申请多少
只要内存够,你申请多少应该都没问题
我们可以看到我们电脑的DMA发送/接收的缓冲区大小多少:
电脑的性能已经很棒了,设置的缓存区也不是很大
5、DMA和Cache的冲突
在高级的mcu中,都自带了cache了,当通过DMA更新数据到RAM时,CPU不知道,假如使用了cache,cpu以为cache数据还是最新的,会导致cpu访问的不是最新ram的数据。
所以通常做法是:将DMA的这一段RAM地址的cache功能,关断,让CPU每次都去ram拿数据,去避免数据一致性问题
原文地址:https://blog.csdn.net/baowxz/article/details/144104967
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!