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.

[参考译文] AM3359:AM3359 Eth1 在 Uboot 上不工作

Guru**** 2416110 points
Other Parts Discussed in Thread: AM3359

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1533933/am3359-am3359-eth1-is-not-working-on-uboot

器件型号:AM3359

工具/软件:

你(们)好

我目前正在使用 AM3359 板上的 U-Boot (u-boot-2019.01+gitAUTOINC+333c3e72d3-g333c3e72d3)、我遇到了ethernet1接口无法按预期工作的问题。

我将附加 DTS 片段并使用 CPSW 驱动程序。  

注意:当我连接 eth1 和 eth2 时、只有在这种情况下 ping 才成功。 但我要求 eth1 独立工作。  

值得为 Eth1 推荐!!!

位于 uboot/arch/arm/dts/am33xx.dtsi 中

MAC:以太网@4a100000{
兼容=“ti、cpsw“;
TI、hwmods =“cpgmac0";“;
Clocks =<&cpsw_125mhz _gclk>、<&cpsw_cpts_rft_clk>;
时钟名称=“fck",“,"CPTs"、"CPTs";“;</s>“
cpdma_channels =<8>;
ale_entries =<1024>;
BD_ram_size =<0x2000>;
NO_BD_ram =<0>;
rx_descs =<64>;
MAC_CONTROL =<0x20>;
//slave =<2>;
从器件=<1>;
ACTIVE_SLAVE =<0>;
CPts_clock_mult =<0x80000000>;
CPTS_CLOCK_SHIFT =<29>;
REG =<0x4a100000 0x800
0x4a101200 0x100>;
#address-cells =<1>;
#size-cells =<1>;
/*
* c0_rx_threshold_pend
* c0_rx_pend
* c0_tx_pend
* c0_MISC_PEND
*/
中断=<40 41 42 43>;
范围;
SYSCON =<&SCM_conf>;
STATUS =“已禁用“;

davinci_mdio:MDIO@4a101000{
兼容=“ti、davinci_mdio“;
#address-cells =<1>;
#size-cells =<0>;
TI、hwmods =“davinci_mdio";“;
bus_freq =< 1000000>;

REG =<0x4a101000 0x100>;
STATUS =“已禁用“;
};

cpsw_emac0:slave@4a100200{
/*由 U-Boot 填充*/
MAC-ADDRESS =[ 00 00 00 00 00 00 ];
};

cpsw_emac1:slave@4a100300{
/*由 U-Boot 填充*/
MAC-ADDRESS =[ 00 00 00 00 00 00 ];
};

PHY_SEL:cpsw-phy-sel@44e10650{
兼容=“ti、am3352-cpsw-phy-SEL“;
reg=<0x44e10650 0x4>;
reg-names =“gmii-sel";“;
};
};

在 u-boot/arch/arm/dts/am335x-icev2.dts 中

&Mac{
pinctrl-names =“default",“,"sleep"、"sleep";“;</s>“
pinctrl-0 =<&cpsw_default>;
pinctrl-1 =<&cpsw_sleep>;
从器件=<2>;
ACTIVE_SLAVE =<1>;//添加
dual_emac;//已注释
状态=“正常“;
};

&davinci_mdio{
pinctrl-names =“default",“,"sleep"、"sleep";“;</s>“
兼容=“ti、cpsw-mdio“、“ti、davinci_mdio“;
pinctrl-0 =<&davinci_mdio_default>;
pinctrl-1 =<&DaVinci MDIO_SLEEP>;
状态=“正常“;
RESET-GPIO =<&GPIO3 13 GPIO_ACTIVE_HIGH>;
//RESET-GPIO =<&GPIO3 13 GPIO_ACTIVE_HIGH>、<&GPIO3 21 GPIO_ACTIVE_HIGH>;
//RESET_GPIO=<&GPIO3 13 GPIO_ACTIVE_LOW>;
reset-delay-us =<2>;

};
&cpsw_emac0{
PHY_id =<&davinci_mdio>、<0>;
PHY-MODE =“RGMII-txid";“;
dual_emac_res_vlan =<1>;
};

