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/AM3356:软件更新后引导失败

Guru**** 2609945 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/653565/linux-am3356-boot-fails-after-software-update

器件型号:AM3356
主题中讨论的其他器件:UNIFLASH

工具/软件:Linux

大家好,  

在我的系统中,  我们在板上焊接了一个 MMC。   一切都 很正常 ,我执行软件更新 (以下为所有信息), 在 某些情况 下(大约为软件更新的1%)  ,系统无法启动(您在 串行中看到 CCCC,因此 MLO 也没有正确加载 )。   我们发现了此问题,因为对于高质量的测试,要确保 软件升级是有效的。   当系统不工作(不引导) 时,我使用 NFS 引导,并且所有文件都具有正确的 MD5校验和。

一个额外的信息: 如果我   仅更改 uEnv.txt 的更新,  系统 更新 将始终有效(因此,请勿触摸 MLO, uboot.img 系统将始终工作)  。

下面  是我的分区表和顺序:

p1引导(MLO u-boot.img、uEnv.txt) FAT32约为64MB  

P2 RootFS1 ext4  大约 256MB

P3 RootFS2 ext4大约 256MB

P4数据     扩展4 3500mb  

 

系统已启动并在 P2上运行 , 我使用 以下类似脚本执行更新:

1) 1)在  P1中复制新的 MLO 和 u-boot.img

2) 2)在  P3中重置 tar.gz rootFS

3) 3)标记 uEnv.txt 以将 P3启用为 rootfs  

4)重新引导(硬件或软件结果相同)。

之前的所有工作 时间大约为99%...

欢迎提出任何建议  

谢谢你  

此致

