武汉加油!中国加油!
1、什么是以太网DMA?
学过STM32的同学都应该知道DMA就是不需要CPU的参与就能够实现内存和外设之间的数据交换,同样的,对于STM32互联型单片机的以太网DMA的作用也是如此,它的作用就是在不需要CPU的参与下,实现内存和以太网外设的数据交换。
用通俗一点的话来表述,就是我们将要发送的数据放到一片内存去,告诉以太网DMA,我已经将数据放过去了,你去取出来发送到网络中去吧。当网络数据来了的时候,以太网DMA自动将数据拷贝到一片内存中,产生中断告诉CPU,数据来了,你去取出来吧。
2、DMA描述符的本质是什么?
在STM32的参考手册中,我们可以找到发送描述符的定义,如下:
一眼看上去好像很复杂,这些是寄存器吗?但是找了一大堆文档,也没有找到它的寄存器地址,因为它根本就不是什么寄存器,而是4个32Bit的内存。对的,你去找发送描述符的硬件结构,是肯定找不到的,因为它完全是纯软件的概念,它的本质就是我们自己用结构体来实现这个描述符,然后将描述符的首地址写入到【ETH_DMATDLAR】寄存器中,STM32就知道这片内存是用来作为发送描述符了。
发送描述符的主要作用就是用来记录发送缓冲区的大小,缓冲区的地址,还有这个缓冲区的状