请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:AM3352 工具/软件:Linux
您好!
我正在使用定制的 AM335x 板、并且在控制某些 GPIO 方面遇到了问题。 我已将 GPIO (my_GPIO2_PINS_DEFAULT 条目中的 GPIO2_27=91和 GPIO2_28=92)添加到 DTS 文件中、并确保引脚不会在 DTS 文件的其他位置使用。 GPIO 91和92连接到另一个模块、其中91被下拉92在模块内部上拉。 当我尝试使用上述命令更改状态时、引脚状态不会改变。
我能够控制 DTS 文件中的其他 GPIO (并非所有 GPIO 都经过测试、但我尝试过的 GPIO 都可以正常工作)。 请告诉我是否需要做任何其他事情来使其正常工作。 默认情况下、GPIO 91和92用于 SD 卡接口。 我已将其更改为用作 GPIO、因为我不在电路板中使用 SD 卡接口。 请提供任何帮助。
我的 DTS 文件就是这样
// *版权所有(C) 2012 Texas Instruments Incorporated - http://www.ti.com/ * 此程序是免费软件;您可以根据 免费软件基金会*发布的 GNU 通用公共许可证版本2的条款重新分发和/或修改*。 // /dts-v1/; #include "am33xx.dtsi" #include /{ 型号="CalixTO-AM335X-nxt"; 兼容="ti、AM335x-evm"、"ti、am33xx"; CPU{ CPU@ @0{CPU0-supply =<&VDD_MPU_supply>;};};MEMORY{device_type ="memory";reg =<0x80000000*/ fixedd* 1;}mmcsvr稳 压器:0x0000000/ r2 兼容="稳压器固定"; reguler-name ="vmmcsd-regulator "; 稳压器最小微伏=<3300000>; 稳压器最大值微伏=<3300000>; 使能端高电平有效; 稳压器常开; }; VDD_MPU_SUPPLY:fixedregulator@2{ 兼容="稳压器固定"; reguler-name ="VDD-MPU-regulator "; 稳压器最小值微伏=<1262000>; 稳压器最大值微伏=<1262000>; 稳压器启动; 稳压器常开; }; core_audio_supply:fixedreguler-audiocore{ 兼容="稳压器固定"; 电脑控制器名称="core_audio_supply"; 稳压器最小微伏=<3300000>; 稳压器最大值微伏=<3300000>; 稳压器启动; }; io_audio_supply:fixedreguler-audioio{ 兼容="稳压器固定"; 电脑控制器名称="io_audio_supply"; 稳压器最小微伏=<1800000>; 稳压器最大值微伏=<1800000>; 稳压器启动; }; LED{ pinctrl-names ="默认"、"睡眠"; pinctrl-0 =<&USER_LED_DEFAULT>; pinctrl-1 =<&USER_LED_SLEEP>; 兼容="GPIO-LED"; LED@1{ 标签="LED1"; GPIO =<&GPIO3 17 GPIO_ACTIVE_HIGH_>; Linux、DEFAULTD ="心跳"; 默认状态="开"; }; }; }; &am33xx_pinmux{ pinctrl-names ="默认值"; pinctrl-0 =<&clkout2_pin>; USER_LED_DEFAULT:USER_LED_DEFAULT{ pinctrl-single、PINS =< 0x19C (PIN_OUTPLOUT | MUX_MODE7)// McASP0_DEFAULT_3* = 0x19C ;GPIN_IN_IN_IN_IN_IN_INPUT = 0x19C (_IN_IN_IN_IN_IN_IN_INPUT);*_IN_IN_US_IN_IN_IN_IN_0_IN_IN_IN_INPUT = 0x19C) my_GPIO0_PINS_DEFAULT{ pinctrl-single、PINS =< 0x060 (PIN_OUTPUT_PULLUP | MUX_MODE7)/* GPMC_ad11.GPIO0_27 * / 0x018 (PIN_OUTPUT | MUX_MODE7)/* LCD_DATA13_GPIO0_9 * / 0x01C_GPIO0_IN_PULL_0_PIN_0_100 */0x0_GPIO0_PIN_MODE7 ( *)/0x24_MODE0_IN_PIN_MODE0_IN_IN_PUT_IN_IN_PUT_MODE0) *= 0x0_GPIO0_GPIO0_PUT_PUT_PUT_MODE_IN_PUT_IN_IN_IN_IN_PUT_MODE7 )*(*/0x (PIN_INPUT_PULLUP | MUX_MODE7)/* GPMC_AD12.GPIO1_12 */ 0x008 (PIN_INPUT_PULLUP | MUX_MODE7)/* GPMC_AD2.GPIO1_2 * / 0x07C (PIN_OUTPUT | MUX_MODE7)/* GPMC_AD2* 0x07_PIN_MODE80 (0x7_MUS_M078)/GPMC_IN_MOUX_1* 输出 /* GPMC_be1n.GPIO1_28 */ 0x000 (PIN_OUTPUT | MUX_MODE7)/* GPMC_ad0.GPIO1_0 */ 0x004 (PIN_OUTPUT | MUX_MODE7)/* GPMC_ad1.GPIO1_1 * 0x014 (PIN_OUTPUT | M011_MODE7 )*/GPMC_MODE7 (GPMC_018*/GPMC_MODEV_018*/GPMC_018*)/GPMC_018*(GPMC_MODE7)/GPMC_018_PIN_MODE7)*/GPMC_MODE7 (GPMC_MODEV_018*/GPMC_MODEUX_018*/GPMC_OUTPUT */GPMC_018_015_ (PIN_INPUT_PULLUP | MUX_MODE7)/* GPMC_A4.GPIO1_20 */ 0x054 (PIN_INPUT_PULLUP | MUX_MODE7)/* GPMC_A5.GPIO1_21 * / 0x040 (PIN_INPUT_PULLUP | MUX_MODE7)/* GPIO7_IN_038*/GPMC_A5.14_IN_MODE7 (0x74_MODE16 )/GPMC_IN_IN_MODE7)/GPMC_IN_IN_MOUX_IN_MODE7) /* GPMC_A11.GPIO1_27 */ >; }; my_GPIO2_PINS_DEFAULT:my_GPIO2_PINS_DEFAULT{ pinctrl-single、PINS =< 0x0F8 (PIN_OUTPUT | MUX_MODE7)/* mmc0_data1.GPIO2_28 * 0x0F4 (PIN_OUTPUT | MUX_MODE7)/* mmc0_data2.GPIO2_27*/ 0x0E8 (PIN_OUTPUT 下拉| MUX_MODE7)/* LCD_pclk.GPIO2_24 */ 0x0B4 (PIN_OUTPUT 下拉| MUX_MODE7)/0x0* LCD_MODE7_0* (0x20_GPIO0_PIN_MODE7)/0x20_MODE7)/0x20_MOUX_GPIO0*/0x24_PIN_PIN_PIN_MODE0_PIN_MODE7)*/0x0_MODE0_MODE7 (0x20_MODE0_MODE7)*/0x24_MODE0*/0x24_PIN_PIN_MOUX_PIN_PIN_MODE7) /* lcd_data3.gpio2_9*/ 0x0F0 (PIN_INPUT_PULLUP | MUX_MODE7)/* mmc0_dat3.gpio2_26 -*/ 0x0BC (PIN_OUTPLOUT 下拉| MUX_MODE7)/* LCD_ADV_IN_MDIO2_13 */0x09_IN_MIP_IN_IN_IN_094* (0xM0_M0_M0_IN_M094_M/2_MIP_M0_PIN_M0_MODE7 )/0xM0_M0_MUX *(*/0x9V_IN_IN_IN_MDIO2_IN_IN_IN_IN_IN_IN_IN_IN_M094_M0_MODE7 (PIN_OUTPUT | MUX_MODE7)/* GPMC_be0n_cle.GPIO2_5*/ 0x0B8 (PIN_OUTPUT 下拉| MUX_MODE7)/* LCD_data6.GPIO2_12 * 0x0A8 (PIN_OUTPLUP | MUX_MODE7)/* LCD_DATA6.GPIO2_12 * 0x0A8 (PIN_OUTPLU_2*)/GPIO2_MODE2*默认值*/GPU_MODE2*引脚0_GPIO2_MR_GPIO2*(_GPIO2_GPIO2_GPIO2_GPIO2_GPIO2_GPIO2_GPIO2*) my_GPIO3_PINS_DEFAULT{ pinctrl-single、PINS =< 0x1A4 (PIN_INPUT_PULLUP | MUX_MODE7)/* McASP0_FS.GPIO3_19 * / 0x1A0 (PIN_INPUT_PULLUP | MUX_MODE7)/* McASP0_ALFR.GPIO0_P0 (*)/PM_UART0_PUT0_PUT0_PUT_PULLUT_PULLUX0)/* 0x20_PULLUT_PULLUT_UART0_0_PUT_PULLUX0*(0x20_PUT_0_PUT_PUT_PUT_PUT_PUT_PUT_PUT_PULLUX0_PUT_PULLUX0*);*引脚0_PM_PUT0_PM_PUT0_PM_PM0_PM0_ pinmux_uart1_pins{ pinctrl-single、pins =< 0x178 (PIN_input | MUX_MODE0)/* uart1_CTSN.uart1_CTSN * / 0x17C (PIN_OUTPUT_PULLUD | MUX_MODE0)/* uart1_rtsn.uart1_CTS*(PIN_OUTARTHD1 )| 0x184_MODULLUT_UX0*(0x184_MODE0)*(UARTRAPULLUT_UARTxD_1)| UARTON_MOD/ UART184_OUTON_PUT 1)*(0x184_MOD/ UARTON_MODE0)* UARTON_MOD/ UARTON_ 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 * >; }; uart4_pins:pinmux_uart4_pins{ pinctrl-single、pins =< 0x168 (PIN_INPUT_PULLUP | MUX_MODE1)/* uart0_CTSN.uart4_RxD * 0x16C (PIN_OUTPUT 下拉| MUX_MODE1)/* uart0_rtsn.uart4_TXD * >; }; uart3_pins:pinmux_uart3_pins{ pinctrl-single、pins =< 0x160 (PIN_INPUT_PULLUP | MUX_MODE1)/* spi0_CS1.uart3_RXD * 0x138 (PIN_OUTPUT 下拉| MUX_MODE1)/* mii1_rxd2.uart3_TXD * >; }; uart5_pins:pinmux_uart5_pins{ pinctrl-single、pins =< 0x0C4 (PIN_INPUT_PULLUP | MUX_MODE4)/* LCD_data9.uart5_RXD * 0x0C0 (PIN_OUTPUT 下拉| MUX_Mode4)/* LCD_data8.uart5_TXD * >; }; uart2_pins:pinmux_uart2_pins{ pinctrl-single、pins =< 0x100 (PIN_INPUT_PULLUP | MUX_MODE3) /* mmc0_clk.mmc0_clk.uart2_RxD * 0x104 (PIN_OUTPUT 下拉| MUX_MODE3)/* mmc0_cmd.mmc0_cmd.uart2_TXD */ >; }; clkout2_pin:pinmux_clkout2_pin{ pinctrl-single、pins =< 0x1b4 (PIN_OUTPUT 下拉| MUX_MODE3)/* xdma_event_int1.clkout2 * >; }; eMMC_PINS:pinmux_eMMC_PINS{ pinctrl-single、PINS =< 0x8C (PIN_INPUT_PULLUP | MUX_MODE3)/* GPMC_clk.mmc2_clk * 0x88 (PIN_INPUT_PULLUM_PULLUP)/* GPMC_3_MODE3* (0xMC_3_MMC_INPUT)/0x3_MODE3*/0xMC_MODON_MODE3)*输入/0xMC_MODE3*输入/0xMC_3_MODE3 (0xMC_3_MODE3) }; cpsw_default:cpsw_default{ pinctrl-single、pins =< /* Slave 1 */ 0x10c (PIN_INPUT 下拉| MUX_MODE1)/* mii1_cr.rmi1_d1_drx * (PIN_IN_INPUT)/0x1_MODIUX_1* 0x1_MODIRECT_1* (0x1_1_1_MODIRECT_1_1*) /* mii1_rxd1.mii1_rxd2 */ 0x140 (PIN_INPUT 下拉| MUX_MODE1)/* mii1_rxd0.mii1_rxd0 */ 0x144 (PIN_INPUT 下拉| MUX_MODE0)/* rmii1_REFCLK > rmiCLK; }* rmiCLK_rbleep ;* rmisn_rf1 cpsw_sleep{ pinctrl-single、pins =< /*从器件1复位值*/ 0x10c (PIN_INPUT 下拉| MUX_MODE7) 0x110 (PIN_INPUT 下拉| MUX_MODE7) 0x114 (PIN_INPUT_MODE7 )| MUX 输入0x140 MODEUX_INPUT 下拉| 输入0x144_MODEUX_MODEUX_7 (PIN_MODEUX_MODE7)|输入0x140 MODEUX_MODEUX_MODEUX_MODEUX_INPUT 下拉|输入0x140 (0x14_MODEUX_MODEUX_MODEUX_MODE7)|输入:0x14_MODEUX_MODEUX_MODEUX_MODEUX_MODEUX_MODEUX_MODEUX_MODE DaVinci_MDIO_DEFAULT{ pinctrl-single、pins =< /* MDIO */ 0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)/* MDIO_DATA.MDIO_DATA * / 0x14c (PIN_OUTPLUG_PULLUP | MDIO_PULLUG_DDIO)/* MDIO_RESPULT = 0x14c | 0x14c + MDIO_PUT_PUT (0x148)* MDIO_PUT_PUT_PUT = 0x14x + MDIO = 0x14x + MDIO_P/ MDIO_Pn) | MDIO_RESPON_PUT = 0x14x (0x14x + MDIO_PON_PON_PON_DON_PON_PON_ pinmux_spi0_pins{ pinctrl-single、pins =< 0x150 (PIN_INPUT_PULLUP | MUX_MODE0)/*(A17 ) spi0_SCLK.spi0_SCLK */ 0x154 (PIN_INPUT_PULLUP | MUX_MODE0)/*(B17) pult0_0_spi0_MODE0 )/* 默认值*(0x158_0_MODE0)/* 0_PUT_D0_PUT_0_D0_PUT_0_PUT_0_PUT_0_PUT_PUT_0_PUT_0_PUT_PUT_PUT_D0) ecap0_PINS_DEFAULT{ pinctrl-single、PINS =< 0x164 (PIN_OUTPUT | MUX_MODE0)/*(E18) eCAP0_IN_PWM0_OUT.eCAP0_IN_PWM0_OUT * ; }; ehrpwm0_PINS:pmux_ePWM0_OUT0 ( *)/ehrm0_m0_m0_m0_mUn) *(0_m0_mr_mu_mu_mu_muxx) pinmux_ehrpwm1_pins{ pinctrl-single、pins =< 0x0C8 (PIN_OUTPUT | MUX_mode2)/*(U3) LCD_data10.ehrpwm1A */ 0x0CC (PIN_OUTPUT | MUX_Mode2)/*(U4) LCD_data11.ehrpwm1A * ) */ 0x0CC (PIN_output| MUX_mode2) pwm2)*> pwrwm2;}phrpwm2: pinmux_ehrpwm2_pins{ pinctrl-single、pins =< 0x0A0 (PIN_OUTPUT | MUX_MODE3)//(R1) LCD_Data0.ehrpwm2A */ 0x0A4 (PIN_OUTPUT | MUX_MODE3 )//(R2) LCD_data1.ehrpwm2A *=默认 值;}"uartpintrl"= 0 ="uartpin 0;"uincruategin 1 =默认值;"uattrl"="uinuattrl" 1 ="uinuinuinuinuattrl";"uatning1 ="uinuatning1;"uinuinuatning1 = ning2 =";"= 状态="确定"; } ;&uart2{ pinctrl-names ="默认值"; pinctrl-0 =<&uart2_PINs>; 状态="确定"; }; &uart3{ pinctrl-names ="default"; pinctrl-0 =<uart3_PINs>; 状态="确定"; }; uart4{ pinctrl-names ="default"; pinctrl-0 =<uart4_PINs>; 状态="确定"; }; uart5{ pinctrl-names ="default"; pinctrl-0 =<&uart5_PINs>; 状态="确定"; }; &i2c0{ pinctrl-names ="default"; pinctrl-0 =<&i2c0_PINs>; 状态="正常"; 时钟频率=<400000>; tlv320aic3106:tlv320aic3106@18{ 兼容="ti、tlv320aic3106"; reg =<0x18>; ai3x-micbias vg =<1>; 状态="正常"; /*稳压器*/ AVDD-SUPPLY =<&core_audio_supply>; IOVdd-supply =<&core_audio_supply>; DRVDD-SUPPLY =<&core_audio_supply>; DVDD-SUPPLY =<&IO_AUDIO_SUPPLY>; }; pcf8563:pcf8563@51{ 兼容="NXP、pcf8563"; reg =<0x51>; }; }; &mmc3{ status ="确定"; pinctrl-names ="默认值"; pinctrl-0 =<&eMMC_PINs>; VMMC-SUPPLY =<&vmmcsd_fixed>; 总线宽度=<4>; ti、不可拆卸; DMA =<&EDMA_Xbar 12 0 1 EDMA_Xbar 13 0 2>; dma-names ="TX"、"Rx"; } ;_tscadc{ 状态="正常"; TSC{ TI、电线=<4>; ti、x 板电阻=<200>; ti、坐标读数=<5>; TI、wire-config =<0x00 0x11 0x22 0x33>; }; ADC{ TI、ADC 通道=<4 5 6 7>; }; }; &Mac{ Slave =<1>; pinctrl-names ="default"、"sleep"; pinctrl-0 =<&cpsw_default>; pinctrl-1 =<&cpsw_sleep>; 状态="确定"; } ;达芬奇_MDIO{ pinctrl-names ="默认"、"睡眠"; pinctrl-0=<&Davinc_MDIO_default>; pinctrl-1 =<&Davinc_MDIO_SLEEP>; 状态="确定"; }; &cpsw_emac0{ phy_id =<&Davinci_mdio>、<0>; phy-mode ="RMII"; } ;&phy_SEL{ RMII-clock-ext; }; &RTC { 系统电源控制器; }; /* &LCDC { 状态="确定"; }; * /&SGX{ 状态="确定"; }; &USB{ 状态="确定"; } ;&USB_CTRL_mod{ 状态="确定"; }; /usb0_phy{ 状态="确定"; }; &USB1_phy{ 状态="确定"; }; /usb0{ 状态="正常"; DR_MODE ="外设"; }; &USB1{ 状态="正常"; DR_MODE ="主机"; }; &cppi41dma{ 状态=“确定”; };// * SPI 闪存(1Mib) * 0x000000 - 0x01FFFF:SPL (128KiB) * 0x020000 - 0x09FFFF:U-Boot (512KiB) * 0x0A0000 - 0x0BFFFF:U-Boot 环境(128KiB)的第一个副本 * 0x0C0000 - 0x0DFFFF: U-Boot 环境(128KiB)的第二个副本 * /&spi0{ pinctrl-names ="默认值"; pinctrl-0 =<&spi0_PINs>; 状态="确定"; 闪存:s25fl064k@0{ #address-cells =<1>; #size-cells =<1>; compatible ="st、sfl064k" ;<25fall-cells =<2564k>;<2564k>=<25frequency =<1000000;<25frequency = 分区@0{ 标签="u-boot-spl"; reg =<0x000000 0x020000>; } ;分区@1{ 标签="u-boot"; reg =<0x020000 0x080000>; }; 分区@2{ 标签="env1"; reg =<0x0A0000 0x010000>; } ;分区@3{ = 0xenec0000 = 0xenv0\ };状态="env0env0"}; eCAP@48300100{ status ="确定"; pinctrl-names ="默认值"; pinctrl-0 =<&ecap0_PINS_DEFAULT>; }; ehrpwm0:ehrpwm@48300200{ status ="确定"; pinctr-names ="默认值"; pinctrl-0 =<&rmrmpnings> ;} epwmss1{ status ="确定"; ehrpwm1:ehrpwm@48302200{ status ="确定"; pinctrl-names ="默认值"; pinctrl-0 =<&ehrpwm1_PINs>; }; }; epwmss2{ status ="确定"; ehrpwm2:ehrpwm@48304200{ status ="确定"; pinctrl-names ="默认值"; pinctrl-0 =<&ehrpwm2_PINs>; }; };
我尝试使用来控制用户空间中的引脚
Echo 91 >/sys/class/gpio/export
Echo 92 >/sys/class/gpio/export
回显>/sys/class/gpio/gpio91/direction
回显>/sys/class/gpio/gpio92/direction
回声1 >/sys/class/gpio/gpio91/value
echo 0 >/sys/class/gpio/gpio92/value