卡洛

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

    这是什么 Linux 版本? 内核位于何处? 是否在复制新文件之前擦除旧文件? "MMC 焊接在电路板上"是什么意思- eMMC 或 SD 卡插槽?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Biser,
    它是 eMMC,内核位于 rootfs 分区 i m 更新中(因此,如果我更新 p3,内核在 p3中)。
    我使用两个 rootfs 从一个更新到另一个,然后重新引导。
    另一点:每次更新引导分区(FAT32)时,我都要格式化,这样就不再有系列了(我的时间是700个周期)。
    这是否会对您有任何指示?
    非常感谢
    此致
    卡洛
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Colombo Carlo"]这样就不再有家庭了(我处于700个周期)。

    您意味着不再出现故障? 我不明白。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Biser,
    很抱歉出现了拼写错误(以前的句子中不再出现“家族”错误)。

    问题与我的第一个帖子“一切都正常,我执行软件更新(以下为所有信息),在某些情况下(大约为软件更新的1%),系统无法启动(您可以在串行上看到 CCCC, 因此,即使是 MLO 也没有正确加载)。 我们发现了此问题,因为对于高质量的测试,要确保软件升级是有效的。 当系统不工作(不引导)时,我使用 NFS 引导,并且所有文件都有正确的 MD5校验和"

    我只是在上一个帖子中添加了对内核位置上的请求的回复,并且事实是,如果我执行启动分区的格式化,每次我进行更新,我都不会再出现故障。

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

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

    在1%的情况下、您的 eMMC 引导 FAT32分区似乎已损坏。 如果您没有有效的关闭顺序或引导分区更新顺序,则可能会发生这种情况。

    请仔细检查您的断电顺序是否正确、并与数据表保持一致。 还请确保根据软件文档指南重新刷写 eMMC 引导分区。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Pavel,
    更多详细信息和问题:
    -我没有断电,这是一个重新引导命令,但不能进行循环通电,因此不能这样做

    请您将我重定向到您正为重新刷新 eMMC 而选择的正确软件指南吗? 我想确保使用正确的方法
    谢谢你
    此致
    卡洛
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    卡洛、

    Biser 询问了一个仍然未回答的问题:在复制新文件之前是否擦除旧文件? 请确保在 P1 (FAT32)中复制 MLO/u-boot.img 之前、您擦除旧的 MLO/u-boot.img

    您是否还可以测试 MLO 是否未更新,并且您更新了 u-boot.img/uEnv.txt/rootFS,是否会出现相同的故障?

    关于 eMMC 重新刷写的软件指南、取决于您是从 u-boot、用户空间还是闪存器工具重新刷写 eMMC。 有关详细信息、请查看以下指针:

    processors.wiki.ti.com/.../Linux_Core_U-Boot_User's_Guide
    processors.wiki.ti.com/.../Sitara_Linux_Program_the_eMMC_on_Beaglebone_Black
    processors.wiki.ti.com/.../Sitara_Uniflash_Flash_Programming_with_U-Boot
    processors.wiki.ti.com/.../Sitara_Uniflash_Flash_Programming_with_Linux
    processors.wiki.ti.com/.../AM437x

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

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

    你好,Pavel,

    我们还尝试  擦除 MLO 和 Uboot,  然后重写它们,但没有成功: 大约600个周期后,我们就会失败。(CCCCCCCCCCC...)

      卸载之前,我们始终同步 FS,并且如上所述,没有断电,我们可以简化重新启动。

    因此 ,现在的解决方案似乎  是每次格式化 FS :这对您是否有意义?

    FYI 在   损坏的系统  MLO 和 Uboot.img 上通过 NFS 引导系统,具有正确 的 md5sum,这是我们所期望的。

    这是我们使用 的表。

    有什么想法吗?  欢迎您提供任何意见

    [root@media]# fdisk -l                                                   
    磁盘/dev/mtdblock0:1 MIB、1048576字节、2048个扇区                         
    单位:1 * 512 = 512字节的扇区                                           
    扇区大小(逻辑/物理):512字节/512字节                           
    I/O 大小(最小值/最佳值):512字节/ 512字节                               
                                                                                   
                                                                                   
    磁盘/dev/mmcblk0:3.7 GiB、3959422976字节、7733248扇区                   
    单位:1 * 512 = 512字节的扇区                                           
    扇区大小(逻辑/物理):512字节/512字节                           
    I/O 大小(最小值/最佳值):512字节/ 512字节                               
    disklabel 类型:DOS                                                             
    磁盘标识符:0x0003805b                                                     
                                                                                   
    器件        引导  开始    结束扇区 大小 ID 类型                       
    /dev/mmcblk0p1 *      2048 124927 122880  60M c W95 FAT32 (LBA)            
    /dev/mmcblk0p2      124928 624639 499712 244M 83 Linux                      
    /dev/mmcblk0p3      624640 1124351 499712 244M 83 Linux                      
    /dev/mmcblk0p4     1124352 7729151 6604800 3.2G 83 Linux                      
                                                                                   
                                                                                   
    磁盘/dev/mmcblk0boot1:2 MIB、2097152字节、4096扇区                      
    单位:1 * 512 = 512字节的扇区                                           
    扇区大小(逻辑/物理):512字节/512字节                           
    I/O 大小(最小值/最佳值):512字节/ 512字节                               
                                                                                   
                                                                                   
    磁盘/dev/mmcblk0boot0:2 MIB、2097152字节、4096扇区                      
    单位:1 * 512 = 512字节的扇区                                           
    扇区大小(逻辑/物理):512字节/512字节                           
    I/O 大小(最小值/最佳值):512字节/ 512字节    

     

    此致

    卡洛

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

    卡洛、

    [引用用户="Colombo Carlo"]

    我们还尝试  擦除 MLO 和 Uboot,  然后重写它们,但没有成功: 大约600个周期后,我们就会失败。(CCCCCCCCCCC...)

      卸载之前,我们始终同步 FS,并且如上所述,没有断电,我们可以简化重新启动。

    [/报价]

    根据我的理解、您可以使用以下命令手动更新 eMMC:

    1.安装/dev/mmcblk0p1

    2. CP MLO /dev/mmcblk0p1

    3.同步

    4 umount /dev/mmcblk0p1

    在大约600个周期的 eMMC 更新后、您会遇到引导失败。 您还可以使用一些自动化更新方法(如 DFU-utils 和/或 Sitara Uniflash 工具)进行测试吗?

    是否确定没有突然的功率损耗?

    [引用 user="Colombo Carlo"]因此 ,目前唯一的解决方案似乎  是每次都设置 FS 格式 :这对您是否有意义?

    您可以比较引导情况和非引导情况之间的 eMMC FAT 分区参数(坏块、备用块、磨损矫正等)、并跟踪差异。

    此致、
    帕维尔

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

    您还可以尝试对 mmcblk0p1进行"fsck"和"badblocks"测试。 有关详细信息、请参阅以下 e2e 线程:

    e2e.ti.com/.../530162

    e2e.ti.com/.../560946

    此致、
    帕维尔