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/AM3354:内核引导问题

Guru**** 2601915 points
Other Parts Discussed in Thread: AM3517

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/648374/linux-am3354-kernel-boot-issue

器件型号:AM3354
主题中讨论的其他器件:AM3517

工具/软件:Linux

您好!

我在使用4.9内核启动定制板时遇到问题。 定制板类似于 BeagleBone Black。 我有 TI 发布的 Linux-3.14.26-g2489c0内核。  我在未做任何更改的情况下比较了 SDK 内核和自定义板中有效的3.14内核。 我在驱动程序中发现了一些变化、并根据这些变化进行了修改。 然后、它可以与我的定制板配合使用。 我在4.9内核中遵循同样的操作。

使用内核4.9进行引导时、会出现以下问题。

错误:无法识别/不受支持的机器 ID (R1 = 0x00001245)

可用的机器支持:

ID (十六进制)       名称
FFFFFFFF       基于通用 DT 的系统
FFFFFFFF       通用 DRA72X (平展器件树)
FFFFFFFF       通用 DRA74X (平展器件树)
FFFFFFFF       通用 AM43 (平展器件树)
FFFFFFFF       通用 OMAP5 (平展器件树)
FFFFFFFF       通用 OMAP4 (平展器件树)
FFFFFFFF       通用 AM33XX (平展器件树)
FFFFFFFF       通用型 ti816x (平展器件树)
FFFFFFFF       通用 ti814x (平展器件树)
FFFFFFFF       通用 AM3517 (平展器件树)
FFFFFFFF       通用 OMAP3-GP (平展器件树)
FFFFFFFF       通用 OMAP36xx (平展器件树)
FFFFFFFF       通用 OMAP3 (平展器件树)
FFFFFFFF       Nokia RX-51电路板
FFFFFFFF       通用 OMAP2430 (平展器件树)
FFFFFFFF       通用 OMAP2420 (平展器件树)

请检查您的内核配置和/或引导加载程序。

(R1 = 0x00001245)是机器 id 4677的十六进制形式、在 u-boot 中提供。

我是否必须在4.9内核中提供机器 ID? 在3.14内核中、我将在仍在引导的任何位置提供此值。

有人可以帮助我吗? 我在这个问题上停留了很长时间。

以下是我之前发表的评论:

