工具/软件:
我们将将设计从 SDK 6 (Linux v4.10)迁移到 SDK 9。 到目前为止我们没有任何重大问题、但当我在 DTB 中启用 UART 6时、内核无法加载。 它在 U-Boot 中卡住"starting kernel ..."消息。
如果我将 uart6状态设置为"禁用"、则会进行引导。
我正在从 SDK 6使用 U-Boot 并通过 TFTP 引导。 我知道硬件和 Pinmux 正常、因为使用 SDK 6 内核进行引导可以正常工作、U-Boot 会设置 pinmux。 我的控制台 UART 是 UART1、因此我应该可以看到 引导消息。
我怀疑时钟中有东西损坏、因为 UART6使用 CD_IPU、而我使用的其他 UART 位于 CD_L4_PER1上。 但是、我不明白为什么它无法启用此类时钟。
有任何关于如何调试该问题的建议? 这很难,因为只要我启用 UART ,我就看不到任何东西,所以 基于 printk()的调试是不能选择的。
这是我正在使用的 DTS、在未对默认 SDK 进行修改的情况下编译内核:
// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (C) 2016 Texas Instruments Incorporated - https://www.ti.com/ */ #include "dra71x.dtsi" #include "dra7-mmc-iodelay.dtsi" #include "dra72x-mmc-iodelay.dtsi" #include "am5718.dtsi" #include "dra7-ipu-dsp-common.dtsi" #include <dt-bindings/gpio/gpio.h> / { compatible = "ti,dra718-evm", "ti,dra718", "ti,dra722", "ti,dra72", "ti,dra7"; model = "TI DRA718 EVM"; memory { device_type = "memory"; reg = <0x0 0x80000000 0x0 0x40000000>; /* 1GB */ }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; ipu2_memory_region: ipu2-memory@95800000 { compatible = "shared-dma-pool"; reg = <0x0 0x95800000 0x0 0x3800000>; reusable; status = "okay"; }; dsp1_memory_region: dsp1-memory@99000000 { compatible = "shared-dma-pool"; reg = <0x0 0x99000000 0x0 0x4000000>; reusable; status = "okay"; }; ipu1_memory_region: ipu1-memory@9d000000 { compatible = "shared-dma-pool"; reg = <0x0 0x9d000000 0x0 0x2000000>; reusable; status = "okay"; }; }; vpo_sd_1v8_3v3: gpio-regulator-TPS74801 { compatible = "regulator-gpio"; regulator-name = "vddshv8"; regulator-okmin-microvolt = <1800000>; regulator-max-microvolt = <3000000>; regulator-boot-on; vin-supply = <&evm_5v0>; gpios = <&gpio7 11 GPIO_ACTIVE_HIGH>; states = <1800000 0x0 3000000 0x1>; }; evm_1v8_sw: fixedregulator-evm_1v8 { compatible = "regulator-fixed"; regulator-name = "evm_1v8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; vin-supply = <&lp8732_buck0_reg>; regulator-always-on; regulator-boot-on; }; poweroff: gpio-poweroff { compatible = "gpio-poweroff"; gpios = <&gpio7 30 GPIO_ACTIVE_HIGH>; input; }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; /* CMEM For di-platform FW (dsp1, ipu1 and A15) */ cmem_block_mem_0: cmem_block_mem@93000000 { reg = <0x0 0x93000000 0x0 0x2000000>; no-map; status = "okay"; }; /* CMEM for Bridge PRUSS1 ADC */ pru1-memory@9fec0000 { reg = <0x0 0x950c0000 0x0 0x40000>; no-map; status = "okay"; }; }; cmem { compatible = "ti,cmem"; #address-cells = <1>; #size-cells = <0>; #pool-size-cells = <2>; status = "okay"; cmem_block_0: cmem_block@0 { reg = <0>; memory-region = <&cmem_block_mem_0>; cmem-buf-pools = <0x1 0x0 0x2000000>; }; }; }; &i2c1 { status = "okay"; clock-frequency = <400000>; lp8733: lp8733@60 { compatible = "ti,lp8733"; reg = <0x60>; buck0-in-supply =<&vsys_3v3>; buck1-in-supply =<&vsys_3v3>; ldo0-in-supply =<&evm_5v0>; ldo1-in-supply =<&evm_5v0>; lp8733_regulators: regulators { lp8733_buck0_reg: buck0 { /* FB_B0 -> LP8733-BUCK1 - VPO_S1_AVS - VDD_CORE_AVS (core, mpu, gpu) */ regulator-name = "lp8733-buck0"; regulator-min-microvolt = <850000>; regulator-max-microvolt = <1250000>; regulator-always-on; regulator-boot-on; }; lp8733_buck1_reg: buck1 { /* FB_B1 -> LP8733-BUCK2 - VPO_S2_AVS - VDD_DSP_AVS (DSP/eve/iva) */ regulator-name = "lp8733-buck1"; regulator-min-microvolt = <850000>; regulator-max-microvolt = <1250000>; regulator-boot-on; regulator-always-on; }; lp8733_ldo0_reg: ldo0 { /* LDO0 -> LP8733-LDO1 - VPO_L1_3V3 - VDDSHV8 (optional) */ regulator-name = "lp8733-ldo0"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-boot-on; regulator-always-on; }; lp8733_ldo1_reg: ldo1 { /* LDO1 -> LP8733-LDO2 - VPO_L2_3V3 - VDDA_USB3V3 */ regulator-name = "lp8733-ldo1"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; regulator-boot-on; }; }; }; lp8732: lp8732@61 { compatible = "ti,lp8732"; reg = <0x61>; buck0-in-supply =<&vsys_3v3>; buck1-in-supply =<&vsys_3v3>; ldo0-in-supply =<&vsys_3v3>; ldo1-in-supply =<&vsys_3v3>; lp8732_regulators: regulators { lp8732_buck0_reg: buck0 { /* FB_B0 -> LP8732-BUCK1 - VPO_S3_1V8 - VDDS_1V8 */ regulator-name = "lp8732-buck0"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-boot-on; }; lp8732_buck1_reg: buck1 { /* FB_B1 -> LP8732-BUCK2 - VPO_S4_DDR - VDD_DDR_1V35 */ regulator-name = "lp8732-buck1"; regulator-min-microvolt = <1350000>; regulator-max-microvolt = <1350000>; regulator-boot-on; regulator-always-on; }; lp8732_ldo0_reg: ldo0 { /* LDO0 -> LP8732-LDO1 - VPO_L3_1V8 - VDA_1V8_PLL */ regulator-name = "lp8732-ldo0"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-boot-on; regulator-always-on; }; lp8732_ldo1_reg: ldo1 { /* LDO1 -> LP8732-LDO2 - VPO_L4_1V8 - VDA_1V8_PHY */ regulator-name = "lp8732-ldo1"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-boot-on; }; }; }; }; &uart1 { status = "okay"; overrun-throttle-ms = <500>; }; &uart3 { status = "okay"; overrun-throttle-ms = <500>; }; #if 1 /* FIXME: doesn't boot, probably needs a clock? */ &uart6 { status = "okay"; //overrun-throttle-ms = <500>; }; #endif