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.

[参考译文] AM3352:AM3352

Guru**** 2553450 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/944903/am3352-am3352

器件型号:AM3352

使用 GPT 在 eMMC 中创建多个引导定义时遇到问题。

boot.txt 文件

setenv fdtaddr 0x82000000
setenv fdtfile at-CX3-x3.dtb
setenv kerneladdr 0x81000000
setenv kernelfile uImage
setenv bootargs console=ttyO0、115200n8 root=PARTUUID =a03d2d5e-7568-b94b-ab6c-692e0edfd rootwait rw
如果加载${devtype}${devnum}:${bootpart}${kerneladdr}/boot/${kernelfile};则
如果加载${devtype}${devnum}:${bootpart}${fdtaddr}/boot/${fdtfile};那么
Bootm ${kerneladdr}-${fdtaddr}
FI

FI

setenv getblkcnt 'setexpr blkcnt ${filesize}+ 0x1ff && setexpr blkcnt ${blkcnt}/0x200'
setenv getoffset 'setexpr offset ${blkcnt}* 0x200'
setenv 分区"rootid_disk=be023224-b162-49e3-97e4-159b51ed60e9;name=cx3data, start=0x100000,size=50MiB,uid=6bee64be-d7c4-4362-b8f3c-ba2c6a07b=0x100000, size=60d78b, u2d300b=d800e2b, u459b, d99b=d2b, esb=d300b=d800e2b, d99b, esb=d99b, esb=d99b=d800e2b, d99b, d99b, esb=d99b=d800e2d99b, d99b, d99b=d99b, d99b=d800e2d64b;
MMC 开发${devnum}
BOOTP ${tmpaddr}MLO
运行 getblkcnt
MMC 写入${tmpaddr}100 ${blkcnt}
BOOTP ${grouppaddr} u-boot.img
运行 getblkcnt
MMC 写入${tmpaddr}300 ${blkcnt}
GPT 写入${devtype}${devnum}${partitions}
GPT 验证${devtype}${devnum}${partitions}
BOOTP ${tmpaddr}at-system-image-at-cx3.ext4.gz
零件起始${devtype}${devnum}rootfs1 blkcnt
运行 getoffset
gzwrite ${devtype}${devnum}${tmpaddr}0x${filesize}100000 ${offset}
BOOTP ${tmpaddr}at-system-image2-at-cx3.ext4.gz
零件起始${devtype}${devnum}rootfs2 blkcnt
运行 getoffset

gzwrite ${devtype}${devnum}${tmpaddr}0x${filesize}100000 ${offset}

我能够创建3个分区,数据,两个 rootfs,  

无法迭代目录0x82000000
=> MMC 部件

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

零件开始 LBA 结束 LBA 名称
属性
键入 GUID
分区 GUID
1 0x00000800 0x000197ff"cx3data"
attrs:0x0000000000000000
类型:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
GUID:6bee64be-d7c4-4362-8f3c-ba2c6a0797d1
2 0x00001000 0x00145fff "rootfs1"
attrs:0x0000000000000004
类型:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
GUID:a03d2d5e-7568-b94b-ab6c-692e0edecdfd
3 0x00001800 0x001467ff "rootfs2"
attrs:0x0000000000000004
类型:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
GUID:97869935-3d60-4a8b-b270-85559d352dd7
=>加载 MMC 0:2 0x81000000 /boot/uImage
无法迭代目录引导

但我得到上面的误差。 我可以从 rootfs2手动加载映像,并使用 bootm 进行引导,如下所示

加载 MMC 0:3 0x81000000 /dev/uImage

加载 MMC 0:3 0x82000000 /dev/at-cx3.dtb

Bootm 0x81000000 - 0x82000000

