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.

[FAQ] [参考译文] [常见问题解答] PROCESSOR-SDK-AM62X:如何从 U-Boot 命令提示符中切换 GPIO 和 LED

Guru**** 2538930 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1398803/faq-processor-sdk-am62x-how-to-toggle-gpios-and-leds-from-u-boot-command-prompt

器件型号:PROCESSOR-SDK-AM62X

工具与软件:

我想从 U-Boot 提示符处切换 GPIO 或切换 LED。 我该怎么做?

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

    改变 LED

    所需步骤:

    1. 在器件树中定义 LED (在 SDK 中默认完成)
    2. 使用更新的配置重新编译 U-Boot
    3. 将设备引导至命令提示符
    4. 使用 LED 命令

    在设备树中定义 LED

    默认情况下、在 SDK 中定义 LED 并将其连接到 GPIO1_49。 有关原理图连接和器件树节点、请参阅下面的。 这应该与 U-Boot 和 Linux 设备树保持一致。

    /{
    
    leds {
    		compatible = "gpio-leds";
    		pinctrl-names = "default";
    		pinctrl-0 = <&usr_led_pins_default>;
    
    		led-0 {
    			label = "am62-sk:green:heartbeat";
    			gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			function = LED_FUNCTION_HEARTBEAT;
    			default-state = "off";
    		};
    	};
    };
    
    &main_pmx0 {
        usr_led_pins_default: usr-led-pins-default {
    		pinctrl-single,pins = <
    			AM62X_IOPAD(0x244, PIN_OUTPUT, 7) /* (C17/B15) MMC1_SDWP.GPIO1_49 */
    		>;
    	};
    };
    

    该 LED 是"心跳 LED"、模拟跳动心脏的模式。 在 U-Boot 提示符下、LED 默认处于关闭状态、因此我们可以启用 LED 命令以在提示符下使用它们。

    请注意器件树节点如何包含"compatible ="GPIO-LEDs";这意味着此处不适用正常的 GPIO 驱动程序、而是需要基于 GPIO 的 LED 的特定驱动程序。 我们必须更新配置文件以包含此内容。

    使用更新的配置重新编译 U-Boot

    新配置应包含 CONFIG_LED_GPIO=y 及其所有依赖项(CONFIG_LED=y 和 CONFIG_DM_GPIO=y)。

    使用 SDK 文档更新配置文件并重建映像: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_02_01_10/exports/docs/linux/Foundational_Components U-Boot/UG-General-Info.html#build-u-boot

    将器件引导至 U-Boot 提示符

    U-Boot SPL 2023.04-dirty (Aug 09 2024 - 16:10:17 -0500)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
    SPL initial stack usage: 13408 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.10.0(release):v2.10.0-367-g00f1ec6b87-dirty
    NOTICE:  BL31: Built : 16:09:05, Feb  9 2024
    
    U-Boot SPL 2023.04-dirty (Aug 09 2024 - 16:10:26 -0500)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
    SPL initial stack usage: 1856 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2023.04-dirty (Aug 09 2024 - 16:10:26 -0500)
    
    SoC:   AM62X SR1.0 HS-FS
    Model: Texas Instruments AM625 SK
    EEPROM not available at 80, trying to read at 81
    Board: AM62B-SKEVM-P1 rev A
    DRAM:  2 GiB
    Core:  74 devices, 34 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial
    Err:   serial
    Net:   eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  0 
    => 

    使用 LED 命令

    => led 
    led - manage LEDs
    
    Usage:
    led <led_label> on|off|toggle   Change LED state
    led <led_label> Get LED state
    led list                show a list of LEDs
    => led list
    am62-sk:green:heartbeat

    使用 ON、OFF 和 TOGGLE 更改状态。

    => led am62-sk:green:heartbeat on
    => led am62-sk:green:heartbeat off
    => led am62-sk:green:heartbeat toggle