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.

[参考译文] AM6412:从 U-boot 提示符引导 Linux

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1190673/am6412-booting-linux-from-u-boot-prompt

器件型号:AM6412

您好、专家

我已经使用 USB 引导过程(DFU)引导至 u-boot 提示符。现在我希望从 u-boot 提示符引导 Linux。因此我已经厌倦了将 initramfs 组合  到内核映像、使用 initramfs 生成内核映像。

因此、我对以下过程感到厌烦  

步骤1:

我已经通过 将以下内容添加到 Yocto 的 local.conf 配置中来构建 tisdk-Tiny-image-am*-evm.cpio.gz.u-boot  

#生成压缩的 cpio 归档文件,并具有 U-Boot 标头
image_FSTYPES_append =" cpio.gz.u-boot"

步骤2:

我已经执行了这些步骤

将 cpio 格式的映像直接构建到内核中

使用  CONFIG_initramfs_source Kernel config 选项(在 menuconfig 中的常规设置中)可以指向主机系统上的文件夹位置、该文件夹位置包含 带有.cpio 后缀的单个 cpio 归档文件或用于构建 initramfs 映像的以空格分隔的目录和文件列表。 使用内置 initramfs 映像构建内核时、它将直接初始化并使用此 initramfs、而无需任何特殊的 U-Boot 处理(只需将'-'作为 RAM 磁盘的地址传递到 booti/bootm 命令第二个参数)或对内核命令行进行所需的更新。 虽然这种方法易于部署/使用,但每次需要对 rootfs 进行更改时,都需要重新构建完整的内核。

之后、我生成了内核镜像=镜像、使用镜像、我为 hs-fs 板生成了 fitImage。

这是日志  

U-Boot SPL 2021.01 (1月27 2023 - 20:30:05 +0530)
EEPROM 在80时不可用、尝试在81时读取
在0x51读取板载 EEPROM 失败-1
在冷启动时重置以解决 ErrataID:i2331
正在重置...

U-Boot SPL 2021.01 (1月27 2023 - 20:30:05 +0530)
EEPROM 在80时不可用、尝试在81时读取
在0x51读取板载 EEPROM 失败-1
SYSFW ABI:3.1 (固件版本0x0008 '8.5.3-v08.05.03 (Chill Capybar')
SPL 初始堆栈用法:13424字节
尝试从 DFU 引导
################################ 下载... 好的
按 Ctrl+C 退出...
身份验证已通过
身份验证已通过
身份验证已通过
身份验证已通过
不支持来自器件10的 init_env!
在 ARM64内核上启动 ATF...

注意:BL31:V2.8 (发布):V2.8-34-g10f4d1a2d
注意:BL31:构建时间:20:24:48,1月27日2023日
I/TC:
I/TC:OP-TEE 版本:08.05.00.007-117-g79243b1f (gcc 版本9.2.1 20191025 (A 配置文件体系结构的 GNU 工具链9.2-2019.12 (ARM-9.10))) 1日(星期五) 27 14:57:22 UTC 2023 Aarch64
I/TC:警告:此 OP-TEE 配置可能不安全!
I/TC:警告:请检查 opte.readtheddocs.io/.../porting_guidelines.html
I/TC:初始化主 CPU
I/TC:SYSFW ABI:3.1 (固件版本0x0008 '8.5.3-v08.05.03 (Chill Capybar')
I/TC:Huk 初始化
I/TC:激活的 SA2UL 器件
I/TC:为 SA2UL TRNG 器件启用防火墙
I/TC:SA2UL TRNG 已初始化
I/TC:SA2UL 驱动程序已初始化
I/TC:主 CPU 切换到正常世界引导

U-Boot SPL 2021.01 (1月27 2023 - 20:33:30 +0530)
EEPROM 在80时不可用、尝试在81时读取
在0x51读取板载 EEPROM 失败-1
SYSFW ABI:3.1 (固件版本0x0008 '8.5.3-v08.05.03 (Chill Capybar')
尝试从 DFU 引导
#### 下载... 好的
按 Ctrl+C 退出...
身份验证已通过
身份验证已通过


