IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 一篇就够系列之Ethernet网卡驱动开发 -> 正文阅读

[嵌入式]一篇就够系列之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移植

操作接口移植

数据管理移植

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 18:59:12  更:2021-09-11 18:59:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:21:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码