尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Linux网络驱动之Fixed-Link(35)

Linux网络驱动之Fixed-Link(35)
📅 发布时间:2026/6/22 8:20:00

接前一篇文章:Linux网络驱动之Fixed-Link(34)

本文内容参考:

RK3588+TRL8367s 四网口千兆交换机配置与性能优化实战-CSDN博客

嵌入式Linux驱动开发指南 —— 设备树语法与编译工具 —— 读懂这张“藏宝图“(3)-CSDN博客

特此致谢!

上一回开始对瑞芯微RK3588 SDK的dts文件和全志T113 SDK的dts文件中涉及到RTL8367交换机芯片的内容进行详细解析。先讲解RK3588的dts文件,没有讲完,本回继续。

  • RK3588的dts
// 这是假设你的RK3588 GMAC0控制器对应的MDIO总线节点是 &mdio0 &mdio0 { status = "okay"; // 删除可能自动生成的PHY节点,因为我们接的是交换机,不是直接PHY /delete-node/ phy@0; // 定义我们的交换机节点 switch: switch@0 { 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口 port@1 { reg = <1>; // 端口号,对应芯片物理端口 label = "lan1"; // 系统内显示的接口名,如 sw0p1 phy-handle = <&phy1>; // 指向下面MDIO总线定义的PHY // interrupt-parent = <&switch_intc>; // 如果需要端口中断则关联 // interrupts = <1>; }; port@2 { reg = <2>; label = "lan2"; phy-handle = <&phy2>; }; port@3 { reg = <3>; label = "lan3"; phy-handle = <&phy3>; }; port@4 { reg = <4>; label = "lan4"; phy-handle = <&phy4>; }; // 定义CPU口,连接RK3588的GMAC port@6 { // 注意: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: phy@1 { reg = <1>; // 可以关联中断 interrupt-parent = <&switch_intc>; interrupts = <1>; }; phy2: phy@2 { reg = <2>; interrupt-parent = <&switch_intc>; interrupts = <2>; }; phy3: phy@3 { reg = <3>; interrupt-parent = <&switch_intc>; interrupts = <3>; }; phy4: phy@4 { reg = <4>; interrupt-parent = <&switch_intc>; interrupts = <4>; }; }; }; };

10)第10段

// DSA相关,表明这是交换机成员 dsa,member = <0 0>;

DSA多交换机级联标识,格式如下:

dsa,member = <switch-id device-id>;

单交换机场景固定为<0 0>,告诉内核DSA子系统这是第0组、第0台交换机。

DSA的全称是Distributed Switch Architecture,中文译为分布式交换机架构。DSA的目标是让连接到交换机芯片上的每一个物理端口,在Linux系统中都能像一个独立的、标准的网络接口(比如LAN0、LAN1、WAN)那样被识别、配置和管理,同时又能充分利用交换机芯片的硬件转发能力,让数据包在端口间“直通”,无需CPU干预。

11)第11段

// 中断控制器(可选但推荐) switch_intc: interrupt-controller { …… };

在设备树语法中,节点的命名格式通常如下:

node-name@unit-address
  • node-name:节点名字,ASCII字符串,比如uart1、i2c0。
  • unit-address:设备的寄存器首地址,可省略。

在实际文件中,经常看到带标签的写法,比如:

cpu0: cpu@0 intc: interrupt-controller@00a01000

格式是:label: node-name@unit-address。冒号前面的cpu0和intc是节点标签,方便后面通过&label引用,不用每次敲那长长的一串名字。

这里的switch_intc就是标签,代表冒号后边的interrupt-controller(省略首地址)。

// 中断控制器(可选但推荐) switch_intc: interrupt-controller { interrupt-parent = <&gpio3>; interrupts = <16 IRQ_TYPE_LEVEL_LOW>; // 连接的中断GPIO interrupt-controller; #interrupt-cells = <1>; };

12)第12段

interrupt-parent = <&gpio3>;

interrupt-parent是Linux设备树中用来指定设备的中断信号连接到哪个中断控制器的属性‌,简单说就是告诉系统"这个设备的中断要交给谁来处理"。‌‌‌

这里,指定设备的中断信号(Switch的INT引脚)连接到RK3588的GPIO3。

13)第13段

interrupts = <16 IRQ_TYPE_LEVEL_LOW>; // 连接的中断GPIO

在Linux设备树(DTS)语法中,interrupts属性用于描述硬件外设的中断请求信号,其具体格式和含义由所连接的‌中断控制器‌决定。

这里,指定连接的中断GPIO为PC16,低电平触发。

14)第14段

interrupt-controller;

在 Linux 设备树(DTS)中,interrupt-controller是一个‌空属性‌,用于声明某个节点为‌中断控制器‌,使其能够接收、管理和路由来自其它外设的中断信号 。‌‌

15)第15段

#interrupt-cells = <1>;

Linux设备树(DTS)中‌,#interrupt-cells是中断控制器节点‌的必选属性,用于声明引用该控制器时,子节点在interrupts属性中描述一个中断源需要占用多少个32位单元(cell)‌。‌‌

更多内容请看下回。

相关新闻

  • Ubuntu 18.04下用APT安装PostgreSQL实战指南
  • Nmap端口扫描原理与实战:从主机发现到服务识别
  • 微信聊天记录永久备份终极指南:WeChatExporter完全使用教程

最新新闻

  • 微信投票制作步骤分享,一分钟学会小白也能搞定! - 微信投票小程序
  • 深度解析:APK图标编辑器技术架构与实现原理
  • 美国FBA空派物流哪些好? - 恒盛通物流
  • Windows APK安装器:告别安卓模拟器,三步在电脑上运行手机应用
  • FineCog-Nav:基于细粒度认知与大模型的无人机零样本视觉语言导航
  • 2026年6月最新|涂胶机生产厂家实力排名 实地测评权威榜单出炉 - 商业新知

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号