Other Parts Discussed in Thread: AM3354
工具/软件:Linux
你(们)好
我正在处理一个与在 nand flash 上运行的 am3354有关的非常罕见但严重的问题。
基于 AM3354的2种不同产品上出现了2个问题。详细信息如下:
问题1:
AM3354在3.2.0内核上运行。 (06.00.00.00 SDK)
在"cp"后、一些文件并发出"reboot"命令。
AM3354应重新启动并从 u-boot 重新运行。
但是、串行控制台输出"CCCCCCCCCCC"
就好像 nand 闪存中没有数据一样。或者 nand 闪存中至少没有 MLO。
然后、我只使用 MLO 对 Nand 闪存进行编程。
nand 闪存现在可以引导。
似乎 MLO (至少 MLO)被销毁。
问题是。
在重新引导之前。我只安装了"rootfs"分区,没有办法意外地删除 nand 引导数据(mtd0)。
这是我的分区:
静态结构 MTD_PARTITION AM335x_nand_partitions[]={
/*所有分区大小都以 NAND 块大小的形式列出*/
{
.name ="SPL"、
.offset = 0、 /* offset = 0x0 */
.size = SZ_128K、
}、
{
.name ="SPL.Backup1"、
.offset = MTDPART_OFS_append、 //偏移= 0x20000 *
.size = SZ_128K、
}、
{
.name ="SPL.Backup2"、
.offset = MTDPART_OFS_append、 /* offset = 0x40000 */
.size = SZ_128K、
}、
{
.name ="SPL.backup3"、
.offset = MTDPART_OFS_append、 //偏移= 0x60000 *
.size = SZ_128K、
}、
{
.name ="U-Boot"、
.offset = MTDPART_OFS_append、 //偏移= 0x80000 *
.size = 15 * SZ_128K、
}、
{
.name ="U-Boot Env"、
.offset = MTDPART_OFS_append、 //偏移= 0x260000 *
.size = 1 * SZ_128K、
}、
{
.name ="徽标"、
.offset = MTDPART_OFS_append、 //偏移= 0x280000 *
.size = 3 * SZ_1M、
}、
{
.name ="内核"、
.offset = MTDPART_OFS_append、 //偏移= 0x580000 *
.size = 5 * SZ_1M、
}、
{
.name ="文件系统"、
.offset = MTDPART_OFS_append、 //偏移= 0xa80000 *
.size = MTDPART_SISAL_FULL、
}、
};
除非我故意发出"flash_erase"命令。在这种情况下、我当然没有这样做。
我不明白 MLO 数据是如何被破坏的。
这种情况非常罕见。但一旦发生。这是一个严重的问题、导致产品无法长时间启动。
问题2:
AM3354 + 4.4内核(03.02.00.05处理器 SDK)
情况稍有不同。
我们每天都会使用此产品。
一天。 我们将其关闭、然后在第二天将其打开。
发现 uImage 丢失。
U-boot 正在打印错误消息、例如:
bootm 命令的映像格式错误
错误:无法获取内核映像!
也很罕见。只发生了一次。
分区是类似的。这次只在 DTS 中。
分区@0{
标签="NAND.SPL";
REG =<0x00000000 0x000020000>;
只读;
};
分区@1{
标签="NAND.SPL.Backup1";
REG =<0x00020000 0x00020000>;
只读;
};
分区@2{
标签="NAND.SPL.Backup2";
REG =<0x00040000 0x00020000>;
只读;
};
分区@3{
标签="NAND.SPL.backup3";
REG =<0x00060000 0x00020000>;
只读;
};
分区@4{
标签="NAND.u-BOOT";
REG =<0x00080000 0x001E0000>;
只读;
};
分区@5{
标签="NAND.u-boot-env";
REG =<0x00260000 0x00020000>;
只读;
};
分区@6{
标签="NAND.LOGO ";
REG =<0x00280000 0x00300000>;
只读;
};
分区@7{
标签="NAND.kernel";
REG =<0x00580000 0x00500000>;
只读;
};
分区@8{
标签="rootfs";
REG =<0x00A80000 0x3F580000>;
};
并且没有故意擦除 MLO 和 u-boot 等的 MTD 块。
我不知道 问题1和问题2 是否相关。
但 问题1和问题2在本质上可能是相同的问题?
你们能帮我检查可能的原因是什么?
现在、我对如何解决这个问题的想法已经不多了。 甚至是如何重新产生问题...
谢谢
延东