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:定制板 UART 问题

Guru**** 2551110 points
Other Parts Discussed in Thread: AM4376

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/603216/am4376-custom-board-uart-issue

器件型号:AM4376

我有一个基于 AM4376的定制板、它具有一个16位 DDR3接口。

我已获取 AM437x EVK 板 U-boot 源码并更改了定制板的引脚多路复用文件。 因此、我将仅在构建 SPL 和 U-boot 时使用 EVK 板配置。

对于初始电路板启动、我已使用 CCS 在0x402F4000处通过 JTAG 加载 SPL。 我没有在 minicom 控制台中获取调试日志。

自定义电路板中会取出 UART5引脚、我对引脚复用文件中的 UART5进行了以下更改。



静态结构 MODULE_PIN_mux uart5_PIN_mux[]={
   {offset (dss_data14)、(mode (4)| PULLUP_EN | RXACTIVE | SLEWCTRL)}、
   {offset (rmii1_ref_clk)、(mode (3)| PULLUDDIS | PULUP_EN | SLEWCTRL)}、
   {-1}、
};



我无法在 minicom 控制台中看到任何调试条目。 您能指导调试这个问题。


USB0_DP/DM 引脚也取自具有 USB 连接器的定制板、下面是我从引脚多路复用文件中获取的条目、因此我已将其放置在引脚多路复用文件中。 我在主板上使用 USB 连接器尝试了 minicom、但没有日志。 请告诉我以下 pinmux 条目已足够或需要进行任何修改?



