您好!
我正在尝试使用 U-boot v2021.04 (commit hash:b46dd116ce03e235f2a7d4843c6278e1da44b5e1 )在基于 PHYCORE-AM335X 的定制板上设置 GPIO 引脚(GPIO0[23])始终处于高电平。 我通过从 AM335x-icev2.dts 文件中获取引用来配置下面的 DTS 文件
&am33xx_pinmux { system_busy_light: system_busy_light{ pinctrl-single,pins = < AM33XX_IOPAD(0x824, PIN_OUTPUT_PULLUP | MUX_MODE7) >; }; }; &gpio0 { pinctrl-names = "default"; pinctrl-0 = <&system_busy_light>; status = "okay"; ti,no-reset-on-init; p23 { gpio-hog; gpios = <23 GPIO_ACTIVE_HIGH>; output-high; line-name = "SYSTEM_BUSY_LIGHT"; }; };
这不会使 GPIO 引脚硬接。
后来尝试通过 mux.c 文件启用引脚多路复用、并使用"GPIO Set"命令
static struct module_pin_mux shutdown_pin_mux[] = { {OFFSET(gpmc_ad9), (MODE(7) | PULLUP_EN)}, /* SYSTEM BUSY LIGHT */ {-1}, }; void enable_board_pin_mux(void) { configure_module_pin_mux(shutdown_pin_mux); }
当我停止 u-boot 并使用"GPIO status -a"或"GPIO set 23"时、我会得到这些错误
GPIO:找不到"23"
命令"GPIO"失败:错误-38
CONFIG_ARM=y CONFIG_ARCH_CPU_INIT=y CONFIG_ARCH_OMAP2PLUS=y CONFIG_TI_COMMON_CMD_OPTIONS=y CONFIG_AM33XX=y CONFIG_TARGET_AM335X_base=y CONFIG_SPL=y CONFIG_SYS_EXTRA_OPTIONS="" CONFIG_DEFAULT_DEVICE_TREE="am335x-base" CONFIG_DISTRO_DEFAULTS=y CONFIG_SPL_LOAD_FIT=y # CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_OF_BOARD_SETUP=y CONFIG_SYS_PROMPT="base# " CONFIG_BOOTCOMMAND="if test ${boot_fit} -eq 1; then run update_to_fit; fi;run findfdt; run init_console; run mmcboot" CONFIG_AUTOBOOT_KEYED=y CONFIG_AUTOBOOT_PROMPT="Press SPACE to abort autoboot in %d seconds\n" CONFIG_AUTOBOOT_DELAY_STR="d" CONFIG_AUTOBOOT_STOP_STR=" " CONFIG_LOGLEVEL=3 CONFIG_SYS_CONSOLE_INFO_QUIET=y CONFIG_ARCH_MISC_INIT=y CONFIG_SPL_ALLOC_BD=y CONFIG_SPL_FIT_IMAGE_TINY=y CONFIG_SPL_ETH_SUPPORT=y #CONFIG_SPL_FS_EXT4 is not set CONFIG_SPL_MTD_SUPPORT=y CONFIG_SPL_MUSB_NEW_SUPPORT=y CONFIG_SPL_NAND_DRIVERS=y CONFIG_SPL_NAND_ECC=y CONFIG_SPL_NAND_BASE=y CONFIG_SPL_NET_SUPPORT=y CONFIG_SPL_OS_BOOT=y CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_ETHER=y CONFIG_CMD_SPL=y CONFIG_CMD_SPL_NAND_OFS=0x00080000 # CONFIG_CMD_FLASH is not set # CONFIG_CMD_SETEXPR is not set CONFIG_BOOTP_DNS2=y CONFIG_CMD_MTDPARTS=y # CONFIG_SPL_EFI_PARTITION is not set CONFIG_OF_CONTROL=y CONFIG_ENV_OVERWRITE=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y #CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_SPL_ENV_IS_NOWHERE=y CONFIG_VERSION_VARIABLE=y CONFIG_BOOTP_SEND_HOSTNAME=y CONFIG_BOOTCOUNT_LIMIT=y CONFIG_DFU=y CONFIG_DFU_OVER_USB=y CONFIG_DFU_MMC=y CONFIG_DFU_MTD=y CONFIG_DFU_NAND=y CONFIG_DFU_RAM=y CONFIG_DFU_SF=y CONFIG_DFU_SF_PART=y CONFIG_DFU_TIMEOUT=y CONFIG_DFU_VIRTUAL=y CONFIG_CMD_DFU=y CONFIG_USB_FUNCTION_FASTBOOT=y CONFIG_FASTBOOT_FLASH=y CONFIG_FASTBOOT_FLASH_MMC_DEV=1 CONFIG_FASTBOOT_CMD_OEM_FORMAT=y CONFIG_CMD_MMC=y #CONFIG_CMD_NAND=y #CONFIG_CMD_SF=y CONFIG_CMD_SPI=y CONFIG_CMD_I2C=y #CONFIG_CMD_USB=y CONFIG_CMD_GPIO=y CONFIG_OMAP_GPIO=y CONFIG_MISC=y CONFIG_DM_MMC=y CONFIG_DM=y CONFIG_DM_GPIO=y # CONFIG_MMC_HW_PARTITIONING is not set CONFIG_MMC_OMAP_HS=y CONFIG_MTD=y CONFIG_MTD_RAW_NAND=y CONFIG_DM_SPI_FLASH=y CONFIG_SF_DEFAULT_SPEED=24000000 CONFIG_SPI_FLASH_WINBOND=y CONFIG_PHY_ATHEROS=y CONFIG_PHY_SMSC=y CONFIG_DM_ETH=y CONFIG_MII=y CONFIG_DRIVER_TI_CPSW=y CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_OMAP3_SPI=y CONFIG_USB=y CONFIG_DM_USB=y CONFIG_DM_USB_GADGET=y CONFIG_SPL_DM_USB_GADGET=y CONFIG_USB_MUSB_HOST=y CONFIG_USB_MUSB_GADGET=y CONFIG_USB_MUSB_TI=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments" CONFIG_USB_GADGET_VENDOR_NUM=0x0451 CONFIG_USB_GADGET_PRODUCT_NUM=0xd022 CONFIG_USB_ETHER=y CONFIG_WDT=y CONFIG_SPL_BANNER_PRINT=n # CONFIG_SPL_WDT is not set CONFIG_DYNAMIC_CRC_TABLE=y CONFIG_RSA=y CONFIG_LZO=y CONFIG_CONS_INDEX=3 CONFIG_SYS_NS16550=y
供参考:当我在 Linux 内核(V5.10.65)中进行配置时、GPIO-hog 工作正常。 我想将这个特定的 GPIO 设置为从启动开始时一直为高电平。
提前感谢。