&cpsw_emac1{
PHY_id =<&davinci_mdio>、<3>;
PHY-MODE =“RGMII-txid";“;
dual_emac_res_vlan =<2>;
};

在 uboot/board/ti/AM335x/board.c 中

静态结构体 cpsw_slave_data cpsw_slaves[]={

slave_reg_ofs = 0x208、
.sliver_reg_ofs = 0xd80、
phy_addr = 0、
phy_if = PHY_INTERFACE_MODE_RGMII、
}、

SLAVE_reg_OFS = 0x308、
.sliver_reg_ofs = 0xdc0、
phy_addr = 3、
phy_if = PHY_INTERFACE_MODE_RGMII、
}、
};

静态结构 cpsw_platform_data cpsw_data ={
.MDIO_BASE = CPSW_MDIO_BASE、
.cpsw_base = CPSW_base、
.MDIO_div = 0xff、
.channels = 8、
.cpdma_reg_ofs = 0x800、
.slave = 1、//LFT
.slave_data = cpsw_slave、
ale_reg_ofs = 0xd00、
ALE_ENTRY = 1024、
.host_port_reg_ofs = 0x108、
.hw_stats_reg_ofs = 0x900、
.bd_ram_ofs = 0x2000、
.mac_control =(1 << 5)、
.control = cpsw_control、
.HOST_PORT_Num = 0、
.version = CPSW_CTRL_VERSION_2、
};

