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.

[参考译文] AM3352:GPIO 组映射不正确

Guru**** 2540720 points
Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/568315/am3352-gpio-banks-mapped-incorrectly

器件型号:AM3352

您好!

我有一个使用 AM3352处理器的定制板。 除了 GPIO 引脚映射外、一切都正常。 唯一工作正常的 GPIO 组是 GPIO 96-127。 此映射包含一个修改后的 AM335x-evmsk.dts 文件、我将使用该文件来测试电路板功能。 如果我在同一个操作系统和电路板上加载 BeagleBone Black AM335x-boneblack.dTB 文件、则 GPIO 地址正确。 下面是我的系统的一些详细信息。


Linux:使用 Yocto 定制

DTS:已修改 AM335x-evmsk.dts (附后)

也尝试过 ti-linux-processor-sdk、结果相同。 从而得出结论、它必须是我的 DTS 文件。

具有 BBB DTB 的电路板输出:

root@BeagleBone:~# cat /sys/kernel/debug/gpio
GPIO 0-31、platform/44e07000.gpio、gpio:
gpio-6 ( |CD) 在低 IRQ

GPIO 32-63、platform/4804c000.gpio 中、gpio:
gpio-53 ( ?) 输出低
GPIO-54 ( ?) 输出低
GPIO-55 ( ?) 输出高
电压 GPIO-56 ( ?) 输出低

GPIO 64-95、platform/481ac000.gpio、gpio:

gpio96-127、platform/481ae000.gpio、gpio:

您可以看到地址是正确的。 使用自定义 DTB 文件输出:

GPIO 0-31、platform/481ac000.gpio、gpio:

gpio32-63、platform/44e07000.gpio、gpio:
gpio-38 ( |CD) 在 lo IRQ

GPIOs 64-95、platform/4804c000.gpio 中、gpio:

gpio96-127、platform/481ae000.gpio 中、gpio:
gpio-114 ( |sysfs) 你(们)好
GPIO-115 ( |sysfs) 你(们)好
GPIO-116 ( |sysfs) 你(们)好 

在这里、前三个 GPIO 块不正确。 但我能够控制 GPIO 的96-127。

DTS:

/dts-v1/;

#include "am33xx.dtsi"
#include 
#include 

/{
模型="TI AM335x EVM-SK";
兼容="ti、AM335x-evmsk"、"ti、am33xx";

CPU{
CPU@









@0{CPU0-supply =<&V vdd1_reg>;};MEMORY{DEVICE_TYPE =" MEMORY;reg =<0x800000000 0x0000-supply =< vbd1_regulator

;};<vbt vbulator = 100
–bt = 100 vbt d0000/volt.000+ regulator;}<vbt bt = vbt bt bt bulator = 0 = vbt vbt bt bt bt bt
d/ re稳 压器
;}
};

panel {
compatible ="ti,tilcdc,panel";
pinctrl-names ="default"、"sleep";
pinctrl-0 =<&lcd_pins_default>;
status ="oke";
Panel-info{
ac-bias =<255>;
AC-BIAS-INtrpt =<0>;
DMA-BURST-SZ =<16>;
bpp =<16>;
FDD =<0x80>;
同步边沿 =<0>;
SYNC-Ctrl =<1>;
栅格顺序 =<0>;
第五次 =<0>;
};
显示时序{
320x240{
hactive =<320>;
活跃 =<240>;
后沿 =<5>;
前沿=<58>;
HSYNC - len =<47>;
后沿 =<11>;
垂直前沿=<23>;
垂直同步长度 =<2>;
时钟频率=<12000000>;
HSYNC-ACTIVE =<0>;
VSYNC-ACTIVE =<0>;
};
};
};
}

;&am33xx_pinmux{

LCD_PINS_DEFAULT:pinmux_LCD_PINS_DEFAULT{
pinctrl-single、PINS =<
0xe0 (PIN_OUTPUT | MUX_MODE0)/*(U5) LCD_vSYNC.LCD_vsync */
0xe4 (PIN_OUTPUT | MUX_MODE0)/*(R5) LCD_HSYNC.LCD_HSYNC *
0xe8 (PIN_OUTPUT | MUX_MODE0)/*(V5) LCD_pclk.LCD_pclk */
0xEC (PIN_OUTPUT | MUX_MODE0)/*(R6) LCD_AC_BIAS_EN.LCD_AC_BIAS_EN *
0xA0 (PIN_OUTPUT | MUX_MODE0)/*(R1) LCD_Data0.LCD_Data0 */
0xa4 (PIN_OUTPUT | MUX_MODE0)/*(R2) LCD_data1.LCD_data1 */
0xa8 (PIN_OUTPUT | MUX_MODE0)/*(R3) LCD_data2.LCD_data2 */
0xac (PIN_OUTPUT | MUX_MODE0)/*(R4) LCD_data3.LCD_data3 */
0xb0 (PIN_OUTPUT | MUX_MODE0)/*(T1) LCD_data4.LCD_data4 */
0xb4 (PIN_OUTPUT | MUX_MODE0)/*(T2) LCD_data5.LCD_data5 */
0xb8 (PIN_OUTPUT | MUX_MODE0)/*(T3) LCD_data6.LCD_data6 */
0xbc (PIN_OUTPUT | MUX_MODE0)/*(T4) LCD_data7.LCD_data7 */
0xc0 (PIN_OUTPUT | MUX_MODE0)/*(U1) LCD_data8.LCD_data8 */
0xc4 (PIN_OUTPUT | MUX_MODE0)/*(U2) LCD_data9.LCD_data9 */
0xc8 (PIN_OUTPUT | MUX_MODE0)/*(U3) LCD_data10.LCD_data10 */
0xcc (PIN_OUTPUT | MUX_MODE0)/*(U4) LCD_data11.LCD_data11 */
0xd0 (PIN_OUTPUT | MUX_MODE0)/*(V2) LCD_data12.LCD_data12 */
0xd4 (PIN_OUTPUT | MUX_MODE0)/*(V3) LCD_data13.LCD_data13 *
0xd8 (PIN_OUTPUT | MUX_MODE0)/*(V4) LCD_data14.LCD_data14 */
0xdc (PIN_OUTPUT | MUX_MODE0)/*(T5) LCD_data15.LCD_data15 */
>;
};

eMMC_PINS_DEFAULT:pinmux_eMMC_PINS_DEFAULT{
pinctrl





|-single、pins =< 0x80 (PIN_INPUT_PULLUP | MUX_MODE2)/* GPMC_csn1.mmc1_clk */ 0x84 (PIN_INPUT_PULLUP | MUX_MODE2)/* GPMC_CST_PULLUP * 0x00 (PIN_M0_MODE1)/PIN_MODE1 (0xMC_MODE1)*输入/0xMC_MODE1 (0xMC_MODE1)*输入/0xMC_MODE1)*输入1 (0xMC_MODE1)/0xMC_MODON_MODE1 (0xMC_MODON_MODE1)* 1 (0xMC_MODON_MODE1)* 1 (0xMC_MODON_MODON_MODE1)* 1 (0xMC_MODON_MODE1)* 1 (0xMC_MODON_MODE1)* 1 (0xMC_MODON_MODON_MODON_MODE1)/GPMC_MO
/* GPMC_AD4.mmc1_data4 */
0x14 (PIN_INPUT_PULLUP | MUX_MODE1)/* GPMC_AD5.mmc1_DAT5 *
/ 0x18 (PIN_INPUT_PULLUP | MUX_MODE1)/* GPMC_AD6.mmc1_DAT6 */ 0xMC_7_MODE1*
(PIN_AD1_PULLUP)/*输入
>;
//0x74 (PIN_INPUT_PULLUP | MUX_MODE7)/* GPMC_WPN.GPIO0_31 */
/0x80 (PIN_INPULLUP | MUX_MODE2)/* GPMC_Ccsn1.mmc1_MODEUX_1*
/0x84*(PIN_INPLUM_MODE1*

/0xMC_MODE1*/0xMC_MODE1*/0xMC_PULLUM1*/0xMC_MOD1*/0xMC_MODE1*

输入/0xMC_1*/0xMC_MODE1*/0xMC_1*输入/0xMC_MODON1*/0xMC_MODE1*/0xMC_MODE1*/0xMC_MODE1*输入/0xMC_MODE1*/0xMC_MODE1*/0xMC_MODE1*/0xMC_PULLUM1*/0xMC_1*输入/0xMC_MODE1*/0xMC_1*/0xMC_MODE1*/0xMC_1*
};

cpsw_default:cpsw_default{
pinctrl-single、pins =<
/* Slave 1 */
0x110 (PIN_INPUT_PULLUP | MUX_MODE0)/* mii1_rxmibler.mii1_rx1 *
0x114 (PIN_OUTPLUM_1_1_rxmi0_mi0_1_de0*

)*

(0xmi1_dpulldown */0x1_di0_mi1_di0_m12_mi0_mi1_dpulldown *)*/* mii1_txd1.mii1_txd1 */
0x128 (PIN_OUTPUT 下拉| MUX_MODE0)/* mii1_txd0.mii1_txd0 *
/ 0x12c (PIN_INPUT_PULLUP | MUX_MODE0)/* mii1_rxmi1_mux.0*




(rxmi1_mi1_mu_muxi1_mux.0*输入)* rxmu_muxi0_muxi1_muxi1_muxi1_mu0_muxi1_mu_mux.0*(0x12c)/* mii1_rxd0.mii1_rxd0 *
/>;
};

DaVinci_MDIO_default:DaVinci_MDIO_default{
pinctrl-single、pins =<
/* MDIO */
0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)/* MDIO_DATA.MDIO *=/0x148 (PIN_PULLU_PULLUP

)
*)*/ MDIO_PULLU_PULLUX * 0 + MDIO_PULLUX *(*)/MDIO_PULLUX *)*输出

mmc1_pins:pinmux_mmc1_pins{
pinctrl-single、pins =<
0x160 (PIN_input | MUX_MODE7)/* GPIO0_6 */
>;
};


microMicroSD 引脚默认值:pinmux_microSD 引脚默认值{
pinctrl-single、pins =<
0x100 (PIN_INPUT | MUX_MODE0)/*(G17) mmc0_clk.mmc0_clk *
0x104 (PIN_OUTPUT | MUX_MODE0)/*(G18) mmc0_cmd.mmc0_cmd *
0xFC (PIN_INPUT | MUX_MODE0)/*(G16) mmc0_data0.mmc0_data0 */
0xf8 (PIN_INPUT | MUX_MODE0)/*(G15) mmc0_data1.mmc0_data1 */
0xf4 (PIN_INPUT | MUX_MODE0)/*(F18) mmc0_data2.mmc0_data2 */
0xf0 (PIN_INPUT | MUX_MODE0)/*(F17) mmc0_data3.mmc0_data3 */
0x160 (PIN_INPUT | MUX_MODE5)/*(C15) spi0_CS1.mmc0_sdcd */
>;
};


i2c0_pins_default:pinmux_i2c0_pins_default{
pinctrl-single、pins =<
0x18c (PIN_INPUT | MUX_MODE0)/*(C16) I2C0_SCL.I2C0_SCL */
0x188 (PIN_INPUT | MUX_MODE0)/*(C17) I2C0_SDA.I2C0_SDA *
>;
};

uart0_PINS_DEFAULT:pinmux_uart0_PINS_DEFAULT{
pinctrl-single、pins =<
0x170 (PIN_INPUT | MUX_MODE0)/*(E15) uart0_Rxd.uart0_RxD */
0x174 (PIN_OUTPUT | MUX_MODE0)/*(E16) uart0_TXD.uart0_TXD */
>;
};


uart1_PINS_DEFAULT:pinmux_uart1_PINS_DEFAULT{
pinctrl-single、pins =<
0x180 (PIN_INPUT | MUX_MODE0)/*(D16) uart1_Rxd.uart1_RxD */
0x184 (PIN_OUTPUT | MUX_MODE0)/*(D15) uart1_TXD.uart1_TXD */
>;
};


uart2_pins_default:pinmux_uart2_pins_default{
pinctrl-single、pins =<
0x150 (PIN_INPUT | MUX_MODE1)/*(A17) spi0_SCLk.uart2_RxD */
0x154 (PIN_OUTPUT | MUX_MODE1)/*(B17) spi0_d0.uart2_TXD *
>;
};


uart4_pins_default:pinmux_uart4_pins_default{
pinctrl-single、pins =<
0x70 (PIN_INPUT | MUX_MODE6)/*(T17) GPMC_wait0.uart4_RXD *
0x74 (PIN_OUTPUT | MUX_MODE6)/*(U17) GPMC_WPN.uart4_TXD *
>;
};

GPIO0_PINS_DEFAULT:引脚多路复用_GPIO0_PINS_DEFAULT{
pinctrl-single、pins =<
0x20 (PIN_INPUT | MUX_MODE7)/*(U10) GPMC_AD8.GPIO0[22]*/
0x24 (PIN_INPUT | MUX_MODE7)/*(T10) GPMC_AD9.GPIO0[23]*/
0x28 (PIN_INPUT | MUX_MODE7)/*(T11) GPMC_ad10.GPIO0[26]*/
0x2C (PIN_INPUT | MUX_MODE7)/*(U12) GPMC_AD11.GPIO0[27]*/
>;
};

GPIO1_PINS_DEFAULT:pinmux_GPIO1_PINS_DEFAULT{
pinctrl-single、pins =<
0x30 (PIN_INPUT | MUX_MODE7)/*(T12) GPMC_AD12.GPIO1[12]*/
0x34 (PIN_INPUT | MUX_MODE7)/*(R12) GPMC_AD13.GPIO1[13]*/
0x38 (PIN_INPUT | MUX_MODE7)/*(V13) GPMC_ad14.GPIO1[14]*/
0x3c (PIN_INPUT | MUX_MODE7)/*(U13) GPMC_ad15.GPIO1[15]*/
0x40 (PIN_INPUT | MUX_MODE7)/*(R13) GPMC_a0.GPIO1[16]*/
0x48 (PIN_INPUT | MUX_MODE7)/*(U14) GPMC_A2.GPIO1[18]*/
0x78 (PIN_INPUT | MUX_MODE7)/*(U18) GPMC_BE1n.GPIO1[28]*/
>;
};

GPIO3_PINS_DEFAULT:引脚多路复用_GPIO3_PIN_DEFAULT{
pinctrl-single、pins =<
0x1a0 (PIN_INPUT | MUX_MODE7)/*(B12) McASP0_aclkr.GPIO3[18]*/
0x1a4 (PIN_INPUT | MUX_MODE7)/*(C13) McASP0_fsr.GPIO3[19]*/
0x1a8 (PIN_INPUT | MUX_MODE7)/*(D13) McASP0_axr1.GPIO3[20]*/
>;
};

SPI1_PINS_DEFAULT:pinmux_SPI1_PINS_DEFAULT{
pinctrl-single、pins =<
0x190 (PIN_OUTPUT | MUX_MODE3)/*(A13) McASP0_aclkx.SPI1_SCLK */
0x194 (PIN_OUTPUT | MUX_MODE3)/*(B13) McASP0_FSX.SPI1_d0 */
0x198 (PIN_OUTPUT | MUX_MODE3)/*(D12) McASP0_axr0.SPI1_D1 */
0x19c (PIN_OUTPUT | MUX_MODE3)//(C12) McASP0_ahclkr.SPI1_cs0 */
>;
};
};

&SPI1 {
pinctrl-names ="default";
pinctrl-0 =<&SPI1_PINS_DEFAULT>;

状态="正常";

LCD 控制@0{
兼容="linux、spidev";
SPI-max-frequency =<1000000>;
reg =<0>;
};
};

&GPIO0{
pinctrl-names ="default";
pinctrl-0 =<&GPIO0_PINS_DEFAULT>;

状态="确定";
};

&GPIO1{
pinctrl-names ="default";
pinctrl-0 =<&GPIO1_PINS_DEFAULT>;

状态="确定";
};

&GPIO3{
pinctrl-names ="default";
pinctrl-0 =<&GPIO3_PINS_DEFAULT>;

状态="确定";
}

;uart0{
pinctrl-names ="默认值";
pinctrl-0 =< uart0_PINs_default>;

状态="确定";
}

;uart1{
pinctr-names ="默认值";
pinctr-0 =< uart1_PINs_default>;

状态="






默认



值"pinctrl";"uarttrl"
="默认值4;pinctrl"="默认值4;pinctrl"="uartns";pintrl"="默认值="uartns";pintrl"

status ="确定";
}

;&i2c0{
pinctrl-names ="默认值";
pinctrl-0 =<&i2c0_PINS_DEFAULT>;

status ="确定";
时钟频率=<400000>;

TPS:TPS@2D{
reg =<0x2D>;
};
};wkup_ti_ipc

{

<Vt7 m3-tt、pin t-tri;ti-tt = GPIO 切换
TI、SCALE-DATA-FW ="AM335x-EVM-SCALE-DATA.bin";
};

#include "tps65910.dtsi"

&TPS{
vcc1-supply =<VBAT>;
vcc2-supply =<VBAT>;
vcc3-supply =<VBAT>;
vcc4-supply =<VBAT>
;vcc4-supply = Vcc5;vccAT>
vcc6-supply =<VBAT>;
vcc7-supply =<VBAT>;
vcci-supply =<VBAT>;

regulators{
vrtc_reg:regulator@0{
regulator-always-on;
};

VIO_reg:regulators-always-on@



@1{vdd1_reg:regulators-forma-d/
最大值= 1.500V



、最大值= Vmand-voltagors-on;v-rand-v-rulators-on = 1.52v/v-voltagors-on;v-rand-rand-v-v-rand-v-rand-v-rand-v-v-v-randv-v-v-v-v-randv-randv-v-

};

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_regul器

= v33x2-rev;v3-regul器=v33x1-v2-v2-vrev;v3-regul器= v3-v3-v3-v3-v3-regr;v3-v3-v3-v3-regr;v3-regr = v3-v3-v3-v3-v3-v3-v3-v3-v3-v3-regr;v3-v3-v3-v3-v3-v-regr;v3-v3-v3-v3-v3-v3-v3-v3-v3-v3-v3-v3-v3-v3-v
稳压器常开;
};
};
};

&cpsw_emac0{
phy_id =<&Davinc_mdio>、<0>;
phy-mode ="MII";
}

;&Mac{
pinctrl-names ="默认值";
pinctr-0 =<&cpsw_default>;
status ="确定";
};

&Davinc_mdio{
="

默认值"=


";"mcinc0";}
VMMC-SUPPLY =<&VMMC_REG>;
总线宽度=<0x4>;
pinctrl-names ="default";
pinctrl-0 =<&mmc1_PINs>;
CD-GPIO =<&GPIO0 6 GPIO_ACTIVE_LOW>;
状态="oke";
};

&mmc2{
&VMMC-supply =<&mctrlnation>



;<VMctrloverview_status="microcontrollers"="microcontrollers";<&trloverview"="microcontrollers-names"-="microcontrollers";VMMC-names"-="microcontrollers";"microcontrollers"="
};

sham{
status ="确定";
};

&AES{
status ="确定";
}

;&LCDC{
状态="确定";
}

;&RTC{
系统电源控制器;
}; 

我已经复用的其他引脚也可以工作、LCD、SPI、I2C0和 UART 都没有问题。 我必须是 DTS 和 GPIO 的一部分。

我们非常感谢您的任何帮助或建议、并提前感谢您的帮助或建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是一些可能有所帮助的更多信息。 我已对 BeagleBone Black 和我的定制 DTB 文件进行了解编译、以查看是否存在差异及其可能存在的差异。 搜索 GPIO 块我看到的第一个变化如下:

    BBB DTB:

    pinmux_GPIO0_PINS_DEFAULT{
    pinctrl-single、PINS =<0x20 0x2F 0x24 0x2F 0x28 0x2F 0x2C 0x2F>;
    Linux、phandle =<0x31>;
    phandle =<0x31>;
    }; 

    定制 DTB:

    pinmux_GPIO0_PINS_DEFAULT{
    pinctrl-single、PINS =<0x20 0x2F 0x24 0x2F 0x28 0x2F 0x2C 0x2F>;
    Linux、phandle =<0x30>;
    phandle =<0x30>;
    }; 

    两个编译版本之间的相位似乎不同。 我不知道这是不是它应该是怎样的。 我已经浏览了我的文件和 am33xx.dtsi 文件、以查看可能设置了 phandle 的内容。 但到目前为止还不幸运。 这是我在搜索 GPIO0两个文件时看到的唯一变化。 我已附上两个已解编译的 DTS 文件、以防出现这种情况。 如果我修改解编译的 DTB 中的范德并再次编译、我将看到会发生什么情况。 对这种情况发生的原因有任何帮助都是很好的。

    e2e.ti.com/.../dtbs.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    更新了"帖子"。 意外地发布了两次相同的片段。 我的自定义 DTB 文件的第二个相位是0x30
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、还有一个更新。

    我已经使用一些权变措施来触发和读取 GPIO。 这不是理想的、因为它有点受限、但至少已经测试了硬件。

    我从 DTB 中删除了所有 GPIO 引脚复用、GPIO 的96 - 127除外、因为它们正确。 这基本上会在 Linux 启动后使 GPIO 处于未声明状态。 然后、我使用 sysfs 来导出和设置 GPIO、并读取或触发它们。 如果我不映射 GPIO 块0和0。 映射似乎正确:

    GPIO 0-31、platform/44e07000.gpio、gpio:
    gpio-6 ( |CD) 在 lo IRQ
    GPIO-22 ( |sysfs) 你(们)好
    GPIO-26 ( |sysfs) 你(们)好
    GPIO-27 ( |sysfs) 输出高
    
    电流 GPIO 32-63、platform/4804c000.gpio、gpio:
    gpio-44 ( |sysfs) 输出低
    GPIO-45 ( |sysfs) 你(们)好
    GPIO-46 ( |sysfs) 低
    GPIO-47 ( |sysfs) 低
    GPIO-48 ( |sysfs) 低
    GPIO-50 ( |sysfs) 输出低
    GPIO-60 ( |sysfs) 在 HI
    
    GPIO 64-95、platform/481ac000.gpio、gpio:
    
    gpio96-127、platform/481ae000.gpio、gpio:
    gpio-114 ( |sysfs) 你(们)好
    GPIO-115 ( |sysfs) 你(们)好
    GPIO-116 ( |sysfs) 输出高
    
    电平 GPIO 506-511、platform/tps65910-gpio、tps65910、CAN 睡眠: 

    您可以看到、我成功导出了一组 GPIO、并且已经进行了测试。

    我仍然需要在 DTB 文件中正确执行该操作、因为我需要将它们注册为某些器件和触发器以及所有这些器件。 我还需要多路复用 PWM1和 PWM2、我还没有找到与 sysfs 相关的方法、如果我尝试使用 DTB、可能会导致相同的问题。

    当我发现一些新东西时、我将保持更新。 但再说一次。 任何帮助或方向都是很好的。

    PS:更改相位是我的一个愚蠢的呼叫。 唯一标识器件节点的方法。 应该在发布前使用 google。

    此致、

    Thomas

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

    TI 的任何人是否都设法了解了这一点? 我是否可以发送更多详细信息?

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

    大家好、有没有人能帮助我解决这个问题?

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

    尊敬的 Thomas:

    我怀疑操纵 GPIO 映射的范德属性、您对此的最终结论是什么? 此外、您使用的是哪个处理器 SDK 版本? 我将在我的结尾处检查此项?

    此致、
    Kemal

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

    我使用"ti-processor-sdk-linux-am335x-evm-03.02.00.05-linux-x86-64安装"进行测试。 我没有更改相位、因为我可以看到它是分配给它的、而不是 DTS 分配的。

    到目前为止、我最好的方法是、当我为某些引脚添加 GPIO 映射时、它会导致映射不正确。 我通过 TI 的 CAN 多路复用工具生成了映射。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我在 BBB 上测试了这一点、运行 TI SDK 03.01.00.06 (内核4.4.419)、它应该与 SDK-LINUX-AM335x-EVM-03.02.00.05非常相似。 我使用预构建的 DTB 文件、但不对 DTB 进行任何添加、并且我成功地从 P8扩展头上的 GPIO0_26和 GPIO1_14 P8_16和 P8_14获取输出:

    根目录@AM335x-EVM:/sys/class/gpio CD gpio46                                                      

    root@AM335x-EVM:/sys/class/gpio/gpio46 ls                                                      

    ACTIVE_LOW 器件   方向 边缘    电源   子系统 uevent   值                               

    root@AM335x-EVM:/sys/class/gpio/gpio46 cat direction                                                 

    在中                                                                          

    root@AM335x-EVM:/sys/class/gpio/gpio46回显>方向                                             

    root@AM335x-EVM:/sys/class/gpio/gpio46 cat 值                                                   

    0                                                                           

    root@AM335x-EVM:/sys/class/gpio/gpio46 echo 1 > value

    GPIO26的步骤相同:  

    root@AM335x-EVM:/sys/class/gpio echo 26 > export
    root@AM335x-EVM:/sys/class/gpio ls
    导出 GPIO26 gpioip0 gpioip32 gpioip64 gpioip96不导出
    根目录@AM335x-EVM:/sys/class/gpio CD GPIO26/
    root@AM335x-EVM:/sys/class/gpio/gpio26 ls
    ACTIVE_LOW 器件方向边缘电源子系统 uevent 值
    root@AM335x-EVM:/sys/class/gpio/gpio26回显>方向

    root@AM335x-EVM:/sys/class/gpio/gpio26 echo 1 > value
    root@AM335x-EVM:/sys/class/gpio/gpio26 echo 0 > value

    我看到 GPIO 引脚切换。  您正在修改内核 DTB、对吧?  

    因此、我建议您检查 u-boot DTS 是否与您使用的 GPIO 引脚重复。 最新的 TI 内核在 u-boot 中也有 DTS (arch/arm/dts/大多数 引脚复用发生的地方)、因此请确保它不会与您使用的 GPIO 发生混乱。  

    此致、  
    Yordan

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

    感谢你的答复。 是的、我有一个自定义 DTB 文件、它是一个修改后的 AM335x-evmsk.dTB 文件。 我将查看 u-boot dtb 文件、并将其修改为相同的文件、并使两者都相同。 编译 u-boot 时、u-boot dtb 文件是否附加到 u-boot 映像? 我需要对这方面做更多的阅读。

    如果我使用预构建的 DTB 文件、我还可以使其正常工作、或者如果我不添加 GPIO 定义。

    我将在查看 u-boot dtb 后立即更新。 希望这将解决该问题。

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

    [引用]编译 u-boot 时 u-boot dtb 文件是否附加到 u-boot 映像中? [/报价]

    是的、它附加在 u-boot 映像中。
    仅供我参考、您能否共享用于构建内核和 DTB 的步骤? 您可以使用顶级 makefile:
    cd ~/ti-processor-sdk-linux-am335x-evm-03.02.00.05
    使 Linux*//编译 Linux 内核和 DTB */
    使 u-boot //成为 u-boot 的 u-boot //
    或者至少检查 Makefile & Rules.make 以查看正确设置环境所需的内容。

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

    感谢您的回答。 我基本上使用您展示的过程、在我更改了电路板 supPOR/Linux 目录中的 DTS 文件后、转到 SDK 根目录并运行"make linux"。 每次修改 DTS 文件并构建新的 DTB 时、我都不会重新构建 u-boot。 这可能会导致问题吗?

    这是我第一次接触器件树、因此我遇到了一些问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    目前我们似乎有同样的问题;-(
    我们希望这不是我们使用这种讨论的问题。

    我们还基于 AM335x-bonebblack.dts 文件创建了定制 dts 文件、并添加了文档中定义的 GPIO 设置。

    从 DTS 文件中提取

    GPIO1_Pins:pinmux_GPIO1_Pins{
    pinctrl-single、pins =<
    0x34 (PIN_OUTPUT PULLUP | MUX_MODE7)/*(R12) GPMC_AD13.GPIO1[13]*/
    0x38 (PIN_OUTPUT 上拉| MUX_MODE7)/*(V13) GPMC_ad14.GPIO1[14]*/
    0x3c (PIN_OUTPUT_PULLUP | MUX_MODE7)/*(U13) GPMC_AD15.GPIO1[15]*/
    >;
    };
    GPIO2_Pins:pinmux_GPIO2_Pins{
    pinctrl-single、pins =<
    0x8c (PIN_OUTPUT 上拉| MUX_MODE7)/*(V12) GPMC_clk.GPIO2[1]*/
    >;
    &GPIO0{
    状态="确定";
    };
    
    &GPIO1{
    pinctrl-names ="default";
    pinctrl-0 =<&GPIO1_PINs>;
    状态="正常";
    
    P13{
    GPIO-hog;
    GPIO =<13 GPIO_ACTIVE_HIGH_>;
    输出高电平;
    line-name ="SoftwareReset";
    };
    P14{
    GPIO-hog;
    GPIO =<14 GPIO_ACTIVE_HIGH_>;
    输出高电平;
    line-name ="ResetNTR";
    };
    /*P15{
    GPIO-hog;
    GPIO =<15 GPIO_ACTIVE_HIGH_>;
    输出高电平;
    线路名称="复位 eMMC";
    };*/
    };
    
    &GPIO2{
    pinctrl-names ="default";
    pinctrl-0 =<&GPIO2_PINs>;
    状态="正常";
    
    P1{
    GPIO-hog;
    GPIO =<1 GPIO_ACTIVE_HIGH_>;
    输出高电平;
    线路名称="复位 SLIC";
    };
    };
    
    &GPIO3 {
    状态="确定";
    }; 

    在将 DTS 编译到 DTB 并加载到定制板上之后,我们注意到 GPIO 偏移被重新映射了吗?

    未知:~# cat /sys/kernel/debug/gpio
    GPIO 0-31、platform/44e07000.gpio、gpio:
    gpio-6 ( |CD) 在 lo IRQ
    
    GPIO 32-63、platform/481ae000.gpio、gpio:
    
    gpio64-95、platform/4804c000.gpio、gpio:
    gpio-77 ( |软件重置) 输出高
    电压 GPIO-78 ( |重新设置 NTR) 输出高
    
    GPIO 96-127、platform/481ac0.gpio、gpio:
    gpio-97 ( |重置 SLIC) 你(们)好 

    我们期望:

    未知:~# cat /sys/kernel/debug/gpio
    GPIO 0-31、platform/44e07000.gpio、gpio:
    gpio-6 ( |CD) 在 lo IRQ
    
    GPIO 32-63、platform/4804c000.gpio、gpio:
    
    gpio64-95、platform/481ac000.gpio、gpio:
    
    gpio96-127、 platform/481ae000.gpio、gpio: 

    我们使用 Yocto 环境为定制板构建图像。

    未知:~# uname -a
    Linux 8FXS 4.4.3.11-Yocto 标准#10优先于1月26日15:06:40 CET 2017 armv7l armv7l armv7l armv7l GNU/Linux

    对我们来说,不清楚会发生什么错误?

    提前感谢。

    此致、
    Bart Bogaerts

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

    移除 GPIO 的引脚映射后、我想您会获得与我相同的结果。 您至少可以从 sysfs (/sys/class/gpio/export)触发它们。

    我正忙于测试我的其余硬件并获取用于无线电发射测试的演示。 但是、一旦我完成此操作、我将查看 u-boot 并查看其中的 DTB 文件在移交给内核时是否会导致问题。 不幸的是,我将只能在下周到达那里。 但是、如果您想尝试一下、我们将不胜感激。 下周我将开始进行这方面的工作。

    我会在这里不断发布我的调查结果。

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

    实际上、如果没有 GPIO 引脚映射、则会通过 sysfs 实现正确工作。

    但我们希望使用通过 DTS 文件机制设置默认值。 我们期待着解决方案;-)

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

    BART、

    Yordan 要求提供上述一些信息:
    https://e2e.ti.com/support/arm/sitara_arm/f/791/p/568315/2086881#2086881

    您似乎没有使用 TI 处理器 SDK Linux。
    您可以尝试使用 TI 处理器 SDK 设置吗?
    它将安装内核和 GCC 工具链。 这样、您就可以将其与您得到的结果进行比较。
    基于内核4.4.32的 SDK 3.02位于:
    http://www.ti.com/tool/PROCESSOR-SDK-AM335X

    Anthony

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

    实际上、我们没有使用 TI 处理器 SDK Linux。 我们将使用 Yocto Linux 发行版。 版本= YP Core - Krogoth 2.1.2

    我们想知道这个 Yocto Linux 发行版中存在哪个 SDK、我们怎么知道这个 Yocto 发行版中存在哪个 TI 处理器 SDK 版本? 还是没有关系?

    我们可以尝试使用 TI 处理器 SDK Linux。 GPIO 引脚 mappipngs 处理方式是否在新 SDK 中发生了变化?

    此致、
    Bart Bogaerts