U-Boot 2021.01 (1月27 2023 - 20:33:30 +0530)

SoC:AM64X SR2.0 HS-FS
型号:德州仪器 AM642 EVM
EEPROM 在80时不可用、尝试在81时读取
在0x51读取板载 EEPROM 失败-1
DRAM:2GiB
NAND:0 MIB
MMC:MMC@fa10000:0、MMC@fa00000:1
正在从 FAT 加载环境... MMC:无卡存在
IN:串行@2800000
输出:串行@2800000
ERR:串行@2800000
EEPROM 在80时不可用、尝试在81时读取
在0x51读取板载 EEPROM 失败-1
NET:eth0:以太网@8000000port@1
按任意键停止自动引导:0
MMC:无卡存在
在器件1上找到 SD/MMC
MMC:无卡存在
MMC:无卡存在
MMC:无卡存在
MMC:无卡存在
bootm 命令的映像格式错误
错误:无法获取内核映像!
=> setenv serverip 192.168.10.1
=> setenv ipaddr 192.168.10.2
=> tftp fitImage
在端口1、速度1000、全双工上建立链路
使用以太网@8000000port@1器件
来自服务器192.168.10.1的 TFTP;我们的 IP 地址为192.168.10.2
文件名'fitImage'。
加载地址:0x82000000
正在加载:############################################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
####################################################
################################
10.8 MIB/s
完成
传输的字节= 21689499 (14af49b 十六进制)
=> bootm 0x82000000
##正在从82000000处的 FIT 图像加载内核...
使用'K3-am642-EVM.dTB'配置
正在尝试'kernel@1'内核子映像
描述:Linux 内核
键入:kernel Image
压缩:gzip 压缩
数据开始:0x820000f4
数据大小:21559410字节= 20.6 MIB
架构:Aarch64
操作系统:Linux
加载地址:0x80008000
入口点:0x80008000
正在验证散列完整性... 好的
身份验证已通过
##正在从82000000处的 FIT 图像加载 FDT ...
使用'K3-am642-EVM.dTB'配置
正在尝试'K3-am642-EVM.dTB' FDT 子映像
说明:平展设备树状物
键入:平板设备树
压缩:未压缩
数据开始:0x8348fa28
数据大小:57845字节= 56.5 KiB
架构:Aarch64
正在验证散列完整性... 好的
身份验证已通过
使用0x8348fa28上的 FDT blob 进行引导
解压缩内核镜像
错误:错误的 gzipped 数据
gzip 压缩:解压缩错误-1
必须复位电路板才能恢复
正在重置...