cpsw_default:cpsw_default{
pinctrl-single、pins =<
/*从器件 1 */
AM33XX_IOPAD (0x914、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* mii1_txen.rgmii1_tctl */
AM33XX_IOPAD (0x918、PIN_INPUT_PULLDOWN | MUX_MODE2)/* mii1_rxdv.rgmii1_rctl */
AM33XX_IOPAD (0x91c、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* mii1_txd3.rgmii1_td3 */
AM33XX_IOPAD (0x920、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* mii1_txd2.rgmii1_td2 */
AM33XX_IOPAD (0x924、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* mii1_txd1.rgmii1_TD1 */
AM33XX_IOPAD (0x928、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* mii1_txd0.rgmii1_td0 */

AM33XX_IOPAD (0x92c、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* mii1_txclk.rgmii1_tclk */
AM33XX_IOPAD (0x930、PIN_INPUT_PULLDOWN | MUX_MODE2)/* mii1_rxclk.rgmii1_RCLK */
AM33XX_IOPAD (0x934、PIN_INPUT_PULLDOWN | MUX_MODE2)/* mii1_rxd3.rgmii1_rd3 */
AM33XX_IOPAD (0x938、PIN_INPUT_PULLDOWN | MUX_MODE2)/* mii1_rxd2.rgmii1_rD2 */
AM33XX_IOPAD (0x93c、PIN_INPUT_PULLDOWN | MUX_MODE2)/* mii1_rxd1.rgmii1_RD1 */
AM33XX_IOPAD (0x940、PIN_INPUT_PULLDOWN | MUX_MODE2)/* mii1_rxd0.rgmii1_rd0 */
/* AM33XX_IOPAD (0xA34、PIN_INPUT_PULLUP | MUX_MODE7)/*(F15) USB1_DRVVBUS.GPIO3[13]*/

/*pinmux(对于 max24288*/)
AM33XX_IOPAD (0x840、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* GPMC_a0.rgmii2_tctl */
AM33XX_IOPAD (0x844、PIN_INPUT_PULLDOWN | MUX_MODE2)/* GPMC_A1.rgmii2_rctl */
AM33XX_IOPAD (0x848、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* GPMC_A2.rgmii2_td3 */
AM33XX_IOPAD (0x84c、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* GPMC_A3.rgmii2_td2 */
AM33XX_IOPAD (0x850、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* GPMC_A4.rgmii2_TD1 */
AM33XX_IOPAD (0x854、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* GPMC_A5.rgmii2_td0 */
AM33XX_IOPAD (0x858、PIN_OUTPUT_PULLDOWN | MUX_MODE2)/* GPMC_A6.rgmii2_tclk */
AM33XX_IOPAD (0x85c、PIN_INPUT_PULLDOWN | MUX_MODE2)/* GPMC_A7.rgmii2_RCLK */
AM33XX_IOPAD (0x860、PIN_INPUT_PULLDOWN | MUX_MODE2)/* GPMC_A8.rgmii2_rd3 */
AM33XX_IOPAD (0x864、PIN_INPUT_PULLDOWN | MUX_MODE2)/* GPMC_A9.rgmii2_rD2 */
AM33XX_IOPAD (0x868、PIN_INPUT_PULLDOWN | MUX_MODE2)/* GPMC_A10.rgmii2_rD1 */
AM33XX_IOPAD (0x86c、PIN_INPUT_PULLDOWN | MUX_MODE2)/* GPMC_A11.rgmii2_rd0 */
>;
};

cpsw_sleep:cpsw_sleep{
pinctrl-single、pins =<
AM33XX_IOPAD (0x914、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(J16) gmii1_txen.rgmii1_tctl */
AM33XX_IOPAD (0x918、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(J17) gmii1_rxdv.rgmii1_rctl */
AM33XX_IOPAD (0x92c、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(K18) gmii1_txclk.rgmii1_tclk */
AM33XX_IOPAD (0x930、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(L18) gmii1_rxclk.rgmii1_RCLK */
AM33XX_IOPAD (0x928、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(K17) gmii1_txd0.rgmii1_td0 */
AM33XX_IOPAD (0x924、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(K16) gmii1_txd1.rgmii1_TD1 */
AM33XX_IOPAD (0x920、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(K15) gmii1_txd2.rgmii1_td2 */
AM33XX_IOPAD (0x91c、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(J18) gmii1_txd3.rgmii1_td3 */
AM33XX_IOPAD (0x940、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(M16) gmii1_rxd0.rgmii1_rd0 */
AM33XX_IOPAD (0x93c、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(L15) gmii1_rxd1.rgmii1_RD1 */
AM33XX_IOPAD (0x938、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(L16) gmii1_rxd2.rgmii1_rD2 */
AM33XX_IOPAD (0x934、(PIN_INPUT_PULLDOWN | MUX_MODE7)/*(L17) gmii1_rxd3.rgmii1_rd3 */
/* AM33XX_IOPAD (0xA34、PIN_OUTPUT_PULLDOWN | MUX_MODE7)*/
/*从属设备 2 重置值*/
AM33XX_IOPAD (0x840、PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD (0x844、PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD (0x848、PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD (0x84c、PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD (0x850、PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD (0x854、PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD (0x858、PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD (0x85c、PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD (0x860、PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD (0x864、PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD (0x868、PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD (0x86c、PIN_INPUT_PULLDOWN | MUX_MODE7)

>;
};

davinci_mdio_default:davinci_mdio_default{
pinctrl-single、pins =<
/* MDIO */
AM33XX_IOPAD (0x948、(PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0))/* MDIO_DATA.MDIO_DATA */
AM33XX_IOPAD (0x94c、(PIN_OUTPUT_PULLUP | MUX_MODE0))/* mdio_clk.mdio_clk */

/* AM33XX_IOPAD (0x88C、(PIN_OUTPUT_PULLUP | MUX_MODE5))/*(V12) GPMC_clk.pr1_mdio_mdclk */
/* AM33XX_IOPAD (0x888、(PIN_INPUT_PULLUP | MUX_MODE5))/*(T13) GPMC_CSn3.pr1_MDIO_DATA*/

>;
};

davinci_mdi_sleep:davinci_mdi_sleep{
pinctrl-single、pins =<
/* MDIO 复位值*/
AM33XX_IOPAD (0x948、(PIN_INPUT_PULLDOWN | MUX_MODE7))
AM33XX_IOPAD (0x94c、(PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};