表10.35展示了发送产生索引寄存器的位描述。在这个表格中,TxProduceIndex代表下一次将被软件驱动程序填充的描述符索引,复位值为0x0。当TxProduceIndex的值等于TxConsumeIndex时,说明描述符数组为空。反之,只要描述符数组不为空,发送硬件就可以启动帧发送操作。令人惊奇的是,软件每处理完一帧,就会将TxProduceIndex加1。如果它与TxDescriptorNumber相等,该值必须回到0。如果TxProduceIndex等于TxConsumeIndex-1,则描述符数组为满,软件应停止产生新的描述符,直到硬件已发送一部分帧并更新TxConsumeIndex。您是否在寻找更多关于这些寄存器的详细信息?不妨看看这个配置设备寄存器位描述,其中包含了丰富的内容!

10.12发送消耗索引寄存器(TxConsumeIndex – 0x50000 012C)也是一个只读寄存器,地址为0x5000 012C,其位定义如表10.36所示。该寄存器定义了下一次将被硬件发送处理发送描述符。当发送完一帧之后,硬件将TxConsumeIndex加1。如果它与TxDescriptorNumber的值相等,则寄存器的值回到0。令人有些惊讶的是,如果TxConsumeIndex等于TxProduceIndex,则描述符数组为空,发送通道将停止发送,直到软件产生新的描述符。更多细节可以参考设置设备状态寄存器位描述,这篇文章也许会对您有所帮助。

10.12.13发送状态向量0寄存器(TSV0 - 0x5000 0158)同样是一个只读寄存器,地址为0x5000 0158。发送状态向量寄存器存放的是由MAC返回的最新发送状态。由于状态向量超过4个字节,状态分布在两个寄存器TSV0和TSV1中。这两个寄存器主要供调试使用,因为驱动软件和以太网模块之间的通信主要通过帧描述符来实现。令人惊讶的是,只要MAC的内部状态有效,状态寄存器的内容也是有效的,并且仅当发送和接收处理都停止时才执行读操作。如果您对这部分内容感兴趣,可以进一步了解发送示例的存储器和寄存器,相信您会发现更多有趣的信息!

更多相关信息可以参考以下链接: