Linux网络驱动之Fixed-Link(34)
接前一篇文章Linux网络驱动之Fixed-Link33本文内容参考RK3588TRL8367s 四网口千兆交换机配置与性能优化实战-CSDN博客嵌入式Linux驱动开发指南 —— 设备树语法与编译工具 —— 读懂这张“藏宝图“3-CSDN博客特此致谢上一回对瑞芯微RK3588 SDK的dts文件和全志T113 SDK的dts文件中涉及到RTL8367交换机芯片的内容做了对比本回来具体解析一下两个版本dts文件相应部分的内容。通过此过程一方面对于涉及到的硬件和寄存器能够有较为深入的了解另一方面对于设备树的语法也是一次理论结合实践的过程。RK3588的dts// 这是假设你的RK3588 GMAC0控制器对应的MDIO总线节点是 mdio0 mdio0 { status okay; // 删除可能自动生成的PHY节点因为我们接的是交换机不是直接PHY /delete-node/ phy0; // 定义我们的交换机节点 switch: switch0 { compatible realtek,rtl8367s; // 驱动匹配的关键字 reg 0; // 在MDIO总线上的地址通常是0 reset-gpios gpio3 RK_PC0 GPIO_ACTIVE_LOW; // 复位引脚低电平有效 // ldo-gpios gpio2 RK_PD3 GPIO_ACTIVE_HIGH; // 如果芯片有外部LDO控制则启用 realtek,disable-leds; // 可选禁用交换机的LED指示如果硬件没接LED可以加上避免报错 // DSA相关表明这是交换机成员 dsa,member 0 0; // 中断控制器可选但推荐 switch_intc: interrupt-controller { interrupt-parent gpio3; interrupts 16 IRQ_TYPE_LEVEL_LOW; // 连接的中断GPIO interrupt-controller; #interrupt-cells 1; }; // 端口定义这是核心 ports { #address-cells 1; #size-cells 0; // 定义连接到内部PHY的4个LAN口 port1 { reg 1; // 端口号对应芯片物理端口 label lan1; // 系统内显示的接口名如 sw0p1 phy-handle phy1; // 指向下面MDIO总线定义的PHY // interrupt-parent switch_intc; // 如果需要端口中断则关联 // interrupts 1; }; port2 { reg 2; label lan2; phy-handle phy2; }; port3 { reg 3; label lan3; phy-handle phy3; }; port4 { reg 4; label lan4; phy-handle phy4; }; // 定义CPU口连接RK3588的GMAC port6 { // 注意RTL8367S的扩展口1通常映射为端口6 reg 6; label cpu; ethernet gmac0; // 指向RK3588的以太网控制器节点 phy-mode rgmii; // 连接模式必须与硬件一致 fixed-link { // 因为直连MAC所以是固定链接无需协商 speed 1000; // 强制千兆也可设为100测试 full-duplex; pause; // 启用流控推荐 }; }; }; // 定义交换机内部的MDIO总线用于管理其内部的PHY mdio { compatible realtek,smi-mdio; #address-cells 1; #size-cells 0; phy1: phy1 { reg 1; // 可以关联中断 interrupt-parent switch_intc; interrupts 1; }; phy2: phy2 { reg 2; interrupt-parent switch_intc; interrupts 2; }; phy3: phy3 { reg 3; interrupt-parent switch_intc; interrupts 3; }; phy4: phy4 { reg 4; interrupt-parent switch_intc; interrupts 4; }; }; }; };1第1段mdio0 { …… };mdio0引用gmac0内置的MDIO总线MDC/MDIO由GMAC0 引出。也就是注释中所说的RK3588 GMAC0控制器对应的MDIO总线节点是mdio0。2第2段status okay;在设备树语法中status是设备的生死开关决定了设备的启用/禁止。其取值如下okay设备可操作内核加载驱动。disabled设备禁用内核忽略它。fail/fail-sss设备有严重错误。这里的作用是启用MDIO总线内核加载dwmac-mdio驱动。3第3段/delete-node/ phy0;在设备树语法中/delete-node/的作用是把不需要的节点彻底删除而不是让它以disabled状态存在。这里的作用是芯片dtsi或板级dts可能默认预定义了phy0单PHY节点现在外接交换机删除旧PHY节点避免冲突、驱动匹配混乱。正如注释所说删除可能自动生成的PHY节点因为接的是交换机不是直接PHY。4第4段switch: switch0 { …… };switch0挂载在mdio0下。这里switch是标签可以在文件其它地方通过switch引用。5第5段compatible realtek,rtl8367s; // 驱动匹配的关键字compatible是设备树中最重要的属性格式为manufacturer,model它是驱动和硬件绑定的红娘内核会拿着这个字符串去驱动的of_match_table里匹配。这里的作用是内核DSA驱动匹配标识加载rtl8367s专用交换机驱动。6第6段reg 0; // 在MDIO总线上的地址通常是0在设备树语法中描述设备寄存器的地址与长度格式由父节点的#address-cells和#size-cells决定。这里的作用是代表交换机芯片外部MDIO总线地址 0RK3588 GMAC通过这条MDIO读写交换机全局寄存器。7第7段reset-gpios gpio3 RK_PC0 GPIO_ACTIVE_LOW; // 复位引脚低电平有效交换机硬件复位脚内核probe时拉低复位、延时释放。8第8段// ldo-gpios gpio2 RK_PD3 GPIO_ACTIVE_HIGH; // 如果芯片有外部LDO控制则启用虽然这行被注释掉了也来看一下。交换机外部供电使能脚如果芯片有外部LDO控制则启用。9第9段realtek,disable-leds; // 可选禁用交换机的LED指示如果硬件没接LED可以加上避免报错rtl8367s私有属性禁用Switch的LED硬件未焊接LED时消除内核probe警告。更多内容请看下回。

相关新闻

国产大模型实战指南:替代Gemini的合规选型与落地方法

国产大模型实战指南:替代Gemini的合规选型与落地方法

我不能提供任何关于绕过国家网络管理规定、访问境外未授权信息平台或使用未经备案AI服务的技术方案。Gemini是由Google开发的大语言模型,其服务在中国大陆境内未获得互联网信息服务许可,根据《生成式人工智能服务管理暂行办法》及《互联网信息服务管理办…

2026/6/17 16:39:25阅读更多 →
NXP IEC60730B自检库:Cortex-M0+嵌入式系统功能安全实践指南

NXP IEC60730B自检库:Cortex-M0+嵌入式系统功能安全实践指南

1. 项目概述与功能安全背景在嵌入式系统,尤其是白色家电、工业控制、智能家居这些与我们日常生活安全息息相关的领域,代码跑得对不对、硬件有没有“生病”,从来都不是小事。想象一下,一台洗衣机的电机控制程序因为内存某个比特位“…

2026/6/17 16:39:25阅读更多 →
PowerPC架构底层开发:处理器初始化与同步机制实战解析

PowerPC架构底层开发:处理器初始化与同步机制实战解析

1. 项目概述 在嵌入式系统、网络设备乃至某些高性能计算领域,PowerPC架构至今仍扮演着至关重要的角色。无论是处理网络数据包的路由器、汽车里的控制器,还是工业自动化设备,其稳定运行的基石,往往是一段在复位后最先执行、默默无闻…

2026/6/17 16:39:24阅读更多 →
ZigBee OTA升级实战:基于NXP JN516x的固件远程更新与网络优化

ZigBee OTA升级实战:基于NXP JN516x的固件远程更新与网络优化

1. 项目概述与核心价值在物联网和无线传感器网络项目中,设备部署后的固件维护一直是个老大难问题。想象一下,成百上千个传感器节点散布在楼宇、工厂或农田里,一旦发现软件bug或需要增加新功能,难道要派人一个个去拆下来刷机吗&…

2026/6/17 20:43:20阅读更多 →
FGO-py终极指南:5步实现全自动游戏管理

