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.

[参考译文] AM62A7:通过 tiboot3引导加载程序控制 GPIO

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1512497/am62a7-controlling-the-gpio-from-tiboot3-bootloader

器件型号:AM62A7

工具/软件:

您好、

SDK:09.01.00 Yocto SDK

EVM:SKAM62  

我正在尝试通过 tiboot3引导加载程序控制某些 GPIO。 因此、我有一个 GPIO、在电路板启动后需要从保持低电平。 我对 R5 dst 文件进行了以下更改。

diff --git a/arch/arm/dts/k3-am62a-mcu.dtsi b/arch/arm/dts/k3-am62a-mcu.dtsi
index a3d43bfa9ce..743242cb433 100644
--- a/arch/arm/dts/k3-am62a-mcu.dtsi
+++ b/arch/arm/dts/k3-am62a-mcu.dtsi
@@ -74,4 +74,33 @@
                                sram = <&mcu_ram>;
                };
        };
+
+    mcu_gpio_intr: interrupt-controller@4210000 {
+        compatible = "ti,sci-intr";
+        reg = <0x00 0x04210000 0x00 0x200>;
+        ti,intr-trigger-type = <1>;
+        interrupt-controller;
+        interrupt-parent = <&gic500>;
+        #interrupt-cells = <1>;
+        ti,sci = <&dmsc>;
+        ti,sci-dev-id = <5>;
+        ti,interrupt-ranges = <0 104 4>;
+    };
+
+    mcu_gpio0: gpio@4201000 {
+        compatible = "ti,am64-gpio", "ti,keystone-gpio";
+        reg = <0x00 0x04201000 0x00 0x100>;
+        gpio-controller;
+        #gpio-cells = <2>;
+        interrupt-parent = <&mcu_gpio_intr>;
+        interrupts = <30>, <31>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+        ti,ngpio = <24>;
+        ti,davinci-gpio-unbanked = <0>;
+        power-domains = <&k3_pds 79 TI_SCI_PD_EXCLUSIVE>;
+        clocks = <&k3_clks 79 0>;
+        clock-names = "gpio";
+        status = "disabled";
+    };
 };
diff --git a/arch/arm/dts/k3-am62a7-r5-sk.dts b/arch/arm/dts/k3-am62a7-r5-sk.dts
index 74df282fae3..74d25f6e06e 100644
--- a/arch/arm/dts/k3-am62a7-r5-sk.dts
+++ b/arch/arm/dts/k3-am62a7-r5-sk.dts
@@ -15,7 +15,6 @@
        aliases {
                remoteproc0 = &sysctrler;
                remoteproc1 = &a53_0;
-               serial0 = &wkup_uart0;
        };

        chosen {
@@ -104,23 +103,25 @@
        status = "okay";
        bootph-pre-ram;

-       wkup_uart0_pins_default: wkup-uart0-pins-default {
-               pinctrl-single,pins = <
-                       AM62X_MCU_IOPAD(0x02c, PIN_INPUT, 0)    /* (C6) WKUP_UART0_CTSn */
-                       AM62X_MCU_IOPAD(0x030, PIN_OUTPUT, 0)   /* (A4) WKUP_UART0_RTSn */
-                       AM62X_MCU_IOPAD(0x024, PIN_INPUT, 0)    /* (B4) WKUP_UART0_RXD */
-                       AM62X_MCU_IOPAD(0x028, PIN_OUTPUT, 0)   /* (C5) WKUP_UART0_TXD */
-               >;
-               bootph-pre-ram;
-       };
+       mcu_gpio0_pins_default: mcu_gpio0_pins_default {
+               pinctrl-single,pins = <
+                   AM62X_MCU_IOPAD(0x050, PIN_OUTPUT, 7)    /* (E13) MCU_GPIO0_20 */
+               >;
+               bootph-pre-ram;
+       };
 };

