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/66AK2E05:定制板上的 Linux 引导问题。

Guru**** 2551110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/582066/linux-66ak2e05-linux-boot-problem-on-custom-board

器件型号:66AK2E05

工具/软件:Linux

大家好!

我在电路板上使用了 u-boot.bin。 此时、我可以通过 u-boot-spi.gph 映像从 CCS 或从 SPI NOR 闪存启动板加载和启动 u-boot.bin。 但仅在 u-boot 控制台中。 Linux 无法正常启动、并且在内核代码中旋转。 此处对问题的描述:

Processor SDK 中的所有软件组件。 所有这些都已正确配置并按照 相应 手册中的说明进行构建、而不会出现错误

U-BOOT-SPI.GPH

skern-k2e.bin -使用#define 调试进行编译  

k2-fw-initrd.cpio.gz (非构建-从预构建映像中使用)

KeyStone-k2e-evm.dTB

zImage -在 某些文件中使用#define debug 进行编译

以下是引导消息:

****在****上方剪切一些输出

按任意键停止自动引导:0

K2E_EMAC0等待 SGMII 自动协商完成。 完成
K2E_EMAC0等待 PHY 自动协商完成。 完成
使用 K2E_EMAC0器件
来自服务器192.168.0.102的 TFTP;我们的 IP 地址为192.168.0.241
文件名'wh101v/skern-k2e.bin'。
加载地址:0xc1f0000
正在加载:########
5.9 KiB/s
完成
传输的字节= 32832 (8040十六进制)
调试:skern_init():CPU0:From = 0x00000001 DSP_BASE = 0x01e80000 freq = 2083333

调试:skern_init():安全模式:核心频率- 2083333 Hz

K2_BM_15。 07年3月6日起构建 SoC:k2e:10:53:40

##已安装显示器@ 0xc1f0000、freq [208333333333]、状态203390975

K2E_EMAC0等待 SGMII 自动协商完成。 完成
使用 K2E_EMAC0器件
来自服务器192.168.0.102的 TFTP;我们的 IP 地址为192.168.0.241
文件名'wh101v/k2-fw-initrd.cpio.gz'。
加载地址:0x88080000
正在加载:##########
1.7 MIB/s
完成
传输的字节= 64887 (fd77十六进制)

K2E_EMAC0等待 SGMII 自动协商完成。 完成
使用 K2E_EMAC0器件
来自服务器192.168.0.102的 TFTP;我们的 IP 地址为192.168.0.241
文件名'wh101v/keystone-k2e-evm.dtb'。
加载地址:0x88000000
正在加载:######
1.5 MIB/s
完成
传输的字节= 44611 (ae43十六进制)

K2E_EMAC0等待 SGMII 自动协商完成。 完成
使用 K2E_EMAC0器件
来自服务器192.168.0.102的 TFTP;我们的 IP 地址为192.168.0.241
文件名'wh101v/zImage'。
加载地址:0x82000000
正在加载:############################################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
############################
1.6 MIB/s
完成
传输的字节= 3480832 (351d00十六进制)
内核映像@ 0x82000000 [ 0x000000 - 0x351d00]
###展开的设备树 blob、88000000
使用0x88000000处的 FDT blob 进行引导
正在将 Ramdisk 加载到8fff0000,结束8ffd77... 好的
正在将设备树加载到8ffe2000,结束8ffe42... 好的
FT_board_setup()
FT_board_setup_Ex ()

正在启动内核...

正在解压缩 Linux... 已完成、正在引导内核。

调试:skern_powerON_CPU ():>>> skern_powerON_CPU (1)>>>

调试:skern_123_init():安全模式:核心频率- 2083333 Hz

调试:skern_powerON_CPU ():>>> skern_powerON_CPU (2)>>>

调试:skern_123_init():安全模式:核心频率- 2083333 Hz

调试:skern_powerON_CPU ():>>> skern_powerON_CPU (3)>>>

调试:skern_123_init():安全模式:核心频率- 2083333 Hz

引导过程在此处停止:(

我曾尝试调试此问题、发现处理器在 Linux 区域代码中工作、未挂起。 我可以通过 JTAG 连接到 CCS 中的 A15 Core0。

1) 1)您能否查看引导监视器的调试消息、并了解监视器安装错误? 安装地址可能无效? 在 TI wiki 地址中标记为 0x0C140000、但在引导监视器代码中安装地址为0x0C1F0000。

2) 2)您能告诉我、这种行为的可能原因以及我如何调试此问题吗? 如果您需要任何其他信息、我将提供该信息。

