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.

[参考译文] Linux/AM5728:内核启动挂起

Guru**** 2974170 points

Other Parts Discussed in Thread: AM5728, DRA752

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/677706/linux-am5728-kernel-boot-hangs

器件型号:AM5728
主题中讨论的其他器件: PMP、 DRA752

工具/软件:Linux

您好、TI 团队、

我们创建了定制的 AM5728 SOM 和基板。

在创建 BSP 的过程中、我们遇到了以下问题:

在内核启动时、调试输出仅显示
"正在启动内核..."
没有更多了。

从通过 XDS200 JTAG 探针和 Code Composer Studio 访问器件、我可以看到 PC 位于的区域
c0271f88 T cpu_startup_entry
,可能是 CPU_IDLE_LOOP。
此时应该已经存在一些调试输出。

EARLY_PRINTK [=y]        
串行_EARLYCON [=y]
在 Linux .config 中处于活动状态。                                                                     

出于好奇、我通过从 AM572x-IDK 加载内核和器件树对其进行了交叉测试。
由于我们的 SOM 和器件树与 AM572x-IDK 略有不同、因此内核正确启动、显示了多个调试输出、直到由于硬件不匹配而在稍后的某个时间点挂起。  
这让我假设内核和设备树正常、错误可能在其他地方。

我的第一个猜测是
console=
u-boot 中的环境变量可能错误。

但是、我与 AM572x-IDK 交叉检查、并将其正确设置为
console=ttyO2,115200n8.
我们在 AM572x-IDK 上使用 UART3 (ttyO2)。

请参阅下面的完整引导日志。

我们使用的是主线 Linux 内核4.9.77
和主线 denx u-boot 2018.01  

请注意、我们当前未在 u-boot 中使用器件树。

我看了一下
processors.wiki.ti.com/.../Kernel_-_Common_Problems_Booting_Linux
但它没有为我提供解决方案。

有什么想法、这里可能会有什么问题或要检查什么?

此致、
Stefan Lange






##############################

U-Boot SPL 2018.01-00012防尘(2018年4月3日- 16:35:47)
DRA752-GP ES2.0
I2C_INIT_BUS:BUS_NO:0、速度:100000、slaveaddr:0x01
尝试从 MMC1引导
正在读取 u-boot.img
正在读取 u-boot.img


U-Boot 2018.01-00012防尘(2018年4月03日- 16:35:47 +0200)

