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.

[参考译文] SK-AM62B-P1:两个 Rootfs 之间的切换机制

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1398826/sk-am62b-p1-switching-mechanism-between-two-rootfs

器件型号:SK-AM62B-P1

工具与软件:

您好、TI 专家:

默认情况下、电路板从 eMMC 第一个分区引导、但如果必须从第二个分区引导电路板、那么我们如何在不在 uboot 中设置环境的情况下引导电路板?

在 U-boot 环境中、定义为:

mmcdev = 0
Bootpart = 0:1

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1307234/processor-sdk-am62x-am62x-backup-image-switching-mechanism/4965575#4965575

接下来、我应 将两个变量添加到 uEnv.txt 文件中、其中第一个变量是检测当前的引导分区、第二个变量 自动在分区之间切换、这将是我可以在 bootcmd 变量中调用的脚本!

它是否会反映在 uboot 环境中? 请、我应该如何处理? 我需要说明一下。

此致、

Suraj Singh

 

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

    Suraj、您好!

    感谢您访问德州仪器(TI) E2E 支持论坛。

    我们的领域专家目前不在办公室。 对该线程的响应可能会延迟。

    此致、

    Tushar

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

    Tushar、您好!

    感谢您的考虑、如果可能、今天他们会回来的!

    此致、

    Suraj Singh

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

    如本线程所述、您可以使用逻辑命令来定义"uenvcmd"变量、从而确定分区、并相应地设置"mmcdv"和"bootpart"变量、以从确定的分区引导 Linux 内核。

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

    您好 Prashant:

    # mmcdev=0
    # bootpart=0:2
    optargs="maxcpus=2"
    name_overlays=k3-am625-sk-dual-core.dtbo

    我已经附加了 uEnv.txt 和提到的 U-boot 环境

    mmcdev = 0
    Bootpart = 0:1

    现在、如果我想使该过程自动化 、而不是从 u-boot 提示符手动输入命令、 那么我必须在  uEnv.txt 中写什么 ?

    此致、

    Suraj Singh
     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么我必须在  uEnv.txt 中填写什么内容 ?

    这不是在另一个主题中解释的吗?

    "uenvcmd"可能像如下所示:uenvcmd="setenv mmcdv 0;setenv bootpart 0:2"

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

    您好 Prashant:

    => run envboot
    switch to partitions #0, OK
    mmc0(part 0) is current device
    SD/MMC found on device 0
    Failed to load 'boot.scr'
    Can't set block device
    

    使用此命令后无法加载!

    此致、

    Suraj Singh

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

    您好 Prashant:

    加载 uenv.txt 文件并运行 uenvcmd、我应该采用哪种引导模式来保持 SD 卡或 eMMC 引导模式!

    此致、

    Suraj Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要加载 uenv.txt 文件并运行 uenvcmd、我应该使用哪种引导模式来保持 SD 卡或 eMMC 引导模式!

    U-Boot 根据"mmcdv"和"bootpart"变量从 FAT 分区加载 uEnv.txt。 这意味着如果"mmcdev"和"bootpart"变量最初分别设置为"0"和"0:1"、U-Boot 将尝试从 eMMC UDA 第一个分区加载 uEnv.txt、该分区理应格式化为 FAT 分区。

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

    您好 Prashant:

    我要刷写到 eMMC 中的 tar 文件包含引导加载程序、内核、器件树和引导文件系统。  那么、我应该如何将 u-boot 转换为 FAT 格式?是否必须转换整个 tar 文件!

    https://dev.ti.com/tirex/explore/node?node=A__AdNWBqCVds4ZSqU9osT1tQ__AM62-ACADEMY__uiYMDcq__LATEST

    这里、 U-Boot 固件可以写入 eMMC 上的 boot0分区、所以我应该将 boot0分区转换为 fat 格式!

    root@am62xx-evm:~# lsblk -f
    NAME         FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
    mtdblock0                                                                           
    mtdblock1                                                                           
    mtdblock2                                                                           
    mtdblock3                                                                           
    mtdblock4                                                                           
    mtdblock5                                                                           
    mtdblock6                                                                           
    mmcblk0                                                                             
    |-mmcblk0p1  ext4               8b245263-6433-49aa-b77e-6ab071421694                
    `-mmcblk0p2  ext4               1e482006-bcaf-4570-9544-1a89d36bd7c8                
    mmcblk0boot0 vfat               EC4D-EA00                                           
    mmcblk0boot1                                                                        
    mmcblk1                                                                             
    |-mmcblk1p1  vfat         boot  8EEE-F9C6                             100.9M    21% /boot
    `-mmcblk1p2  ext4         root  5705506c-36bb-42ec-b2a4-b69fc6c072a2  464.1M    84% /
    

    此致、

    Suraj  

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

    您需要使用格式化为 FAT 的第一个分区以及用于存储 rootfs 文件系统的任何其他数量的分区来重新格式化 eMMC。 然后、您可以在 U-Boot 环境中首先设置"mmcdev=0"和"bootpart=0:2"、以默认情况下从第二个分区引导 Linux 内核。

    这样、流程将如下所示:

    • U-Boot 从 eMMC 第一个分区加载 uEnv.txt。
    • 如果 uEnv.txt 不修改"mmcdev"和"bootpart"变量、U-Boot 将从默认的第二个分区引导 Linux 内核、否则它将通过这些变量的修改值引导内核。

    请注意、您非常愿意评估 uEnv.txt 的加载方式。

    这是用于加载 uEnv.txt 的环境变量。 您可以根据需要进行修改。

    loadbootenv=fatload MMC ${mmcdev}${loadaddr}${bootenvfile}

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

    您好 Prashant:

    我理解了您的观点、您要说的是、如果我不更改 uEnv.txt 中的两个变量、那么电路板将默认从 eMMC 第二个分区引导
    现在我想问一点、如果我想从 eMMC 的另一个第三个分区引导、那么我必须在 uenv.txt 中添加什么内容?

    [报价 userid="531297" url="~/support/processors-group/processors/f/processors-forum/1398826/sk-am62b-p1-switching-mechanism-between-two-rootfs/5359112 #5359112"]

    这是用于加载 uEnv.txt 的环境变量。 您可以根据需要进行修改。

    loadbootenv=fatload MMC ${mmcdev}${loadaddr}${bootenvfile}

    [报价]

    我是否应该将其包含在 am62x.env 文件中?

    此致、

    Suraj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在我想问一件事、如果我想从 eMMC 的另一个第三个分区启动、那么我必须在 uenv.txt 中添加什么内容?

    这将类似于:uenvcmd="setenv mmcdv 0;setenv bootpart 0:3"

    我是否应在 am62x.env 文件中包含此内容?

    否 如果您试图了解 U-Boot 是如何加载 uEnv.txt 文件的、您会发现它使用`loadbootenv`环境变量(已定义)加载 uEnv.txt 文件。 我的建议是、您对通过修改`loadbootenv`变量来修改 uEnv.txt 的加载方式持非常开放的态度。

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

    您好 Prashant:

    root@am62xx-evm:~# lsblk -f
    NAME         FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
    mtdblock0                                                                           
    mtdblock1                                                                           
    mtdblock2                                                                           
    mtdblock3                                                                           
    mtdblock4                                                                           
    mtdblock5                                                                           
    mtdblock6                                                                           
    mmcblk1                                                                             
    |-mmcblk1p1  vfat         boot  CC62-856E                             100.9M    21% /boot
    `-mmcblk1p2  ext4         root  cf0f9e98-5a1f-4c2b-ace3-fb01699b379d  419.7M    85% /
    mmcblk0                                                                             
    |-mmcblk0p1  vfat               3ECA-AA84                                           
    |-mmcblk0p2  ext4               4ff24423-c2fe-43c1-8e26-69a92476f34a                
    `-mmcblk0p3  ext4               4c46ad85-4776-4f88-9796-195d11a1d836                
    mmcblk0boot0                                                                        
    mmcblk0boot1 
    
    
    
    
    root@am62xx-evm:~# cat /etc/fstab 
    # stock fstab - you probably want to override this with a machine specific one
    
    /dev/root            /                    auto       defaults              1  1
    proc                 /proc                proc       defaults              0  0
    devpts               /dev/pts             devpts     mode=0620,ptmxmode=0666,gid=5      0  0
    tmpfs                /run                 tmpfs      mode=0755,nodev,nosuid,strictatime 0  0
    tmpfs                /var/volatile        tmpfs      defaults              0  0
    
    # uncomment this if your device has a SD/MMC/Transflash slot
    #/dev/mmcblk0p1       /media/card          auto       defaults,sync,noauto  0  0
    
    UUID=CC62-856E  /boot   vfat    defaults        0       0
    
    设备处于 SD 卡引导模式。 我将 uEnv.txt 文件和引导加载程序复制到了 eMMC 的第一个分区中。  
    现在、我已经在 eMMC 的剩余2个分区中刷写了内核、器件树和根文件系统。  我现在通过 eMMC 启动了板

    1.是否立即加载 uEnv.txt 文件?
    2. 过程是否正确? 我已附加 fstab、我需要对它进行任何更改吗?

    这将类似于:uenvcmd='setenv mmcdev 0;setenv bootpart 0:3"

    我创建并编辑了 uEnv.txt 文件。 我还附加了 uEnv.txt 文件。

    root@am62xx-evm:/boot# cat uEnv.txt 
    optargs="maxcpus=2"
    name_overlays=k3-am625-sk-dual-core.dtbo
    uenvcmd='setenv mmcdev 0;setenv bootpart 0:3'
    

    => run envboot
    switch to partitions #0, OK
    mmc0(part 0) is current device
    SD/MMC found on device 0
    Failed to load 'boot.scr'
    Failed to load 'uEnv.txt'
    

    UBoot 无法加载 uEnv.txt 文件。

    此致、

    Suraj

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

    您好!

    您能否使用"ls MMC 0:1"检查"uEnv.txt"是否真的存在于 eMMC 中?

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

    您好 Prashant:

    您能用"ls mmc 0:1"检查"uEnv.txt"是否真的存在于 eMMC 中吗?

    不,它不存在那里,但我复制了我很确定!  

    实际上、创建映像后、引导文件夹中没有 uenv.txt 文件、但当我将同一映像刷写到 eMMC 时、便会生成 uenv.txt 文件。

    设备处于 SD 卡引导模式。 我将 uEnv.txt 文件和引导加载程序复制到了 eMMC 的第一个分区中。  
    现在、我已经在 eMMC 的剩余2个分区中刷写了内核、器件树和根文件系统。  现在我已通过 eMMC 启动了电路板、[/报价]

    我遵循的流程是正确的、对吧?

    此致、

    Suraj

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

    您好 Prashant:

    => part list mmc 0
    
    Partition Map for MMC device 0  --   Partition Type: DOS
    
    Part    Start Sector    Num Sectors     UUID            Type
      1     2048            2095105         a819b8ed-01     83
      2     2099200         23066625        a819b8ed-02     83
      3     25167872        36993024        a819b8ed-03     83
    => ls mmc 0:1
       295502   tiboot3.bin
      1182907   tispl.bin
       987115   u-boot.img
          107   uEnv.txt
    
    4 file(s), 0 dir(s)
    
    => ls mmc 0:2
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>      16384 lost+found
    <SYM>          7 bin
    <DIR>       4096 boot
    <DIR>       4096 dev
    <DIR>       4096 etc
    <DIR>       4096 home
    <SYM>          7 lib
                   7 log_lock.pid
    <DIR>       4096 media
    <DIR>       4096 mnt
    <DIR>       4096 proc
    <DIR>       4096 run
    <SYM>          8 sbin
    <DIR>       4096 srv
    <DIR>       4096 sys
    <DIR>       4096 tmp
    <DIR>       4096 usr
    <DIR>       4096 var
    => ls mmc 0:3
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>      16384 lost+found
    <SYM>          7 bin
    <DIR>       4096 boot
    <DIR>       4096 dev
    <DIR>       4096 etc
    <DIR>       4096 home
    <SYM>          7 lib
                   7 log_lock.pid
    <DIR>       4096 media
    <DIR>       4096 mnt
    <DIR>       4096 proc
    <DIR>       4096 run
    <SYM>          8 sbin
    <DIR>       4096 srv
    <DIR>       4096 sys
    <DIR>       4096 tmp
    <DIR>       4096 usr
    <DIR>       4096 var
    

    您能用"ls mmc 0:1"检查"uEnv.txt"是否真的存在于 eMMC 中吗?

    我再次刷新,现在 uEnv.txt 是在第一个分区,我已经连接了分区的详细信息,请尽快找到!

    root@am62xx-evm:~# lsblk -f
    NAME         FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
    mtdblock0                                                                           
    mtdblock1                                                                           
    mtdblock2                                                                           
    mtdblock3                                                                           
    mtdblock4                                                                           
    mtdblock5                                                                           
    mtdblock6                                                                           
    mmcblk0                                                                             
    |-mmcblk0p1  vfat               26D6-3861                                           
    |-mmcblk0p2  ext4               518057be-6cb1-4b1b-bb2f-c4f881657af8    7.6G    24% /
    `-mmcblk0p3  ext4               5989b1b2-00af-4d7b-9d9b-75e8f7018b96                
    mmcblk0boot0                                                                        
    mmcblk0boot1                                                                        
    

    此致、

    Suraj

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

    您好 Prashant:

    => run envboot
    switch to partitions #0, OK
    mmc0(part 0) is current device
    SD/MMC found on device 0
    Failed to load 'boot.scr'
    107 bytes read in 14 ms (6.8 KiB/s)
    Loaded env from uEnv.txt
    Importing environment from mmc0 ...
    Running uenvcmd ...
    Unknown command 'setenv mmcdev 0;setenv bootpart 0:3' - try 'help' or use 'run' command
    => printenv bootpart
    bootpart=0:2
    
    
    
    root@am62xx-evm:/boot# cat uEnv.txt 
    optargs="maxcpus=2"
    name_overlays=k3-am625-sk-dual-core.dtbo
    uenvcmd='setenv mmcdev 0;setenv bootpart 0:3'
    

    我已附加了日志、现在它可以加载 uEnv.txt、但显示"Unknown"命令('setenv mmcdev 0;setenv bootpart 0:3')。 请尽快找到附加的日志。

    此致、

    Suraj

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

    您是否可以在不使用引号的情况下进行尝试、例如:

    uenvcmd=setenv mmcde 0;setenv bootpart 0:3

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

    您好 Prashant:

    对于您在解决 AM62xx EVM 所面临的问题方面提供的帮助、我要表示衷心的感谢。 你的指导和及时的回应是非常宝贵的,我真的很感谢你提供的专业知识。

    由于你的支持,这个问题已经完全解决。

    期待与您的未来合作!

    此致、

    Suraj