3) 3)您能否查看 u-boot 环境设置并将其与 EVM 设置进行比较? 可能是某些地址无效? 谢谢你。

4) 4)在我的板上安装的内存比在 EVM 上安装的内存要少。 无 NAND、SD。 请告诉我、我如何在 dtb 中解决此问题?

谢谢你。

P.S. U-boot 环境设置:

Addr_mon=0x0C1F0000
Addr_sectiondb_key=0xc000000
ADDR_ubi=0x82000000
arch = ARM
args_all=setenv bootargs console=ttyS0、115200n8 rootwait=1
args_net=setenv bootargs ${bootargs}rootfstype=NFS root=/dev/nfs rw nfsroot=${serverip}:${nfs_root}、${nfs_options}ip=dhcp
args_ramfs=setenv bootargs ${bootargs}rdinit=/sbin/init rw root=/dev/ram0 initrd=0x8080000,80M
args_ubi=setenv bootargs ${bootargs}rootfstype=ubifs root=ubi0:rootfs rootflags=sync rw ubi.mtd=ubifs、2048
波特率=115200
board=ks2_evm
board_name=ks2_EVM
boot=net
BOOT_FDT=尝试
bootargs=console=ttyS0、115200n8 rootwait=1 rootfstype=NFS root=/dev/nfs rw nfsroot=192.168.0.102:/home/karak/targetfs-swh101v、v3、TCP、rsize=4096、wsize=4096 IP=DHCP
bootcmd=run init_${boot}get_mon_${boot}run_mon init_fw_rd_${boot}get_FDT_${boot}get_kern_${boot}run_kern
bootcmd_old=run init_${boot}get_mon_${boot}run_mon init_fw_rd_${boot}get_FDT_${boot}get_kern_${boot}run_kern
BOOTDELAY=2
bootdir=/boot
BOOTM_SIZE=0x10000000
burn_ubi=n 和 erase.part ubifs;n 并写入${addr_ubi}ubifs ${filesize}
burn_uboot_nAND_AND = n 并擦除0 0x100000;n 并写入${loadaddr}0 ${filesize}
burn_uboot_SPI=SF 探测器;SF 擦除0 0x90000;SF 写入${loadaddr}0 ${filesize}
CPU=armv7
ethact=K2E_EMAC0
ethaddr=b4:99:4c:11:64:36
FDT_addr_r=0x88000000
fdtaddr=0x88000000
fdtcontrolladdr=beef3388
fileaddr=88000000
filesize=ae43
get_FDT_net=tftp ${fdtaddr}${tftp_root}/${name_FDT}
get_FDT_NFS=NFS ${fdtaddr}${nfs_root}/boot/${name_FDT}
get_FDT_ramfs=DHCP ${fdtaddr}${tftp_root}/${name_FDT}
get_FDT_ubi=ubifsload ${fdtaddr}${bootdir}/${name_FDT}
get_fs_ramfs=DHCP ${rdaddr}${tftp_root}/${name_fs}
get_kern_net=tftp ${loadaddr}${tftp_root}/${name_kern}
get_kern_nfs=nfs ${loadaddr}${nfs_root}/boot/${name_kern}
get_kern_ramfs=DHCP ${loadaddr}${tftp_root}/${name_kern}
get_kern_ubi=ubifsload ${loadaddr}${bootdir}/${name_kern}
get_mon_net=tftp ${addr_mon}${tftp_root}/${name_mon}
get_mon_nfs=nfs ${addr_mon}${nfs_root}/boot/${name_mon}
get_mon_ramfs=DHCP ${addr_mon}${tftp_root}/${name_mon}
get_mon_ubi=ubifsload ${addr_mon}${bootdir}/${name_mon}
get_ubi_net=DHCP ${addr_ubi}${tftp_root}/${name_ubi}
get_ubi_nfs=nfs ${addr_ubi}${nfs_root}/boot/${name_ubi}
get_uboot_net=tftp ${loadaddr}${tftp_root}/${name_uboot}
get_uboot_nfs=nfs ${loadaddr}${nfs_root}/boot/${name_uboot}
init_fw_rd_net=tftp ${rdaddr}${tftp_root}/${name_fw_rd};运行 set_rd_spec
init_fw_rd_ramfs=setenv rd_spec -
init_fw_rd_ubi=ubifsload ${rdaddr}${bootdir}/${name_fw_rd};运行 set_rd_spec
init_net=run args_all args_net
init_nfs=setenv 自动载入否;dhcp;运行 args_all args_net
init_ramfs=run args_all args_ramfs get_fs_ramfs
init_ubi=run args_all args_ubi;ubi 零件子项;ubifsmount ubi:rootfs;
ipaddr=192.168.0.241
kernel_addr_r=0x82000000
loadaddr=0x82000000
MEM_Lpae=0
mtdparts=mtdparts=Davinci_nand.0:1024k (引导加载程序) ro、512K (params) ro、-(ubifs)
NAME_FDT=keystone-k2e-evm.dtb
NAME_FS=arago-console-image-k2e-evm.cpio.gz
NAME_FW_rd = k2-fw-initrd.cpio.gz
name_kern=zImage
name_mon=skern-k2e.bin
name_ubi=k2e-evm-ubifs.ubi
name_uboot=u-boot-spi.gph
nfs_options=v3、tcp、rsize=4096、wsize=4096
nfs_root=/home/karak/targetfs-swh101v
NO_POST=1
pxefile_addr_r=0x80100000
ramdisk_addr_r=0x88080000
RD_SPEC=0x88080000:8040
读数地址= 0x88080000
run_kern=bootz ${loadaddr}${rd_spec}${fdtaddr}
run_mon=mon_install ${addr_mon}
脚本地址=0x80000000
serverip=192.168.0.102
set_rd_spec=setenv rd_spec ${rdaddr}:${filesize}
SoC= KeyStone
stderr=串行@02530c00
stdin =串行@02530c00
stdout=串行@02530c00
TFTP_ROOT=wh101v
供应商= TI
ver = U-Boot 2016.05-00304-ged00144-脏(2017年3月2日- 16:51:47 +0300)

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

    我已将此内容转发给 Linux 专家。 他们的反馈应发布在此处。

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

    首先、从您共享的日志中、我看不到您是如何从 u-boot 运行引导命令的。 当我刷写电路板时、我使用了以下 wiki:
    processors.wiki.ti.com/.../Program_EVM_UG
    您可以看到、在传输 u-boot 和 ubi 文件系统后、您需要执行以下步骤:
    ENV 缺省值–f–A
    setenv 引导 ubi
    引导

    其次、如果您按照上述步骤烧录和引导电路板、那么您能否分享如何构建 zImage? 您使用了哪个 defconfig 文件?

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

    你好,Yordan!

    感谢您的回答!

    1) 1)我将 u-boot-spi.gph 映像刻录到通过 JTAG 和 CCS 加载的 u-boot 的 SPI 闪存中。

    2) 2)在 u-boot 变量中、boot=net 和 bootcmd 为:

    bootcmd =运行 init_${boot}get_mon_${boot}run_mon init_fw_rd_${boot}get_FDT_${boot}get_kern_${boot}run_kern

    run_kern = bootz ${loadaddr}${rd_spec}${fdtaddr}

    所有软件组件都放置在本地网络的 tftpboot 目录中。 我将尝试使用安装在 NFS 上的 rootfs 来引导主板。  但是,从“解压缩... 完成"。

    3) 3)我使用以下命令构建 Linux 内核:

    source ./environment-swh101v <--设置 arch、cross_compile 和 path

    (我尝试按照 PSDK wiki 中的说明构建 Linux,在命令行中定义所有 mac玫瑰,但结果是相同的)

    使 distclean && make tisdk_k2e-evm_defconfig && make zImage && make keystone-k2e-evm.dtb

    4) 4) DTB、Linux 和所有其他软件组件完全未修改。 可能是这里的误差。 我在前面的消息中提到我的电路板与 EVM 有差异。  

    谢谢!

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

    4) DTB、Linux 和所有其他软件组件完全未修改。 可能是这里的误差。 我在前面的消息中提到我的电路板与 EVM[/QUERP]有差异

    这很奇怪。 好的、那么您能否尝试使用以下方法重建设置:
    cd ~/ti-processor-sdk-linux-am57xx-evm-03.02.00.05

    然后使用顶级 makefile 来构建 zImage & DTB:
    构建 Linux
    这将执行所有导出、创建 zImage 和 dtb 文件。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Yordan!
    我会按照您的要求执行所有步骤。

    cd ~/ti-processor-sdk-linux-k2e-evm-03.02.00.05
    使 boot-monitor_clean boot-monitor 成为引导监视器
    打造 Linux_Clean Linux

    我没有任何构建错误。
    我在 tftpboot/swwh101v 目录中的所有已创建文件上都有符号链接。
    为电路板加电的结果与以前相同。 请参阅下面的引导日志。

    您是否有任何假设? 谢谢你。

    引导日志:

    U-Boot SPL 2016.05-00305-gc6b76ec-脏 污(2017年3月21日- 12:48:31)
    尝试从 SPI 引导

    U-Boot 2016.05-00305-gc6b76ec-脏 污(2017年3月21日- 12:48:31 +0300)

    CPU:66AK2Ex SR1.0
    型号:德州仪器 Keystone 2 Edison EVM
    I2C:就绪
    DRAM:从静态参数配置 DDR3A。
    DDR3速度1600
    DRAM:1 GiB
    1 GiB
    SF:检测到 N25Q256A、页面大小为256字节、擦除大小为4 KiB、总共32 MIB
    网络:K2E_EMAC0、K2E_EMAC1
    警告:K2E_EMAC1 (eth1)使用随机 MAC 地址- 22:E2:24:89:27:14

    按任意键停止自动引导:0

    K2E_EMAC0等待 SGMII 自动协商完成。 完成
    K2E_EMAC0正在等待 PHY 自动协商完成.. 完成
    使用 K2E_EMAC0器件
    来自服务器192.168.0.102的 TFTP;我们的 IP 地址为192.168.0.241
    文件名'wh101v/skern-k2e.bin'。
    加载地址:0xc1f0000
    正在加载:########
    5.9 KiB/s
    完成
    传输的字节= 32832 (8040十六进制)
    调试:来自安全模式的消息2:内核频率- 20833333333Hz

    K2_BM_15。 07年3月23日 nogit SoC:k2e 内置:13:32:17

    ##已安装显示器@ 0xc1f0000、freq [208333333333]、状态203390975

    K2E_EMAC0等待 SGMII 自动协商完成。 完成
    使用 K2E_EMAC0器件
    来自服务器192.168.0.102的 TFTP;我们的 IP 地址为192.168.0.241
    文件名'wh101v/k2-fw-initrd.cpio.gz'。
    加载地址:0x88080000
    正在加载:##########
    1.3 MIB/s
    完成
    传输的字节= 64887 (fd77十六进制)

    K2E_EMAC0等待 SGMII 自动协商完成。 完成
    使用 K2E_EMAC0器件
    来自服务器192.168.0.102的 TFTP;我们的 IP 地址为192.168.0.241
    文件名'wh101v/keystone-k2e-evm.dtb'。
    加载地址:0x88000000
    正在加载:######
    1.3 MIB/s
    完成
    传输的字节= 44611 (ae43十六进制)

    K2E_EMAC0等待 SGMII 自动协商完成。 完成
    使用 K2E_EMAC0器件
    来自服务器192.168.0.102的 TFTP;我们的 IP 地址为192.168.0.241
    文件名'wh101v/zImage'。
    加载地址:0x82000000
    正在加载:############################################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ############################
    1.4 MIB/s
    完成
    传输的字节= 3479080 (351628十六进制)
    内核映像@ 0x82000000 [ 0x000000 - 0x351628]
    ###展开的设备树 blob、88000000
    使用0x88000000处的 FDT blob 进行引导
    正在将设备树加载到8fff2000,结束位置8ffe42... 好的

    正在启动内核...

    调试:>>> skern_powerON_CPU (1)>>>

    调试:来自安全模式的消息2:内核频率- 20833333333Hz

    调试:>>> skern_powerON_CPU (2)>>>

    调试:来自安全模式的消息2:内核频率- 20833333333Hz

    调试:>>> skern_powerON_CPU (3)>>>

    调试:来自安全模式的消息2:内核频率- 20833333333Hz
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yourdan!

    我将尝试启动板。 我不知道如何调试我的问题。 我阅读了 PSDK 的所有相关文档。 并在 引导监视器页面上找到  此信息:

    • 在 Linux 启动时、主内核进行 SMC 调用、为每个辅助内核上电。 发出 SMC 调用时,r0指向命令(0 -开机)。 R1指向 CPU 编号、R2指向辅助内核内核入口点地址。 主内核等待辅助内核启动、然后继续执行其余的启动序列。

    1) 1)请您能解释一下事件主内核正在等待中吗? 如何禁用此类行为? 我尝试使用禁用的 CONFIG_SMP 设置重建内核、但没有结果。  

    2) 2)请告诉我如何为 u-boot 和 Linux 内核正确设置器件树? 我仅更正 phy 地址、不知道可以在哪里修复存储器布局。

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好!
    我发现了问题、但未找到决策。
    Linux 无法引导、因为我加载了不正确的器件树文件。