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.

[参考译文] PROCESSOR-SDK-AM64X:AM64X OSPI_NOR 闪存和内核引导问题

Guru**** 2587365 points
Other Parts Discussed in Thread: TMDS64EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1566401/processor-sdk-am64x-am64x-ospi-nor-flash-and-kernel-booting-issues

器件型号:PROCESSOR-SDK-AM64X
Thread 中讨论的其他器件:TMDS64EVM

工具/软件:

AM64X OSPI_NOR 闪存和内核引导问题

我目前正在使用两个电路板、A tmds64evm (proc101c) 和 A SK-am64 (proc10e3) 。 我已使用 UART、TFTP 和 DFU 成功刷写 tiboot3.bin、tispl.bin 和 u-boot.img、并确认电路板可以在 OSPI 模式下引导。

我的最终目标是 从 OSPI-NOR 闪存引导内核映像文件

问题 1:OSPI MTD Re 分区和 Saveenv 问题

我尝试按照此链接中的步骤进行操作: https://dev.ti.com/tirex/explore/node?node=A__ARACMGmwZUkJurQKuv0ezw__AM64-ACADEMY__WI1KRXP__LATEST

在中 OSPI MTD 重新分区 部分、重新分区不起作用。 我的结果屏幕如下所示:

=> setenv mtddparts=fc40000.spi.0:512K (ospi.tiboot3)、2m (ospi.tispl)、4m (ospi.u-boot)、256k (ospi.env@)、256k (ospi.env.backup)、1m (ospi.tispl)、4m (ospi.u-boot)、256k (ospi.enpi)、256k (ospi.8fs.rootn)、ospi (ospit.8fs.tb)

=> MTD 列表

无法找到 fc40000.SPI.0 的有效设备

MTD 设备列表:

* nor0

 -设备:闪存@0

 -父母: SPI@fc40000

 -驱动程序: JEDEC_SPI_NOR

 -路径:/ bus@f4000/bus@fc00000/spi@fc40000/flash@0

 -类型: nor flash

 -块大小:0x40000 字节

 -最小 I/O:0x10 字节

 - 0x000000000000-0x000004000000:“nor0"</s>“

         - 0x000000000000-0x000000100000 :“ ospi.tiboot3“

         - 0x00000010000-0x000000300000 :“ospi.tispl"</s>“

         - 0x000000300000-0x000000700000:“ospi.u-boot"</s>“

         - 0x000000700000-0x000000740000:“ospi.env"</s>“

         - 0x000000740000-0x000000780000:“ospi.env.backup"</s>“

         - 0x000000800000-0x000003fc0000 :“ospi.rootfs"</s>“

         - 0x000003fc0000-0x000004000000 :“ ospi.phypatern“

当我使用如下命令脚本时:

setenv mtddparts=nor0:512k(ospi.tiboot3)、2m(ospi.tispl)、4m(ospi.u-boot)、256k(ospi.env)、256k(ospi.env.backup)、1m(ospi.dtb)、20m@8m(ospi.u-boot)、256k(ospi.enfs,36spi.)

Re 分区工作正常、我的结果屏幕如下所示:

=> setenv mtddparts=nor0:512K(ospi.tiboot3)、2m(ospi.tispl)、4m(ospi.u-boot)、256k(ospi.env)、256k(ospi.env.backup)、1m(ospi.dtb)、20m@8spatteri(ospi.root)、256k(osp.ospi.36m)

=> MTD 列表

sf:检测到 s28hs512t、页面大小为 256 字节、擦除大小为 256 KiB、总共为 64 MiB

MTD 设备列表:

