This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3356:GPIO 控制问题

Guru**** 2967250 points

Other Parts Discussed in Thread: TPS65910

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/672219/linux-am3356-gpio-control-issue

器件型号:AM3356
主题中讨论的其他器件:TMDSSK3358、 TPS65910

工具/软件:Linux

我们的一个应用要求将 GPMC_be1n 用作 GPIO 引脚、最初引脚多路复用器详细信息反映引脚模式设置为0x00000008、这意味着它未配置为 GPIO (MUX 模式0x7)。 因此、我修改了 DTS 文件以在引脚复用器中将引脚启用为 GPIO。 完成此操作后、pinmux 详细信息反映了我们的更改、即模式更改为0x00000037。 (CAT 引脚(sys/kernel/debug/pinctrl/44e1087.pinmux))

我执行了以下操作:(使用 sysfs)

echo 60 >导出

回声"out"> gpio60/方向

回波0 > gpio60/值

但在探测引脚时、它始终处于高电平状态。 DTS 更改后,我可以使用 sysfs 接口控制其他引脚(GPIO3_13、GPIO3_20等,默认引脚复用设置为0x00000020,修改后的 DTS 为0x00000037)

我也能够使用 GPIO 命令从 Uboot 控制引脚。 (此处是使用 MW 0x44e10878 w 0x00000037修改的 pinmux)

在 Linux 中,我尝试使用 devmem2来写入 GPIO 寄存器

devmem2 0x4804c134 w 0xEFFDFFFF

devmem2 0x4804c13C w 0x00000000

这使得引脚能够在探测时将状态更改为低电平。

那么、有人能帮我找出引脚上的 sysfs 接口问题吗? 下面是我所做的 DTS 修改

am33xx_pinmux:pinmux@44e10800{
      pinctrl-names ="default";

(笑声)

GPIO1_Pins:pinmux_GPIO1_Pins{
         pinctrl-single、pins =<
            0x78 (0x37) /* GPIO1_28,conf_GPMC_BEN1*/
         >;
      };

GPIO3_Pins:pinmux_gpio3_pins{/*由 SVR*/添加
                       pinctrl-single、pins =<
                     0x1A8 (0x37) /* GPIO3_20、conf_McASP0 */
                               0x234 (0x37)/* GPIO3_13、conf_USB1_drvbu */
                       >;
               };
(笑声)   

};

(笑声)

GPIO1{&gpio1}
   pinctrl-names ="default";
   pinctrl-0 =<&GPIO1_PINs>;
   状态="正常";
};

