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:从 u-boot 对 eMMC 进行分区

Guru**** 2538950 points
Other Parts Discussed in Thread: AM5718

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/570657/linux-partitioning-emmc-from-u-boot

主题中讨论的其他器件:AM5718

工具/软件:Linux

您好!

我们开发了一款采用 AM5718处理器的定制电路板、并且拥有板载 eMMC。 目前、我正在从 SD 卡引导器件、我希望将映像存储在板载 eMMC 中、并希望从 eMMC 引导。 由于这是一个定制板、我必须对这个 eMMC 存储器进行分区、因为我正在尝试从 u-boot 进行分区、但它不起作用:

U-Boot# MMC 列表
OMAP SD/MMC:0 (SD)
OMAP SD/MMC:1.


U-Boot# MMC 开发0
MMC_INIT:0、时间65
切换到分区#0,确定
mmc0是当前器件


U-Boot# MMC 开发1
MMC_INIT:0、时间298
切换到分区#0,确定
mmc1 (第0部分)是当前器件


U-Boot# MMC 部件
##未知分区表

我尝试使用以下链接中列出的命令对 eMMC 进行分区:
http://processors.wiki.ti.com/index.php/Linux_Core_U-Boot_User's_Guide#Partitioning_eMMC_from_U-Boot


U-Boot# uuidgen
未知命令'uuidgen'-尝试'help'

U-Boot# GPT 写入 MMC 1 ${partitions}
写入 GPT:SET_GPT_INFO: LBA num:0x734000 7553024
${uuuid_gpt_disk}未设置。
${uuuid_gpt_rootfs}未设置。
错误!

请建议如何进行 eMMC 分区

此致、