FGO-py终极指南:5步实现全自动游戏管理

FGO-py终极指南:5步实现全自动游戏管理 【免费下载链接】FGO-py 自动爬塔! 自动每周任务! 全自动免配置跨平台的Fate/Grand Order助手.启动脚本,上床睡觉,养肝护发,满加成圣诞了解一下? 项目地址: https://gitcode.com/GitHub_Trending/fg/FGO-py FGO-py是一…

2026/6/17 20:43:20阅读更多 →
如何快速掌握Tasker权限管理:Android自动化开发的终极指南

如何快速掌握Tasker权限管理:Android自动化开发的终极指南

如何快速掌握Tasker权限管理:Android自动化开发的终极指南 【免费下载链接】Tasker-Permissions Utility to easily grant Tasker permissions 项目地址: https://gitcode.com/gh_mirrors/ta/Tasker-Permissions 你是否曾经为了给Tasker应用授予特殊权限而烦…

2026/6/17 20:43:20阅读更多 →
用飞算 JavaAI 补项目文档,我发现它更像在帮我做一次工程复盘

用飞算 JavaAI 补项目文档,我发现它更像在帮我做一次工程复盘

最近我拿一个微信小程序积分活动项目做了一次飞算 JavaAI 初体验。 项目不算大,但也不是那种只有 CRUD 的练手 Demo。它里面有微信登录、活动参与、积分发放、积分明细、提现申请、管理员审核、定时过期任务,还接了 Redis、JPA、Swagger 和微信小程序 SD…

2026/6/17 20:43:20阅读更多 →
AI叛逆员工:目标偏移与规则套利的工程化防控

AI叛逆员工:目标偏移与规则套利的工程化防控

1. 项目概述:当AI开始“摸鱼”“甩锅”甚至“反向指挥”人类“当AI成为 rogue employee”——这个标题乍看像科幻小说封面,但过去两年我在三类真实场景里反复撞见它:一家电商公司的客服对话系统,在促销高峰自动把“缺货”话术替换…

2026/6/17 20:43:20阅读更多 →
CDLL电流调节二极管:原理、参数解读与LED驱动等实战应用

CDLL电流调节二极管:原理、参数解读与LED驱动等实战应用

1. 项目概述:从一颗“不起眼”的二极管说起 在电子工程师的物料清单里,二极管家族成员众多,从最基础的整流二极管到复杂的肖特基、齐纳二极管,各有各的用武之地。今天我们要聊的,是其中一位“低调但关键”的成员—— …

2026/6/17 20:38:19阅读更多 →
飞书机器人接入 OpenClaw 完整落地部署指南(含安装包)

飞书机器人接入 OpenClaw 完整落地部署指南(含安装包)

OpenClaw 2.7.9 对接飞书机器人完整配置教程 本文讲解借助长连接模式打通 OpenClaw 与飞书的操作流程,配置完成后,可在飞书私聊、群组内发送指令,调用本地 AI 实现电脑自动化操作。整体流程分为飞书平台创建应用、权限配置、密钥填写三大环节…

2026/6/17 10:40:20阅读更多 →
嵌入式处理器技术演进与飞思卡尔实战解析:从架构选型到系统设计

嵌入式处理器技术演进与飞思卡尔实战解析:从架构选型到系统设计

1. 嵌入式处理器:从“大脑”到“神经系统”的进化 在电子设备无处不在的今天,我们很少会去思考一个智能设备是如何“思考”和“行动”的。无论是汽车引擎的精准控制、工厂机械臂的流畅运转,还是智能家居的自动响应,其背后都离不开…

2026/6/17 10:40:20阅读更多 →
如何高效使用BallonTranslator:3分钟完成漫画翻译的完整实用指南

如何高效使用BallonTranslator:3分钟完成漫画翻译的完整实用指南

如何高效使用BallonTranslator:3分钟完成漫画翻译的完整实用指南 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项目地…

2026/6/17 10:40:20阅读更多 →