GPIO3{&G
       pinctrl-names ="default";
       pinctrl-0 =<&GPIO3_PINs>;
       状态="正常";
};

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sai、

    有几个可疑点可供检查。 该引脚可能会在 U-Boot 中进行引脚多路复用、请参阅 此 和此线程、或者与 本例类似、根本不会进行引脚多路复用。 另一点是、您可能会像 在这个线程和这个线程中那样不正确地计算 GPIO 编号。

    此致、
    Kemal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kemal、

    感谢您的回复。

    当我在 uboot 源代码(u-boot- /board/ti/am335x/mux.c)如果不修改 DTS 文件以设置相同的文件( 引脚与模式7相同),我就能够使用 sysfs 来控制 GPIO!!

    但我想使用 DTS 文件而不是 uboot 来设置相同的文件。 此外、当在 uboot 和 DTS 文件中将 GPIO1_28引脚引脚引脚引脚多路复用为模式7时、我无法通过 sysfs 对其进行控制。 问题是否与我在 DTS 文件中的处理方式有关? 但是,通过 DTS 文件中类似的更改,我能够控制其他 GPIO (GPIO3_13、GPIO3_20)。

    您能不能帮助我解决这个问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    GPMC_BEN1.GPIO1_28已在中引脚多路复用为 GPMC_BEN1.mmc2_dat3 /board-support/u-boot- /arch/arm/dts/am335x-evm.dts. 你没看到吗?
     
       mmc3_pins:pinmux_mmc3_pins{
          pinctrl-single、pins =<
             0x44 (PIN_INPUT_PULLUP | MUX_MODE3)   /* GPMC_A1.mmc2_DAT0、INPUT_PULLUP | MODE3 */
             0x48 (PIN_INPUT_PULLUP | MUX_MODE3)   /* GPMC_A2.mmc2_DAT1、INPUT_PULLUP | MODE3 */
             0x4C (PIN_INPUT_PULLUP | MUX_MODE3)   /* GPMC_A3.mmc2_DAT2、INPUT_PULLUP | MODE3 */
             0x78 (PIN_INPUT_PULLUP | MUX_MODE3)   /* GPMC_BEN1.mmc2_DAT3、INPUT_PULLUP | MODE3 */
             0x88 (PIN_INPUT_PULLUP | MUX_MODE3)   /* GPMC_csn3.mmc2_cmd、INPUT_PULLUP | MODE3 */
             0x8C (PIN_INPUT_PULLUP | MUX_MODE3)   /* GPMC_clk.mmc2_clk、INPUT_PULLUP | MODE3 */
          >;
       };

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我没有 将 AM335x-EVM.dts 用于我们的应用。 在 AM335x.dtsi 和 DTS 文件(我已针对我们的应用进行了编辑)中、可以确保除 pinmux_GPIO1_pins 之外的任何其他位置都不提供相应引脚的 pinmux、而 pinmux_gpio1_pins 是我在第一条注释中添加的支持。

    正如您所说,uboot 是否会使用设备树二进制文件来进行引脚多路复用? 我的印象是只有 Linux 使用相同的软件。  我知道 Uboot 使用 mux.c 文件中提供的配置来设置引脚 mux 寄存器。

    我的当前状态:在 uboot 的 mux.c 中添加引脚多路复用配置后,可以使用 sys/class/gpio 进行 GPIO 控制。 在这种情况下、Linux DTS 没有针对 GPIO1_28 (GPMC_be1n)的引脚多路复用覆盖。

    当我在 DTS 文件中添加相同的内容时、在 uboot 中进行更改/不进行更改、GPIO 控制不起作用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    /*
     *版权所有(C) 2012德州仪器(TI)公司- http://www.ti.com/
     *
     *此程序是免费软件;您可以重新分发和/或修改
     *根据 GNU 通用公共许可证第2版的条款,如所示
     *由免费软件基金会发布。
     *

    /*
     * AM335x 入门套件
     * www.ti.com/.../tmdssk3358
     *

    /DTS-v1/;

    #include "am33xx.dtsi"

    /{
       型号="TI AM335x SYNC-OEM";
       兼容="ti、am335x-evmsk"、"ti、am33xx";

       CPU{
           CPU@0{
               CPU0-SUPPLY =<_vdd1_reg>;
           };
       };

       内存{
           DEVICE_TYPE ="存储器";
           REG =<0x8000000000 0x10000000>;/* 256 MB */
       };

       am33xx_pinmux:pinmux@44e10800{
           pinctrl-names ="default";
           

           i2c0_pins:pinmux_i2c0_pins{
               pinctrl-single、pins =<
                   0x188 (PIN_INPUT_PULLUP | MUX_MODE0)   /* i2c0_sda.i2c0_sda *
                   0x18c (PIN_INPUT_PULLUP | MUX_MODE0)   /* i2c0_SCL.i2c0_SCL *
               >;
           };
           
           i2c1_pins:pinmux_i2c1_pins{
               pinctrl-single、pins =<
                   0x158 (PIN_INPUT_PULLUP | MUX_MODE2)   /* spi0_D1.i2c1_sda *
                   0x15c (PIN_INPUT_PULLUP | MUX_MODE2)   /* spi0_cs0.i2c1_SCL *
               >;
           };
           
           i2c2_pins:pinmux_i2c2_pins{
               pinctrl-single、pins =<
                   0x150 (PIN_INPUT_PULLUP | MUX_MODE2)   /* spi0_SCLk.i2c0_sda *
                   0x154 (PIN_INPUT_PULLUP | MUX_MODE2)   /* spi0_d0.i2c0_SCL *
               >;
           };
           Dcan1_pins:pinmux_dcan1_pins{
           pinctrl-single、pins =<
                   0x100 (PIN_OUTPUT 下拉| MUX_Mode4)/* mmc0_clk.dcan1_TXD *
                   0x104 (PIN_INPUT | MUX_MODE4)      /* mmc0_cmd.scan1_RxD *
               >;
           };

               GPIO1_PINS:pinmux_GPIO1_PINS{/*这不起作用*/
               pinctrl-single、pins =<
                   0x78 (0x37)/*(PIN_OUTPUT | MUX_MODE7)*//* GPIO1_28、conf_GPMC_BEN1*/
               >;
           };
               GPIO3_Pins:pinmux_gpio3_pins{/*这起作用*/
                           pinctrl-single、pins =<
                   0x1A8 (0x37)/*(PIN_OUTPUT | MUX_MODE7)*//* GPIO3_20、conf_McASP0 */
                                   0x234 (0x37)/*(PIN_OUTPUT | MUX_MODE7)*//* GPIO3_13、conf_USB1_drvbu*/
                           >;
                   };

           uart0_pins:pinmux_uart0_pins{
               pinctrl-single、pins =<
                   0x168 (PIN_INPUT | MUX_MODE0)      /* uart0_CTSN.uart0_CTSN *
                   0x16C (PIN_OUTPUT 下拉| MUX_MODE7)/* uart0_rtsn .uart0_rtsn *
                   0x170 (PIN_INPUT_PULLUP | MUX_MODE0)   /* uart0_Rxd.uart0_RXD *
                   0x174 (PIN_OUTPUT 下拉| MUX_MODE0)/* uart0_TXD.uart0_TXD *
               >;
           };
           uart1_pins:pinmux_uart1_pins{
               pinctrl-single、pins =<
                   0x178 (PIN_INPUT | MUX_MODE0)      /* uart1_CTSN.uart1_CTSN *
                   0x17C (PIN_OUTPUT 下拉| MUX_MODE0)/* uart1_rtsn.uart1_rtsn *
                   0x180 (PIN_INPUT_PULLUP | MUX_MODE0)   /* uart1_Rxd.uart1_RxD *
                   0x184 (PIN_OUTPUT 下拉| MUX_MODE0)/* uart1_TXD.uart1_TXD *  
                   0xFC (PIN_INPUT | MUX_MODE4)       /* mmc0_data0.uart1_ri *
                   0xf8 (PIN_OUTPUT 下拉| MUX_Mode4) /* mmc0_data0.uart1_dtr *
                   0xf4 (PIN_INPUT | MUX_MODE4)       /* mmc0_data0.uart1_DSR *
                   0xF0 (PIN_INPUT | MUX_MODE4)       /* mmc0_data0.uart1_DCD *
               >;
           };
           
           uart3_pins:pinmux_uart3_pins{
               pinctrl-single、pins =<
                   0x164 (PIN_OUTPUT_PULLUX | MUX_MODE1)/* ecap0_in_pwm0_OUT.UART3_TXD *
                   0x160 (PIN_INPUT_PULLUP | MUX_MODE1)   /* spi0_CS1.UART3_RXD *
                   0xCC (PIN_OUTPUT 下拉| MUX_MODE7) /* LCD_DATA11.UART3_RTSN *
                   0xC8 (PIN_INPUT | MUX_MODE6)       /* LCD_DATA10.UART3_CTSN *
               >;
           };
           uart5_pins:pinmux_uart5_pins{
               pinctrl-single、pins =<
                   0xD8 (PIN_INPUT | MUX_MODE6)       /* LCD_data14.uart5_CTSN *
                   0xDC (PIN_OUTPUT 下拉| MUX_MODE7) /* LCD_data15.uart5_rtsn *
                   0xc4 (PIN_INPUT_PULLUP | MUX_MODE4)/* LCD_data9.uart5_RXD *
                   0xC0 (PIN_OUTPUT 下拉| MUX_MODE4) /* LCD_data8.uart5_TxD *
               >;
           };
           SPI1_Pins:pinmux_SPI1_Pins{
               pinctrl-single、pins =<
                   0x108 (PIN_OUTPUT 上拉| MUX_Mode2)  /* McASP0_aclkx.SPI1_SCLK、OUTPUT 上拉| Mode2 */
                   0x10C (PIN_INPUT_PULLUP | MUX_MODE2)   /* McASP0_FSX.SPI1_d0、INPUT_PULLUP | MODE2 */
                   0x110 (PIN_OUTPUT 上拉| MUX_Mode2)  /* McASP0_axr0.SPI1_D1、OUTPUT 上拉| Mode2 */
                   0x144 (PIN_OUTPUT 上拉| MUX_Mode2)  /* McASP0_ahclkr.SPI1_cs0、OUTPUT 上拉| Mode2 */
               >;
           };
           nandflash_pins_default:nandflash_pins_default{
               pinctrl-single、pins =<
                   0x0 (PIN_INPUT_PULLUP | MUX_MODE0) /* GPMC_AD0.GPMC_AD0 */
                   0x4 (PIN_INPUT_PULLUP | MUX_MODE0) /* GPMC_AD1.GPMC_AD1 */
                   0x8 (PIN_INPUT_PULLUP | MUX_MODE0) /* GPMC_AD2.GPMC_AD2 *
                   0xc (PIN_INPUT_PULLUP | MUX_MODE0) /* GPMC_AD3.GPMC_AD3 *
                   0x10 (PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD4.GPMC_AD4 */
                   0x14 (PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD5.GPMC_AD5 *
                   0x18 (PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD6.GPMC_AD6 *
                   0x1c (PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD7.GPMC_AD7 *
                   0x70 (PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_wait0.GPMC_wait0 */
                   0x74 (PIN_INPUT_PULLUP | MUX_MODE7)/* GPMC_WPN.GPIO0_30 */
                   0x7c (PIN_OUTPUT | MUX_MODE0)      /* GPMC_csn0.GPMC_csn0 */
                   0x90 (PIN_OUTPUT | MUX_MODE0)      /* GPMC_advn_ALe.GPMC_advn_ALE */
                   0x94 (PIN_OUTPUT | MUX_MODE0)      /* GPMC_oen_ren。GPMC_oen_ren *
                   0x98 (PIN_OUTPUT | MUX_MODE0)      /* GPMC_WN.GPMC_Wen */
                   0x9C (PIN_OUTPUT | MUX_MODE0)      /* GPMC_be0n_cle。GPMC_be0n_cle *
               >;
           };

           nandflash_pines_sleep:nandflash_pines_sleep{
               pinctrl-single、pins =<
                   0x0 (PIN_INPUT_PULLUGD | MUX_MODE7)
                   0x4 (PIN_INPUT 下拉| MUX_MODE7)
                   0x8 (PIN_INPUT 下拉| MUX_MODE7)
                   0xc (PIN_INPUT_PULLUGD | MUX_MODE7)
                   0x10 (PIN_INPUT 下拉| MUX_MODE7)
                   0x14 (PIN_INPUT_PULLUX | MUX_MODE7)
                   0x18 (PIN_INPUT 下拉| MUX_MODE7)
                   0x1c (PIN_INPUT_PULLUX | MUX_MODE7)
                   0x70 (PIN_INPUT 下拉| MUX_MODE7)
                   0x74 (PIN_INPUT 下拉| MUX_MODE7)
                   0x7c (PIN_INPUT_PULLUP | MUX_MODE7)
                   0x90 (PIN_INPUT 下拉| MUX_MODE7)
                   0x94 (PIN_INPUT 下拉| MUX_MODE7)
                   0x98 (PIN_INPUT 下拉| MUX_MODE7)
                   0x9C (PIN_INPUT_PULLUX | MUX_MODE7)
               >;
           };


           cpsw_default:cpsw_default{
               pinctrl-single、pins =<
                   /*从属设备1 */
                   0x114 (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txen.rgmii1_tctl *
                   0x118 (PIN_INPUT_PULLUX | MUX_Mode2) /* mii1_rxdv.rgmii1_rctl *
                   0x11c (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd3.rgmii1_td3 */
                   0x120 (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd2.rgmii1_td2 */
                   0x124 (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd1.rgmii1_TD1 *
                   0x128 (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd0.rgmii1_td0 */
                   0x12c (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txclk.rgmii1_tclk *
                   0x130 (PIN_INPUT_PULLUG| MUX_Mode2) /* mii1_rxclk.rgmii1_RCLK */
                   0x134 (PIN_INPUT_PULLUX | MUX_MODE2) /* mii1_rxd3.rgmii1_rd3 *
                   0x138 (PIN_INPUT_PULLUX | MUX_MODE2) /* mii1_rxd2.rgmii1_RD2 *
                   0x13c (PIN_INPUT_PULLUX | MUX_MODE2) /* mii1_rxd1.rgmii1_RD1 *
                   0x140 (PIN_INPUT_PULLUX | MUX_Mode2) /* mii1_rxd0.rgmii1_rd0 *

                   /*从机2 */
                   0x40 (PIN_OUTPUT 下拉| MUX_Mode2) /* GPMC_a0.rgmii2_tctl *
                   0x44 (PIN_INPUT_PULLUX | MUX_MODE2)  /* GPMC_A1.rgmii2_rctl *
                   0x48 (PIN_OUTPUT 下拉| MUX_Mode2) /* GPMC_A2.rgmii2_td3 */
                   0x4c (PIN_OUTPUT 下拉| MUX_Mode2) /* GPMC_A3.rgmii2_td2 *
                   0x50 (PIN_OUTPUT 下拉| MUX_Mode2) /* GPMC_A4.rgmii2_TD1 *
                   0x54 (PIN_OUTPUT 下拉| MUX_Mode2) /* GPMC_A5.rgmii2_td0 */
                   0x58 (PIN_OUTPUT 下拉| MUX_Mode2) /* GPMC_A6.rgmii2_tclk *
                   0x5c (PIN_INPUT_PULLUX | MUX_MODE2)  /* GPMC_A7.rgmii2_RCLK *
                   0x60 (PIN_INPUT_PULLUX | MUX_MODE2)  /* GPMC_A8.rgmii2_rd3 *
                   0x64 (PIN_INPUT_PULLUX | MUX_MODE2)  /* GPMC_A9.rgmii2_RD2 *
                   0x68 (PIN_INPUT_PULLUX | MUX_MODE2)  /* GPMC_A10.rgmii2_RD1 *
                   0x6c (PIN_INPUT_PULLUX | MUX_MODE2)  /* GPMC_A11.rgmii2_rd0 *
               >;
           };

           cpsw_sleep:cpsw_sleep{
               pinctrl-single、pins =<
                   /*从器件1复位值*/
                   0x114 (PIN_INPUT_PULLUX | MUX_MODE7)
                   0x118 (PIN_INPUT 下拉| MUX_MODE7)
                   0x11c (PIN_INPUT_PULLUGD | MUX_MODE7)
                   0x120 (PIN_INPUT 下拉| MUX_MODE7)
                   0x124 (PIN_INPUT 下拉| MUX_MODE7)
                   0x128 (PIN_INPUT 下拉| MUX_MODE7)
                   0x12c (PIN_INPUT_PULLUGD | MUX_MODE7)
                   0x130 (PIN_INPUT 下拉| MUX_MODE7)
                   0x134 (PIN_INPUT_PULLUX | MUX_MODE7)
                   0x138 (PIN_INPUT 下拉| MUX_MODE7)
                   0x13c (PIN_INPUT_PULLUP | MUX_MODE7)
                   0x140 (PIN_INPUT_PULLUX | MUX_MODE7)

                   /*从机2复位值*/
                   0x40 (PIN_INPUT 下拉| MUX_MODE7)
                   0x44 (PIN_INPUT_PULLUX | MUX_MODE7)
                   0x48 (PIN_INPUT_PULLUX | MUX_MODE7)
                   0x4c (PIN_INPUT_PULLUP | MUX_MODE7)
                   0x50 (PIN_INPUT 下拉| MUX_MODE7)
                   0x54 (PIN_INPUT 下拉| MUX_MODE7)
                   0x58 (PIN_INPUT 下拉| MUX_MODE7)
                   0x5c (PIN_INPUT_PULLUX | MUX_MODE7)
                   0x60 (PIN_INPUT 下拉| MUX_MODE7)
                   0x64 (PIN_INPUT 下拉| MUX_MODE7)
                   0x68 (PIN_INPUT_PULLUX | MUX_MODE7)
                   0x6c (PIN_INPUT_PULLUGD | MUX_MODE7)
               >;
           };

           DaVinci_MDIO_DEFAULT:DaVinci_MDIO_DEFAULT{
               pinctrl-single、pins =<
                   /* MDIO */
                   0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)   /* MDIO_DATA.MDIO_DATA *
                   0x14c (PIN_OUTPUT 上拉| MUX_MODE0)          /* MDIO_clk.MDIO_clk *
               >;
           };

           DaVinci_MDIO_SLEEP:DaVinci_MDIO_SLEEP{
               pinctrl-single、pins =<
                   /* MDIO 复位值*/
                   0x148 (PIN_INPUT_PULLUX | MUX_MODE7)
                   0x14c (PIN_INPUT_PULLUP | MUX_MODE7)
               >;
           };

       };

       OCP{
           uart0:串行@44e09000{
               pinctrl-names ="default";
               pinctrl-0 =<&uart0_PINs>;
               状态="正常";
               RTS-GPIO =<&GPIO1 9 GPIO_ACTIVE_HIGH_>;
               RS485-RTS-高电平有效;
               RS485-RTS-DELAY =<2 1>;
               Linux、在引导时启用 RS485;           

           };

           uart1:串行@48022000{
               pinctrl-names ="default";
               pinctrl-0 =<uart1_PINs>;
               状态="正常";
           };


           uart3:串行@481a6000{
               pinctrl-names ="default";
               pinctrl-0 =<uart3_PINs>;
               状态="正常";
               RTS-GPIO =<&GPIO2 17 GPIO_ACTIVE_HIGH_>;
               RS485-RTS-高电平有效;
               RS485-RTS-DELAY =<2 1>;
               Linux、在引导时启用 RS485;           

           };

           uart5:串行@481aa000{
               pinctrl-names ="default";
               pinctrl-0 =<&uart5_PINs>;
               状态="正常";
               RTS-GPIO =<&GPIO0 11 GPIO_ACTIVE_HIGH_>;
               RS485-RTS-高电平有效;
               RS485-RTS-DELAY =<2 1>;
               Linux、在引导时启用 RS485;           

           };

           i2c0:I2C@44e0b000{
               pinctrl-names ="default";
               pinctrl-0 =<&i2c0_PINs>;

               状态="正常";
               时钟频率=<400000>;
               /*为 VDD 内核设置 OPP50 (0.95V)*/
               睡眠序列=/bits/8 <
                   0x02 0x2D 0x25 0x1f //将 VDD2设置为0.95V */
               >;

               /*为 VDD 内核设置 OPP100 (1.10V)*/
               唤醒序列=/bits/8 <
                   0x02 0x2D 0x25 0x2b /*将 VDD2设置为1.1V */
               >;

               TPS:TPS@2D{
                   reg =<0x2D>;
               };
               RTC@68{
                   compatible ="maxim、ds1388";
                   reg =<0x68>;
               };
           };
           
           Elm:Elm@48080000{
               状态="正常";
           };

           GPMC:GPMC@50000000{
               状态="正常";
               pinctrl-names ="default"、"sleep";
               pinctrl-0 =<和 flash_pins_default>;
               pinctrl-1 =<和 flash_pins_sleep>;
               范围=<0 0x08000000 0x10000000>;// CS0:NAND *
               NAND@0、0{
                   reg =<0 0>;/* CS0、偏移量0 */
                   NAND-BUS 宽度=<8>;
                   GPMC、器件宽度=<1>;
                   GPMC、SYNC-clk-ps =<0>;
                   GPMC、cs-on-ns =<0>;
                   GPMC、cs-rd-Off-ns =<44>;
                   GPMC、cs-wr-off-ns =<44>;
                   GPMC、Adv-on-ns =<6>;
                   GPMC、Ad-rd -关闭-ns =<34>;
                   GPMC、AdV-wr-off-ns =<44>;
                   GPMC、WE-ON-ns =<0>;
                   GPMC、WE-OFF-ns =<40>;
                   GPMC、OE-ON-ns =<0>;
                   GPMC、OE-OFF-ns =<54>;
                   GPMC、ACCESS ns =<64>;
                   GPMC、第周期-ns =<82>;
                   GPMC、功率周期-ns =<82>;
                   GPMC、等待读取="真";
                   GPMC、写入等待="真";
                   GPMC、总线翻转-ns =<0>;
                   GPMC、cycle2cycle-delay-ns =<0>;
                   GPMC、clk-activation-ns =<0>;
                   GPMC、等待监控 ns =<0>;
                   GPMC、wr 访问-ns =<40>;
                   GPMC、wr-data-mux-bus-ns =<0>;
                   TI、nand-ecc-opt="bch8";
                   TI、elm-id =<和 elm>;
                   /* MTD 分区表*/
                           /*所有 SPL-*分区的大小均为最小长度
                    可独立编程。 原因
                    * NAND 闪存这等于擦除块的大小*/
                   #address-cells =<1>;
                   大小单元格=<1>;
                       分区@0{
                       标签="NAND.SPL";
                       REG =<0x00000000 0x00020000>;
                   };
                   分区@1{
                       标签="NAND.SPL.Backup1";
                       REG =<0x00020000 0x00020000>;
                   };
                   分区@2{
                       标签="NAND.SPL.Backup2";
                       REG =<0x00040000 0x00020000>;
                   };
                   分区@3{
                       标签="NAND.SPL.backup3";
                       REG =<0x00060000 0x00020000>;
                   };
                   分区@4{
                       标签="NAND.u-BOOT";
                       REG =<0x00080000 0x00100000>;
                   };
                   分区@5{
                       标签="NAND.u-boot-env";
                       REG =<0x00180000 0x00020000>;
                   };
                   分区@6{
                       标签="NAND.kernel";
                       REG =<0x001A0000 0x00800000>;
                   };
                   分区@7{
                       标签="NAND.DTB";
                       REG =<0x009A0000 0x00020000>;
                   };
                   分区@8{
                       标签="NAND.bkfs";
                       REG =<0x009C0000 0x00A00000>;
                   };
                   分区@9{
                       标签="NAND.file-system";
                       REG =<0x013C0000 0x0EC40000>;
                   };
               };
           };
           MUSB:USB@47400000{
               状态="正常";

               控制@44e10000{
                   状态="正常";
               };

               USB-phy@47401300{
                   状态="正常";
               };

               USB-phy@47401b00{
                   状态="正常";
               };

               USB@47401000{
                   状态="正常";
               };

               USB@47401800{
                   状态="正常";
                   DR_MODE ="主机";
               };

               DMA 控制器@07402000 {
                   状态="正常";
               };
           };

       };

       VBAT:fixedregulator@0{
           兼容="稳压器固定";
           稳压器名称="VBAT";
           稳压器最小微伏=<5000000>;
           稳压器最大值微伏=<5000000>;
           稳压器启动;
       };

       lis3_reg:fixedregator@1{
           兼容="稳压器固定";
           电脑控制器名称="lis3_reg";
           稳压器启动;
       };

    };




    #include "tps65910.dtsi"

    TPS{
       vcc1-supply =<VBAT>;
       vcc2-supply =<VBAT>;
       vcc3-supply =<VBAT>;
       vcc4-supply =<VBAT>;
       vcc5-supply =<VBAT>;
       vcc6-supply =<VBAT>;
       vcc7-supply =<VBAT>;
       vcio-supply =<VBAT>;

       调节器{
           VIO_reg:电脑控制器@1{
               稳压器常开;
           };

           vdd1_reg:电脑控制器@2{
               /* VDD_MPU 电压限制为0.95V - 1.325V、容差为+/-4%*
               稳压器名称="VDD_MPU";
               稳压器最小值微伏=<912500>;
               稳压器最大值微伏=<1378000>;
               稳压器启动;
               稳压器常开;
           };

           vdd2_reg:电脑控制器@3{
               /* VDD_CORE 电压限制为0.95V - 1.1V、容差为+/-4%*
               稳压器名称="VDD_CORE";
               稳压器最小值微伏=<912500>;
               稳压器最大值微伏=<1150000>;
               稳压器启动;
               稳压器常开;
           };

           vdd3_reg:电脑控制器@4{
               稳压器常开;
           };

           vdig1_reg:电脑控制器@5{
               稳压器常开;
           };

           vdig2_reg:电脑控制器@6{
               稳压器常开;
           };

           vpll_reg:电脑控制器@7{
               稳压器常开;
           };

           vdac_reg:电脑控制器@8{
               稳压器常开;
           };

           vaux1_reg:电脑控制器@9{
               稳压器常开;
           };

           vaux2_reg:电脑控制器@10{
               稳压器常开;
           };

           vaux33_reg:电脑控制器@11{
               稳压器常开;
           };

           VMMC_reg:电脑控制器@12{
               稳压器最小微伏=<1800000>;
               稳压器最大值微伏=<3300000>;
               稳压器常开;
           };
       };
    };

    Mac{(&M)
       pinctrl-names ="default"、"sleep";
       pinctrl-0 =<&cpsw_default>;
       pinctrl-1 =<&cpsw_sleep>;
       DUAL_EMAC;
    };

    DaVinci_MDIO{
       pinctrl-names ="default"、"sleep";
       pinctrl-0 =<&Davinc_MDIO_default>;
       pinctrl-1 =<&Davinc_MDIO_SLEEP>;
    };

    cpsw_emac0{&cpsw_emac0}
       PHY_ID =<&Davinci_MDIO>、<2>;
       PHY-MODE ="RGMII-txid";
    };

    cpsw_emac1{&cpsw_emac1}
       PHY_ID =<&Davinci_MDIO>、<3>;
       PHY-MODE ="RGMII-txid";
    };

    GPIO0{&gpio0}
         ti、无复位;
    };
    /*
    GPIO1{&gpio1}
         ti、无复位;
    };
    GPIO3{&G
         ti、无复位;
    };*/

    GPIO2{
         ti、无复位;
    };

    GPIO1{&gpio1}
       pinctrl-names ="default";
       pinctrl-0 =<&GPIO1_PINs>;
       状态="正常";

    };

    GPIO3{&G
           pinctrl-names ="default";
           pinctrl-0 =<&GPIO3_PINs>;
           状态="正常";
    };

    SPI1{(&S)
       状态="正常";
       pinctrl-names ="default";
       pinctrl-0 =<&SPI1_PINs>;
    };

    i2c1{(&I)
       状态="正常";
       pinctrl-names ="default";
       pinctrl-0 =<&i2c1_PINs>;
    };

    i2c2{(&I)
       状态="正常";
       pinctrl-names ="default";
       pinctrl-0 =<&i2c2_PINs>;
    };

    {.dcan1}(&D)
       状态="正常";
       pinctrl-names ="default";
       pinctrl-0 =<&dcan1_PINs>;
    };

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是我要使用的 DTS 文件。 我重点介绍了添加了用于更改 GPIO1_28、GPIO3_18等引脚多路复用模式的部分

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    将 pinctrl-0 =<&GPIO1_PINs>;和 pinctrl-0 =<&GPIO3_PINs>移动到:

     am33xx_pinmux:pinmux@44e10800{
           pinctrl-names ="default";
           pinctrl-0 =<&GPIO1_PINS &GPIO3_PINs>;

    一切都将按您的预期工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kemal、

    很抱歉耽误你的回答。 在 DTS 文件中执行建议的更改后、它可以正常工作。 现在、我可以通过 sysfs 接口控制这些 GPIO、而无需在 uboot 中进行任何更改。 非常感谢!!

    但我不明白我使用的 DTS 文件有什么问题、因为我能够控制 GPIO 引脚 GPIO3_20、GPIO3_13、而 GPIO1_28引脚除外。 我一直关注 这个主题。 此外、pinmux 详细信息反映了我们的更改、即模式更改为0x00000037。 (用于 GPIO1_28的 CAT 引脚(sys/kernel/debug/pinctrl/44e10878.pinmux)。

    您能帮我理解这个问题吗?

    再次感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当引脚未正确进行引脚多路复用时、它仍处于不清楚的阶段、有时此不清楚的阶段可能与您所需的引脚多路复用器相匹配、但有时它们不匹配、正如您在 GPIO1_28案例中看到的那样。