* nor0

 -设备:闪存@0

 -父母: SPI@fc40000

 -驱动程序: JEDEC_SPI_NOR

 -路径:/ bus@f4000/bus@fc00000/spi@fc40000/flash@0

 -类型: nor flash

 -块大小:0x40000 字节

 -最小 I/O:0x10 字节

 - 0x000000000000-0x000004000000:“nor0"</s>“

         - 0x000000000000-0x000000080000 :“ ospi.tiboot3“

         - 0x000000080000-0x000000280000:“ospi.tispl"</s>“

         - 0x000000280000-0x000000680000:“ospi.u-boot"</s>“

         - 0x000000680000-0x0000006c0000:“ospi.env"</s>“

         - 0x0000006c0000-0x000000700000 :“ospi.env.backup"</s>“

         - 0x000000700000-0x000000800000 :“ospi.dtb"</s>“

         - 0x000000800000-0x000001c00000:“ospi.kernel"</s>“

         - 0x000001c00000-0x000003fc0000 :“ospi.rootfs"</s>“

         - 0x000003fc0000-0x000004000000 :“ ospi.phypatern“

但是、saveenv 不起作用。 将显示以下屏幕:

=> saveenv

未知命令'saveenv'-尝试'help'

重新引导后、分区内容将恢复到初始状态。

我的问题是:

  • 是否可以通过将映像和.dtb 文件放在 rootfs 分区内而不重新分区来引导内核?
  • 是否绝对需要重新分区才能通过 OSPI-NOR 引导内核?

问题 2:Yocto 构建故障

我认为所需的 rootfs 是 tisdk-tiny-initramfs 映像、我正在尝试使用命令 machine=am64xx-EVM bitbake -k tisdk-tiny-image 进行编译。

尽管具有足够规格的强大 PC、但构建不成功。 我还为与 Dash 相关的消息选择了“否“。 构建需要几个小时、最终失败并出现许多错误。

请提供此问题的解决方案吗?

问题 3:一般指导

我不熟悉 Linux、因此这个过程非常困难且具有挑战性。 我的最终目标是在没有 SD 卡的情况下从闪存启动内核、就像从 SD 卡启动一样。

  • 根据我所描述的问题、我是否误解了任何内容或采取了错误的方法?
  • 如果是、请告诉我其他方法吗?

我非常感谢任何帮助。

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

    我目前不在办公室、将返回给您这个星期五或下周初。
    此致、
    - Hong

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

    1/。 下面是一个早期的 e2e、详细介绍了如何从 OSPI-NOR 引导 Linux。
    关于:AM6442:如何创建 ospi.rootfs (UBIFS) 并在没有 SD 的情况下从 OSPI 引导 Linux 
    在 Linux SDK 7.x 中、ubi/ubifs 尚未完全启用、但@u-boot 级别。 这是我重新分区 OSPI MTD 分区的原因之一、使得 u-boot 通过“sf..."加“加载内核/dtb 使用 cmd 而不是“ubi..."</s>“ cmd、用于从 UBI 下的“ospi.rootfs"加“加载它们 (在 Linux SDK 7.x 中不可用)。

    “ubi..."</s>“ 最新的 SDK 11.x 中现已启用 CMD 话虽如此、任何一种选择都是可行的
    1/。 为内核/dtb 保留专用的 MTD 分区、并通过“sf..."加“加载内核/dtb CMD @u-boot
    2/。 通过“ubi.../ubifsmount.../ubifsload...“从 rootfs/ubifs 的 MTD 分区加载内核/dtb CMD @u-boot。

    “saveenv..."</s>“ 在较新的 SDK 中删除了 CMD、因为它依赖于闪存介质、有时会导致不可见问题。
    推荐的选项是直接在 u-boot 源代码中的环境变量中设置引导配置。

    2/。 我建议针对 Yocto 构建问题单独提交新的 e2e 工单。
    3。 有有关 Linux 主题的全面在线资源、例如、关于 MTD/UBI/UBIFS 的良好参考...
    http://www.linux-mtd.infradead.org/doc/ubi.html
    http://www.linux-mtd.infradead.org/doc/ubifs.html

    此致、
    - Hong