CPU :DRA752-GP ES2.0
电路板:MBa57xx 上的 TQMa572x
I2C:  I2C_INIT_BUS:BUS_NO:0、速度:100000、slaveaddr:0x01
就绪
DRAM: 2GiB
MMC:  OMAP SD/MMC:0、OMAP SD/MMC:1.
I2C_INIT_BUS:BUS_NO:0、速度:100000、slaveaddr:0x01
警告:FASTBOOT.board_rev:未知的电路板版本
GUID 分区表头签名错误:0x8DFEFB7DFF7BFFFB!= 0x5452415020494645
PART_GET_INFO_EFI:***错误:GPT 无效***
GUID 分区表头签名错误:0x0!= 0x5452415020494645
PART_GET_INFO_EFI:***错误:备份 GPT 无效***
SCSI: SATA link 0 timeout。
AHCI 0001.0300 32插槽1端口3 Gbps 0x1不支持 SATA 模式
标志:64位 NCQ stag pm led clo only pmp pio 贫民窟 part ccc apst
正在扫描设备总线...
找到0个器件。
NET:  CPsw
按任意键停止自动引导: 0
=>打印
arch = ARM
args_mmc=run finduid;setenv bootargs console=${console}${optargets}root=PARTUUID =${uuid}rw rootfstype=${mmcrootfstype}
波特率=115200
电路板=tqma57xx
Board_name=tqma57xx
BOOT_FDT=尝试
BOOT_FIT = 0
BOOT_PART=9
bootargs=root=/dev/nfs rw nfsroot=192.168.11.132:/srv/nfs/rootfs ip=192.168.11.248:192.168.11.132:::::: 关闭控制台=、115200
bootargs_nfs=setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off console=$console $othbootargs
bootcmd=运行 nfsboot
BOOTDELAY=6
bootdir=/boot
bootenvfile=uEnv.txt
BootFile=boot/zImage
BOOTM_SIZE=0x10000000
bootpart=1:2
bootscript=echo 正在从 MMC${mmcdev}...;源${loadaddr}运行的 bootscript
console=ttyO2,115200n8.
CPU=armv7
devnum=1
devtype=MMC
dfu_alt_info_eMMc=rawemmc raw 0 3751936;引导部分1;rootfs 部分1 2;mlo fat 1;ml.raw 0x100 0x100;u-boot.img.raw 0x300 0x1000;u-env.raw raw 0x1300 0x200;spl-os-args.raw 0x100;u-boot.1;fat 0x1;spr-fat 1;spr-ise-fat 1;sprag1 0x1500 uEnv.txt
dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;mlo fat 0 1;ml.raw 0x100 0x100;u-boot.img.raw 0x300 0x1000;u-env.raw 0x1300 0x200;spl-os-args.raw 0x1500 0x1500;spl-os-image-raw 0x1000;sprw 0x1000 uEnv.txt;fat 0X1000;splfat 0X1000;spr-raw 0X1000;splfat 0X1000;fat 1spr-raw 0X1700
dfu_alt_info_ram=内核 ram 0x80200000 0x4000000;fdt ram 0x80f80000 0x80000;ramdisk ram 0x81000000 0x4000000
DFU_bufsiz=0x10000
dofastboot=0
eMMC_Android_boot=echo 尝试从 eMMC 引导 Android ...;setenv eval_bootargs setenv bootargs $bootargs;运行 eval_targetboots;setenv mmcdev 1;setenv FDT_part 3;setenv boot_part 9; setenv machid fe6;MMC dev $mmcdev;MMC 重新扫描;部件启动 MMC ${mmcdev}${FDT_part}FDT_START;部件尺寸 MMC ${mmcdev}${FDT_part}FDT_size;部件启动 MMC ${mmd_dtaddr}${boot_start}${mmcaddr}${dr}${dr}${boot_start_size ${dr}${dr}${dr}${dr}${dr}tmc;${boot_start addr ${dr}${dr}${dr}
eMMC_Linux_boot=echo 尝试从 eMMC 引导 Linux ...;setenv mmcdev 1;setenv bootpart 1:2;setenv mmcroot /dev/mmcblk0p2 rw;运行 mmcboot;
envboot=MMC dev ${mmcdev};如果 MMC 重新扫描;然后回显在器件${mmcdev}上找到的 SD/MMC;如果运行 loadbootscript;然后运行 bootscript;否则运行 loadbootenv;然后从${bootenvfile}回显已加载的 env;运行 importbootenv;fi;if test -n $uuccmd;然后运行 envenvcmd;envive...
ethact=cpsw
ethaddr=a0:F6:FD:B3:8c:84
eval_bootargs=setenv bootargs androidboot.serialno=${serial#} console=ttyS2,115200 androidboot.console=ttyS2和 roidboot.hardware=am57xevmboard
FASTBOOT.CPU=DRA752
fastboot.secure=GP
FDT_addr_r=0x88000000
FDT_PART=3
fdtaddr=0x88000000
fdtfile=boot/tqma572x-mba57xx.dtb
fileaddr=82000000
filesize=13a10
findfdt=if test $board_name = omap5_uevm;then setenv fdtfile omap5-uevm.dtb;fi;if test $board_name = dra7xx;then setenv fdtfile dra7-evm.dtb;fi;if test $board_name = 72x-revc;then dtv 772 vemc.tb;then setdtb;tv_detv-tb;then dtv-tb;tv-tv-tb;tv-tb;tv-tv-tb;tv-tv-tb; f;if test $board_name = dra76x;then setenv fdtfile dra76-evm.dtb;fi; if test $board_name = beagle_x15; then setenv fagle-x15.dtb;fi;if test $board_name = beagle_x15_revb1; then $tbex-ex-v_ramtble_ex-ex-v-ex-ex-ex-ex-ex-ext;$bidtbv-ex-ex-ex-v-ex-ex-ex-ex-ex-ex-ex-v-ex-ex-v-ex-ex-ex-v-ex-ex-v-ex-ex-v-ex-ex-ex-v-ex-ex-ex-v-ex-ex-v-ex-ex-ex-v-ex-ex-ex-v-ex-ex-v-v-ex-v-ex-ex 然后 setenv fdtfile am57xx-beagle-x15.dtb;fi;if test $board_name = am57xx_evm_reva3;then setenv fdtfile am57xx-bedtagle-x15.dtTB;fi;if test $board_name = am571x_idk;then setenv fdtfile am57xx-bedtble-x15.dtb;fi;if test $board_name = am571x_idk;then undeft;then determine undefineft;then determine undefinefined exam 571x_det.
finduuid=part uuid MMC ${bootpart}uuid
fit_bootfile=fitImage
fit_loadaddr=0x87000000
importbootenv=echo 从 MMC${mmcdev}导入环境...;env 导入-t ${loadaddr}${filesize}
ipaddr=192.168.11.248
kernel_addr_r=0x82000000
loadaddr=0x82000000
loadbootenv=fatload MMC ${mmcdev}${loadaddr}${bootenvfile}
loadbootscript=load MMC ${mmcdev}${loadaddr}boot.scr
loadfdt=load ${devtype}${bootpart}${fdtaddr}${bootdir}/${fdtfile}
loadfit=run args_mmc;bootm ${loadaddr}#${fdtfile};
loadimage=load ${devtype}${bootpart}${loadaddr}${bootdir}/${bootfile}
machid=fe6
mmcboot=MMC dev ${mmcdev};setenv devnum ${mmcdev};setenv devtype MMC;如果 MMC 重新扫描;然后回显在器件${mmcdev}上找到的 SD/MMC;如果运行 loadimage;然后测试${boot_fit}-eq 1;然后运行 loadfit;否则运行 mmcovados;fi;fi;
mmcdev=1
mmclosados=run args_mmc;如果测试${boot_FDT}= yes ||测试${boot_FDT}=试用;如果运行 loadfdt;则 bootz ${loadaddr}-${fdtaddr};否则测试${boot_FDT}=试用;然后 bootz;否则、回显警告:无法加载 bootz;否则;fi;
mmcroot=/dev/mmcblk0p2 rw
mmcrootfstype=ext4 rootwait
netargs=setenv bootargs console=${console}${optargets}root=/dev/nfs nfsroot=${serverip}:${rootpath}、${nfsopts}RW IP=DHCP
netboot=echo Booting from network...;setenv autoload no;dhcp;run netloadimage;run netloadfdt; 运行 netargs;bootz ${loadaddr}-${fdtaddr}
netloadfdt=tftp ${fdtaddr}${fdtfile}
netloadimage=tftp ${loadaddr}${bootfile}
nfsboot=run bootargs_nfs;nfs ${fdtaddr}$serverip:$rootpath/${fdtfile};nfs ${loadaddr}$serverip:$rootpath/$bootfile;boottz $loadaddr -$fdtaddr
nfsopts=nolock
partitions=uuid_disk=${uid_gppt_disk};name=bootloader、start=384K、size=1792K、uid=${uid_gppt_bootloader};name=rootfs、start=2688K、size=-、uid=${uid_gppt_rootfs}
partitions_android=uuuid_disk=${uuuid_gppt_disk};name=xloader、start=128K、size=256K、uid=${uuid_gppt_xloader};name=uuuuuid_uuuuuuid=172KM、uuuid_boot$};name=uuuuuuuuuuuuuuuuuuuuuuuuuuuuuid=uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuid_es=环境、id=uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuid={a10M、id=uuuuuuuuuuuuuuuuuuuuuuuuuuuuu
pxefile_addr_r=0x80100000
ramdisk_addr_r=0x88080000
读数地址= 0x88080000
rootpath=/srv/nfs/rootfs
脚本地址=0x80000000
scsidevs=0
serial#=0500d0080ec00122
serverip=192.168.11.132
SoC=omap5
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
stderr=串行
stdin =串行
stdout=串行
upp=tftp u-boot/u-boot_tqma572x.img;fatwrite mmc 0:1 $loadaddr u-boot.img $filesize;tftp u-boot/mLO_tqma572x;fatwrite mmc 0:1 $loadaddr mLO $filesize
update_TO_fit=setenv loadaddr ${fit_loadaddr};setenv 引导文件${fit_bootfile}
usbtty=CDC_ACM
vendor=tqc
ver = U-Boot 2018.01-00012-ga55cel-smuted (2018年4月3日- 16:35:47 +0200)
VRAM=16M

环境大小:7252/131067字节
=>引导
端口0、速度100、全双工上的链路
################
完成
传输的字节= 94112 (16fa0十六进制)
端口0、速度100、全双工上的链路
####################################################
        ####################################################
        ####################################################
        ####################################################
        ####################################################
        ####################################################
        ####################################################
        ####################################################
        ####################################################
        ####################################################
        ####################################################
        ######
完成
传输的字节= 3690136 (384e98十六进制)
###展开的设备树 blob、88000000
  使用0x88000000处的 FDT blob 进行引导
  正在将设备树加载到8ffe6000,结束8fff9f... 好的
使用环境中的 machid 0xfe6

正在启动内核...

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

    此论坛仅支持 TI 的官方软件。 您能否使用 TI 处理器 SDK Linux 测试 Linux 内核控制台输出:
    www.ti.com/.../processor-sdk-am57x

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我有点害怕得到这个答案:o)
    好的、我会尝试这个...

    除此之外、您还记得什么可能是造成这种情况的根本原因吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我忘记提到的一点是:

    我还在 IDK 上运行主线(而不是 SDK) u-boot。

    我认为问题与使用主线或 SDK u-boot 或 Linux 无关。

    我将继续调查此问题。 欢迎您的灵感。

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

    我认为这两个线程将会使您处于正确的方向:
    e2e.ti.com/.../347095
    e2e.ti.com/.../609626

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

    感谢您指引我正确的方向。

    e2e.ti.com/.../609626
    给了我提示。

    我们使用的是外部 RTC、因此没有时钟连接到 CPU 的 RTC_OSC 引脚。

    注释掉中的 RTC 部分
    dra7.dtsi
    RTC:RTC@48838000{
    兼容="ti、am3352-rtc";
    REG =<0x48838000 0x100>;
    中断= 、
    ;
    ti、hwmds ="rtcss";
    时钟=<&sys_32k_ck>;
    };
    很不错

    现在、我看到之后控制台上的输出
    "正在启动内核..."

    此致、
    Stefan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但是、我想知道是否有一个巧妙的解决方案可以不必进行编辑
    arch/arm/boot/dts/dra7.dtsi
    或创建其新实例。

    只需添加即可
    STATUS ="禁用";
    重叠设备树中的不能解决该问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Stefan、

    但我没有尝试过任何解决方案
    /delete-node/node-4@4;.dts 文件中的/根节点可能会有所帮助。

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

    OCP{
    /删除节点/ RTC@48838000;
    };

    我的 DTS 文件中的根节点以一种干净的方式实现了它。