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 -从 Linux 刷写 NAND 失败

Guru**** 2547860 points
Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/617115/am3352---flashing-nand-from-linux-fails

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

工具/软件:Linux

您好!


我正在尝试使用 AM3352在我的定制硬件上从 Linux 刷写 NAND。 在 Linux 用户空间中、我将刷写 NAND、一切看起来都很好、但当我重新启动时、我将引导回原始内核。 我需要对 Linux 用户空间中的闪存 NAND 执行什么操作?

RIM # cat /proc/mtd
dev:size erasesize name
mtd0:00020000 00020000 "SPL"
mtd1:00020000 00020000 "SPL.Backup1"
mtd2:00020000 00020000 "Backup2"
mtd3:00020000 00020000 "SPL.backup3"
mtd4:001e20000 00020000 80000000

“内核0006”mtd7:00020000 00020000
“md5000”td5:00020000
00008000 00000001 "FRAM"
RIM# uname -A
Linux RIM 3.2.0-ts-armv7l #46 Mon Jun 12 16:06:45 EDT 2017 armv7l GNU/Linux
RIM# flash_erase /dev/mtd6 0
Erasing 128 Kibyte @ 4e0000 -- 100%完成
RIM# nandwrite -p /dev/mtd6 /tmp/uImage
在偏移量0x0处向块0写入数据
在偏移量0x20000处向块1写入数据
在偏移量0x40000处向块2写入数据
在偏移量0x60000处向块3写入数据
在偏移量0x80000处向块4写入数据
在偏移量0xa0000处块5
在偏移量0xc0000处写入数据到块6
在偏移量0xe0000处写入数据
到块7在偏移量0x100000处写入数据
到块9在偏移量0x120000处
写入数据到块10在偏移量0x140000
处写入数据到块 11在偏移量0x160000写入
块12在偏移量0x180000
写入块13在偏移量0x1a0000
写入块14在偏移量0x1c0000
写入块15在偏移量0x1e0000
写入块16在偏移量0x200000
写入数据在块17 偏移量0x220000
在偏移量0x240000处写入数据到块18
在偏移量0x260000处写入数据
到块19在偏移量0x280000处写入数据
到块21在偏移量0x2a0000
处写入数据到块22在偏移量0x2c0000
处写入数据到块23在偏移量0x2e0000处写入数据
在偏移量0x300000处向块24写入数据
在偏移量0x320000处向块25写入数据
在偏移量0x340000处向块26写入数据
在偏移量0x360000处向块27写入数据

然后、在重新启动后、我检查内核。 编译日期和版本应该已经更新、但它仍然显示旧内核。

RIM # uname -A
Linux RIM 3.2.0-ts-armv7l #46 Mon Jun 12 16:06:45 EDT 2017 armv7l GNU/Linux

我知道内核构建日期和版本将会改变、因为我可以从 U-Boot 闪存 NAND、并且它可以正常工作。 我无法从 Linux 中执行该过程。 有什么想法吗?

谢谢、

Michael

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

    请尝试以下操作:
    root@(none):~/usr/sbin/flash_eraseall -j /dev/mtd6
    root@(none):~# nandwrite -p /dev/mtd6 uImage

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

    Yordan、您好!

    mtd6是内核分区、所以我有点困惑为什么要使用 jffs2选项(-j)? 此外、我的根文件系统是 UBIFS、但我只尝试更新我的内核。 如果它有助于我的 FLASH_ERASE 版本为1.4.2、

    谢谢、

    Michael

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

    很抱歉耽误你的回答。 请参阅本指南:
    processors.wiki.ti.com/.../Writing_Kernel_Image_to_NAND_Flash

    另一个选项是从 u-boot 刷新内核映像、如下所述:
    processors.wiki.ti.com/.../AM335x_U-Boot_User's_Guide

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

    正如我在原始帖子中看到的、按照您提供的第一个指南中的步骤运行时不会产生错误、但当我重新启动时、我仍然处于同一个旧内核中。 与这些 MTD 分区一样、它们受到保护、从用户空间写入它们不会产生任何影响。

    我在 E2E 上发现了这个主题、其中提到了从 userspace 使用2.6.37内核写入 NAND 时出现问题。 这是否仍然是3.2内核的问题?
    e2e.ti.com/.../422326

    我能够从 U-Boot 中刷写 NAND、而不会出现任何问题。 这正常工作。 但是、对于我们的用例、我们希望能够从 Linux 用户空间进行更新。

    谢谢、
    Michael