这可以正常工作、我可以引导、但如果我为0:2执行此操作、则会看到错误无法通过目录引导进行迭代。 尝试在几天内解决此问题。 感谢您的任何帮助

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

    您好 Anees、

    请向我们提供有关您的系统设置的一些背景信息。 Uboot 是在 EMMC 上运行还是在其他地方运行?

    此致、

    Nick

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

    是的、Uboot 在 eMMC 自身上运行、引用我使用的闪存脚本

    MMC 开发${devnum}
    BOOTP ${tmpaddr}MLO
    运行 getblkcnt
    MMC 写入${tmpaddr}100 ${blkcnt}
    BOOTP ${grouppaddr} u-boot.img
    运行 getblkcnt
    MMC 写入${tmpaddr}300 ${blkcnt}
    GPT 写入${devtype}${devnum}${partitions}
    GPT 验证${devtype}${devnum}${partitions}
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Anees:

    您是否已尝试检查下面列出的 MMC 0:2 (非工作状态)?

    => MMC 部件
    => ls MMC 0:2(检查引导/)
    => ls MMC 0:2引导(检查 uImage 和 at-CX3.dtb 正在引导/) 

    最棒的

    -香港

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

    这样会产生以下错误

    => ls MMC 0:2
    无法迭代目录
    => ls MMC 0:2引导
    无法迭代目录引导
    **找不到目录。 *

    MMC 部件

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

    零件开始 LBA 结束 LBA 名称
    属性
    键入 GUID
    分区 GUID
    1 0x00000800 0x000197ff"cx3data"
    attrs:0x0000000000000000
    类型:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
    GUID:6bee64be-d7c4-4362-8f3c-ba2c6a0797d1
    2 0x00001000 0x00145fff "rootfs1"
    attrs:0x0000000000000004
    类型:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
    GUID:a03d2d5e-7568-b94b-ab6c-692e0edecdfd
    3 0x00001800 0x001467ff "rootfs2"
    attrs:0x0000000000000004
    类型:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
    GUID:97869935-3d60-4a8b-b270-85559d352dd7
    => ls MMC 0:2
    无法迭代目录
    => ls MMC 0:2引导
    无法迭代目录引导
    **找不到目录。 **
    => ls MMC 0:3引导

    1024。
    1024.
    31uImage
    1693 boot.itb
    35580 at CX3-CX3-DTB
    4709616 uImage-4.19.59-g41555a71c 脏污
    => ls MMC 0:3
    1024。
    1024.
    12288丢失+发现
    1024处理器
    3072纸盒
    1024介质
    1024等
    1024安装
    3072 sbin
    1024偏差
    1024 USR
    1024引导
    1024系统
    1024瓦尔
    3072库
    1024温度
    1024运行
    1024主页
    =>

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

    尊敬的 Anees:

    访问时可能会出现一些问题 基于您的日志。

    您是否使用更改的写入序列尝试过 eMMC 写入?

    测试#1:写入 cx3data、rootfs1、但不写入 rootfs2;
    测试#2:写入 cx3data、rootfs2、rootfs1;

    写入后、请尝试 (笑声) 以查看任何差异。

    最棒的

    -香港

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

    因此、我发现问题是写入第二个映像时地址重叠。 我通过以下方式解决了该问题

    按如下方式更新了闪存脚本

    setenv getblkcnt 'setexpr blkcnt ${filesize}+ 0x1ff && setexpr blkcnt ${blkcnt}/0x200'
    setenv getoffset 'setexpr offset ${blkcnt}* 0x200'
    setenv 分区"rootid_disk=be023224-b162-49e3-97e4-159b51ed60e9;name=cx3data,start=0xA00000,size=50MiB,uid=6bee64be-d7c4-4362-8f3c-ba2c6a07b=0x300bb,u300b=d64be-d802bdb,uid=d99b=d64b=d78b=d400b-0459b=d400bd1、ub、u400bd、u400bd64b=d80bdb、ub、u400bdb、u400bdb、u400bdb、u400bdb、u400d99b=db、u400b=d64b=d64b=d99b=d64bd4b=d400b=d64bd64bd
    MMC 开发${devnum}
    BOOTP ${tmpaddr}MLO
    运行 getblkcnt
    MMC 写入${tmpaddr}100 ${blkcnt}
    BOOTP ${grouppaddr} u-boot.img
    运行 getblkcnt
    MMC 写入${tmpaddr}300 ${blkcnt}
    GPT 写入${devtype}${devnum}${partitions}
    GPT 验证${devtype}${devnum}${partitions}
    BOOTP ${tmpaddr}at-system-image-at-cx3.ext4.gz
    零件起始${devtype}${devnum}rootfs1 blkcnt
    运行 getoffset
    gzwrite ${devtype}${devnum}${tmpaddr}0x${filesize}100000 ${offset}
    BOOTP ${tmpaddr}at-system-image2-at-cx3.ext4.gz
    零件起始${devtype}${devnum}rootfs2 blkcnt
    运行 getoffset

    gzwrite ${devtype}${devnum}${tmpaddr}0x${filesize}100000 ${offset}

    我可以通过 uboot 命令提示符手动引导两个映像

    在 u boot 提示符下
     

    setenv bootargs console=ttyO0、115200n8 root=PARTUUID =a03d2d5e-7568-b94b-ab6c-692e0edfd rootwait rw
    保存
     
    您可以通过查看所示的定义列表
    MMC 部件、您可以看到详细信息
    LS MMC 0:2或 ls MMC 0:3
     
    要从第二个警告(第一个映像)引导、请执行以下操作

    加载 MMC 0:2 0x81000000 /boot/uImage
    加载 MMC 0:2 0x82000000 /boot/at-cx3.dtb
    Bootm 0x81000000 - 0x82000000
     
    要从第三个分区引导、首先需要更改 UUID
     
     
    setenv bootargs console=ttyO0、115200n8 root=PARTUUID =new-uuid rootwait RW
    保存
     
    加载 MMC 0:3 0x81000000 /boot/uImage
    加载 MMC 0:3 0x82000000 /boot/at-cx3.dtb
    Bootm 0x81000000 - 0x82000000

     现在、我需要弄清楚自动执行此操作的方法、尝试使用 bootscr 不起作用

    我的 bootscr 如下所示

    setenv fdtaddr 0x82000000
    setenv fdtfile at-CX3-x3.dtb
    setenv kerneladdr 0x81000000
    setenv kernelfile uImage
    setenv bootargs console=ttyO0、115200n8 root=PARTUUID =a03d2d5e-7568-b94b-ab6c-692e0edfd rootwait rw
    如果加载${devtype}${devnum}:${bootpart}${kerneladdr}/boot/${kernelfile};则
    如果加载${devtype}${devnum}:${bootpart}${fdtaddr}/boot/${fdtfile};那么
    Bootm ${kerneladdr}-${fdtaddr}
    FI

    FI

    如何自动执行引导、然后下一步是来回切换映像...我认为我可以使用 env 变量并从 Linux 进行设置

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

    尊敬的 Anees:

    最好了解已修复的 rootfs1和 rootfs2分区重叠的原始问题。

    如果要将 rootfs 切换为从引导,一个选项是 u-boot 上的 setenv as
    [引用 USER="Anees Shahul1]setenv bootargs console=ttyO0、115200n8 root=PARTUUUID=a03d2d5e-7568-b94b-ab6c-692e0eddfd rootwait rw
    saveenv

    另一个选项是将 u-boot 环境变量构建到 u-boot 本身中。 以最新的 AM335x SDK 6.3为例、u-boot 环境变量在文件中配置...
    -"am335x_evm.h、ti_am335x_common.h、ti_armv7_omap.h、位于/include/configs 下/"
    -"mmc.h、board.h 在/include/environment/ti 下"

    您可以通过"printenv"@u-boot 提示符检查 u-boot 环境变量。

    最棒的
    -香港

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

    谢谢、我走了 env 路并解决了这个问题