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.

[参考译文] AM4376:U-boot 问题

Guru**** 2540720 points
Other Parts Discussed in Thread: AM4376, AM4372

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/604868/am4376-u-boot-issue

器件型号:AM4376
主题中讨论的其他器件: AM4372

我已经使用器件树为定制板(基于 AM4376)配置了 Uboot-2016 (用于调试控制台的 UART5)。 我已经使用 CCS 通过 JTAG 加载了 SPL、并且可以在 minicom 中看到以下消息。


U-Boot SPL 2016.05-00319-g71499d679F-DIOL"(2017年6月22日- 15:29:21)
SPL:无法从所有引导设备引导
###错误###请重置电路板###


在上述日志条目后使用 CCS 通过 JTAG 加载 U-boot、但我们没有获得任何日志。

以下是 SDK 详细信息。


ti-processor-sdk-linux-am437x-evm-03.03.00.04-Linux-x86-Install.bin
u-boot-2016.05+gitAUTOINC+4db46a6bbbd-g4db46a6bbd
linux-4.4.4.41+gitAUTOINC+f9f6f0db2d-gf9f6f0db2d


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

    你好 Ravi、

    请参阅 此主题描述中的日志。
    您是否已将线环物理更改为 UART5?
    我还建议您仔细检查加载 U-Boot 的地址。

    此致、
    Kemal

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

    "错误..." 消息通常是因为 MLO 不知道在何处查找 u-boot。 引导 ROM 加载 MLO 后、就在跳转到 MLO 之前、它将引导参数块的地址加载寄存器 R0。 块中的一个字段是介质 MLO 的来源。 然后、MLO 使用此选项来查找 u-boot。 由于您使用 CCS、R0具有一些随机地址、因此未设置 BPB。 由于 MLO 设置了时钟和 DDR、因此您应该能够在看到"error..."后使用 CCS 加载 u-boot。 消息。

    Steve K.

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


    感谢你的答复

    出现错误消息后、我正在加载 u-boot、并且能够看到 PC 值0x80800000。
    但仍无法从 u-boot 获取任何消息[logs]。
    我对我的代码进行了以下更改、您能检查每件事情是否正确。

    我将调试控制台从 UART0更改为 UART5
    2.定制板只使用一个16位 DDR3而不是两个16位 DDR3。

    控制台中仅提供以下内容:
    ===========================================

    U-Boot SPL 2016.05-00319-g71499d679F-DIOL"(2017年6月23日- 20:26:14)
    SPL:无法从所有引导设备引导
    ###错误###请重置电路板###

    ================================================================

    代码更改:
    ===================

    diff --git a/arch/arm/cpu/armv7/am33xx/board.c b/arch/arm/cpu/armv7/am33xx/board.c
    索引4618470bad..ae2c3c7dfb 100644
    -- a/arch/arm/cpU/armv7/am33xx/board.c
    ++ b/arch/arm/cpu/armv7/am33xx/board.c
    @@-305、6 +305、8 @@静态空 rtc32k_enable (空)

    #endif

    +
    +#if 0
    静态空 UART_SOFT_RESET (空)

    struct UART_sys * UART_base =(struct UART_sys *) default_UART_base;
    @@-323、6 +325、27 @@静态空 UART_SOFT_RESET (空)
    writel (regval、&UART_base->uartsyscfg);


    +#endif
    +
    +#define UART5_BASE_ADD 0x481AA000
    +static void UART_SOFT_RESET (void)
    +{
    +struct uart_sys * uart_base =(struct uart_sys *) UART5_BASE_ADD;
    +u32 regval;
    +
    +regval = readl (&UART_base->uartsyscfg);
    +regval |= UART_RESET;
    +writel (regval、&UART_base->uartsyscfg);
    +while ((readl (&UART_base->uartsyssts)&
    +UART_CLK_Running_MASK)!= UART_CLK_Running_MASK)
    +;
    +
    +/*禁用智能空闲*/
    +regval = readl (&UART_base->uartsyscfg);
    +regval |= UART_smart_idle_en;
    +writel (regval、&UART_base->uartsyscfg);
    +}
    +
    静态空安全装置禁用(空)

    struct wd_timer *wdtimer =(struct wd_timer *) WDT_BASE;
    diff --git a/arch/arm/cpu/armv7/am33xx/clock_am43xx.c b/arch/arm/cpu/armv7/am33xx/clock_am43xx.c
    索引117a63e7ad.832eba6a43 100644
    -- a/arch/arm/cpU/armv7/am33xx/clock_am43xx.c
    ++ b/arch/arm/cpu/armv7/am33xx/clock_am43xx.c
    @@-55、11 + 55、21 @@ void setup_Clocks_for_console (void)

    u32 clkctrl、ideur= MODULE_CLKCTRL_IDLEST_DISABLED;

    +#if 0
    /*请勿在此函数中添加任何 spl_debug 打印内容*/
    clrsetbits_le32 (&cmwkup->wkclkstctrl、CD_CLKCTRL_CLKTRCTRL_MASK、
    CD_CLKCTRL_CLKTRCTRL_SW_WKUP <<
    CD_CLKCTRL_CLKTRCTRL_SHIFT);
    +#endif
    +
    + idelest = MODULE_CLKCTRL_IDLEST_DISABLED;
    + clkctrl = MODULE_CLKCTRL_IDLEST_DISABLED;
    + clrsetbits_le32 (&cmper->l4lsclkstctrl、CD_CLKCTRL_CLKTRCTRL_MASK、
    + CD_CLKCTRL_CLKTRCTRL_SW_WKUP <<
    + CD_CLKCTRL_CLKTRCTRL_SHIFT);

    +
    +#if 0
    /*启用 UART0 */
    clrsetbits_le32 (&cmwkup->wkup_uart0ctrl、
    MODULE_CLKCTRL_MODULEMODE_MASK、
    @@-72、6 +82、22 @@ void setup_Clocks_for_console (void)
    Idear=(clkctrl & MODULE_CLKCTRL_IDLEST_MASK)>>
    MODULE_CLKCTRL_IDLEST_SHIFT;

    +#endif
    +
    +
    +/*启用 UART5 *
    + clrsetbits_le32 (&cmper->uart5clkctrl、
    + MODULE_CLKCTRL_MODULEMODE_MASK、
    + MODULE_CLKCTRL_MODULEMODE_SW_EXLED_EN <<
    + MODULE_CLKCTRL_MODULEMODE_SHIFT);
    +
    + while ((idele= MODULE_CLKCTRL_IDLEST_DISABLED)||
    +(idime= MODULE_CLKCTRL_IDLEST_Transitioning){
    + clkctrl = readl (&cmper->uart5clkctrl);
    + idele=(clkctrl & MODULE_CLKCTRL_IDLEST_MASK)>>
    + MODULE_CLKCTRL_IDLEST_SHIFT;
    +}
    +


    void enable_basic_clocks (void)
    diff --git a/arch/arm/dts/am4372.dtsi b/arch/arm/dts/am4372.dtsi
    索引3ffa8e016e.b7d47daa08 100644
    ----阿尔克/阿尔姆/DTS/am4372.dtsi
    ++ b/arch/arm/dts/am4372.dtsi
    @@-200、7+200、7 @@
    reg-shift =<2>;
    中断= ;
    ti、hwmods ="uart6";
    -status="禁用";
    /*status ="disabled";*/
    };

    邮箱:邮箱@480C8000{
    diff --git a/arch/arm/dts/AM437x-gp-evm.dts b/arch/arm/dts/AM437x-gp-evm.dts
    索引142bfc52a1.ea64527f2 100644
    --- a/arch/arm/dts/AM437X-gp-evm.dts
    ++ b/arch/arm/dts/AM437x-gp-evm.dts
    @@-22、10 + 22、11 @@
    别名{
    display0 = lcd0;
    serial3 = uart3;
    +serial5 = uart5;
    };

    选择{
    -stdout-path = uart0;
    +stdout-path = uart5;
    tick-timer =&timer2;
    };

    @@-414、6 +415、13 @@
    0x234 (PIN_OUTPUT 下拉| MUX_MODE0)/* uart3_rtsn.uart3_rtsn *
    >;
    };
    +
    + uart5_pins:uart5_pins{
    + pinctrl-single、pins =<
    + 0xd8 (PIN_INPUT_PULLUP | MUX_MODE4)/*(C17) DSS_data14.uart5_RxD */
    + 0x144 (PIN_OUTPUT 上拉| MUX_MODE3)/*(A16) rmii1_ref_clk.uart5_TXD *
    +>;
    +};
    };

    i2c0{(&I)
    @@-614、6 +622、12 @@
    pinctrl-0 =<uart3_PINs>;
    };

    {uart5}(&U
    + 状态="正常";
    + pinctrl-names ="default";
    + pinctrl-0 =<&uart5_PINs>;
    +};
    +
    &USB2_phy1{
    状态="正常";
    };
    diff --git a/board/ti/am43xx/Makefile b/board/ti/am43xx/Makefile
    索引36ecb302c1..9f004d0bed 100644
    -- A/board/ti/am43xx/Makefile
    ++ b/board/ti/am43xx/Makefile
    @@-10、4 + 10、5 @@ ifeq ($(CONFIG_SKIP_LOW_INIT)、)
    obj-y:= mux.o
    字节序

    +obj-y:= mux.o
    obj-y+= board.o
    diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
    索引1db23968f2.bb45ef31fe 100644
    -- A/board/ti/am43xx/board.c
    ++ b/board/ti/am43xx/board.c
    @@-173、6 +173、7 @@ const 结构 EMIF_regs EMIF_regs_LPDDR2 ={
    .EMIF_COS_CONFIG= 0x000FFFFF
    };

    +#if 0
    const 结构 ctrl_ioregs ioregs_DDR3 ={
    .cm0ioctl= DDR3_ADDRCTRL_IOCTRL_Value、
    cm1ioctl= DDR3_ADDRCTRL_WD0_IOCTRL_Value、
    @@-183、7 +184、21 @@ const struct ctrl_ioregs ioregs_DDR3 ={
    .dt3ioctrl= DDR3_DATA_IOCTRL_Value、
    .EMIF_SDRAM_CONFIG_ext= 0xc163、
    };
    +#endif
    +
    +/DDR3 16位变化
    +const 结构 ctrl_ioregs ioregs_DDR3 ={
    +.cm0ioctl= DDR3_ADDRCTRL_IOCTRL_Value、
    +.cm1ioctl= DDR3_ADDRCTRL_WD0_IOCTRL_Value、
    +.cm2ioctl= DDR3_ADDRCTRL_WD1_IOCTRL_Value、
    +.dt0ioctl= DDR3_DATA_IOCTRL_Value、
    +.dt1ioctl= DDR3_DATA_IOCTRL_Value、
    +.dt2ioctrl= DDR3_DATA_IOCTRL_Value、
    +.dt3ioctrl= DDR3_DATA_IOCTRL_Value、
    +.EMIF_SDRAM_CONFIG_ext= 0x0002c163、
    +};

    +/DDR3 16位变化
    const 结构 EMIF_regs DDR3_EMIF_regs_400MHz ={
    SDRAM_CONFIG= 0x638413B2、
    .ref_ctrl= 0x00000C30、
    @@-232、6 +247、7 @@ const 结构 EMIF_regs DDR3_EMIF_regs_400MHz_beta ={
    .EMIF_COS_CONFIG= 0x000FFFFF
    };

    +#if 0
    对于生产 AM43X GP EVM、/* EMIF DDR3配置是不同的*
    const 结构 EMIF_regs DDR3_EMIF_regs_400MHz_production ={
    SDRAM_CONFIG= 0x638413B2、
    @@-255、6 +271、37 @@ const 结构 EMIF_regs DDR3_EMIF_regs_400MHz_production ={
    .EMIF_COS_CONFIG= 0x000FFFFF
    };

    +#endif
    +
    +/DDR3 16位变化
    +
    +
    生产 AM43X GP EVM 的+/-* EMIF DDR3配置不同
    +const 结构 EMIF_regs DDR3_EMIF_regs_400MHz_production ={
    +.SDRAM_CONFIG= 0x61A052B2、
    +.ref_ctrl= 0x00000C30、
    +.SDRAM_tim1= 0xEAAD4DB、
    +.SDRAM_TIT2= 0x266B7FDA、
    +.SDRAM_tim3= 0x107F8678、
    +.read_idle_ctrl= 0x00050000、
    +.zq_config= 0x50074BE4、
    +.temp_alert_config= 0x0、
    +.EMIF_DDR_phy_ctlr_1= 0x0e084008、
    +.EMIF_DDR_ext_phy_Ctrl_1= 0x08020080、
    +.EMIF_DDR_ext_phy_Ctrl_2= 0x00000066、
    +.EMIF_DDR_ext_phy_Ctrl_3= 0x00000091、
    +.EMIF_DDR_ext_phy_Ctrl_4= 0x000000B9、
    +.EMIF_DDR_ext_phy_Ctrl_5= 0x000000E6、
    +.EMIF_rd_wr_exec_thresh= 0x80000405、
    +.EMIF_PRio_class_serv_map= 0x8000000001、
    +.EMIF_CONNECT_id_serv_1_map= 0x80000094、
    +.EMIF_connect_id_serv_2_map= 0x00000000、
    +.EMIF_COS_CONFIG= 0x000FFFFF
    +};
    +
    +
    +/DDR3 16位变化
    +
    静态常量结构 EMIF_regs DDR3_SK_EMIF_regs_400MHz ={
    SDRAM_CONFIG= 0x638413b2、
    SDRAM_CONFIG2= 0x00000000、
    @@-509、7 + 556、8 @@ void scale_vcore (void)

    void set_UART_mux_conf (void)

    -enable_uart0_PIN_mux();
    //enable_uart0_pin_mux ();
    +enable_uart5_pin_mux ();


    void set_mux_conf_regs (void)
    @@-590、6 +638、7 @@ u32 RTC_only_get_board_type (空)

    void SDRAM_init (void)

    +#if 0
    /*
    * EPOS EVM 具有连接到 EMIF 的1GB LPDDR2。
    * GP EMV 具有连接到 EMIF 的1GB DDR3
    @@-616、6 +665、12 @@ void SDRAM_init (void)
    CONFIG_DDR (400、ioregs_DDR3、NULL、NULL、
    &DDR3_idk_EMIF_regs_400MHz、0);

    +#endif
    +/DDR3 16位变化
    +ENABLE_VTT_电脑 控制器();
    +CONFIG_DDR (0、ioregs_DDR3、NULL、NULL、
    +&DDR3_EMIF_regs_400MHz 生产、0);
    +/DDR3 16位变化

    #endif

    diff --git a/board/ti/am43xx/board.h b/board/ti/am43xx/board.h
    索引3f93d13727..a6218b9ca7 100644
    -- A/board/ti/am43xx/board.h
    ++ b/board/ti/am43xx/board.h
    @@-60、4 + 60、5 @@静态内联 int board_is-evm_12_or_later (void)
    void enable_uart0_pin_mux (void);
    void enable_board_pin_mux (void);
    void enable_i2c0_pin_mux (void);
    +void enable_uart5_pin_mux (void);
    #endif
    diff --git a/board/ti/am43xx/mux.c b/board/ti/am43xx/mux.c
    索引 f26b21e869.f776f4f4d6 100644
    -- A/board/ti/am43xx/mux.c
    ++ b/board/ti/am43xx/mux.c
    @@-21、7 + 21、7 @@静态结构 MODULE_PIN_mux rmii1_PIN_mux[]={
    {offset (mii1_rxdv)、mode (1)| RXACTIVE}、/* RMII1_RXDV *
    {offset (mii1_crs)、mode (1)| RXACTIVE}、/* RMII1_CRS_DV *
    {offset (mii1_rxerr)、mode (1)| RXACTIVE}、/* RMII1_RXERR *
    -{offset (rmii1_REFCLK)、mode (0)| RXACTIVE}、/* RMII1_REFCLK *
    //{offset (rmii1_REFCLK)、mode (0)| RXACTIVE}、//* RMII1_REFCLK *
    {-1}、
    };

    @@-53、6 +53、12 @@静态结构 MODULE_PIN_mux uart0_PIN_mux[]={
    {-1}、
    };

    +static 结构 module_pin_mux uart5_pin_mux[]={
    +{offset (LCD_data14)、(mode (4)| PULLUP_EN | RXACTIVE | SLEWCTRL)}、
    +{offset (rmii1_REFCLK)、(MODE (3)| PULLUDDIS | PULUP_EN | SLEWCTRL)}、
    +{-1}、
    +};
    +
    静态结构 MODULE_PIN_mux mmc0_PIN_mux[]={
    {offset (mmc0_clk)、(mode (0)| PULLUDDIS | RXACTIVE)}、/* MMC0_CLK *
    {offset (mmc0_cmd)、(mode (0)| PULLUP_EN | RXACTIVE)}、// MMC0_CMD *
    @@-120、6 +126、11 @@ void enable_uart0_pin_mux (void)
    CONFIG_MODULE_PIN_mux (uart0_PIN_mux);


    +void enable_uart5_pin_mux (void)
    +{
    +CONFIG_MODULE_PIN_mux (uart5_PIN_mux);
    +}
    +
    void enable_board_pin_mux (void)

    CONFIG_MODULE_PIN_mux (mmc0_PIN_mux);
    diff ---git a/configs/am43xx_evm_defconfig b/configs/am43xx_evm_defconfig
    索引7b18ffafc7..8c2396bfe0 100644
    -- a/configs/am43xx_evm_defconfig
    ++ b/configs/am43xx_evm_defconfig
    @@-6、10 + 6、12 @@ CONFIG_DM_SPI=y
    CONFIG_DM_SPI_FLASH=y
    CONFIG_DM_GPIO=y
    CONFIG_SPL_STACK_R_ADDR=0x82000000
    -config_default_device_tree ="AM437X-SK-evm"
    +#CONFIG_DEFAULT_DEVICE_TREE="AM437X-SK-EVM"
    +CONFIG_DEFAULT_DEVICE_TREE="AM437X-GP-EVM"
    CONFIG_SPL=y
    CONFIG_SPL_STACK_R=y
    -config_SYS_Extra 选项="SERIAL1、CONS_INDEX = 1、NAN"
    +#CONFIG_SYS_Extra 选项="SERIAL1、CONS_INDEX = 1、NAN"
    +CONFIG_SYS_Extra 选项="SERIAL6、CONS_INDEX = 6"
    CONFIG_hush_parser=y
    CONFIG_CMD_BOOTZ=y
    # CONFIG_CMD_IMLS 未设置
    @@-60、3 +62、4 @@ CONFIG_G_DNL_VENDOR_NUM=0x0403
    CONFIG_G_DNL_PRODUCT_NUM=db00
    CONFIG_CMD_TIME=y
    CONFIG_DM_I2C=y
    +CONFIG_of_embe=y
    diff --git a/include/configs/am43xx_evm.h b/include/configs/am43xx_evm.h
    索引 f805c21f26..0dcce72318 100644
    --包括/configs/am43xx_evm.h
    ++ b/include/configs/am43xx_evm.h
    @@-79、6 +79、7 @@

    /* NS16550配置*/
    #define CONFIG_SYS_NS16550_COM10x44e09000//基本 EVM 具有 UART0 */
    +#define CONFIG_SYS_NS16550_COM6 0x481aa000 /*基本定制板具有 UART5 */

    #define CONFIG_ENV_IT_IN_FAT
    #define FAT_ENV_interface"MMC"
    @@-246、7 +247、7 @@
    "bootpart=0:2\0"\
    "bootdir=/boot\0"\
    "BootFile=zImage\0"\
    -"console=ttyO0、115200n8\0"\
    +"console=ttyO5,115200n8\0"\
    "partitions="\
    "uid_disk=${uuid_gppt_disk};"\
    "name=rootfs,start=2MiB, size=-、uuid=${uid_gp_t_rootfs}\0"\


    请帮助我们解决这个问题
    提前感谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    器件型号:AM4376

    您好!

    我有一个基于 AM4376的定制板、其中 UART5用作调试控制台、仅具有一个16位 DDR3接口。

    SDK 详细信息:

    ===========

    ti-processor-sdk-linux-am437x-evm-03.03.00.04-Linux-x86-Install.bin

    u-boot-2016.05+gitAUTOINC+4db46a6bbbd-g4db46a6bbd

     在收到 spl 错误消息后,使用 JTAG 和 CCS 加载了 u-boot,但 未获取任何 u-boot 日志。  

    我们需要您的帮助 来解决该问题

    我在 u-boot 中进行了以下更改

    diff --git a/arch/arm/cpu/armv7/am33xx/board.c b/arch/arm/cpu/armv7/am33xx/board.c
    索引4618470bad..ae2c3c7dfb 100644
    -- a/arch/arm/cpU/armv7/am33xx/board.c
    ++ b/arch/arm/cpu/armv7/am33xx/board.c
    @@-305、6 +305、8 @@静态空 rtc32k_enable (空)
     }
     #endif
     
    +
    +#if 0
     静态空 UART_SOFT_RESET (空)
     {
        struct UART_sys * UART_base =(struct UART_sys *) default_UART_base;
    @@-323、6 +325、27 @@静态空 UART_SOFT_RESET (空)
        writel (regval、&UART_base->uartsyscfg);
     }
     
    +#endif
    +
    +#define UART5_BASE_ADD 0x481AA000
    +static void UART_SOFT_RESET (void)
    +{
    +   struct uart_sys * uart_base =(struct uart_sys *) UART5_BASE_ADD;
    +   u32 regval;
    +
    +   regval = readl (&UART_base->uartsyscfg);
    +   regval |= UART_RESET;
    +   writel (regval、&UART_base->uartsyscfg);
    +   while ((readl (&UART_base->uartsyssts)&
    +      UART_CLK_Running_MASK)!= UART_CLK_Running_MASK)
    +;       
    +
    +/*   禁用智能空闲*/
    +   regval = readl (&UART_base->uartsyscfg);
    +   regval |= UART_smart_idle_en;
    +   writel (regval、&UART_base->uartsyscfg);
    +}
    +
     静态空安全装置禁用(空)
     {
        struct wd_timer *wdtimer =(struct wd_timer *) WDT_BASE;
    diff --git a/arch/arm/cpu/armv7/am33xx/clock_am43xx.c b/arch/arm/cpu/armv7/am33xx/clock_am43xx.c
    索引117a63e7ad.832eba6a43 100644
    -- a/arch/arm/cpU/armv7/am33xx/clock_am43xx.c
    ++ b/arch/arm/cpu/armv7/am33xx/clock_am43xx.c
    @@-55、11 + 55、21 @@ void setup_Clocks_for_console (void)
     {
        u32 clkctrl、ideur= MODULE_CLKCTRL_IDLEST_DISABLED;
     
    +#if 0
        /*请勿在此函数中添加任何 spl_debug 打印内容*/
        clrsetbits_le32 (&cmwkup->wkclkstctrl、CD_CLKCTRL_CLKTRCTRL_MASK、
              CD_CLKCTRL_CLKTRCTRL_SW_WKUP <<
              CD_CLKCTRL_CLKTRCTRL_SHIFT);
    +#endif
    +
    +       idelest = MODULE_CLKCTRL_IDLEST_DISABLED;
    +       clkctrl = MODULE_CLKCTRL_IDLEST_DISABLED;
    +       clrsetbits_le32 (&cmper->l4lsclkstctrl、CD_CLKCTRL_CLKTRCTRL_MASK、
    +       CD_CLKCTRL_CLKTRCTRL_SW_WKUP <<
    +       CD_CLKCTRL_CLKTRCTRL_SHIFT);
     
    +
    +#if 0
        /*启用 UART0 */
        clrsetbits_le32 (&cmwkup->wkup_uart0ctrl、
              MODULE_CLKCTRL_MODULEMODE_MASK、
    @@-72、6 +82、22 @@ void setup_Clocks_for_console (void)
           Idear=(clkctrl & MODULE_CLKCTRL_IDLEST_MASK)>>
              MODULE_CLKCTRL_IDLEST_SHIFT;
        }
    +#endif
    +
    +
    +   /*启用 UART5 *
    +   clrsetbits_le32 (&cmper->uart5clkctrl、
    +   MODULE_CLKCTRL_MODULEMODE_MASK、
    +   MODULE_CLKCTRL_MODULEMODE_SW_EXLED_EN <<
    +   MODULE_CLKCTRL_MODULEMODE_SHIFT);
    +
    +   while ((idele= MODULE_CLKCTRL_IDLEST_DISABLED)||
    +   (idime= MODULE_CLKCTRL_IDLEST_Transitioning){
    +   clkctrl = readl (&cmper->uart5clkctrl);
    +   idele=(clkctrl & MODULE_CLKCTRL_IDLEST_MASK)>>
    +   MODULE_CLKCTRL_IDLEST_SHIFT;
    +}
    +
     }
     
     void enable_basic_clocks (void)
    diff --git a/arch/arm/dts/am4372.dtsi b/arch/arm/dts/am4372.dtsi
    索引3ffa8e016e.b7d47daa08 100644
    ----阿尔克/阿尔姆/DTS/am4372.dtsi
    ++ b/arch/arm/dts/am4372.dtsi
    @@-200、7+200、7 @@
              reg-shift =<2>;
              中断= ;
              ti、hwmods ="uart6";
    -status         ="禁用";
    /*         status ="disabled";*/
           };
     
           邮箱:邮箱@480C8000{
    diff --git a/arch/arm/dts/AM437x-gp-evm.dts b/arch/arm/dts/AM437x-gp-evm.dts
    索引142bfc52a1.ea64527f2 100644
    --- a/arch/arm/dts/AM437X-gp-evm.dts
    ++ b/arch/arm/dts/AM437x-gp-evm.dts
    @@-22、10 + 22、11 @@
        别名{
           display0 = lcd0;
           serial3 = uart3;
    +      serial5 = uart5;
        };
     
        选择{
    -      stdout-path = uart0;
    +      stdout-path = uart5;
           tick-timer =&timer2;
        };
     
    @@-414、6 +415、13 @@
              0x234 (PIN_OUTPUT 下拉| MUX_MODE0)/* uart3_rtsn.uart3_rtsn *
           >;
        };
    +
    +   uart5_pins:uart5_pins{
    +       pinctrl-single、pins =<
    +           0xd8 (PIN_INPUT_PULLUP | MUX_MODE4)/*(C17) DSS_data14.uart5_RxD */
    +           0x144 (PIN_OUTPUT 上拉| MUX_MODE3) /*(A16) rmii1_ref_clk.uart5_TXD *
    +   >;
    +};
     };
     
     i2c0{(&I)
    @@-614、6 +622、12 @@
        pinctrl-0 =<uart3_PINs>;
     };
     
    {uart5}(&U
    +      STATUS ="确定";
    +      pinctrl-names ="default";
    +      pinctrl-0 =<&uart5_PINs>;
    +};
    +
     &USB2_phy1{
        状态="正常";
     };
    diff --git a/board/ti/am43xx/Makefile b/board/ti/am43xx/Makefile
    索引36ecb302c1..9f004d0bed 100644
    -- A/board/ti/am43xx/Makefile
    ++ b/board/ti/am43xx/Makefile
    @@-10、4 + 10、5 @@ ifeq ($(CONFIG_SKIP_LOW_INIT)、)
     obj-y   := mux.o
     字节序
     
    +obj-y   := mux.o
     obj-y   += board.o
    diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
    索引1db23968f2.bb45ef31fe 100644
    -- A/board/ti/am43xx/board.c
    ++ b/board/ti/am43xx/board.c
    @@-173、6 +173、7 @@ const 结构 EMIF_regs EMIF_regs_LPDDR2 ={
        .EMIF_COS_CONFIG         = 0x000FFFFF
     };
     
    +#if 0
     const 结构 ctrl_ioregs ioregs_DDR3 ={
        .cm0ioctl      = DDR3_ADDRCTRL_IOCTRL_Value、
        cm1ioctl      = DDR3_ADDRCTRL_WD0_IOCTRL_Value、
    @@-183、7 +184、21 @@ const struct ctrl_ioregs ioregs_DDR3 ={
        .dt3ioctrl      = DDR3_DATA_IOCTRL_Value、
        .EMIF_SDRAM_CONFIG_ext   = 0xc163、
     };
    +#endif
    +
    +/DDR3 16位变化
    +const 结构 ctrl_ioregs ioregs_DDR3 ={
    +   .cm0ioctl      = DDR3_ADDRCTRL_IOCTRL_Value、
    +   .cm1ioctl      = DDR3_ADDRCTRL_WD0_IOCTRL_Value、
    +   .cm2ioctl      = DDR3_ADDRCTRL_WD1_IOCTRL_Value、
    +   .dt0ioctl      = DDR3_DATA_IOCTRL_Value、
    +   .dt1ioctl      = DDR3_DATA_IOCTRL_Value、
    +   .dt2ioctrl      = DDR3_DATA_IOCTRL_Value、
    +   .dt3ioctrl      = DDR3_DATA_IOCTRL_Value、
    +   .EMIF_SDRAM_CONFIG_ext   = 0x0002c163、
    +};
     
    +/DDR3 16位变化
     const 结构 EMIF_regs DDR3_EMIF_regs_400MHz ={
        SDRAM_CONFIG         = 0x638413B2、
        .ref_ctrl         = 0x00000C30、
    @@-232、6 +247、7 @@ const 结构 EMIF_regs DDR3_EMIF_regs_400MHz_beta ={
        .EMIF_COS_CONFIG      = 0x000FFFFF
     };
     
    +#if 0
     对于生产 AM43X GP EVM、/* EMIF DDR3配置是不同的*
     const 结构 EMIF_regs DDR3_EMIF_regs_400MHz_production ={
        SDRAM_CONFIG         = 0x638413B2、
    @@-255、6 +271、37 @@ const 结构 EMIF_regs DDR3_EMIF_regs_400MHz_production ={
        .EMIF_COS_CONFIG      = 0x000FFFFF
     };
     
    +#endif
    +
    +/DDR3 16位变化
    +
    +
    生产 AM43X GP EVM 的+/-* EMIF DDR3配置不同
    +const 结构 EMIF_regs DDR3_EMIF_regs_400MHz_production ={
    +   .SDRAM_CONFIG         = 0x61A052B2、
    +   .ref_ctrl         = 0x00000C30、
    +   .SDRAM_tim1         = 0xEAAD4DB、
    +   .SDRAM_TIT2         = 0x266B7FDA、
    +   .SDRAM_tim3         = 0x107F8678、
    +   .read_idle_ctrl         = 0x00050000、
    +   .zq_config         = 0x50074BE4、
    +   .temp_alert_config      = 0x0、
    +   .EMIF_DDR_phy_ctlr_1      = 0x0e084008、
    +   .EMIF_DDR_ext_phy_Ctrl_1   = 0x08020080、
    +   .EMIF_DDR_ext_phy_Ctrl_2   = 0x00000066、
    +   .EMIF_DDR_ext_phy_Ctrl_3   = 0x00000091、
    +   .EMIF_DDR_ext_phy_Ctrl_4   = 0x000000B9、
    +   .EMIF_DDR_ext_phy_Ctrl_5   = 0x000000E6、
    +   .EMIF_rd_wr_exec_thresh      = 0x80000405、
    +   .EMIF_PRio_class_serv_map   = 0x8000000001、
    +   .EMIF_CONNECT_id_serv_1_map   = 0x80000094、
    +   .EMIF_connect_id_serv_2_map   = 0x00000000、
    +   .EMIF_COS_CONFIG      = 0x000FFFFF
    +};
    +
    +
    +/DDR3 16位变化
    +
     静态常量结构 EMIF_regs DDR3_SK_EMIF_regs_400MHz ={
        SDRAM_CONFIG         = 0x638413b2、
        SDRAM_CONFIG2         = 0x00000000、
    @@-509、7 + 556、8 @@ void scale_vcore (void)
     
     void set_UART_mux_conf (void)
     {
    -enable_uart0_PIN_mux   ();
    //   enable_uart0_pin_mux ();
    +   enable_uart5_pin_mux ();
     }
     
     void set_mux_conf_regs (void)
    @@-590、6 +638、7 @@ u32 RTC_only_get_board_type (空)
     
     void SDRAM_init (void)
     {
    +#if 0
        /*
        * EPOS EVM 具有连接到 EMIF 的1GB LPDDR2。
        * GP EMV 具有连接到 EMIF 的1GB DDR3
    @@-616、6 +665、12 @@ void SDRAM_init (void)
           CONFIG_DDR (400、ioregs_DDR3、NULL、NULL、
                &DDR3_idk_EMIF_regs_400MHz、0);
        }
    +#endif
    +/DDR3 16位变化
    +      ENABLE_VTT_电脑 控制器();
    +      CONFIG_DDR (0、ioregs_DDR3、NULL、NULL、
    +            &DDR3_EMIF_regs_400MHz 生产、0);
    +/DDR3 16位变化
     }
     #endif
     
    diff --git a/board/ti/am43xx/board.h b/board/ti/am43xx/board.h
    索引3f93d13727..a6218b9ca7 100644
    -- A/board/ti/am43xx/board.h
    ++ b/board/ti/am43xx/board.h
    @@-60、4 + 60、5 @@静态内联 int board_is-evm_12_or_later (void)
     void enable_uart0_pin_mux (void);
     void enable_board_pin_mux (void);
     void enable_i2c0_pin_mux (void);
    +void enable_uart5_pin_mux (void);
     #endif
    diff --git a/board/ti/am43xx/mux.c b/board/ti/am43xx/mux.c
    索引 f26b21e869.f776f4f4d6 100644
    -- A/board/ti/am43xx/mux.c
    ++ b/board/ti/am43xx/mux.c
    @@-21、7 + 21、7 @@静态结构 MODULE_PIN_mux rmii1_PIN_mux[]={
        {offset (mii1_rxdv)、mode (1)| RXACTIVE}、   /* RMII1_RXDV *
        {offset (mii1_crs)、mode (1)| RXACTIVE}、      /* RMII1_CRS_DV *
        {offset (mii1_rxerr)、mode (1)| RXACTIVE}、   /* RMII1_RXERR *
    -   {offset (rmii1_REFCLK)、mode (0)| RXACTIVE}、   /* RMII1_REFCLK *
    //   {offset (rmii1_REFCLK)、mode (0)| RXACTIVE}、   //* RMII1_REFCLK *
        {-1}、
     };
     
    @@-53、6 +53、12 @@静态结构 MODULE_PIN_mux uart0_PIN_mux[]={
        {-1}、
     };
     
    +static 结构 module_pin_mux uart5_pin_mux[]={
    +   {offset (LCD_data14)、(mode (4)| PULLUP_EN | RXACTIVE | SLEWCTRL)}、
    +   {offset (rmii1_REFCLK)、(MODE (3)| PULLUDDIS | PULUP_EN | SLEWCTRL)}、
    +   {-1}、
    +};
    +
     静态结构 MODULE_PIN_mux mmc0_PIN_mux[]={
        {offset (mmc0_clk)、(mode (0)| PULLUDDIS | RXACTIVE)}、 /* MMC0_CLK *
        {offset (mmc0_cmd)、(mode (0)| PULLUP_EN | RXACTIVE)}、 // MMC0_CMD *
    @@-120、6 +126、11 @@ void enable_uart0_pin_mux (void)
        CONFIG_MODULE_PIN_mux (uart0_PIN_mux);
     }
     
    +void enable_uart5_pin_mux (void)
    +{
    +   CONFIG_MODULE_PIN_mux (uart5_PIN_mux);
    +}
    +
     void enable_board_pin_mux (void)
     {
        CONFIG_MODULE_PIN_mux (mmc0_PIN_mux);
    diff ---git a/configs/am43xx_evm_defconfig b/configs/am43xx_evm_defconfig
    索引7b18ffafc7..8c2396bfe0 100644
    -- a/configs/am43xx_evm_defconfig
    ++ b/configs/am43xx_evm_defconfig
    @@-6、10 + 6、12 @@ CONFIG_DM_SPI=y
     CONFIG_DM_SPI_FLASH=y
     CONFIG_DM_GPIO=y
     CONFIG_SPL_STACK_R_ADDR=0x82000000
    -config_default_device_tree ="AM437X-SK-evm"
    +#CONFIG_DEFAULT_DEVICE_TREE="AM437X-SK-EVM"
    +CONFIG_DEFAULT_DEVICE_TREE="AM437X-GP-EVM"
     CONFIG_SPL=y
     CONFIG_SPL_STACK_R=y
    -config_SYS_Extra 选项="SERIAL1、CONS_INDEX = 1、NAN"
    +#CONFIG_SYS_Extra 选项="SERIAL1、CONS_INDEX = 1、NAN"
    +CONFIG_SYS_Extra 选项="SERIAL6、CONS_INDEX = 6"
     CONFIG_hush_parser=y
     CONFIG_CMD_BOOTZ=y
     # CONFIG_CMD_IMLS 未设置
    @@-60、3 +62、4 @@ CONFIG_G_DNL_VENDOR_NUM=0x0403
     CONFIG_G_DNL_PRODUCT_NUM=db00
     CONFIG_CMD_TIME=y
     CONFIG_DM_I2C=y
    +CONFIG_of_embe=y
    diff --git a/include/configs/am43xx_evm.h b/include/configs/am43xx_evm.h
    索引 f805c21f26..0dcce72318 100644
    --包括/configs/am43xx_evm.h
    ++ b/include/configs/am43xx_evm.h
    @@-79、6 +79、7 @@
     
     /* NS16550配置*/
     #define CONFIG_SYS_NS16550_COM1      0x44e09000   //基本 EVM 具有 UART0 */
    +#define CONFIG_SYS_NS16550_COM6    0x481aa000 //基本定制板具有 UART5 */
     
     #define CONFIG_ENV_IT_IN_FAT
     #define FAT_ENV_interface      "MMC"
    @@-246、7 +247、7 @@
        "bootpart=0:2\0"\
        "bootdir=/boot\0"\
        "BootFile=zImage\0"\
    -"console=ttyO0、115200n8\0"   \
    +"console=ttyO5,115200n8\0"   \
        "partitions="\
           "uid_disk=${uuid_gppt_disk};"\
           "name=rootfs,start=2MiB, size=-、uuid=${uid_gp_t_rootfs}\0"\

    提前感谢。

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

    代码更改似乎正常。 DDR 时序可能不合适。 是否所有测试都成功?