-/* WKUP UART0 is used for DM firmware logs */
-&wkup_uart0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&wkup_uart0_pins_default>;
-       status = "okay";
-       bootph-pre-ram;
+&mcu_gpio0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_gpio0_pins_default>;
+       E13 {
+           bootph-pre-ram;
+           gpio-hog;
+           gpios = <20 GPIO_ACTIVE_LOW>;
+           output-low;
+           line-name = "E13";
+       };
 };

上述更改对 GPIO 引脚没有影响。 如果需要对此进行任何修改、请告知我们。

此致、

Jay

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

    尊敬的 Jay:

    我对 U-Boot 不太熟悉。 您能尝试启用这些配置吗?

    如果这不起作用、您可以尝试直接写入 MMR 寄存器(您可能必须设置 PADCONFIG)。 请参阅 AM62A TRM 中的第12.2.1.4.2节 GPIO 功能和14.9.2.1 GPIO 寄存器: https://www.ti.com/lit/pdf/spruj16

    此致、

    Anshu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.修改 u-boot-2024.04/configs/am62x_lpsk_a53_defconfig
    CONFIG_SPL_GPIO=y
    CONFIG_SPL_Board_init=y
    CONFIG_SPL_BUILD=y
     
    2.修改 u-boot-2024.04/arch/arm/dts/k3-am62-lp-sk.dtsi
    AM62X_IOPAD (0x1A4、PIN_OUTPUT_PULLDOWN、7)/*(C17) WIFI_EN */
    AM62X_IOPAD (0x1B8、PIN_OUTPUT_PULLDOWN、7)/*(D13) BT_EN */
    AM62X_IOPAD (0x0C8、PIN_OUTPUT_PULLDOWN、7)/*(R20) 1V8_EN */
    AM62X_IOPAD (0x0C4、PIN_OUTPUT_PULLDOWN、7)/*(R19) 3V3_EN */
    AM62X_IOPAD (0x0AC、PIN_OUTPUT_PULLDOWN、7)/*(H17) WIFI_WAKEUP */
       不管用。
    3.注意: 我们需要 这些引脚   在加电后立即下拉。
      如何修改 SPL 或 U-boot 工程、以便在 AM6202引导阶段执行此操作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Hanson:  

    感谢您更新该主题。 我只是在写这篇文章。

    [引述 userid="628075" url="~/support/processors-group/processors/f/processors-forum/1512497/am62a7-controlling-the-gpio-from-tiboot3-bootloader/5835905 #5835905"]
    1.修改 u-boot-2024.04/configs/am62x_lpsk_a53_defconfig
    CONFIG_SPL_GPIO=y
    CONFIG_SPL_Board_init=y
    CONFIG_SPL_BUILD=y
     
    2.修改 u-boot-2024.04/arch/arm/dts/k3-am62-lp-sk.dtsi
    AM62X_IOPAD (0x1A4、PIN_OUTPUT_PULLDOWN、7)/*(C17) WIFI_EN */
    AM62X_IOPAD (0x1B8、PIN_OUTPUT_PULLDOWN、7)/*(D13) BT_EN */
    AM62X_IOPAD (0x0C8、PIN_OUTPUT_PULLDOWN、7)/*(R20) 1V8_EN */
    AM62X_IOPAD (0x0C4、PIN_OUTPUT_PULLDOWN、7)/*(R19) 3V3_EN */
    AM62X_IOPAD (0x0AC、PIN_OUTPUT_PULLDOWN、7)/*(H17) WIFI_WAKEUP */
       不管用。
    [/报价]

    那么、从 u-boot 器件树设置 GPIO 确实对您有用吗? 对吧?

    我已经看到、即使在 u-boot 中启用 GPIO Hog 配置后、该指令也不起作用。 我尝试写入 MMR 寄存器、正如 Anshu Madwesh 所述、如下所示、但这对我来说不起作用。 我使用了 GPIO 的 PADCONFIG 寄存器但仍然无法更改 GPIO 状态。  

    diff --git a/board/ti/am62ax/evm.c b/board/ti/am62ax/evm.c
    index 71fbc9e9c2b..4cfbb4f8b2c 100644
    --- a/board/ti/am62ax/evm.c
    +++ b/board/ti/am62ax/evm.c
    @@ -21,11 +21,37 @@
     #define CTRLMMR_USB1_PHY_CTRL  0x43004018
     #define CORE_VOLTAGE           0x80000000
    
    +#define GPIO_DIR01             0x04201010
    +#define GPIO_OUT_DATA01        0x04201014
    +#define GPIO_CLR_DATA01        0x0420101C
    +#define MCU_PADCONFIG20        0x04084050
    +#define GPIO_20_LOW            0x00001000
    +#define MCU_PADCONFIG20_val    0x00050007
    +
     int board_init(void)
     {
    +    u32 val;
    +
            if (IS_ENABLED(CONFIG_BOARD_HAS_32K_RTC_CRYSTAL))
                    board_rtc_init();
    +
    +    writel(0x00050007, MCU_PADCONFIG20);
    +
    +    /* clear mcu gpio20 */
    +    val = readl(GPIO_CLR_DATA01);
    +    val |= GPIO_20_LOW;
    +    writel(val, GPIO_CLR_DATA01);
    
    +    /* set mcu gpio20 direction as output  */
    +    val = readl(GPIO_DIR01);
    +    val &= ~(GPIO_20_LOW);
    +    writel(val, GPIO_DIR01);
    +
    +    /* set mcu gpio20 value to low */
    +    val = readl(GPIO_OUT_DATA01);
    +    val &= ~(GPIO_20_LOW);
    +    writel(val, GPIO_OUT_DATA01);
    +
            return 0;
     }

    我们使用 MCU GPIO (E13)、它是一个开漏引脚、必须在该引脚上连接外部上拉电阻以使引脚处于高电平和低电平。 因此、我们可能无法使用下拉寄存器。

    是否有任何其他方法可以在电路板启动时使 E13引脚(MCU GPIO)变为低电平?

    如何修改 SPL 或 U-boot 工程、以便在 AM6202引导阶段执行此操作。

    我不明白这句话。 能解释更多吗?

    此致、

    Jay

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

    尊敬的 Jay:

    Anshu 在6月2日之前不在办公室。 如果您在6月的第一周没有收到他的回复、请致电本主题。

    -道林

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

    您好、  

    对此主题进行任何更新?

    此致、

    Jay

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

    尊敬的 Jay:

    我刚回来、所以我需要一些时间来跟上话题。 本周晚些时候、我将尝试做出回应。

    谢谢、

    Anshu

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

    尊敬的 Jay:

    您可以查看以下 E2E 常见问题解答: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1523611/faq-processor-sdk-am62x-how-to-toggle-a-gpio-from-r5-spl

    谢谢、

    Anshu

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

    尊敬的 Anshu:  

    感谢您准备有关如何控制 R5 SPL 的 GPIO 的详细常见问题解答。

    我们使用 AM62A7处理器。  

    我已检查文件" arch/arm/mach-k3/am62ax/clk-data.c "和" arch/arm/mach-k3/am62ax/dev-data.c "、以获取 AM62A7处理器的 u-boot 源。

    在文件"arch/arm/mach-k3/am62ax/clk-data.c"中、我看不到应为"AM62AX_DEV_MCU_GPIO0 (ID = 79)"的 MCU_GPIO0接口时钟设置。 这可能是我无法控制 MCU_GPIO0的原因吗?

    如果我必须在 引导加载程序中的"arch/arm/mach-k3/am62ax/clk-data.c"文件中为 MCU_GPIO0接口添加这些时钟、如何添加以控制 MCU_GPIO0接口?

    此致、

    Jay

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

    尊敬的 Anshu:

    如果您对此有任何更新、请告知我们。

    此致、

    Jay