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/TMDSEVM572X:使用单个分区从 SD 引导

Guru**** 2540720 points
Other Parts Discussed in Thread: AM5726

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/597574/linux-tmdsevm572x-boot-from-sd-with-single-partition

器件型号:TMDSEVM572X
主题中讨论的其他器件:AM5726

工具/软件:Linux

您好!

是否可以从仅具有单个分区的 SD 卡引导 AM572x EVM 或更高版本的 Sitara AM5726电路板? 这意味着所有映像+ rootfs 都将被抛出到 SD 卡的根目录中。
当我阅读 Sitara_AM572x_TRM 用户指南的33.3.7.6节时、我想到了这一点。

我希望这不会像一个愚蠢的问题(新的论坛)。

提前感谢!

Michael

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

    是的、这应该可以使用基于存储器的文件系统。 基本上、您会在 SD 卡(FAT 分区)中转储 MLO/uImage/文件系统。 然后要求引导加载程序将映像加载到 RAM 中、然后从 RAM 中运行。
    您可以查看以下链接
    [1] www.kernel.org/.../ramfs-rootfs-initramfs.txt

    或者另一种方法是在 FAT16分区中提取 FS 并从该分区加载映像(从未尝试过、但理想情况下应起作用)、您需要在 Linux 中启用 FAT 文件系统支持。

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

    我在我的经验中没有看到过这种实施。 引导和 rootfs 分区具有不同的类型。
    u-boot 查找 ext3/ext4分区以加载内核和文件系统,而引导分区为 vfat…… 请参见 create-sdcard.sh 脚本。

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

    在某些 AM 系列中有一种原始模式、可从原始 SDCard 扇区中选择 MLO。 在这种情况下、您只能拥有 EXT4分区。 但需要检查 AM572x 中是否有从 SDCard 引导的原始模式
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yordan、您好!

    您可以将 uboot 配置为使用 ramdisk [1]、该 ramdisk 映像将加载到 RAM 中、您需要指出 bootargs 表示根文件系统在 RAM 上、请参阅[2]。 而不是从 n 读取、您可以从 SD 卡读取。

    基本上、ramdisk 是将在 RAM 上运行的根文件系统、 事实上、它用于更喜欢 Quickboot 的系统中。

    [1] processors.wiki.ti.com/.../Creating_a_RAMDISK
    [2] processors.wiki.ti.com/.../Booting_Linux_kernel_using_U-Boot
    [3] www.denx.de/.../RootFileSystemOnARamdisk

    谢谢、
    Prabhakar LAD

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

    我可以访问 AM572x TRM、并且有用于从原始 SDCard 扇区获取 MLO 的原始 UDA 模式。

    "在原始(UDA)模式下、图像可以位于主区域中四个连续位置之一:偏移
    0x0 (0 KiB)/0x20000 (128 KiB)/0x40000 (256 KiB)/0x60000 (384 KiB)。 因此、A 的大小
    启动映像不得超过128 KiB。 但是、映像大于128KiB 的器件可以
    从上述任一位置开始进行闪存。 因此、ROM 代码不会检查
    图像尺寸。 唯一的缺点是图像跨越后续图像边界。 RAW 模式
    通过读取扇区0、256、512和768来检测。 验证了这些扇区的内容
    目录结构的存在。 GP 标头必须位于引导映像的开头、如所示
    在第33.3.8.2节"配置标题"中进行了说明。 直接从连续读取图像数据
    卡的扇区。 如果未检测到原始模式、则假定为文件系统模式。"

    在创建 TOC/GP 标头时要小心、您可以使用 dd 命令将它们写入 SDCard 中。 另外一个指针、您需要在 MLO 中启用 EXT 文件系统、以便 MLO 解析并从可用的单个分区加载 uboot。 或者也可以将 uboot 加载到原始分区并从 MLO 加载它、您可能需要添加该分区。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的所有回答! 我将测试并尝试您的建议。 由于我对该主题不熟悉、因此可能需要一段时间。
    最后、我会告诉您什么对我有用!

    谢谢、

    Michael

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

    现在、几周后、我成功构建了 SD 卡、并希望与您分享我的解决方案。 目标是从 SD 卡的单个 VFAT 分区使用自定义 rootfs 引导 Linux 内核。
    首先、我从提供的 TI-SDK 编译了内核(4.4.4.32)和 U-Boot (2016.05)。 与引导机制相关的内核最重要的配置是(arch=arm):
    常规设置-->初始化 RAM 文件系统和 RAM 磁盘支持
    设备驱动程序-->块设备--> RAM 块设备支持
    rootfs 是使用 busybox-1.26.2构建的。 完成的 rootfs 随后被压缩成 ramdisk 映像,其中包括:
    cpio -o -H newc | gzip > ramdisk.cpio.gz
    mkimage -a arm -o linux -T ramdisk -C none -n 'some name'-d ramdisk.cpio.gz ramdisk.img

    将所有文件(mLO、u-boot.img、zImage、*。dtb、ramdisk.img)投入到 SD 卡上后、我修改了 U-Boot 的环境、将 zImage、*。dtb 和 ramdisk.img 加载到 RAM 中、并通过 bootz ${addrImage}${addrRamdisk}${adddrrdtb}${dtdtb 和 ramdisk=drraw 控制台引导内核/dev/ram0

    如果需要、还可以将内核映像与初始小 ramdisk 合并。 然后,您可以从初始 ramfs 启动正确的 rootfs。

    我希望这可能对将来的人有所帮助。

    谢谢! Michael