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/DRA746:ULO 如何在 RAM 中加载 Linux 映像并运行它

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/660481/linux-dra746-how-does-ulo-load-linux-image-in-ram-and-run-it

器件型号:DRA746

工具/软件:Linux

在此处提供 Linux 内核 U-Boot 指南后、收到了客户提出的以下问题:  

http://processors.wiki.ti.com/index.php/Linux_Core_U-Boot_User's_Guide

这显然不能提供所需的快速启动、因此他们的问题是:  

  1. 如何启用编译标志以启用 fastboot 的 ULO (Uboot-spl.bin)?
  2. 如何使用 fastboot 将整个系统加载到 RAM 中、然后从 RAM 引导? 他们了解到,正常的 fastboot 应该能够支持:

 

 引导 [ ]        下载并引导内核

 

             我们的 fastboot 是否支持上述命令将内核和 ramdisk 加载到 RAM 中?

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

    他们使用哪种 SDK?

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

    Yordan、您好!

    SDK 版本为 v3.02.00.03。

    此致

    Kevin

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

    我已将您的问题转发给引导加载程序专家。

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

    Yordan、您好!

    您对此帖子是否有任何更新? 这将是一个紧急情况。 因此、请获得您对此问题的支持。 谢谢!

    此致

    Kevin

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

    在 MLO 中不支持 FASTBOOT、但在 u-boot 上可用。 单级引导加载程序对大小有限制、因此使用两级引导提供了快速引导支持。

    关于在 RAM 上刷写整个文件系统、我们尚未对此进行测试。 使用 fastboot 将映像刷写到永久存储器中、但不直接刷写到 RAM 中。 我将与小组讨论可行性,并将再次讨论。

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

    相同的 U-boot (p-ti-u-boot-2016.05)用于适用于 DRA7x 平台变体的 Proc Linux 和 Android 汽车 SDK。

    对于 Linux 和 Android、只有分区表不同(参考: include/configs/dra7xx_evm.h)。

    命令

    1) fastboot flash boot boot.img

    BootIMG 是(ramdisk.img + zImage)

    2) fastboot flash zImage zImage  

    使用 Android 构建进行了测试(将引导介质作为 Emma)、用于快速引导闪存的等效命令也适用于 Linux 映像  

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

    您好 Praneeth、

    很高兴收到您的回复。 这是我第一次触摸将内核映像加载到 RAM 并运行它的方法。 我有很多问题。 也许所有问题对您来说都很简单、但我想获得您的指导和支持。 谢谢! 下面是我 的问题。

    1) 1)我们如何获得"p-ti-u-boot-2016.05"? SDK 在默认情况下是否支持它?  

    2) 2) 如何将 ramdisk.img + zImage 组合为 boot.img?

    如果可能、您能否提供相关文档或 SOP 来描述此部件、如 ULO? 谢谢!

    此致

    Kevin

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

    请按照下面列出的步骤创建包含 kernel+ramdisk 的映像。

    processors.wiki.ti.com/.../Initrd


    此致
    Shravan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Shruavan、您好!
    感谢你的答复。 我们已经破坏了映像、但仍然存在"p-ti-u-boot-2016.05"问题。 我们直接使用 SDK 的默认 u-boot、但 fastboot 命令(由 sudo apt-get install android-tools-fastboot 安装)无法传输到 uboot。 我们有以下问题:

    1) 1)我们如何获得"p-ti-u-boot-2016.05"? SDK 在默认情况下是否支持它? 或者我们必须通过 manconfig 对其进行配置?
    2) 2)我们如何确保 p-ti-u-boot-2016.05是否正在运行? 它在 PC 中是否存在接口端口、例如 PC 可以在快速引导模式下使用 Android 系统时检测接口端口。

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

    'P-ti-u-boot-2016.05'是使用 Processor-SDK 3.02的默认 u-boot。
    您是否能够实现 u-boot? 您能否将 MLO 和 u-boot.img 复制到 SD 卡并使用 SD 卡进行引导以确保映像正常?
    验证后、您可以从 u-boot 运行以下命令、使用 fastboot 查找 u-boot 版本。

    > fastboot getvar bootloader-version

    您能否确认您是否能够运行这些步骤? 您可以在 u-boot 存储库的'dooc'文件夹中的文件'README.android-fastboot'中找到有关 fastboot 的更多信息。

    此致
    Shravan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Shravan、您好!
    感谢你的答复。 我将尝试它并尽快为您更新我的状态。 谢谢!

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

    Shravan、您好!

    我使用 USB 设备固件升级(DFU)通过 以下方法加载 u-boot.img。

      

    我检查 u-boot 下的版本并收到以下消息。

    =>版本

    U-Boot 2016.05 (2017年11月24日- 15:38:03 +0800)
    arm-linux-gnueabihf-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113
    GNU ld (GNU binutils) 2.25.0 Linaro 2015_10

    这意味着我可以进入 uboot、我对吗?

    然后我尝试使用命令 fastboot getvar bootloader-version、但收到 以下消息。

    => fastboot
    FASTBOOT -使用 USB Fastboot 协议

    用法:
    FASTBOOT
    -作为快速引导 USB 设备运行

    1.我是否需要设置任何设置或配置?

    2.除了 fastboot 之外,还有其他方法可以将 zImage 加载到 RAM (不是 MMC/SD)并运行它吗?

    BTW、我使用的 SDK 是 SDK v3.02 OS:Linux

    此致
    Kevin

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

    尊敬的 Kevin:

    是的、您的版本正确、我可以看到 fastboot 已作为映像的一部分构建。 现在、从目标运行上的 u-boot 开始:

    U-boot# fastboot 0

    这使得电路板能够使用 fastboot 从 PC 接收图像。 从目标运行以下命令、从 PC 传输引导映像(ramdisk + zImage)  

    PC# fastboot flash boot boot.img  

    此致
    Shravan

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

    感谢您的快速回复。

    我尝试发送 fastboot 0、但收到如下消息。 PC 端未找到 fastboot 器件。
    => fastboot 0
    未知的 IRQ 类型1887007331

    1.我是否需要设置任何设置或配置?

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

    您可以在 PC 上运行以下命令

    PC# fastboot 器件

    您可能需要 sudo 权限才能运行上述命令。

    您应该会看到一个出现的器件。 您可以确认这一点吗? 如果没有、请确保您已将 micro-USB 电缆连接到基板上 HDMI 端口旁边。

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

    感谢您一如既往的回复。

    我现在可以使用 fastboot 闪存。
    Albert@Albert–PC:~ë/bowei$ sudo fastboot flash zImage /home/albert/Wess/zImage
    目标报告的最大下载大小为788529152字节
    正在发送'zImage'(4184 KB)...
    好[0.208s]
    正在写入'zImage'...
    失败(远程:找不到引导分区)
    已完成。 总时间:0.266s
    Albert@Albert–PC:~ë/bowei$ sudo fastboot flash boot /home/albert/Wess/Image
    目标报告的最大下载大小为788529152字节
    正在发送'boot'(13308 KB)...
    好[0.629s]
    正在写入'boot'……
    失败(远程:找不到分区)
    已完成。 总时间:0.66s

    但我还有一个问题是关于分区设置。
    我可以在哪个文件中设置分区表? (include/configs/dra7xx_evm.h 或其他?)
    是否有任何我可以参考的文档?

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

    尊敬的 Kevin:

    是的、您需要在'include/configs/dra7xx_evm.h'文件中设置分区表。 必须对'parts_default'宏进行更改。   

    有关更多信息、请参阅 u-boot 中的'doc/README.android-fastboot-protocol'文件。

    此致

    Shravan

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

    我尝试在'ra7xx_evm.h'的'#ifdef CONFIG_SPL_DFU_support'下添加 parts_default 宏。
    #define parts_default \
    /* Linux 分区*/\
    "uid_disk=${uuid_gppt_disk};"\
    "name=boot、start=2MiB、size=10M、uuid=${uuid_gppt_boot};"\
    "name=rootfs,size=, uid=${uid_gp_t_rootfs}\0"\
    /* Android 分区*/\
    "partitions_android="\
    "uid_disk=${uuid_gppt_disk};"\
    "name=xloader,start=128K,size=128K,uuid=${uuid_gpt_xloader};"\
    "name=bootloader,size=768K,uid=${uuid_gppt_bootloader};"\
    "name=environment,size=128K,uid=${uuid_gp_t_environment};"\
    "name=MiSC、size=128K、uid=${uuid_gppt_misc};"\
    "name=Reserved,size=384K,uid=${uuid_gp_t_reserved};"\
    "name=EFS,size=16M,uid=${uuid_gpt_efs};"\
    "name=crypto, size=16K,uid=${uuid_gp_t_crypto};"\
    "name=recovery、size=10M、uid=${uuid_gppt_recovery};"\
    "name=boot、size=10M、uid=${uuid_gppt_boot};"\
    "name=system, size=768M,uid=${uuid_gpt_system};"\
    "name=cache、size=256M、uid=${uuid_gppt_cache};"\
    "name=ipu1,size=8M,uid=${uid_gppt_ipu1};"\
    "name=ipu2,size=8M,uid=${uid_gppt_ipu2};"\
    "name=dsp1,size=8M,uid=${uuid_gppt_dsp1};"\
    "name=dsp2,size=8M,uid=${uuid_gppt_dsp2};"\
    "name=userdata,size=-,uuid=${uuid_gppt_userdata}"

    但是、当我执行 fastboot 闪存时、它仍然无法闪存、并在 J6侧显示以下日志。

    警告:未知变量:partition-type:boot
    请求 fdf3c400未在批量队列中排列
    请求 fdf3c400未在批量队列中排列
    开始下载13627392字节
    请求 fdf3c400未在批量队列中排列
    ..................................................................
    三、会议的报告 请求 fdf3c400未在批量队列中排列

    下载13627392字节完成
    GUID 分区表头签名错误:0x0!= 0x5452415020494645
    PART_GET_INFO_EFI:***错误:GPT 无效***
    GUID 分区表头签名错误:0x0!= 0x5452415020494645
    PART_GET_INFO_EFI:***错误:备份 GPT 无效***
    错误:找不到分区:'boot'

    在 common/fb_MMC.c:136/fb_MMC_flash_write ()
    请求 fdf3c400未在批量队列中排列

    警告:未知变量:partition-type:zImage
    请求 fdf3c400未在批量队列中排列
    请求 fdf3c400未在批量队列中排列
    开始下载4285368字节
    请求 fdf3c400未在批量队列中排列
    三、会议的报告 请求 fdf3c400未在批量队列中排列

    4285368字节下载完成
    正在刷写 zImage...4285368字节
    GUID 分区表头签名错误:0x0!= 0x5452415020494645
    PART_GET_INFO_EFI:***错误:GPT 无效***
    GUID 分区表头签名错误:0x0!= 0x5452415020494645
    PART_GET_INFO_EFI:***错误:备份 GPT 无效***
    请求 fdf3c400未在批量队列中排列
    GUID 分区表头签名错误:0x0!= 0x5452415020494645
    PART_GET_INFO_EFI:***错误:GPT 无效***
    GUID 分区表头签名错误:0x0!= 0x5452415020494645
    PART_GET_INFO_EFI:***错误:备份 GPT 无效***
    状态:-104 EP 'ep1in-bulk'传输:0

    我还尝试添加 Fastboot 配置、但发现它仅支持 MMC 和 NAND。
    #define CONFIG_USB_FUNCK_FASTBOOT
    #define CONFIG_CMD_FASTBOOT
    #define CONFIG_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR
    #define CONFIG_FASTBOOT_BUF_SIZE 0x2F000000
    #define CONFIG_FASTBOOT_FLASH
    #define CONFIG_FASTBOOT_FLASH_MMC_DEV 1.

    1.我是否在正确的位置添加了 parts_default 宏? 我应该为 start (start=2Mib)值设置什么值?
    2.我应该为将映像刷写到 RAM 中定义什么 Fastboot 配置,或者它与之无关?


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

    尊敬的 Kevin:

    由于您要将映像加载到 RAM 并从 RAM 引导、请从 PC 运行以下命令

    PC@:~ fastboot 引导  

    仅当您要写入存储(eMMC/SPI)时、才会刷写映像。 如果要刷写映像、请设置需要刷写的器件(默认为 eMMC)、但从 PC 运行以下命令。  

    PC@:~ fastboot OEM MMC --将闪存设备设置为 eMMC

    PC@:~ fastboot OEM SPI --将闪存器件设置为 QSPI

    然后、您可以运行后续命令来刷新 MLO/boot.img 等


    此致
    Shravan

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

    感谢您的回复。

    在我从 PC 端发送命令 fastboot boot boot.img 后。
    J6仅显示以下消息、无其他操作。
    开始下载13629440字节
    请求 fdf3c400未在批量队列中排列
    ..................................................................
    三、会议的报告 请求 fdf3c400未在批量队列中排列

    下载13629440字节完成
    请求 fdf3c400未在批量队列中排列
    正在启动内核..
    ##正在引导 Android 映像,地址为0x82000000...
    内核加载地址0x82000800大小13308 KiB
    XIP 内核镜像... 好的

    正在启动内核...

    1.是否有我需要设置的设置或需要执行的操作?(张图像格式?)


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

    尊敬的 Kevin:

    如何创建引导映像? 我注意到内核加载地址是0x82000000。 默认情况下、Linux 内核加载在0x80000000处。 在 Android 中、boot.img 是使用 mkbootimage 工具创建的(也可用于处理器 SDK Linux)。 设置以下参数

    Board_kernel_BASE:= 0x80000000

    Board_kernel_offset:= 0x00008000 // mkbootimage 工具中的默认值

    Board_MKBOOTIMG_args:=-ramdisk_offset 0x03000000

    您应从 u-boot 中看到以下日志:

     

    内核加载地址0x80008000大小7529 KiB

    内核命令行:buildvariant=userdebug

    RAM 磁盘加载地址0x83000000大小1004 KiB

    此致

    Shravan

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

    感谢您的回复。

    我按如下所示创建 boot.img:
    mkbootimg --kernel /home/wess/LGA/lga_3.02.00.03/board-support/linux/arch/arm/boot/zImage --ramdisk ramdisk.gz --base 0x80000000 --ramdisk_offset 0x03000000 -o boot.img

    (使用空 ramdisk)
    processors.wiki.ti.com/.../Initrd

    FASTBOOT 如下所示:
    sudo fastboot -b 0x8000000 -c "buildvariant=userdebug" boot /home/albert/Wess/boot.img

    J6显示如下日志:
    4360192字节下载完成
    请求 fdf3d400未在批量队列中排队
    正在启动内核..
    ##正在引导 Android 映像,地址为0x82000000...
    内核加载地址0x80008000大小为4186 KiB
    内核命令行:buildvariant=userdebug
    RAM 磁盘加载地址0x83000000大小69 KiB
    正在加载内核映像... 好的

    正在启动内核...

    但仍无法引导至内核。

    1.我是否需要设置内核配置或在 ramdisk 中添加任何内容?
    2.它是否与 zImage 和 RAM 磁盘大小有关?


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

    添加从 kernel_entry 函数发送的 u-boot env 参数和 machid & R2值以供参考。
    希望这些有助于找到原因。

    =>打印
    arch = ARM
    args_fit=setenv bootargs console=${console}
    args_mmc=run finduid;setenv bootargs console=${console}${optargets}root=PARTUUID =${uuid}rw consolfstype=${mmcrootfstype}rootebank=0 omapdrm.num_crtc=2 drm.debug=0xff
    波特率=115200
    电路板=dra7xx
    Board_name=dra7xx
    BOOT_FDT=尝试
    BOOT_FIT = 0
    BOOT_OS=0
    bootargs=androidboot.serialno=${serial#} console=ttyS0、115200 androidboot.console=ttyS0和 roidboot.hardware=jacinto6evmboard
    bootcmd=switch_dtb;setenv mmcdev 1;setenv bootpart 1:2;setenv mmcroot /dev/mmcblk0p2 rw;运行 mmcboot;
    BOOTDELAY=2
    bootdir=/boot
    bootenvfile=uEnv.txt
    BootFile=zImage
    BOOTM_SIZE=0x10000000
    bootpart=0:2
    bootscript=echo 正在从 MMC${mmcdev}...;源${loadaddr}运行的 bootscript
    console=ttyO2,115200n8.
    CPU=armv7
    dfu_alt_info_eMMC=rawemmc raw 0 3751936;引导部分1;rootfs 部分1 2;mlo fat 1;ml.raw 0x100 0x100;u-boot.img.raw 0x300 0x400;spl-os-args.img raw 0x80 0x80;spl-os-image-raw 0x100;u-boot.g1;splfat 1;splfat 1 uEnv.txt raw 0xfat 1;spl- raw 0xfat 1;splfat 1
    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 0x400;spl-os-args.raw 0x80 0x80;spl-os-image.fat raw 0x900;spl-os-os-gfat 1;fat 0 uEnv.txt
    DFU_alt_INFO_QSPI=MLO RAW 0x0 0x040000;u-boot.img RAW 0x040000 0x0100000;u-boot-spl-OS RAW 0x140000 0x080000;u-boot-env RAW 0x1C0000 0x010000;u-boot-env.backup RAW 0x1D0000 0x010000;u-boot-env.backup RAW 0x8000000 0x0000 0x8000000 0xE0000
    dfu_alt_info_ram=内核 ram 0x80200000 0x4000000;fdt ram 0x80f80000 0x80000;ramdisk ram 0x81000000 0x4000000
    DFU_bufsiz=0x10000
    dofastboot=0
    eMMC_Android_boot=setenv eval_bootargs setenv bootargs $bootargs;运行 eval_bootargs;setenv mmcdev 1;setenv FDT_part 3;setenv boot_part 9; 如果测试$reboot_image = recovery;那么 setenv boot_part 8;setenv reboot_image boot;saveenv;fi;setenv machid fe6;MMC dev $mmcdev; 重新扫描 MMC 引导;部件启动 MMC ${mmcdev}${FDT_part}FDT_START;部件尺寸 MMC ${mmcdev}${FDT_part}FDT_SIZE;部件启动 MMC ${mmcdev}${boot_part}boot_dart;部件尺寸 MMC ${mmdr}${bootdr}${boot_dr}${boot_size ${dr}${dr}${dr}
    envboot=MMC dev ${mmcdev};如果 MMC 重新扫描;然后回显在器件${mmcdev}上找到的 SD/MMC;如果运行 loadbootscript;然后运行 bootscript;否则运行 loadbootenv;然后从${bootenvfile}回显已加载的 env;运行 importbootenv;fi;if test -n $uuccmd;然后运行 envenvcmd;envive...
    eth1addr=A4:D5:78:d6:A4:73
    ethact=cpsw
    ethaddr=A4:D5:78:d6:A4:72
    FASTBOOT.board_rev=未知
    FASTBOOT.CPU=J6
    fastboot.secure=GP
    fastboot.userdata_size=unknown
    FDT_addr_r=0x88000000
    fdtaddr=0x88000000
    fdtfile=未定义
    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; fi;if test $board_name = beagle_x15; then setenv fdtfile am57xx-beagle-x15.dtb; fi; if test $board_name = beagle_x15_revb1; then setenv fdtfile am57xx-bedt-x15-revb1.dtb; fi; if test $57v_env_ramb=$57v_env_env_env_env_ex; tb&tb=$57v_env_env_env_env_env_env_env_env_env_env_env=$57b1; tb&tb&tb&; tb&s=$57v_env_env_env_env_env_env_env_env_env_env_env_env_env_env_ex- FI;if test $board_name = am572x_idk && test $idk_LCD = osd101t2045;然后 setenv fdtfile am572x-idk-lcd.dtb;fi;if test $board_name = am572x_idk && test $idk_lcd = osd101t1tx-lcdb;and $57tidtx_dtx_dtb =$57tidtx_dtx_dtb;and tidtidtidtx-tb;and $57tidtidtx_dtidtx_dtidtx-tb =$57tb;and tidtidtidtx-tx-tidtb;tidtx-tx-tidtx-fl f;if test $board_name = am571x_idk && test $idk_LCD = osd101t2045;then setenv fdtfile am571x-idk-lcd.dtb;fi; if test $board_name = am571x_idk && test $idk_lcd = osd101t-lcd.dtb;then undtv 文件无法使用 undtv;如果未定义,则无法使用 undtidtv 文件;fb 警告:undtv-d57tb;如果未定义,则无法使用 undtidtv 文件 fb;fidtv;fb;fidtb:
    finduuid=part uuid MMC ${bootpart}uuid
    fit_bootfile=fitImage.itb.
    fit_loadaddr=0x88000000
    importbootenv=echo 从 MMC${mmcdev}导入环境...;env 导入-t ${loadaddr}${filesize}
    kernel_addr_r=0x82000000
    loadaddr=0x82000000
    loadbootenv=fatload MMC ${mmcdev}${loadaddr}${bootenvfile}
    loadbootscript=fatload MMC ${mmcdev}${loadaddr}boot.scr
    loadfdt=load ${devtype}${bootpart}${fdtaddr}${bootdir}/${fdtfile}
    loadfit=run args_fit;bootm ${loadaddr}#${fdtfile};
    loadimage=load MMC ${bootpart}${loadaddr}${bootdir}/${bootfile}
    mmcboot=if MMC dev ${mmcdev};然后 setenv devtype MMC;如果 MMC 重新扫描;然后回显在器件${mmcdev}上找到的 SD/MMC;如果运行 loadimage;然后运行 loadfdt;从 MMC${mmcdev}回显引导...;运行 args_MMC;bootz ${addr}-${floadfi;
    mmcdev=0
    mmclosados=run args_mmc;如果测试${boot_FDT}= yes ||测试${boot_FDT}=试用;如果运行 loadfdt;则 bootz ${loadaddr}-${fdtaddr};否则测试${boot_FDT}=试用;然后 bootz;否则、回显警告:无法加载 bootz;否则;fi;
    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}
    nfsopts=nolock
    partitions=uuid_disk=${uid_gppt_disk};name=rootfs、start=2MiB、size=-、uid=${uid_gppt_rootfs}
    partitions_android_disk=${uuuid_gp_t_disk};name=xloader、start=128K、size=128K、uid=${uuid_gppt_xloader};name=bootloader、size=768K、uid=${uuuuuid_boot$};name=环境、uuuuuuuuuid=1286K、uuuuuuuuuuid=uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuid=uuuuuuuuuuuuuuuuuuuuuuuuid$};rid=auuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu10
    pxefile_addr_r=0x80100000
    ramdisk_addr_r=0x88080000
    读数地址= 0x88080000
    reboot_image=boot
    rootpath=/export/rootfs
    脚本地址=0x80000000
    序列号=190110053f800002.
    SoC=omap5
    static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
    stderr=串行
    stdin =串行
    stdout=串行
    update_TO_fit=setenv loadaddr ${fit_loadaddr};setenv 引导文件${fit_bootfile}
    usbtty=CDC_ACM
    供应商= TI
    ver = U-Boot 2016.05 (2018年3月08日- 15:06:48 +0800)
    VRAM=16M

    环境大小:7106/131067字节


    machid:0 R2:2147483904


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

    谢谢、我正在尝试创建一个 ramdisk 并在我的末尾复制您的用例 我将很快提供意见。

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

    尊敬的 Kevin:

    总结使用 fastboot 将内核和 ramdisk 加载到 RAM 的步骤:

    在构建内核时、请确保启用"RAM 块器件支持"配置、并构建内核。

    2.内核构建完成后,通过运行以下命令,确保将 DTB 附加到 zImage 中。

        类别 >zImage_DTB

    3.通过运行以下命令使用 boot.img

        mkbootimg --kernel zImage_dtb --ramdisk -base 0x8000000 --kernel_offset 0x00300000 --ramdisk_offset 0x03000000 -tags_offset 0x01000000 -o boot.img

    这将使用以下参数创建 boot_image (这些是 u-boot 中的默认值):

    a)它将内核加载到地址0x80300000  

    b)它将地址设置为在0x81000000处查找 DT  

    c)将 ramdisk 的加载地址设置为0x83000000  

    4.引导电路板并运行以下命令:

         目标:FASTBOOT 0

        PC:sudo fastboot -b 0x80000000 boot boot.img

    您应该会看到内核引导并跳转到提示符(文件系统)。

    此致
    Shravan

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

    感谢您的回复。

    我已经尝试过您提供的步骤、但结果仍然相同。
    正在启动内核..
    ##正在引导 Android 映像,地址为0x82000000...
    内核加载地址0x80300000、大小4290 KiB
    RAM 磁盘加载地址0x83000000大小1774 KiB
    正在加载内核映像... 好的

    正在启动内核...

    我有以下问题以确保我的设置正确。
    如何确保 DT 加载到0x81000000
    2.在这里我可以在/u-boot 中找到内核加载设置


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

    尊敬的 Kevin:

    是否可以将 fastboot 命令修改为以下命令?  

    sudo fastboot -b 0x80000000 -c "root=/dev/ram0 rw console=ttyO0、115200n8 initrd =0x83000000、20M ramdisk_size=20480 leyprintk" boot boot.img

    这将为我们提供更多日志。

    是否可以将以下文件加载到 SD 卡的引导分区以确保 SD 引导正常工作? 以下是 SD 卡的内容:

    1、MLO

    2. u-boot.img

    三. ramdisk

    4. zImage (未附加 DTB)

    5. dtb

    输入 u-boot 后、运行以下命令、并查看内核是否引导。  

    >setenv bootargs root=/dev/ram0 rw console=ttyO0、115200n8 initrd=0x81600000、20M ramdisk_size=20480 leyprintk

    >setenv bootcmd 'mc dev 0;fatload mmc 0 80300000 zImage;fatload mmc 0 81600000 bb.raw;fatload mmc 0 0x81000000 dra7-evm.dtb;bootz 80300000 - 81000000'

    >引导


    此致

    Shravan

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

    感谢您的回复。

    我已尝试按照您的步骤操作并按如下方式记录。
    => setenv bootargs root=/dev/ram0 rw console=ttyO0、115200n8 initrd =0x81600000、20M ramdisk_size=20480 leyprintk
    => setenv bootcmd 'mc dev 0;fatload MMC 0 80300000 zImage;fatload MMC 0 81600000 bb.raw;fatload MMC 0 0x81000000 dra7-EVM-lcd10.dtb;bootz 80300000 - 81000000'
    =>引导
    切换到分区#0,确定
    mmc0是当前器件
    正在读取 zImage
    **无法读取文件 zImage **
    读取 bb.raw
    **无法读取文件 bb.raw **
    读取 dra7-EVM-lcd10.dtb
    **无法读取文件 dra7-EVM-lcd10.dtb **
    83 aceb7e
    错误的 Linux ARM zImage 魔法!
    =>

    但是、当我只设置 fdtfile 文件并且它可以引导至内核时

    => setenv fdtfile dra7-evm-lcd10.dtb
    =>运行 mmcboot
    切换到分区#0,确定
    mmc0是当前器件
    在器件0上找到 SD/MMC
    在1415ms (2.9 MIB/s)内读取4285584字节
    113664字节在59ms 内读取(1.8 MiB/s)
    正在从 mmc0引导...
    内核映像@ 0x82000000 [ 0x000000 - 0x416490 ]

    ###展开的设备树 blob、88000000
    使用0x88000000处的 FDT blob 进行引导
    0x88000000大小为0x0001bc00时的 FLO_TOP_TREE
    正在将设备树加载到8ffe1000,结束8ffbff... 好的

    正在启动内核...

    [0.000000]在物理 CPU 0x0上引导 Linux
    [0.000000]正在初始化 cgroup Subsys cpuset
    [0.000000]正在初始化 cgroup 子系统 CPU
    [0.000000]正在初始化 cgroup Subsys cpuacct


    我可以在哪个文件中检查分区设置?
    或者我应该做些什么?

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

    尊敬的 Kevin:

    您能告诉我 SD 卡引导分区中存在的文件(其中存在 MLO 和 u-boot.img)吗? 错误"无法读取 zImage/dra7-EVM-LCD.dtB/bb.rain"指示这些文件在 SD 卡的引导分区(FAT 分区)中不存在。

    此外、为了澄清这一点、bb.raw 是 Ramdisk 文件。  


    此致

    Shravan

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

    感谢您的快速回复。

    MLO 和 u-boot.img 位于/boot 中
    zImage 和 DTS 位于/rootfs/boot 中

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

    如前面的步骤所示,能否将 zImage、dtb 和 ramdisk 复制到引导分区(即/boot,与 MLO 相同的位置)并尝试建议的命令。 再次粘贴以下说明。

    是否可以将以下文件加载到 SD 卡的引导分区以确保 SD 引导正常工作? 以下是 SD 卡的内容:

    1、MLO

    2. u-boot.img

    3. ramdisk (在后续命令中被命名为 bb.raw)。

    4. zImage (未附加 DTB)

    5. dtb (在后续命令中被命名为 dra7-evm.dtb)。

    输入 u-boot 后、运行以下命令、并查看内核是否引导。

    >setenv bootargs root=/dev/ram0 rw console=ttyO0、115200n8 initrd=0x81600000、20M ramdisk_size=20480 leyprintk

    >setenv bootcmd 'mc dev 0;fatload mmc 0 80300000 zImage;fatload mmc 0 81600000 bb.raw;fatload mmc 0 0x81000000 dra7-evm.dtb;bootz 80300000 - 81000000'

    >引导


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

    感谢您的回复。

    按以下方式记录。
    => setenv bootargs root=/dev/ram0 rw console=ttyO0、115200n8 initrd =0x81600000、20M ramdisk_size=20480 leyprintk
    => setenv bootcmd 'mc dev 0;fatload MMC 0 80300000 zImage;fatload MMC 0 81600000 bb.raw;fatload MMC 0 0x81000000 dra7-EVM-lcd10.dtb;bootz 80300000 - 81000000'
    =>引导
    切换到分区#0,确定
    mmc0是当前器件
    正在读取 zImage
    在1415ms (2.9 MIB/s)内读取4285584字节
    读取 bb.raw
    在39ms (1.7 MIB/s)内读取的70322字节
    读取 dra7-EVM-lcd10.dtb
    在55ms 内读取113664字节(2 MiB/s)
    内核映像@ 0x80300000 [0x000000 - 0x416490]

    ###展平设备树团在81000000处
    使用0x81000000处的 FDT blob 进行引导
    0x81000000大小0x0001bc00处的说明
    正在将设备树加载到8ffe1000,结束8ffbff... 好的

    正在启动内核...


    当全部放入/boot 时、它无法引导至内核。
    这是否意味着我需要关闭某些配置或创建/rootfs 文件?

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

    尊敬的 Kevin:

    我注意到、所使用的 u-boot 环境与 Processor SDK 版本之间有相当多的变化。 您能否恢复您在 u-boot 上的任何补丁并将 MLO 和 u-boot.img 恢复为发行版? 我已验证 ramdisk 和内核到 RAM 的 fastboot 负载和 MMC fatload、两者都可以正常工作。

    此致

    Shravan

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

    感谢您的回复

    我已经尝试执行以下命令、现在它可以引导至内核、但我还不想了解为什么需要在"引导"之前执行"运行 mmcboot"。

    => setenv bootargs root=/dev/ram0 rw console=ttyO2,115200n8 initrd =0x81600,00020M ramdisk_size=20480 leyprintk
    => setenv bootcmd 'mc dev 0;fatload MMC 0 80300000 zImage;fatload MMC 0 0x81000000 dra7-EVM-lcd10.dtb;bootz 80300000 - 81000000'
    =>运行 mmcboot
    切换到分区#0,确定
    mmc0是当前器件
    在器件0上找到 SD/MMC
    在1414ms (2.9 MIB/s)内读取4285584字节
    **找不到文件/boot/undefined **
    正在从 mmc0引导...
    内核映像@ 0x82000000 [ 0x000000 - 0x416490 ]
    1
    错误:未找到 cmdline 设备树
    找不到有效的设备树
    =>引导
    切换到分区#0,确定
    mmc0是当前器件
    正在读取 zImage
    在1418ms (2.9 MIB/s)内读取4285272字节
    读取 dra7-EVM-lcd10.dtb
    113664字节在58ms 内读取(1.9 MIB/s)
    内核映像@ 0x80300000 [0x000000 - 0x416358]

    ###展平设备树团在81000000处
    使用0x81000000处的 FDT blob 进行引导
    0x81000000大小0x0001bc00处的说明
    正在将设备树加载到8ffe1000,结束8ffbff... 好的

    正在启动内核...

    [0.000000]在物理 CPU 0x0上引导 Linux
    [0.000000]正在初始化 cgroup Subsys cpuset
    [0.000000]正在初始化 cgroup 子系统 CPU
    [0.000000]正在初始化 cgroup Subsys cpuacct


    但是、当我尝试快速启动时、它仍然失败。
    我发现在启动内核时不加载 FDT。

    当它在 common/image-FDT.c 的 boot_get_FDT -> genimg_has _config (images)中运行时、genimg_has _config 函数返回 false、"ok_no_FDT"为 true 并且将其丢弃。
    我应该如何做(制作图像处理或...) 可以让 genimg_has _config 函数返回 true 吗? 或者还有其他方法可以启动?

    此致
    Kevin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Kevin:
    使用 fastboot 时,需要将设备树追加到 zImage 中,如上一篇文章中所述,通过运行以下命令将设备树追加到 zImage 中。

    类别 >zImage_DTB

    将 zImage_dtb 复制到引导分区(复制到引导分区时将其重命名为 zImage)。

    您能否检查 EVM 上的引脚设置以确保其处于生产 SD 引导模式?
    SW2 [1:8]:0000 1100
    SW3 [1:8]:1000 0001

    您的 uboot.img 和 MLO 是否基于处理器 SDK 版本?

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

    感谢您的回复

    在我检查我的设置并发现我发送以下命令后、可以通过 SD 启动内核。
    => setenv bootargs root=/dev/ram0 rw console=ttyO2,115200n8 initrd =0x81600,00020M ramdisk_size=20480 leyprintk
    => setenv bootcmd 'mc dev 0;fatload MMC 0 80300000 zImage;fatload MMC 0 0x81000000 dra7-EVM-lcd10.dtb;bootz 80300000 - 81000000'
    =>运行 args_MMC
    =>引导

    我认为这意味着 MMC 的 fatload 加载过程对我来说通过 SD 是可以的。

    但是、当我尝试通过 PC 加载快速启动时、它仍然失败。
    我跟踪了它的启动过程、但找不到它加载 FDT 的位置。
    您能给我一个建议吗?fastboot 引导在/u-boot 中的哪个位置无负载 fdt? 还是加载过程与 MMC fatload 相同?


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

    尊敬的 Kevin:

    知道死亡似乎起作用。 对于快速启动,您是否需要将 dtb 附加到 zImage 中?

    此致

    Shravan

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

    是的、请按照您提供的步骤执行"cat >zImage_dtb"

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

    是否使用以下命令创建 boot.img

    mkbootimg --kernel zImage_dtb --ramdisk -base 0x8000000 --kernel_offset 0x00300000 --ramdisk_offset 0x03000000 -tags_offset 0x01000000 -o boot.img

    启动电路板后、在目标上运行以下命令

    u-boot#运行 args_MMC
    U-boot# fastboot 0

    然后从 PC 运行以下命令
    PC# sudo fastboot -b 0x80000000 boot boot.img

    您能看到它是否起作用吗?

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

    谢谢、它现在可以引导至内核。
    关键点是运行 args_MMC。
    但当运行到 ramdisk 时、它将会发生内核恐慌。
    您能否告诉我您是如何制作 ramdisk 的、还是有任何我可以参考的文档?

    [3.733474] Expected PARTUUID = [/PARTNROFF=%d]
    [3.742946]正在禁用 rootwait;root=无效。
    [3.747781] RAMDISK:在块0处找到 gzip 映像
    [3.781030] RAMDISK:未完成写入(18681!= 32768)
    [3.786193]写入错误
    [3.788794] VFS:无法打开根设备"PARTUUUUID"或未知块(0、0):错误-6
    [3.796570]请附加正确的"root="引导选项;以下是可用分区:
    [3.806927] 0100 4096 ram0 (驱动器?)
    [3.811588]0101 4096 ram1 (驱动器?)
    [3.816242] 0102 4096 RAM2 (驱动程序?)
    [3.820965]0103 4096 ram3 (驱动器?)
    [3.825615] 0104 4096 ram4 (驱动器?)
    [3.830321] 0105 4096 ram5 (驱动器?)
    [3.834967]0106 4096 ram6 (驱动器?)
    [3.839652] 0107 4096 ram7 (驱动器?)
    [3.844297]0108 4096 ram8 (驱动器?)
    [3.848978] 0109 4096 ram9 (驱动器?)
    [3.853623] 010A 4096 ram10 (驱动器?)
    [3.858391] 010b 4096 ram11 (驱动器?)
    [3.863129]010C 4096 ram12 (驱动器?)
    [3.867875]010d 4096 ram13 (驱动器?)
    [3.872609] 010e 4096 ram14 (驱动器?)
    [3.877358] 010f 4096 ram15 (驱动器?)
    [3.882097] B300 7634944 mmcblk0驱动程序:mmcblk
    [3.887456] B301 63488 mmcblk0p1 593ee62f-01
    [3.892799] B302 3757056 mmcblk0p2 593ee62f-02
    [3.898164] b320 128 mmcblk0boot1 (驱动程序?)
    [3.903507] b310 128 mmcblk0boot0 (驱动程序?)
    [3.908863] b330 3821568 mmcblk1驱动器:mmcblk
    [3.914207] b331 3821567 mmcblk1p1 78af756b-01
    [3.919563]内核严重错误-未同步:VFS:无法在未知块(0、0)上安装根 FS
    [3.927870] CPU1:正在停止
    [3.930595] CPU:1 PID:0 Comm:swapper/1未被污染4.4.45 #28
    [3.936626]硬件名称:通用 DRA74X (平展器件树)
    [3.942743]回扫:
    [3.945221][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
    [3.952820] R6:00000000 R5:00000000 R4:20000193 R3:00000000
    [3.958544][ ](show_stack)从[ ](dump_stack+0x88/0xa8)
    [3.965802][ ](dump_stack)从[ ](handle_ipi+0x170/0x19c)
    [3.973227] R5:c0c39404 R4:00000001
    [3.976835][ ](handle_ipi)从[ ](GIC_Handle_IRQ+0x74/0x7c)
    [3.984432] r7:fa212000 r6:ee8b9f58 r5:c0c408cc r4:fa21200c
    [3.990148][ ](GIC_Handle_IRQ)、来自[ ](_IRQ_Svc+0x54/0x90)
    [3.997660]异常堆栈(0xee8b9f58至0xee8b9fa0)
    [4.002731] 9f40: 00000001 00000000
    [4.010946] 9f60:00000000 fe600000 c0c404a4 00000000 c0c3b560 c0c4050c c0c40504
    [4.019160] 9f80:c0c38364 ee8b9fb4 ee8b9f94 ee8b9fa8 c0027f20 c0010944 60000013 ffffff
    [4.027370] R8:c0c4050c r7:ee8b9f8c R6:ffff R5:60000013 R4:c0010944 R3:c0027f20
    [4.035195][ ](arch_cpu_idle)从[ ](DEFAULT_IDLE_CALL + 0x28/0x34)
    [4.043324][ ](DEFAULT_IDLE_CALL)从[ ](CPU_STARTUP_END+0x1d0/0x250)
    [4.051975][ ](CPU_STARTUP_INPUK)、来自[ ](secondary _start_kernel+0x134/0x150)
    [4.061056] r7:c0d072b0 r3:ee8b8000
    [4.064664][ ](secondary _start_kernel)从[<8000958c>](0x8000958c)
    [4.072088] R5:00000051 R4:ae89c06a
    [4.075699]--[结束内核紧急状态-未同步:VFS:无法在未知块(0、0)上安装根 FS
    [127.246632] random:非阻塞池已初始化

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

    尊敬的 Kevin:

    请找到以下步骤在 PC 上创建 ramdisk。 请注意、以下步骤中的 ramdisk 的名称是 test。

    PC# dd if=/dev/zero of=test bs=1M count=20 #(这会创建一个大小为20MB 的空文件)

    PC# mkfs.ext2测试

    PC# mkdir /tmp/dir  #(创建空目录目录)

    PC#  sudo mount -o loop test /tmp/dir (装载映像)

     

    将您需要的所有内容复制到/tmp/dir.中 这将是 ramdisk 的内容。 完成后、使用以下命令卸载。

    PC# sudo umount /tmp/dir

    如果您的 ramdisk 大于4MB (在本例中为20MB)、请在 u-boot 中将以下内容附加到您的 bootargs 中(请确保您附加而不替换 bootargs):

    u-boot#运行 args_MMC

    u-boot# pr bootargs

    <现有 bootargs>

    u-boot# setenv bootargs ramdisk_size=20480

    U-boot# fastboot 0

    附加了一个示例 ramdisk 供您参考。


    此致

    Shravan

    e2e.ti.com/.../ramdisk_5F00_sample.tar.gz

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

    感谢您的回复。

    当 Linux 启动并尝试安装 RAM 磁盘时、所有操作都无法继续运行。
    然后按如下方式记录。

    测试
    [4.110370] RAMDISK:正在将20480KiB [1盘]加载到 RAM 磁盘... 完成。
    [4.681802] EXT4-FS (ram0):安装的文件系统不含日志。 OPTS:(空)
    [4.692352] VFS:在设备1:0上安装了根(ext4文件系统)。
    [4.701686] devtmpfs:已安装
    [4.708270]释放未使用的内核内存:372K (c0be1000 - c0c3e000)
    [4.718003]此架构没有内核内存保护。
    [4.728206-]内核严重错误-未同步:请求的 init linuxrc 失败(错误-2)。

    BB.RAW
    [4.12855] RAMDISK:ext2文件系统在块0中找到
    [4.138253] RAMDISK:正在将15360KiB [1磁盘]加载到 RAM 磁盘... 完成。
    [4.560865] EXT4-FS (RAM0):警告:安装未检查的 FS、建议运行 e2fsck
    [4.572895] EXT4-FS (ram0):安装的文件系统不含日志。 OPTS:(空)
    [4.583592] VFS:在设备1:0上安装了根(ext4文件系统)。
    安装处理器:正常
    安装 sysfs:好的
    安装/dev/dev:正常
    Linux
    创建本地 mdev 设备
    umount:无法 umount /mnt/mmc:无效参数

    秘书长的报告
    3430SDP-3430的启动系统初始化
    发布:LDC0.1
    秘书长的报告
    正在保存内核环缓冲区:确定
    挂载装置:正常
    设置网络
    配置 lo:好的
    配置 eth0:ifup:无法打开'/etc/network/interfaces:没有这样的文件或目录
    失败
    正在启动 syslogd:确定
    正在启动 klogd:好的
    挂载文件系统:正常
    [127.558685]随机:非阻塞池已初始化


    您是否有任何关于如何修改可以将 ramdisk 安装到 RAM 的建议?

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



    从您的日志中、我看到 bb.raw 何时用作 ramdisk、内核会成功加载 ramdisk。

    您可以在 ramdisk 上运行 e2fsck 以删除文件系统中的任何错误。

    您能否将 bootargs 设置为下面提到的值并尝试加载 ramdisk。

    u-boot:setenv bootargs androidboot.serialno=${serial#} console=ttyS0、115200和 roidboot.console=ttyS0和 roidboot.hardware=jacinto6evmboard ramdisk_size=20480
    此致

    Shravan