一篇就够系列之Ethernet网卡驱动开发

        明确程序层次间的边界,是程序移植成功的要点,当然,做到明确的前提是明确每层涉及的具体内容,这样才能明白这一层的诉求是什么,也就是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移植

操作接口移植

数据管理移植

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡姆图拉夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值