提前感谢..

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在3.14内核中,我*没有在仍在引导的任何位置提供此值。

    抱歉出现拼写错误
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Madhu、

    您能否在文本文件中附加用于内核4.9的内核 defconfig 文件和引导日志?
    此外、还会发布用于构建内核和器件树的步骤。

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

    arch = ARM
    波特率=115200
    board=custom_board_name
    board_name = custom_board_name
    BOOT_FDT=尝试
    bootcmd=run mmcboot;setenv mmcdev 1;setenv bootpart 1:2;运行 mmcboot;运行 nandboot;
    BOOTCOUNT=1
    BOOTDELAY=1
    bootdir=/boot
    bootenv=uEnv.txt
    BootFile=zImage
    bootpart=0:2
    console=none
    CPU=armv7
    DFU_alt_INFO_eMMC=rawemmc MMC 0 3751936
    dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;mlo fat 0 1;ml.raw mc100;u-boot.img.raw mc300 400;spl-os-args.raw mc80;spl-os-image.raw mc900 2000;spl-os-args U1 0;spl- fat 1;spl-操作系统 fat 1。fat 1
    dfu_alt_info_ram=内核 ram 0x80200000 0xD80000;fdt ram 0x80F80000 0x80000;ramdisk ram 0x81000000 0x4000000
    ethact=cpsw
    ethaddr=d0:ff:50:0b:C7:51
    FDT_HIGH_0xffffffff
    fdtaddr=0x80F80000
    fdtfile=custom_board.dtb
    importbootenv=从 MMC 导入环境...;env 导入-t $loadaddr $filesize
    loadaddr=0x80200000
    loadbootenv=加载 MMC ${mmcdev}${loadaddr}${bootenv}
    loadfdt=load MMC ${bootpart}${fdtaddr}${bootdir}/${fdtfile}
    loadimage=load MMC ${bootpart}${loadaddr}${bootdir}/${bootfile}
    loadramdisk=load MMC ${mmcdev}${rdaddr}ramdisk.gz
    loadsplash=MMC dev 0;如果 MMC 重新扫描;然后加载 MMC 0:${splashpart}${splashimage}${splashfile};否则为 MMC dev 1;如果 MMC 重新扫描;然后加载 MMC 1:${splashpart}${splashimage}${splashfile};fi;fi;
    mmcargs=setenv bootargs console=${console}${optargets}root=${mmcroot}rootfstypy=${mmcrootfstype}
    mmcboot=MMC dev ${mmcdev};如果 MMC 重新扫描;然后回显在器件${mmcdev}上找到的 SD/MMC;如果运行 loadbootenv;然后从${bootenv}回显加载的环境;运行 importbootenv;fi;如果测试-n $uenvcmd;然后回显 Ru;
    mmcdev=0
    mmclaros=run mmcargs;如果测试${boot_FDT}= yes ||测试${boot_FDT}=试用;如果运行 loadfdt;则 bootz ${loadaddr}-${fdtaddr};否则测试${boot_FDT}=试用;然后是 bootz;否则回显警告:无法执行 LOA;
    mmcroot=/dev/mmcblk0p2 ro
    mmcrootfstype=ext4 rootwait
    netargs=setenv bootargs console=${console}${optargets}root=/dev/nfs nfsroot=${serverip}:${rootpath}、${nfsopts}RW IP=DHCP
    netboot=echo 从网络引导...;setenv autoload no;dhcp;tftp ${loadaddr}${bootfile};tftp ${fdtaddr}${fdtfile}; 运行 netargs;bootz ${loadaddr}-${fdtaddr}
    nfsopts=nolock
    optarget=vt.global_curse_default=0
    ramargs=setenv bootargs console=${console}${optargets}root=${ramroot}rootfstypy=${ramrootfstype}
    ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=${rdaddr}、64M
    ramrootfstype=ext2
    读数地址=0x81000000
    rootpath=/export/rootfs
    SoC=am33xx
    args=setenv bootargs console=${console}${optargets}root=${spiroot}spifstypy=${rootrootfstype}
    spibusno=0
    spiimgsize=0x362000
    spiroot=/dev/mtdblock4 rw
    rootspifstype=jffs2.
    spisrcaddr=0xe0000
    splashfile=/boot/splash.bmp.gz
    splashimage=0x82000000
    splashpart=2
    static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
    USBnet_devaddr=d0:ff:50:0b:C7:51
    vendor=vendor_name
    ver = U-Boot 2014.01-RC2 (2017年10月23日- 19:02:59)e2e.ti.com/.../omap2plus_5F00_defconfig.doc

    感谢您的快速响应。

    请找到随附的 defconfig 文件和 uboot args

    我正在使用 arch/arm/config 目录中的 omap2plus_defconfig

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

    使 arch=arm cross_compiler= /linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf- distclean
    使 arch=arm cross_compiler= /linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf- omap2plus_defconfig
    使 arch=arm cross_compiler= /linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf- zImage dtbs
    我在 arch/arm/boot/DTS 下包含了我的 custom.dts 文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我比较了3.14内核和4.9内核(均由 TI 发布)。 在 Linux/arch/arm/mach-OMAP2/目录下、cpuidle33xx.c 存在于3.14内核中、并且4.9内核中缺少相同的文件。

    我从 kernel.org 网站获取了3.14内核、该内核是为我的定制板编译的。 它没有启动。 通过比较 TI 的3.14内核和主线(kernel.org) 3.14内核、发现主线(kernel.org) 3.14内核中缺少 cpuidle33xx.c。

    这会产生什么影响吗?
    抱歉、如果我错了、我不熟悉移植 Linux 用于定制板。 请给出建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请参阅 帖子。

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

    是的、我尝试取消设置 FDT_HIGH。 但问题仍然相同

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、为什么我看到这个 FDT_HIGH_0xffffffff? 如果找到并使用了设备树、则从不能访问的引导代码中产生"无法识别/不受支持的计算机 ID"错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    U-Boot#打印
    arch = ARM
    波特率=115200
    Board=custom_name
    Board_name=custom_name
    BOOT_FDT=尝试
    bootcmd=run mmcboot;setenv mmcdev 1;setenv bootpart 1:2;运行 mmcboot;运行 nandboot;
    BOOTCOUNT=1
    BOOTDELAY=1
    bootdir=/boot
    bootenv=uEnv.txt
    BootFile=zImage
    bootpart=0:2
    console=none
    CPU=armv7
    DFU_alt_INFO_eMMC=rawemmc MMC 0 3751936
    dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;mlo fat 0 1;ml.raw mc100;u-boot.img.raw mc300 400;spl-os-args.raw mc80;spl-os-image.raw mc900 2000;spl-os-args U1 0;spl- fat 1;spl-操作系统 fat 1。fat 1
    dfu_alt_info_ram=内核 ram 0x80200000 0xD80000;fdt ram 0x80F80000 0x80000;ramdisk ram 0x81000000 0x4000000
    ethact=cpsw
    ethaddr=d0:ff:50:0b:C7:51
    fdtaddr=0x80F80000
    fdtfile=htouch。dtb
    importbootenv=从 MMC 导入环境...;env 导入-t $loadaddr $filesize
    loadaddr=0x80200000
    loadbootenv=加载 MMC ${mmcdev}${loadaddr}${bootenv}
    loadfdt=load MMC ${bootpart}${fdtaddr}${bootdir}/${fdtfile}
    loadimage=load MMC ${bootpart}${loadaddr}${bootdir}/${bootfile}
    loadramdisk=load MMC ${mmcdev}${rdaddr}ramdisk.gz
    loadsplash=MMC dev 0;如果 MMC 重新扫描;然后加载 MMC 0:${splashpart}${splashimage}${splashfile};否则为 MMC dev 1;如果 MMC 重新扫描;然后加载 MMC 1:${splashpart}${splashimage}${splashfile};fi;fi;
    mmcargs=setenv bootargs console=${console}${optargets}root=${mmcroot}rootfstypy=${mmcrootfstype}
    mmcboot=MMC dev ${mmcdev};如果 MMC 重新扫描;然后回显在器件${mmcdev}上找到的 SD/MMC;如果运行 loadbootenv;然后从${bootenv}回显加载的环境;运行 importbootenv;fi;如果测试-n $uenvcmd;然后回显 Ru;
    mmcdev=0
    mmclaros=run mmcargs;如果测试${boot_FDT}= yes ||测试${boot_FDT}=试用;如果运行 loadfdt;则 bootz ${loadaddr}-${fdtaddr};否则测试${boot_FDT}=试用;然后是 bootz;否则回显警告:无法执行 LOA;
    mmcroot=/dev/mmcblk0p2 ro
    mmcrootfstype=ext4 rootwait
    netargs=setenv bootargs console=${console}${optargets}root=/dev/nfs nfsroot=${serverip}:${rootpath}、${nfsopts}RW IP=DHCP
    netboot=echo 从网络引导...;setenv autoload no;dhcp;tftp ${loadaddr}${bootfile};tftp ${fdtaddr}${fdtfile}; 运行 netargs;bootz ${loadaddr}-${fdtaddr}
    nfsopts=nolock
    optarget=vt.global_curse_default=0
    ramargs=setenv bootargs console=${console}${optargets}root=${ramroot}rootfstypy=${ramrootfstype}
    ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=${rdaddr}、64M
    ramrootfstype=ext2
    读数地址=0x81000000
    rootpath=/export/rootfs
    SoC=am33xx
    args=setenv bootargs console=${console}${optargets}root=${spiroot}spifstypy=${rootrootfstype}
    spibusno=0
    spiimgsize=0x362000
    spiroot=/dev/mtdblock4 rw
    rootspifstype=jffs2.
    spisrcaddr=0xe0000
    splashfile=/boot/splash.bmp.gz
    splashimage=0x82000000
    splashpart=2
    static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
    USBnet_devaddr=d0:ff:50:0b:C7:51
    Vendor=custom_board
    ver = U-Boot 2014.01-RC2 (2017年12月11日- 15:47:26)

    取消设置 FDT_HIGH 后的 UBoot 日志

    在369 ms (10.1 MIB/s)内读取3919176字节
    在29ms (1.3 MIB/s)内读取40558字节
    内核映像@ 0x80200000 [0x000000 - 0x3bcd48]
    ###展开的设备树状图、位于80f80000
    使用0x80f80000处的 FDT blob 进行引导
    正在将设备树加载到9f32c000,结束9f338e6d... 好的

    正在启动内核...

    它在...启动内核后没有显示任何内容

    但带有 custom.dtb 的3.14内核正在引导。 3.14使用 AM335x-EVM.dTB 和 AM335x-bonebblack.dTB 进行引导。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为什么您设置 console=none,则表示您抱怨控制台上没有显示任何消息? 你和我们开个玩笑吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请不要误解、我尝试使用 console=ttyS0、115200n8。 但我无法启动。 因此我保持 console=none。 现在我尝试使用 console = ttyO0。 它现在启动

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

    好的、如果你在3.14内核的 U-Boot 中有类似这个表达式的东西、这是可能的。 然后、控制台变量将被覆盖、并显示消息。
    init_console=if test $board_name = a335_ice;然后 setenv 控制台 ttyO3、115200n8;否则 setenv 控制台 ttyO0、115200n8;fi;