Ganesh

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

    请注意、命令"uidgen"必须在 Linux PC 上运行。 它将生成看起来类似的唯一 ID
    "6c873bd0-a4c6-4062-9df0-94c8e237c5d"。 例如:

    在 Linux PC 上:

    uuuidgen
    39aad9ef-73d3-407d-8141-48e709904ae4.
    uuuidgen
    6250f2c8-005e-4664-9b34-79962e5e860f

    我们生成了两个 ID、然后在 U-boot 控制台上使用它们:

    U-Boot # setenv uid_gp_t_disk 39aad9ef-73d3-407d-8141-48e709904ae4.
    U-Boot # setenv uid_gp_t_rootfs 6250f2c8-005e-4664-9b34-79962e5e860f
    U-Boot # GPT 写入 MMC 1 ${partitions}

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

    我已执行这些命令、请查看以下内容:

    U-Boot# MMC 开发1
    MMC_INIT:0、时间299
    切换到分区#0,确定
    mmc1 (第0部分)是当前器件

    U-Boot# setenv uid_gp_t_disk ddc49fea-ca-430d-961a-b17caeadee63
    argc=3的初始值
    argc=3的最终值

    U-Boot# setenv uid_gp_t_rootfs 02527057-ebe1-4ec4-b321-4a355585d0770
    argc=3的初始值
    argc=3的最终值

    U-Boot# GPT 写入 MMC 1 ${partitions}
    写入 GPT:SET_GPT_INFO:LBA num:0x734000 7553024
    ${uuuid_gpt_disk}从环境获取。
    ${uuuid_gpt_rootfs}从环境获取。
    GPT_fill_Pte:名称:rootfs offset[0]:0x1000 size[0]:0x0
    最大 LBA:734000
    GPT 成功写入块器件!
    成功!

    U-Boot# MMC 信息
    器件:OMAP SD/MMC
    制造商 ID:Fe
    OEM:14E
    姓名:MMC04
    TRAN 速度:52000000
    Rd 块 Len:512
    MMC 版本4.4.1
    高容量:是
    容量:3.6GiB
    总线宽度:4位
    擦除组大小:512 KiB
    HC WP 组大小:4 MiB
    用户容量:3.6 GiB
    引导容量:16 MIB ENH
    RPMB 容量:128 KiB 增强型

    U-Boot# MMC 部件
    ##未知分区表

    U-Boot# MMC 开发1
    MMC_INIT:0、时间55
    切换到分区#0,确定
    mmc1 (第0部分)是当前器件

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

    根据 wiki、您需要在"gpt write mmc 1 ${partitions}"后重新启动器件、以使分区表可见。

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

    谢谢你。 重新启动后,我能够在 MMC1中看到分区,

    U-Boot# MMC 部件

    MMC 设备0的分区映射--分区类型:DOS

    零件起始扇区数量扇区 UUID 类型
    1 63. 144522. 00000000-01 0C 引导
    2. 160650 7454160 00000000-02 83.
    U-Boot# MMC 开发1
    MMC_INIT:0、时间282
    切换到分区#0,确定
    mmc1 (第0部分)是当前器件
    U-Boot# MMC 部件

    MMC 设备的分区映射1 --分区类型:EFI

    GPT:FIRST_USED_LBA:22 LAST_USED_LBA:733FDE 最后 LBA:734000
    ALLOG_READ_GPT_ENOINESCINCINS:计数= 128 * 128 = 16384
    print_part_EFI:bef3dc40上的 gpt-entry
    零件开始 LBA 结束 LBA 名称
    属性
    键入 GUID
    分区 GUID
    1 0x00001000 0x00733fde "rootfs"
    attrs:0x0000000000000000
    类型:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
    GUID:57705202-e1eb-c44e-b321-4a3585d0770
    ITE_PTE_VALID:在0xBEF3DCC0处找到未使用的 PTE GUID

    U-Boot#打印分区
    partitions=uuid_disk=${uid_gppt_disk};name=rootfs、start=2MiB、size=-、uid=${uid_gppt_rootfs}

    1.当我从 U-Boot 发出 mmcinfo 命令时、我只能获取 SD 卡信息、没有有关 eMMC 的信息
    U-Boot# MMC 信息
    器件:OMAP SD/MMC
    制造商 ID:Fe
    OEM:14E
    姓名:MMC04
    TRAN 速度:52000000
    Rd 块 Len:512
    MMC 版本4.4.1
    高容量:是
    容量:3.6GiB
    总线宽度:4位
    擦除组大小:512 KiB
    HC WP 组大小:4 MiB
    用户容量:3.6 GiB
    引导容量:16 MIB ENH
    RPMB 容量:128 KiB 增强型

    U-Boot#打印分区
    partitions=uuid_disk=${uid_gppt_disk};name=rootfs、start=2MiB、size=-、uid=${uid_gppt_rootfs}

    2.仅创建一个分区,就像在分区中一样,只提到一个分区,我想从 eMMC 引导需要两个分区和 rootfs。 或者、我能否将所有映像复制到此分区并从 eMMC 引导???

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

    1.我不确定为什么会发生这种情况,您能否在"MMC info"之前运行"MMC rescan"?

    2.我认为需要两个单独的分区。 此外、根据该标准:
    processors.wiki.ti.com/.../Linux_Core_U-Boot_User's_Guide
    您可能需要使用原始写入来在 eMMC 上写入 MLO 和 u-boot.img。

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

    1.已尝试针对“MMC info”的“MMC rescan”,但没有更改。 即使没有显示、也没有问题、直到它工作
    我使用以下命令进行了原始写入、
    U-Boot # MMC dev 0
    U-Boot # MMC 重新扫描
    U-Boot # MMC DEV 1
    U-Boot # Fatload MMC 0 ${loadaddr}MLO
    U-Boot # MMC 写入${loadaddr}0x100 0x100
    U-Boot # MMC 写入${loadaddr}0x200 0x100
    U-Boot # fatload MMC 0 ${loadaddr}u-boot.img
    U-Boot # MMC 写入${loadaddr}0x300 0x400
    它从 eMMC 引导直至 u-boot。

    3.这两条命令的语法不清楚:
    U-Boot # fatload MMC 0 ${loadaddr}rootfs.ext4
    U-Boot # MMC write ${loadaddr}0x1000 ...rootfs.ext4 size in bytes 除以512、单位为十六进制...
    我应该如何复制剩余的图像、如 zImage & DTB、文件系统和在哪里???? 我想让 eMMC 作为我的引导设备。

    4.由于我们尚未将其余映像复制到 eMMC 中,我在 u-boot 中收到以下错误:
    HY 状态读取失败
    CPsw 连接到通用 PHY
    CPsw
    initcall:808046d9 (重定位到 bff5d6d9)
    argc=3的初始值
    argc=3的最终值
    已输入### MAIN_LOOP:BOOTDELAY=1

    ### main_loop:bootcmd="如果测试${dofastboot}-eq 1;然后回显引导快速引导请求、重置 dofastboot ...;setenv dofastboot 0;saveenv;"
    按任意键停止自动引导:0
    :返回1
    命令失败,结果=1:返回1
    命令失败,结果=1:返回1
    命令失败,结果=1:返回1
    命令失败,结果=1:返回1
    命令失败,结果=1:返回1
    命令失败,结果=1:返回1
    命令失败,结果=1:返回1
    命令失败,结果=1:返回1
    命令失败,结果=1:返回1
    命令失败,结果=1:返回0
    警告:无法确定要使用的设备树
    卡未响应电压选择!
    MMC_init:-17、时间12
    命令失败,Result = 1卡未响应电压选择!
    MMC_init:-17、时间12
    命令失败,Result = 1命令失败,Result = 1卡未响应电压选择!
    MMC_init:-17、时间11
    命令失败,Result = 1卡未响应电压选择!
    MMC_init:-17、时间11
    命令失败,result=1命令失败,result=1 argc=3的初始值
    argc=3的最终值
    argc=3的初始值
    argc=3的最终值
    argc=4的初始值
    argc=4的最终值
    MMC_INIT:0、时间54
    切换到分区#0,确定
    mmc1 (第0部分)是当前器件
    MMC_INIT:0、时间55
    在器件1上找到 SD/MMC
    GPT:FIRST_USED_LBA:22 LAST_USED_LBA:733FDE 最后 LBA:734000
    ALLOG_READ_GPT_ENOINESCINCINS:计数= 128 * 128 = 16384
    ITE_PTE_VALID:在0xBEF4F2C0处找到未使用的 PTE GUID
    get_partition_info_EFI:***错误:无效的分区号2***
    **无效分区2**

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

    您能否使用 SD 卡引导电路板? 然后、您可以使用此主题中的一些脚本:

    e2e.ti.com/.../488408

    格式化 eMMC 并从电路板上运行的 Linux 复制必要文件。

    此致、
    Yordan