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.

[参考译文] AM4378:uart5 的内核挂起问题

Guru**** 2805425 points

Other Parts Discussed in Thread: AM4372, TPS65218

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1623515/am4378-kernel-hang-problem-with-uart5

器件型号: AM4378
主题中讨论的其他器件: AM4372TPS65218

您好:

我当前正在尝试在基于定制板的 AM437x-gp-EVM 上移植 Linux 内核。

(使用 ti-processor-sdk-linux-AM437X-evm-11.02.05.02-linux-x86-Install.bin)

该内核是使用以下命令构建的。

///////////////

使 arch=arm cross_compile=“$cross_compile_32" distclean“ distclean
make arch=arm cross_compile=“$cross_compile_32" multi_v7_defconfig“ multi_v7_defconfig ti_multi_v7_prune.config no_smp.config

make arch=arm cross_compile=“$cross_compile_32"-j$“-j$(nproc) zImage ti/OMAP/AM437X-custom.dtb

///////////////

 

但是、当我将 uart5 添加到 dts 文件并引导时、它会在日志显示“内核启动“后停止
如果没有 uart5、则没有问题。

下面是 DTS 文件 (AM437X-custom.dts)

// dts 文件

// SPDX-License-Identifier: GPL-2.0-only
/*
 *版权所有 (C) 2013 Texas Instruments Incorporated - https://www.ti.com/
 */

/* AM437x GP EVM */

/dts-v1/;

#include “am4372.dtsi"</s>“
#include
#include
#include

/{
  模型=“Edger_LCD_MainPCB(最小值)“;
  兼容=“custom、edger-lcd“、“ti、am4372“、“ti、am43“;

  选择了{
    stdout-path =&uart0;
  };

  /*从 BAT 固定 32k RTC 时钟*/
  CLK_32k_RTC:CLK_32k_RTC{
    #clock-cells =<0>;
    兼容=“固定时钟“;
    时钟频率=<32768>;
  };
};

&am43xx_pinmux{
  pinctrl-names =“default";“;

  i2c0_pins:i2c0_pins{
    pinctrl-single、pins =<
      AM4372_IOPAD (0x988、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_sda *
      AM4372_IOPAD (0x98c、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_SCL */
    >;
  };

  uart0_pins:uart0_pins{
    pinctrl-single、pins =<
      AM4372_IOPAD (0x970、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* uart0_RxD */
      AM4372_IOPAD (0x974、PIN_OUTPUT_PULLDOWN | SLEWCTRL_FAST | MUX_MODE0) /* uart0_TxD */
    >;
  };
   
  /* Tracer 1 */
  uart5_pins:uart5_pins{
    pinctrl-single、pins =<
      AM4372_IOPAD (0x908、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE3)         /* uart5_rxd.uart5_rxd */
      AM4372_IOPAD (0x944、PIN_OUTPUT_PULLDOWN | SLEWCTRL_FAST | MUX_MODE3)  /* uart5_TxD.uart5_TxD */
    >;
  };
};

&i2c0{
  状态=“正常“;
  pinctrl-names =“default";“;
  pinctrl-0 =<&i2c0_pin>;
  时钟频率=<10000>;

  tps65218: TPS@24 {
    兼容=“ti、tps65218“;
    REG =<0x24>;
    中断= ;/* nMIN */
    中断控制器;
    #interrupt-cells =<2>;

    dcdc1:电脑控制器-dcdc1{
      regulator-name =“VDD_CORE";“;
      稳压器 — 最小-微伏=<110000>;
      稳压器最大微伏=<110000>;
      稳压器启动;
      常开稳压器;
    };

    dcdc2:电脑控制器-dcdc2{
      稳压器名称=“VDD_MPU";“;
      稳压器 — 最小-微伏=<1325000>;
      调节器最大微伏=<1325000>;
      稳压器启动;
      常开稳压器;
    };

    dcdc3:电脑控制器-dcdc3{
      稳压器名称=“VDD_DDR";“;
      稳压器 — 最小-微伏=<1500000>;
      稳压器最大微伏=<1500000>;
      稳压器启动;
      常开稳压器;
    };

    dcdc5:电脑控制器-dcdc5{
      调节器名称=“v1_0bat";“;
      稳压器 — 最小-微伏=<1000000>;
      稳压器最大微伏=<1000000>;
      稳压器启动;
      常开稳压器;
    };

    dcdc6:电脑控制器-dcdc6{
      调节器名称=“v1_8bat";“;
      稳压器 — 最小-微伏=<1800000>;
      稳压器最大微伏=<1800000>;
      稳压器启动;
      常开稳压器;
    };

    ldo1:调节器-ldo1{
      稳压器 — 最小-微伏=<3300000>;
      稳压器最大微伏=<3300000>;
      稳压器启动;
      常开稳压器;
    };
  };
};

&uart0{
  状态=“正常“;
  pinctrl-names =“default";“;
  pinctrl-0 =<&uart0_pin>;
};

&uart5{
  状态=“正常“;
  pinctrl-names =“default";“;
  pinctrl-0 =<&uart5_pins>;
};

&cpu{
  CPU0-SUPPLY =<&dcdc2>;
};

&RTC{
  Clocks =<&clk_32k_rtc>、<&clk_32768_ck>;
  时钟名称=“ext-clk",“,"int-clk"、"int-clk";“;</s>“
  状态=“正常“;
};

//和 mac_sw{
//  STATUS =“ 禁用“;/*禁用以太网以释放 UART5 的 MII/RMII 引脚*/
//};

 

问题可能是什么?

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

    您好、

    请添加“ earlycon=ns16550a、mmio32、0x44e09000 引导至 U-Boot 引导参数、以查看内核是否在“starting kernel...“后打印任何消息。

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

    您好:

    我添加 “ earlycon=ns16550a、mmio32、0x44e09000 “ 引导到 U-boot bootargs、但除了“starting kernel...“之外没有任何内容

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

    您好、

    如果可以重建整个内核、以下 defconfig 补丁应该可以解决问题。 请确保您也将重建的内核 zImage 和模块更新到根文件系统中。

    diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
    索引 bdbbfbdac72a..05d4b2134062 100644
    -- a/arch/arm/configs/multi_v7_defconfig
    ++ b/arch/arm/configs/multi_v7_defconfig
    @@–357、8 +357、8 @@ CONFIG_INPUT_STPMIC1_ONKEY=y
     CONFIG_Serio_AMBAKMI=y
     CONFIG_SERIAL_8250=y
     CONFIG_SERIAL_8250_CONSOLE=y
    CONFIG_SERIAL_8250_NR_UARTs=5
    CONFIG_SERIAL_8250_RUNTIME_UARTs=5
    +CONFIG_SERIAL_8250_NR_UARTs= 6.
    +CONFIG_SERIAL_8250_RUNTIME_UARTs= 6.
     CONFIG_SERIAL_8250_EXTENDED=y
     CONFIG_SERIAL_8250_MANTIAL_PORT_=y
     CONFIG_SERIAL_8250_ASPEED_VUART=m

    如果您不想重建整个内核,那么您的 AM437X-custom.dts 中的以下破解也应该起作用。

    +     别名{
    +         SERIAL1 =&uart5;
    +         serial5 =&uart1;
    +     };

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

    您好、

    正如您告诉我的那样重建内核后、它效果很好!
    谢谢、