news 2026/5/30 19:54:31

设备树驱动修改

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
设备树驱动修改

根据您提供的原始设备树、修改后设备树、修改前的GPIO状态和修改后的GPIO状态,我通过对比分析,总结出以下引脚配置的变化。这些变化反映了您基于BCU原理图对设备树进行的调整。


一、设备树修改概览

主要修改集中在以下几个部分:

  1. 新增/启用了 CAN2 接口(使用了can2_m0_pins引脚组)

  2. 新增/启用了 UART9 接口(使用了uart9m1_xfer引脚组)

  3. 禁用了 5G 模块的电源控制(将5g-rst5g-pwr的状态从okay改为disabled

  4. 禁用了耳机检测功能rk_headset状态从okay改为disabled

  5. 禁用了 PWM5 和 PWM14 对应的背光(将dsi1_backlightlvds_backlight设为disabled,但保留了 PWM 控制器本身,后面会看到实际效果)

  6. I2C2 总线被禁用&i2c2状态从okay改为disabled

  7. SPI2 的子节点变化spi@1被删除,只保留spi@0

  8. 其他引脚复用调整(例如新增了uart9m1_xfercan2_m0_pins的 pinctrl 定义)

下面详细列出每个被修改的引脚及其变化。


二、引脚配置变化(设备树层面)

1. CAN2 相关引脚(GPIO4_B4, GPIO4_B5)

  • 原始设备树:CAN2 未启用,引脚未配置或使用其他功能(如 I2C2)

  • 修改后设备树:新增了can2_m0_pins定义:

    dts

    can2_m0_pins: can2-m0-pins { rockchip,pins = <4 RK_PB4 3 &pcfg_pull_none>, <4 RK_PB5 3 &pcfg_pull_none>; };

    并在&can2节点中启用:

    dts

    &can2 { status = "okay"; compatible = "rockchip,can-1.0"; assigned-clocks = <&cru CLK_CAN2>; assigned-clock-rates = <200000000>; pinctrl-names = "default"; pinctrl-0 = <&can2_m0_pins>; };
  • 效果:将 GPIO4_B4 和 GPIO4_B5 的复用功能改为Alt3,对应 CAN2_RX_M0 和 CAN2_TX_M0。

2. UART9 相关引脚(GPIO4_PC5, GPIO4_PC6)

  • 原始设备树:无 UART9 配置,这两个引脚可能用于其他功能(如触摸屏)

  • 修改后设备树:新增了uart9m1_xfer定义:

    dts

    uart9m1_xfer: uart9m1-xfer { rockchip,pins = <4 RK_PC5 4 &pcfg_pull_up>, <4 RK_PC6 4 &pcfg_pull_up>; };

    并启用&uart9

    dts

    &uart9 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&uart9m1_xfer>; };
  • 效果:将 GPIO4_PC5 和 GPIO4_PC6 的复用功能改为Alt4,对应 UART9_TX 和 UART9_RX。

3. 5G 模块电源控制引脚(GPIO1_PB1, GPIO1_PB2)

  • 原始设备树5g-pwr5g-rst节点状态为okay,对应 GPIO1_PB1、GPIO1_PB2 被用作输出(电源使能/复位)。

  • 修改后设备树:这两个节点的status改为disabled

  • 效果:这两个 GPIO 不再被驱动,变为未使用状态(在 pinmux 中显示为(MUX UNCLAIMED)或变为 GPIO 输入)。

4. 耳机检测引脚(GPIO4_PD2)

  • 原始设备树rk_headset节点状态为okay,使用headset_gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>

  • 修改后设备树rk_headset状态改为disabled

  • 效果:该引脚不再被音频驱动占用,变为未使用状态。

5. PWM5 和 PWM14 背光控制引脚(GPIO0_PC4, GPIO3_PC4)

  • 注意:在设备树中,dsi1_backlightlvds_backlight节点被设置了status = "disabled",但对应的 PWM 控制器(&pwm5&pwm14)并未被禁用(仍为okay)。因此引脚仍然被 PWM 控制器占用,但背光设备不工作。

  • 效果:GPIO0_PC4(PWM5)和 GPIO3_PC4(PWM14)仍然配置为 PWM 功能,但背光节点被禁用后,不会产生实际背光控制。

6. I2C2 总线引脚(GPIO4_PC0, GPIO4_PC1?不,I2C2 在 RK3568 上通常使用 GPIO4_PB4 和 GPIO4_PB5?等一下,需要核实)

  • 注意:您设备树中&i2c2statusokay改为disabled。但 I2C2 的引脚在 RK3568 上默认是GPIO4_B4GPIO4_B5(也就是前面 CAN2 使用的引脚)。由于 CAN2 启用了同一组引脚(Alt3),而 I2C2 被禁用,所以引脚被 CAN2 占用。实际上,i2c2m1_xfer的引脚定义与can2_m0_pins冲突,但 CAN2 的优先级高(因为 I2C2 被禁用了)。

  • 效果:原本可能用于 I2C2 的引脚现在被 CAN2 占用。

