admin管理员组

文章数量:1657549

        明确程序层次间的边界,是程序移植成功的要点,当然,做到明确的前提是明确每层涉及的具体内容,这样才能明白这一层的诉求是什么,也就是API接口的含义。

        比如ETH的组成,所涉及的外设包括DMA、MAC控制器、接口选择控制器、复用IO接口以及外部PHY芯片,底层的硬件初始化,就是对这些外设的初始化。

        LWIP协议栈,本质就是一套应用软件,此协议必回调用底层ETH的初始化、HAL库提供的操作函数,对于协议栈出现的结构体,必回申请一部分内存空间使用,明确这些要素,移植的相关操作便会清晰明了。

相关概念

        描述符

        描述一个事物的数据结构,在C语言中就是struct,在java中就是class。

ETH框图

        在进行数据发送时,首先将数据由系统存储器以 DMA 的方式送至发送 FIFO (Tx FIFO) 进行缓冲,再通过 MAC 内核发送。同样,接收 FIFO (Rx FIFO) 则存储通过线路接收的以太网帧,直到这些帧通过 DMA 传送到系统存储器。

        以太网外设还包括用于与外部 PHY 通信的 SMI。通过一组配置寄存器,用户可以为 MAC 控制器和 DMA 控制器选择所需模式和功能。

        使用以太网,AHB频率至少25M。

ETH相关接口

SMI接口写操作

        操作MAC中的寄存器,使其触发对PHY芯片的写操作。

        使用到的具体寄存器名称为以太网 MAC MII 地址寄存器 (ETH_MACMIIAR)。

SMI接口读操作

        操作方式与写操作类似。

SMI接口的时钟

        最终来源于AHB,是否分频由MAC的寄存器控制。

MII/SMII接口

         SYSCFG_PMC 寄存器进行配置,外部芯片需要通过SMI接口配置。

MII接口时钟

        MCU的MCO引脚输出时钟,另一种使用25M晶振。

RMII接口时钟

        使用外部 50 MHz 时钟驱动 PHY ,另一种使用嵌入式 PLL 生成 50 MHz 频率信号来驱动 PHY。

ETH相关功能(MAC 802.3 )

        802.3主要规范了MAC数据的帧格式。

帧数据发送/接收

        DMA控制发送路径上的所有事务。

        MAC接收的帧会推入RX FIFO。FIFO接收到64字节或者完整数据包时,数据将弹出,然后DMA向AHB发起传输。

        详细发送和接收的细节可参考《STM32F4xx中文参考手册》。

MAC的其它功能

        比如中断、过滤功能、MAC的回送模式、MAC管理计数器(MMC)、电源管理(PMT)、精密时间协议(PTP)等功能,在操作中若有涉及可查询手册。

 ETH相关功能(DMA控制器操作)

        DMA控制器为操作路径的最前端,驱动程序的设计也是围绕其进行。MCU与DMA之间通信数据为以下两种:

  •         控制和状态寄存器(CSR)
  •         描述符列表(即一系列的struct)和数据缓冲区

ETH底层驱动编写

MAC

DMA

RMII与MII的选择

IO引脚的配置

LWIP移植

操作接口移植

数据管理移植

本文标签: 网卡驱动系列之Ethernet