Stm32CubeMX 为 stm32mp135d 添加网卡 eth
- 一、启用设备
-
- [1. eth 设备添加](#1. eth 设备添加)
- [2. eth 引脚配置](#2. eth 引脚配置)
- [2. eth 时钟配置](#2. eth 时钟配置)
- [二、 生成代码](#二、 生成代码)
-
- [1. optee 配置](#1. optee 配置)
- [2. uboot 配置](#2. uboot 配置)
- [3. linux 配置](#3. linux 配置)
bringup 可参考:Stm32CubeMX 生成设备树
一、启用设备
1. eth 设备添加
我这里只启用一个eth设备,另一个eth配置是一样的,选择好网卡phy接口(interface) :MII, RMII, RGMII
我的phy使用是裕太yt8512百兆 ,接口RMII ,需要先选中ETH Ref Clock Input
,才可以选择RMII
确定接口类型很重要,务必根据自己的phy手册确定
2. eth 引脚配置
参考这里,选择 GPIO 功能复用,配置自己板子eth所需的引脚
2. eth 时钟配置
根据自己板子用的phy手册 配置时钟
确认以下几点:
-
- phy 需要多少兆时钟,是否有晶振(Crystal)
-
- 是Soc 的 eth 给 网卡 phy 提供时钟,还是 网卡 phy 给 Soc 的 eth 提供时钟
使用PLL4P,还是PLL3Q,自己决定
- 是Soc 的 eth 给 网卡 phy 提供时钟,还是 网卡 phy 给 Soc 的 eth 提供时钟
全部配置完后,点击代码生成
二、 生成代码
1. optee 配置
optee这里就生成了两行代码:
一行用来配置时钟:
shell
st,clksrc = <
CLK_ETH1_PLL4P
...
一行用来通过安全验证:
shell
...
st,decprot = <
DECPROT(STM32MP1_ETZPC_ETH1_ID, DECPROT_NS_RW, DECPROT_UNLOCK)
...
github :optee 仓库
gitee : optee 仓库
2. uboot 配置
对u-boot 生成的代码进行补充一些配置:st官方的设备树配置方法: eth device tree config
这是我的设备树配置 ,根据自己的板子确定配置
这里ETH 的 reset引脚不用放到引脚配置 中,而是作为单独的 gpio 来使用了:reset-gpios = <&gpioa 6 GPIO_ACTIVE_LOW>;
引脚配置在stm32cubemx
好的话,生成的代码中 pinctrl 就无需再更改了
github : uboot 仓库
gitee : uboot 仓库
3. linux 配置
linux下eth配置和u-boot没有什么区别,引脚是和u-boot相同的:
github : linux 仓库
gitee : linux 仓库
目前在我使用 stm32mp135 调试的设备中,网卡是最麻烦的,时钟配置,硬件排查等问题,后面单独开一篇文章大概描述一下
能力一般,水平有限,知识浅薄,如果能帮到您,那我感到很荣幸