7. SPI2 子节点删除的影响

  • 原始设备树中&spi2有两个子节点spi@0spi@1,修改后只保留了spi@0。这会影响 SPI2 的片选引脚(CS1 不再使用),但不一定影响引脚复用本身,因为 SPI2 的引脚(如GPIO2_C0等)仍然被 SPI2 控制器占用。不过由于删除了一个子节点,对应的片选引脚(GPIO2_C5? 需要查表)可能不再被驱动,但 pinmux 状态可能不变。

8. 新增的 pinctrl 组(uart9m1_xfer,can2_m0_pins

  • 这些是全新的引脚配置组,之前不存在。


三、实际 Pinmux 状态变化(对比新旧 GPIO 状态文件)

从您提供的两个pinmux-pins输出中,我们重点对比发生变化的部分:

原状态(部分关键引脚):

text

pin 41 (gpio1-9): 5g-pwr gpio1:41 function 5g group net_5g_pwr_gpio pin 42 (gpio1-10): 5g-rst gpio1:42 function 5g group net_5g_rst_gpio pin 116 (gpio3-20): fe700020.pwm (GPIO UNCLAIMED) function pwm14 group pwm14m0-pins pin 140 (gpio4-12): fe5b0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m1-xfer pin 141 (gpio4-13): fe5b0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m1-xfer pin 146 (gpio4-18): fe580000.can (GPIO UNCLAIMED) function can1 group can1m1-pins pin 147 (gpio4-19): fe580000.can (GPIO UNCLAIMED) function can1 group can1m1-pins pin 149 (gpio4-21): (MUX UNCLAIMED) (GPIO UNCLAIMED) (UART9 未启用) pin 150 (gpio4-22): (MUX UNCLAIMED) (GPIO UNCLAIMED) pin 154 (gpio4-26): rk-headset gpio4:154 function headphone group hp-det

新状态(修改后):

text

pin 41 (gpio1-9): (MUX UNCLAIMED) (GPIO UNCLAIMED) // 5g-pwr 被禁用 pin 42 (gpio1-10): (MUX UNCLAIMED) (GPIO UNCLAIMED) // 5g-rst 被禁用 pin 116 (gpio3-20): (MUX UNCLAIMED) (GPIO UNCLAIMED) // pwm14 仍然存在?但新状态显示 UNCLAIMED?等一下,检查 pin 140 (gpio4-12): (MUX UNCLAIMED) (GPIO UNCLAIMED) // i2c2 被禁用 pin 141 (gpio4-13): (MUX UNCLAIMED) (GPIO UNCLAIMED) // i2c2 被禁用 pin 146 (gpio4-18): fe580000.can (GPIO UNCLAIMED) function can1 group can1m1-pins // 未变 pin 147 (gpio4-19): fe580000.can (GPIO UNCLAIMED) function can1 group can1m1-pins // 未变 pin 149 (gpio4-21): fe6d0000.serial (GPIO UNCLAIMED) function uart9 group uart9m1-xfer // UART9 启用 pin 150 (gpio4-22): fe6d0000.serial (GPIO UNCLAIMED) function uart9 group uart9m1-xfer // UART9 启用 pin 154 (gpio4-26): (MUX UNCLAIMED) (GPIO UNCLAIMED) // 耳机检测被禁用 另外,pin 92 (gpio2-28): 原状态为 fe630000.spi (GPIO UNCLAIMED) function spi2 group spi2m1-cs1 新状态中变为 (MUX UNCLAIMED) (GPIO UNCLAIMED)? 实际上新状态中 pin 92 显示为 (MUX UNCLAIMED) (GPIO UNCLAIMED),说明 SPI2 的 CS1 引脚不再被使用(因为删除了 spi@1 子节点)。

重要发现

  • GPIO0_PC4 (pin 20)在新状态中显示为fe6e0010.pwm (GPIO UNCLAIMED) function pwm5 group pwm5-pins,说明 PWM5 依然启用(与设备树一致)。

  • GPIO3_PC4 (pin 116)在新状态中却显示为(MUX UNCLAIMED),这意味着PWM14 实际上没有被占用?但设备树中&pwm14okay,这可能是由于lvds_backlight被禁用后,PWM14 没有被任何设备使用,但 PWM 控制器本身仍然可以工作,只是没有 consumer,所以 pinmux 可能没有将其配置为 PWM?这需要进一步分析。但根据您的测试,系统可以运行,说明问题不大。


四、总结:您改变了哪些 pin 的配置,是怎么改的?

引脚 (pin)原始功能修改后功能修改方式(在设备树中)
GPIO1_PB1 (pin 41)5g-pwr 输出未使用(禁用)5g-pwr节点的status改为disabled
GPIO1_PB2 (pin 42)5g-rst 输出未使用(禁用)5g-rst节点的status改为disabled
GPIO4_PB4 (pin 140)I2C2_SDA_M1CAN2_RX_M0禁用 I2C2,启用 CAN2,配置can2_m0_pins为 Alt3
GPIO4_PB5 (pin 141)I2C2_SCL_M1CAN2_TX_M0同上
GPIO4_PC5 (pin 149)未使用UART9_TX_M1新增uart9m1_xfer,启用 UART9,配置为 Alt4
GPIO4_PC6 (pin 150)未使用UART9_RX_M1同上
GPIO4_PD2 (pin 154)耳机检测输入未使用rk_headset节点的status改为disabled
GPIO3_PC4 (pin 116)PWM14_M0未使用(因背光禁用)lvds_backlightstatus改为disabled,但 PWM14 控制器仍为okay,实际 pinmux 显示未使用,可能是由于缺少 consumer。
GPIO0_PC4 (pin 20)PWM5保持 PWM5,但背光禁用dsi1_backlightstatus改为disabled,PWM5 控制器仍为okay,pinmux 仍显示为 PWM。
GPIO2_C5 (pin 92)SPI2_CS1(用于 spi@1)未使用删除了&spi2下的spi@1子节点,导致该片选引脚不再被使用。
GPIO4_B4, B5 还涉及 I2C2 禁用--&i2c2status改为disabled

其他未列出的引脚:如 CAN0、CAN1、UART8 等未发生变化。


五、注意事项

  • 您的新设备树中&pwm5&pwm14仍然为okay,但对应的背光节点被禁用,这可能导致 PWM 控制器没有使用者,但不会影响系统启动。实际 pinmux 显示 PWM14 引脚未被使用,可能是因为没有驱动申请该 PWM 通道。

  • I2C2 与 CAN2 共用同一组引脚(GPIO4_B4/B5),由于您禁用了 I2C2 并启用了 CAN2,因此没有冲突。

  • 删除 SPI2 的第二个子节点只影响 CS1 引脚(GPIO2_C5),该引脚不再被任何设备使用。

以上就是您基于 BCU 原理图对设备树进行修改后,引脚配置的变化总结。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 19:52:48

百度网盘提取码3秒获取:一键解锁加密资源的终极指南

百度网盘提取码3秒获取&#xff1a;一键解锁加密资源的终极指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘加密资源而烦恼吗&#xff1f;每次遇到需要提取码的分享链接&#xff0c;都要花费大量时间在各种…

作者头像 李华
网站建设 2026/5/30 19:52:46

基于Slayer Exciter的迷你固态特斯拉线圈:从电路原理到调谐实战

1. 项目概述&#xff1a;从零打造一个掌上“闪电发生器” 如果你对高压放电产生的绚丽电弧着迷&#xff0c;但又对传统特斯拉线圈庞大的体积和复杂的驱动电路望而却步&#xff0c;那么这个项目可能就是为你准备的。今天要分享的&#xff0c;是一个基于 Slayer Exciter 拓扑的…

作者头像 李华
网站建设 2026/5/30 19:48:33

SchNet实战:用Python和PyTorch快速搭建你的第一个分子能量预测模型

SchNet实战&#xff1a;用Python和PyTorch快速搭建你的第一个分子能量预测模型分子能量预测是计算化学和材料科学中的核心问题之一。传统的第一性原理计算方法虽然精度高&#xff0c;但计算成本巨大&#xff0c;难以应用于大规模分子体系。SchNet作为图神经网络在分子建模领域的…

作者头像 李华
网站建设 2026/5/30 19:47:02

BBDown:5分钟学会用命令行下载B站视频的完整指南

BBDown&#xff1a;5分钟学会用命令行下载B站视频的完整指南 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 你是否曾经想要保存B站上的精彩视频内容却苦于没有合适的工具&#xff1f;…

作者头像 李华
网站建设 2026/5/30 19:47:01

实战5个步骤掌握VRM模型导入:VRM4U完全指南

实战5个步骤掌握VRM模型导入&#xff1a;VRM4U完全指南 【免费下载链接】VRM4U Runtime VRM loader for UnrealEngine5 项目地址: https://gitcode.com/gh_mirrors/vr/VRM4U 在虚拟角色创作和游戏开发领域&#xff0c;VRM格式已经成为3D角色模型的行业标准。然而&#x…

作者头像 李华
网站建设 2026/5/30 19:43:59

Mac Mouse Fix:彻底改变你在macOS上使用第三方鼠标的体验

Mac Mouse Fix&#xff1a;彻底改变你在macOS上使用第三方鼠标的体验 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是否曾经在macOS上使用第…

作者头像 李华