静态 pinmuxPerCfg_t gUsb0PinCfg[]=

   {
      /* MyUSB1 -> USB0_DRVVBUS -> G21 */
      PIN_USB0_DRVVBUS、0、\
      (\
          PIN_MODE (0)|\
          ((PIN_PULL_UD_DIS | PIN_PULL_UP_EN | PIN_DS_value_overrid_EN | PIN_DS_OP_DIS | PIN_DS_PULL_UP_EN)和\
          (~PIN_RX_ACTIVE &~PIN_DS_OP_VAL_1 &~PIN_DS_PULL_UD_EN &~PIN_WAKE_UP_EN)
      )\
   }、
   {PINMUX_INVALID_PIN}
};


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是哪个 SDK 版本?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TI-PROCESSOR-SDK-LINUX-AM437X-EVM-03.02.00.05
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们有一个带有一个16位 DDR3的定制 AM4376板。

    我对自定义电路板进行了以下更改、但在 minicom 中仍无法获取调试控制台日志

    SDK:ti-processor-sdk-linux-AM437X-EVM-03.02.00.05

    UART5的引脚多路复用器配置。

    在以下文件"board/ti/am43xx/mux.c"中添加了以下更改、以支持 UART5 Pinx MUX 配置。

    静态结构 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}、
    };

    添加了用于为 UART5配置引脚多路复用器的函数调用。

    void enable_uart5_pin_mux (void)

    CONFIG_MODULE_PIN_mux (uart5_PIN_mux);


    2.编辑了"board/ti/am43xx/board.c"文件以添加 UART5引脚多路复用器所需的更改。

    void set_UART_mux_conf (void)

    enable_uart5_pin_mux ();



    3."board/ti/am43xx/board.h"文件中的更改

    为函数"enable_uart5_pin_mux ()"添加了原型声明

    void enable_uart5_pin_mux (void);

    在文件"arch/arm/cpu/armv7/am33xx/clock_am43xx.c"中添加了 UART5的 UART 时钟

    在函数"Setup_Clocks_for_console (void)"中、编辑了以下行以添加对 UART5的支持

    /*启用 UART5 */
    clrsetbits_le32 (&cmper->uart5clkctrl、
    MODULE_CLKCTRL_MODULEMODE_MASK、
    MODULE_CLKCTRL_MODULEMODE_SW_EXLED_EN <<
    MODULE_CLKCTRL_MODULEMODE_SHIFT);

    while (((idefore==module_CLKCTRL_IDLEST_disabled")||
    (idime=module_CLKCTRL_IDLEST_Transitioning){
    clkctrl = readl (&cmper->uart5clkctrl);
    Idear=(clkctrl & MODULE_CLKCTRL_IDLEST_MASK)>>
    MODULE_CLKCTRL_IDLEST_SHIFT;


    5.在文件"arch/arm/cpu/armv7/am33xx/board.c"中添加了对 UART5的 UART 时钟复位支持

    #define UART5_BASE_ADD 0x481AA000
    静态空 UART_SOFT_RESET (空)

    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);


    6.编辑了以下路径的 make 文件"board/ti/am43xx/Makefile"以生成要链接的 mux obj 文件。

    ifeq ($(CONFIG_SKIP_lowlevel_init)、)
    obj-y:= mux.o
    字节序
    obj-y:= mux.o

    obj-y += board.o

    7.在"include/configs/am43xx_evm.h"文件中添加了 UART5基地址和端口配置、如下所示。

    #define CONFIG_SYS_NS16550_COM6 0x481aa000 //基本定制板具有 UART5 */

    已将 boot-args 参数"console=ttyO0、115200n8\0"替换为"console=ttyO5、115200n8\0"以支持 UART5控制台。

    使用以下命令编译我正在使用的 U-boot 代码

    使 cross_compile=/home/ti-processor-sdk-linux-am437x-evm-03.02.00.05/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf- O=am43xx_evm_pin am43xx_evm_defconfig

    8.我还对"configs/am43xx_evm_defconfig"进行了以下更改

    我们 将 CONFIG_SYS_Extra 选项="SERIAL1、CONS_INDEX = 1、NAN"替换为 CONFIG_SYS_Extra 选项="SERIAL6、CONS_INDEX = 6"

    调试控制台日志是否取决于 DDR3配置?

    是否有关于 UART 配置[多路复用器和时钟配置等]的用户指南 ?

    请指导我解决此问题。

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

    没有调试控制台不依赖于 DDR3配置。

    您需要使用 AM437X_EVM_CONFIG 构建 uboot…… 不确定从何处获取 O=am43xx_evm_pin am43xx_evm_defconfig 部件。

    另外请记住、最新的 TISDK 在 u-boot 中使用 DTS、因此您还需要在 DTS 中添加 uart5 (它位于 arch/arm/dts/AM437X-gp-evm.dts 中)。

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

    您好!

    非常感谢 您的快速回复


    我的 SYSBOOT 引脚配置:[15-0]

                                           [0100 0000 0001 1001]


    1.我尝试使用 AM437X_EVM_defconfig
       但我得到了以下误差
        找不到默认配置"arch/./configs/am437x_evm_defconfig!

       我在源代码中找不到此文件。

        请提供我将获取 此文件的路径。

      

    DTS 文件更改:

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


    2.我使用了 TI 引脚复用工具、该工具还生成了器件树文件。

     在 arch/arm/dts/AM437X-gp-evm.dts 中添加了 UART5条目

        别名{
              display0 = lcd0;
              serial3 = uart3;
              serial5 = uart5;
          };

       uart5{(&U)
             状态="正常";
             pinctrl-names ="default";
             pinctrl-0 =<&uart5_PINs>;
       };

        uart5_pins:uart5_pins{
          pinctrl-single、pins =<
           0xd8 (PIN_INPUT | MUX_MODE4)/*(C17) DSS_data14.uart5_RxD */
           0x144 (PIN_OUTPUT | MUX_MODE3)/*(A16) rmii1_ref_clk.uart5_TXD *
          >;
       };

    修改了 USB 端口[针对故障日志]的以下条目

    USB1_Pins:pinmux_USB1_Pins{
       pinctrl-single、pins =<
           0x2c0 (PIN_OUTPUT | MUX_MODE0)/*(G21) USB0_DRVVBUS.USB0_DRVVBUS *
       >;
    };

    USB1{(&S)
       DR_MODE ="外设";
       状态="正常";
       pinctrl-names ="default";
      pinctrl-0 =<&USB1_PINs>;
    };

    是否可以验证设备树条目是否正确。


    2. 在 configs/am43xx_evm_defconfig 中启用以下条目

       CONFIG_of_embe=y


    但仍无法获取任何控制台日志[在 USB 或串行中]。

    现在我正在使用 从 JTAG 引导,并且能够 完全执行 preloader_console_init()函数 ,但仍然没有获得任何日志。

    我正在附加 U-boot 配置文件。

    是否需要任何额外的配置?  

    我们确定了它偏离的位置

    它将 使用   printf ("0x%p 时钟启用失败、id 为0x%x\n"、clkctrl_addr、clkctrl); 在  WAIT_for_clk_enable()函数中。

    "arch/arm/cpU/armv7/am33xx/clock_am43xx.c " 中,     void setup_clocks_for_console (void)函数

    我们替换了。

    /*请勿在此函数中添加任何 spl_debug 打印内容*/
       clrsetbits_le32 (&cmwkup->wkclkstctrl、CD_CLKCTRL_CLKTRCTRL_MASK、
               CD_CLKCTRL_CLKTRCTRL_SW_WKUP <<
               CD_CLKCTRL_CLKTRCTRL_SHIFT);

    以下代码

     clrsetbits_le32 (&cmper->l4lsclkstctrl、CD_CLKCTRL_CLKTRCTRL_MASK、
               CD_CLKCTRL_CLKTRCTRL_SW_WKUP <<
               CD_CLKCTRL_CLKTRCTRL_SHIFT);

    但它仍然会进入 printf ("Clock enable failed for 0x%p idemefor0x%x\n"、clkctrl_addr、clkctrl); 在  WAIT_for_clk_enable()函数中。

    由于我们使用的 UART 与参考设计不同、因此我们希望您在此处提供支持。

    请提供 UART 配置的用户指南。

    提前感谢

    e2e.ti.com/.../u_5F00_boot_5F00_configuration.txt

    e2e.ti.com/.../6153.Gel_5F00_file_5F00_log.txt