请提供克服此错误的任何步骤

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

    您好!

    您是否会参考此常见问题解答、以了解它对您的查询是否有帮助?

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1176944/faq-linux-how-to-boot-sitara-am3x-am4x-am6x-devices-from-initramfs-cpio-archive-ram-disk

    最棒的

    -香港

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

    您好、Hong、

    是的、我遵循了这个主题

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1176944/faq-linux-how-to-boot-sitara-am3x-am4x-am6x-devices-from-initramfs-cpio-archive-ram-disk

    我对选项1感到厌倦、但它对我不起作用

    在引导时继续执行选项1过程后、我会遇到类似这样的错误


    U-Boot 2021.01 (1月27 2023 - 20:33:30 +0530)

    SoC:AM64X SR2.0 HS-FS
    型号:德州仪器 AM642 EVM
    EEPROM 在80时不可用、尝试在81时读取
    在0x51读取板载 EEPROM 失败-1
    DRAM:2GiB
    NAND:0 MIB
    MMC:MMC@fa10000:0、MMC@fa00000:1
    正在从 FAT 加载环境... MMC:无卡存在
    IN:串行@2800000
    输出:串行@2800000
    ERR:串行@2800000
    EEPROM 在80时不可用、尝试在81时读取
    在0x51读取板载 EEPROM 失败-1
    NET:eth0:以太网@8000000port@1
    按任意键停止自动引导:0
    MMC:无卡存在
    在器件1上找到 SD/MMC
    MMC:无卡存在
    MMC:无卡存在
    MMC:无卡存在
    MMC:无卡存在
    bootm 命令的映像格式错误
    错误:无法获取内核映像!
    => setenv serverip 192.168.10.1
    => setenv ipaddr 192.168.10.2
    => tftp fitImage
    在端口1、速度1000、全双工上建立链路
    使用以太网@8000000port@1器件
    来自服务器192.168.10.1的 TFTP;我们的 IP 地址为192.168.10.2
    文件名'fitImage'。
    加载地址:0x82000000
    正在加载:############################################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ####################################################
    ################################
    10.8 MIB/s
    完成
    传输的字节= 21689499 (14af49b 十六进制)
    => bootm 0x82000000
    ##正在从82000000处的 FIT 图像加载内核...
    使用'K3-am642-EVM.dTB'配置
    正在尝试'kernel@1'内核子映像
    描述:Linux 内核
    键入:kernel Image
    压缩:gzip 压缩
    数据开始:0x820000f4
    数据大小:21559410字节= 20.6 MIB
    架构:Aarch64
    操作系统:Linux
    加载地址:0x80008000
    入口点:0x80008000
    正在验证散列完整性... 好的
    身份验证已通过
    ##正在从82000000处的 FIT 图像加载 FDT ...
    使用'K3-am642-EVM.dTB'配置
    正在尝试'K3-am642-EVM.dTB' FDT 子映像
    说明:平展设备树状物
    键入:平板设备树
    压缩:未压缩
    数据开始:0x8348fa28
    数据大小:57845字节= 56.5 KiB
    架构:Aarch64
    正在验证散列完整性... 好的
    身份验证已通过
    使用0x8348fa28上的 FDT blob 进行引导
    解压缩内核镜像
    错误:错误的 gzipped 数据
    gzip 压缩:解压缩错误-1
    必须复位电路板才能恢复
    正在重置...

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

    您好!

    您好像是在内核 blob 的映像树源文件中创建了压缩="gzip"的 FIT 映像吗? 如果是这样、这看起来与我最近刚调试的内容非常相似。 U-Boot 中似乎存在错误、因此它尝试就地执行不受支持的 gunzip 操作。 您能否查看并尝试附加的补丁。 您可能还需要增加 CONFIG_SYS_malloc_LEN 以使其正常工作。

    此致、Andreas

    e2e.ti.com/.../0008_2D00_gunzip_2D00_Create_2D00_copy_2D00_of_2D00_source_2D00_data_2D00_during_2D00_in_2D00_place_2D00_ex.patch

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

    你(们)好、Andreas  

    感谢您的回答

    我对 CONFIG_SYS_malloc_LEN 配置有疑问、在哪里可以增大大小、你能不能提及文件名或路径名。

    我使用的是 am64xx EVM。 我在 u-boot 目录中应用了补丁。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="547892" URL"~/support/processors-group/processors/f/processors-forum/1190673/am6412-booting-linux-from-u-boot-prompt/4489796 #4489796"]我对 CONFIG_SYS_malloc_LEN 配置有疑问,我可以在哪里增大大小,是否可以提及文件或路径名。

    您可以增大 U-Boot (正确)动态内存池大小、如下所示。 TI 电路板的默认尺寸为32MB。

    $ git diff
    diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h
    index 08829781e3..8ba22859ec 100644
    --- a/include/configs/ti_armv7_common.h
    +++ b/include/configs/ti_armv7_common.h
    @@ -101,7 +101,7 @@
      * we are on so we do not need to rely on the command prompt.  We set a
      * console baudrate of 115200 and use the default baud rate table.
      */
    -#define CONFIG_SYS_MALLOC_LEN          SZ_32M
    +#define CONFIG_SYS_MALLOC_LEN          SZ_64M
     #define CONFIG_ENV_OVERWRITE           /* Overwrite ethaddr / serial# */

    那么、您的内核映像的 gunzip 是否与我提供的补丁一同使用?

    此致、Andreas

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

    你(们)好、Andreas  

    感谢您的回答

    我的问题通过生成 Image.gz 格式的内核映像得以解决、现在我能够使用 initramfs 启动内核映像。

    感谢您的支持。