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.

[参考译文] AM62L:无法从 QSPI 闪存引导

Guru**** 2654825 points

Other Parts Discussed in Thread: AM62L, TMDS62LEVM, UNIFLASH

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1581058/am62l-cannot-boot-from-qspi-flash

器件型号: AM62L
主题中讨论的其他器件: TMDS62LEVMUNIFLASH

您好、专家。 目前、我们正在测试 AM62L32 的 QSPI 闪存启动。 下面是我们的原理图设计

image.png

无论是使用 FSS0 QSPI CS0 还是 FSS0 串行 NAND OSPI 1-1-4 模式、我们都无法正常引导。 特定的日志如下所示;但它可以正常读取和写入 QSPI 闪存。 我想问原因是什么?

image.png

image.png

 

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

    您好、Junzi Lin、

    感谢您的查询!

    您能重新上传原理图并以更好的分辨率记录屏幕截图吗? 我无法区分图像中的信号/元件名称和日志文本。

    还请告诉我们如何配置引导模式引脚:0 到 11?

    谢谢

    此致、

    Anastas Yordanov

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

    目前、当我们使用减少引脚数引导设置模式并将引导方法配置为 FSS0 QSPI CS0 和 FSS0 串行 NAND OSPI 1-1-4 模式时、始终打印以下日志。 您能告诉我原因是什么吗?

    串行端口仅打印以下内容

    02000000011a0000616d36326c00000000004853465300010100000010002a600000000fe73d96bbf79f784d9aee9fc5698d103956f93abf79f3ec7ce923079c478f837b12296da2a2a2a2a2

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

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

    您好 Anastas、

         tiboot3  映像写入    mtd0  分区 、并    将 tipsl 映像写入   mtd1  分区    似乎没有   任何 效果

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

    您好、JUNZHI LIN、Yi Wang、

    [引述 userid=“655783" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1581058/am62l-cannot-boot-from-qspi-flash/6090331

    目前、当我们使用减少引脚数引导设置模式并将引导方法配置为 FSS0 QSPI CS0 和 FSS0 串行 NAND OSPI 1-1-4 模式时、始终打印以下日志。 您能告诉我原因是什么吗?

    串行端口仅打印以下内容

    02000000011a0000616d36326c00000000004853465300010100000010002a600000000fe73d96bbf79f784d9aee9fc5698d103956f93abf79f3ec7ce923079c478f837b12296da2a2a2a2a2

    [/报价]

    打印十六进制序列+、然后在大约 2 秒内打印“C"字符“字符 间隔表示您当前处于 处于 UART 引导模式。  

    您是否会提供定制电路板上 AM62L BOOTMODE0-BOOTMODE15 引脚的确切引导模式设置?

    您很可能是在 UART 备份模式下引导、因为从 QSPI 闪存存储器的主引导会因某种原因失败。

    如果您选择了具有主 QSPI 引导的非 UART 备用引导模式(不太可能)、 则似乎您的硬件引导模式配置有误。  

     我希望这有助于澄清!

    谢谢

    此致、

    Anastas Yordanov

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

    我们只使用了引脚 12 至 15 低引脚数引导设置模式 并尝试如所示对其进行配置 0011 1001.

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

    尊敬的 Yi Wang、JUNZHI LIN、

    感谢您的更新。

    因此、我知道、根据 AM62L TRM 部分初始化/子部分、引导模式引脚映射(减少引脚数):

    在您的配置中、由于 BOOTMODE15!=0 && BOOTMODE14!=0、在 POR 后、引导模式引脚 0 至 11 扫描会被忽略、因为这种模式会缩小 boomode 引脚数选择模式。

    AM62L ROM 引导加载程序捕获[BM12:BM15]= 1001: “固定 2“-> FSS0 QSPI CS0 或[BM12:BM15]=0011:“固定 5“-> FSS0 串行 NAND OSPI 1-1-4 配置值作为主引导源。 从该表中可以明显看出、UART 是备用引导选项。 这说明了 您为何看到“… CCCCCCC“打印在控制台中。

    这意味着 QSPI 引导失败并且触发备用 UART 引导。

    我将尝试为 QSPI 启动不成功分析提供更多检查点。  请期待明天做出响应。

    此致、

    谢谢

    Anastas Yordanov

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

    尊敬 的 Yi Wang、JUNZHI LIN、

    您可能需要查看 此常见问题解答的电路板启动 OSPI/QSPI 接口相关部分:

    常见问题解答 — 电路板启动

    请告诉我检查的信号的状态是什么?

    谢谢你

    此致、

    Anastas Yordanov

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

    您好、

    我们可以从示波器观察到、上电后、OSPI0_CLK 上有一个时钟信号以及 OSPI0_CSN0 上的一个片选信号、但随后系统切换到串行端口引导、如 CCC 打印输出所示。

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

    尊敬的 Yi Wang:

    我不确定 pin (9 ): EP 来自哪里? GD5F2GM7REYIGR 不是  8 针封装吗?

    OSPI0 主机控制器 QSPI 硬件接口的硬件实现是否遵循 TI 针对硬件设计和原理图审阅检查清单的建议(请参阅 OSPI/QSPI 相关小节中的检查点):

    定制电路板设计的硬件设计建议

    AM62L 原理图设计和原理图审阅检查清单

    AM62L LBCLK0、DQS、CSn1、CSn2、CSn3 似乎未用于 OSPI 接口、但用于其他外设(即 GPIO)。 您能否确认?  

    以下是有关 OSPI/QSPI 主题的非常有用的常见问题解答:

    OSPI/QSPI 存储器接口

    在 QSPI 模式下、将以 OSPI0_CLK 频率将 SPL 引导软件从 QSPI 加载到 RAM。 = 50MHz 处于 1S-1S-4S 模式。 从 RAM 执行启动代码。

    根据初始化/小节、AM62L TRM 的 QSPI 引导:

    有关 QSPI 引导接口硬件示例、您可能希望查看以下 E2E 主题:

    E2E 示例主题:QSPI 引导

    请期待在一天或两天内跟进并提供更多提示。

    此致

    Anastas Yordanov

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

    GD5F2GM7REYIGR 的引脚 (9) 是散热接地焊盘。 建议您无需关注它。

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

    尊敬的 JUNZHI Lin:

    感谢您确认有关功率耗散焊盘的信息。

    在引导阶段、在 OSPI NAND 存储器侧提供 OSPI0_CSn0 和 OSPI0_CLK、OSPI0_DQ0 的示波器图像是否会出现问题?

    谢谢

    此致、

    Anastas Yordanov

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

    尊敬的 

    以下各图显示了在引导阶段捕获的 CLK、CSn0、D0 和 D1 波形。在引导阶段、D2 和 D3 上没有数据。

    CLK 和 CSn0

    CLK 和 D0

    CLK 和 D1

    CSn0 和 D0

    CSn0 和 D1

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

    尊敬的 

    我们使用 TMDS62LEVM 电路板进行了测试。 NAND 闪存支持正常的读取和写入操作、但电路板仍然无法启动。
    由于 TMDS62LEVM 的 CSn0 连接到 NOR 闪存、我们进行了以下修改:

    删除了电阻器 R477、R465 和芯片 U100

    将 OSPI_NOR_INTn 信号短接至 GND

    短接 NOR 闪存的 CSn0 引脚和 NAND 闪存的 CSn3 引脚

    尝试的减少引脚数配置为:FSS0 串行 NAND OSPI 1-1-4
    完整引脚数配置如下:
    BOOTMODE[2:0]:011
    BOOTMODE[9:3]:0 0 1 0000
    BOOTMODE[13:10]:0 0 1 1 或 1 1 0 1
    BOOTMODE[14:15]:0 0

    如果备份模式为 UART、它将打印以下内容;

    如果备份模式为 SD 卡、它将打印以下内容。

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

    提醒一下:我被告知 GD QSPI NAND 闪存默认处于 1s-1s-1s 模式而不是 1s-1s-4S 模式 。请进行检查。 然后试一下  

    BOOTMODE[9:3]:0  1 x 0000  

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

    您好 
    根据您的建议、我将 BOOTMODE PIN[8]更改为 1、但仍然无法引导。

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

    你好、吴俊基、

    我首先来评论一下 TI TMDS62LEVM 电路板上的设置。

    将 OSPI_NOR_INTn 信号短接至 GND

    -这意味着 AM62L EVM GPIO0_13 输入当前短接至 GND。 这意味着 OSPI_NOR_INTn 线路将在 AM62L GPIO0_13 输入端永久触发 IRQ。 我不确定 ROM 引导加载程序是否会处理此 IRQ,但为了安全起见,为什么不按原样保留 — 只使用上拉电阻器即可。 因此、来自未使用 NOR 闪存的 IRQ 线路将保持无效状态。 请移除与 GND 的连接。

    请期待后续回答!

    谢谢

    此致、

    Anastas

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

    尊敬的 Tony:

    感谢您在引导分析过程中提供的良好提示。  

    此致、

    Anastas  

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

    尊敬的 

    抱歉、您对电路板修改的描述不正确。 请参阅我提供的图像。实际上、我将 OSPI_NOR_RSTn 引脚短接至 GND、以防止 NOR 闪存干扰 NAND 闪存启动、而无需移除 NOR 闪存。 未对 OSPI_NOR_INTn 引脚进行修改。

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

    尊敬的 Junji Wu:

    感谢您回答我关于 TI TMDS62LEVM 返工的问题:

    关于您在 TI TMDS62LEVM 上的设置:  

    您能否展示 NAND 存储器时钟输入 QSPI_NAND_CLK 的引导示波图、尽可能靠近 Winbond NAND 存储器元件进行探测。 此测量很有趣、因为时钟源自 AM62L OSPI0_LBCLKO 输出、其行为取决于 ROM 引导加载程序设置 OSPI 主机控制器的模式 (TAP 或 PHY)。

    关于 QSPI_NAND_CSn 信号的相同测量值。 有意思 — 因为它与 OSPI0_CSn0 以及 OSPI_NOR_CSn 一起连接。 因此、最好看看对信号形状是否有一些影响。

    您能否检查 QSPI_NAND_RSTn 以查看 QSPI NAND 闪存是否在引导期间保持在复位状态。   

    是否可以根据原始 EVM、修改软件、以将 OSPI 控制器 OSPI0_CSN3 输出用于 EVM Winbond NAND 的芯片选择(而是将 OSPI0_CSN0 与 NOR 闪存共享)。 请告诉我吗?

    关于 Tony 的提示、请再次验证 元件 完成配置。 引导模式设置 ( 串行 NAND 主引导模式 + UART 备用引导模式 ) 如下:

    B15 ........................................................... B0

    00_0011_01x0000_011

    谢谢你

    此致、

    Anastas Yordanov

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

    尊敬的 

    我测试了 QSPI_NAND_CLK 信号、发现没有时钟信号、如下图所示。
    随后、我注意到串行 NAND 引导应使用 OSPI0_CLK 引脚、因此我短接了 QSPI_NAND_CLK 和 OSPI_NOR_CLK 引脚、并尝试再次引导、但仍然没有成功。  我当前使用的 BOOTSETTING 模式为:[15:0]:00_0011_01x0000_011
    修改后的简化电路图如下图所示。
    以下几个图像显示了通过测试修改后的 TMDS62LEVM 获得的波形、其波形与我们自己电路板的波形类似。
    QSPI_NAND_CLK 和 OSPI_DQ0
    QSPI_NAND_CS 和 OSPI_DQ0
    QSPI_NAND_RSTn 和 OSPI_DQ0
    感谢您提出“使用 OSPI 控制器 OSPI0_CSN3 输出进行 EVM Winbond NAND 的芯片选择“。 查看最新的 TRM 手册时、我注意到第 169 页上规定只有 CSn0 支持串行 NAND 引导。 考虑到这一点、将 NAND 闪存的芯片选择连接到 CSn3 在理论上可能无法启用引导。
    此外、我已经仔细检查并确认、我们已按照 Tony 的建议将电路板上的引导模式设置更新为 00_0011_01x0000_011、但电路板仍然无法引导。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Junji Wu、

    感谢您提出“将 OSPI 控制器 OSPI0_CSN3 输出用于 EVM Winbond NAND 的芯片选择。“ 查看最新的 TRM 手册时、我注意到第 169 页上规定只有 CSn0 支持串行 NAND 引导。 考虑到这一点、将 NAND 闪存的芯片选择连接到 CSn3 在理论上可能无法启用引导。

    抱歉误导你 ,感谢你的 TRM 交叉检查和纠正! 我的想法是更新 SW、避免偏离 EVM 原理图、但我忘记了 AM62L ROM 引导加载程序软件只能从连接 CSn0 的 NAND 闪存启动的事实。  

    连接两个存储器时钟引脚后、您可以移除未使用的 NOR 闪存时钟 R471 下拉电阻、以减少 OSPI0 控制器时钟输出上的负载。 我假设您还已将 W25N01JWTBAG QSPI_NAND_CLK 和 QSPI_AND_CS 与 SoC OSPI0_LBCLKO 和 OSPI0_CSN3 分离 。

    我不确定 QSPI_NAND 和 OSPI_NOR 存储器对应的 CSn 和 CLK 输入引脚之间对 AM62L OSPI0_CSn 和 OSPI0_CLK 直接共享是否不违反任何信号完整性规则。

    至少从以下 E2E 主题来看、TI 似乎未测试 EVM 的此类返修、也不建议这样做:

    尝试从 TMDS62LEVM 上的 W25N01JWTBAG NAND 引导

    参考提供的示波图、DQ0 线和 CLK 看起来有点噪声、在上升和下降转换区域附近有明显的过冲。 下冲看起来更小。 我无法使用 1V 范围限定过冲(可能约 500mV 或更多)和下冲幅度。 您是否能够以更精细的分辨率(即 500mV 或 100mV)提供 DQ0 信号示波图? 可能需要执行此操作来排除在 QSPI NAND 闪存数据输入端、串行 NAND 命令或地址的数据逻辑电平可能会被误解的情况。

    从 AM62L OSPI 发送到闪存的命令似乎为 0x0F C0 ->“READ STATUS REGISTER-3“。

    为了理解引导错误、我需要看到一个完整的 CLK、DQ0 命令/DQ1 数据传输序列、与您在此处捕获的序列类似、但时间标度更好、并 增加了时钟和芯片选择:

    目前、在 OSPI 1S-1S-1S 引导模式(标准 SPI 模式)下、时钟频率似乎也不符合 ROM 加载程序引导期间 OSPI0_CLK 时钟到 NAND 闪存的预期 50MHz (20ns) 频率。 当数据在 DQ1 线路上切换时、它也是 6.26MHz 吗?

     请期待我下周初的跟进!

    谢谢

    此致、

    Anastas Yordanov

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

    尊敬的  Anastas Yordanov

    关于您的假设:“我假设您还已将 W25N01JWTBAG QSPI_NAND_CLK 和 QSPI_NAND_CS 与 SoC OSPI0_LBCLKO 和 OSPI0_CSN3 分离“、下面是一个更新:

    由于 NAND 闪存的 CLK 引脚和 AM62Lx 的 OSPI0_LBCLKO 引脚之间没有串联电阻、因此断开其电气连接的唯一方法是切断 PCB 上的布线、这会带来重大风险。 因此、我们尚未执行此操作、相同的逻辑也适用于 NAND 闪存的 CS 信号。

    总之、对于 TMDS62LEVM 板上的 AM62Lx、CSn0 当前短接至 CSn3、OSPI0_CLK 短接至 OSPI0_LBCLKO。 根据我的测试、在引导阶段、CSn3 和 OSPI0_LBCLKO 实际上不输出任何信号、因此理论上、它们不应干扰 CSn0 和 OSPI0_CLK。

    根据您的建议、 我已经在引导阶段测试了 NAND 闪存的 CLK/CSn0/D0 和 CLK/CSn0/D1 波形。

    在第 14 个时钟周期、CLK 频率切换到 50MHz。 D1 的波形似乎表现出一些异常:有时它无法正常降至 0V。 我不确定这是否会影响 NAND 引导过程。

    作为参考、我在通过 SD 卡引导后测试了 NAND 引导的读取和写入功能、并且没有观察到这样的异常波形。

    随附了详细的波形图像。

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

    尊敬的 Junji Wu:

    我可以看到 D1 脉冲的宽度越小、问题就越明显。 液位不够低。

    请稍后再跟进。

    谢谢

    此致、

    Anastas Yordanov

      

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

    你好、Junji Wu、

    让我们从 OSPI CLK 信号开始:

    时钟脉冲的平台区域存在明显下降。 如前所述、GND 和 VDDS1=1.8V 电源电势存在明显的正负过冲超过约 500mV。 瞬态正过冲为 2.34 - 1.8 = 0.54V > 0.2*VDDS1 = 0.2*1.8 = 0.36V、持续时间约为 3uS、 约为 T=20us 的 20%。 负过冲 –0.48V

    是否可能由于所用设备的限制(即示波器,探头和测量设置)而出现跌落。 问: 您的示波器和探头支持的最大频率和采样率是多少? 例如、您是否使用接地弹簧来在测量过程中提供较短的接地路径。

    关于 OSPI0_D0 — 正如您已经汇总的,没有观察到“浮动零“电平。 在串行 NAND 引导模式下、这实际上是命令/地址/写入数据 线。

    引导软件数据应在引导之前下载到 RAM、并通过 AM62L OSPI0_D1 输入读取。 但是、对于 OSPI0_D1、逻辑 0 的浮点电平会出现问题。 如果存在“短“信号从高电平到低电平的转换、通常 在 1-3 个时钟边沿、则信号 在某些情况下可能不会降至 VIL_max = 0.35*VDDS1 = 0.63V 以下 、但会保留在 AM62L 1P8_LVCMOS 缓冲器 VIH_min = 0.65*VDDS1 = 1.17V 以上、或在 ViL_max 和 VIH_min 之间达到电平、可能导致在 OSPI0_D1 输入端出现错误解释(高电平)。

    反之亦然、如果 NAND 存储器 D1 输出从低电平变为高电平、通常在 1-3 个下降时钟边沿变化、则信号不能超过 1P8_LVCMOS 缓冲器 Vil_max 阈值 (0.63V) 或  达到 Vil_max =0.63V 和 VIH_min=1.17V 之间的电平 、而在 AM62L OSPI_D1 输入时被错误地解释为低电平。 因此存在问题。

    由于 NAND 闪存的 CLK 引脚和 AM62Lx 的 OSPI0_LBCLKO 引脚之间没有串联电阻、因此断开其电气连接的唯一方法是切断 PCB 上的布线、这会带来重大风险。 因此、我们尚未执行此操作、相同的逻辑也适用于 NAND 闪存的 CS 信号。

    好的、我理解。  以下是 根据 AM62L 数据表的 E18 (OSPI0_LBCLKO) 和 C23 (OSPI0_CSn3) 引脚默认缓冲器和多路复用模式值:  

    根据默认 SoC 引脚配置和 ROM 序列、将 SoC LBCLKO 引脚(默认为 HiZ、未被 ROM 更改以在 OSPI Tap 工作模式下引导)短接 至 SoC OSPI0_CLK 引脚以及 SoC OSPI0_CSn3 引脚(默认为 HiZ、未被 ROM 更改)短接至 SoC_CSn0 引脚不会对 SoC 和闪存存储器造成任何损害。

    此外、根据我对 NOR 闪存 S28HS512TGABHM013 数据表的理解:

    Infineon S28HS512TGABHM013 数据表

    当 OSPI_NOR_RESET 复位被置为有效时、S28HS512TGABHM013 数据引脚被强制进入高阻态(断开)状态。  但是、仅当 CS 信号为高电平时、NOR 闪存的 RESET#输入引脚才应保持有效(置为低电平)。 因此会出现一个问题 当 RESET#被置为低电平且 CS 由 AM62L OSPI 主机驱动为低电平时、闪存 NOR 数据和其他输出引脚的状态是什么。 NOR 闪存数据表推导出、当 RESET#引脚保持为“低电平“时、CS 置为“低电平“、这是一种“非法“状态(尽管未明确突出显示)。

    下面是有关如何连接两个 OSPI 存储器(尤其是 NOR:S28HS512TGABHM013 和 NAND:W25N01JWTBAG)  以共享相同的 OSPI 控制器数据线的 TI 常见问题解答指南:  

     将两个 OSPI (QSPI) 存储器连接到 AM62L OSPI 共享数据总线

    请再次确保在 CSn0 输入端只有一个 10k 上拉电阻器、在 NAND 闪存的 CLK 输入端只有一个 10k 下拉电阻器。    

    问:您能否告诉我成功写入 QSPI NAND 存储器和从该存储器读取的 OSPI 时钟频率?

    总结:我认为您可以更愿意在定制电路板上继续测试引导、因为在定制电路板上、QSPI NAND 闪存设置更符合成功启动的条件。  

    谢谢

    此致、

    Anastas Yordanov

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

    尊敬的 Anastas Yordanov

    在我们的软件工程师进行调试后、虽然我们自己的电路板仍然无法通过 NAND 闪存启动到内核中、但现在它可以打印部分信息。 我将随时向您更新后续调试中的任何进展。 非常感谢您在过去几天的答复。

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

    尊敬的 Anastas Yordanov

    #1。  现在、我们的定制电路板可以通过 BOOTMODE 设置引导至 SPL/tiboot3 阶段 串行 NAND 主引导模式  +  UART 备用引导模式 ) 如下:

    B15 ........................................................... B0

    00_0011_01x0000_011 (QSPI NAND 的完全引导模式配置、1-1-1)

    #2. 而是使用 SDK 11.01.16.13  无法找到引导设备、导致错误代码–19。

    我们添加了调试日志、  程序在启动期间无法识别 SPINAND 引导器件。 下面提供了我们的代码修改和调试日志。

    在使用 SDK 时 11.00.15.05 可以引导至 UBoot 控制台、 比较来自 SDK 的日志 11.00.15.05、  存在 SPINAND 条目、因此它可以进入 uboot cmd 阶段。

    似乎是最新的 Linux SDK 11.01.16.13 QSPI_NAND 引导有问题。

    --- a/common/spl/spl.c
    +++ b/common/spl/spl.c
    @@ -609,6 +609,13 @@ static int boot_from_devices(struct spl_image_info *spl_image,
            int ret = -ENODEV;
            int i;
     
    +       struct spl_image_loader *tmp_loader;
    +
    +       for (tmp_loader = drv; tmp_loader != drv + n_ents; tmp_loader++)
    +       {
    +               printf("tmp_loader name  = %s, tmp_loader->boot_device = 0x%x\n", tmp_loader->name, tmp_loader->boot_device);
    +       }
    +
            for (i = 0; i < count && spl_boot_list[i] != BOOT_DEVICE_NONE; i++) {
                    struct spl_image_loader *loader;
                    int bootdev = spl_boot_list[i];
    @@ -616,6 +623,7 @@ static int boot_from_devices(struct spl_image_info *spl_image,
                    if (CONFIG_IS_ENABLED(SHOW_ERRORS))
                            ret = -ENXIO;
                    for (loader = drv; loader != drv + n_ents; loader++) {
    +                       printf("loader name  = %s, boot_device = 0x%x, bootdev = 0x%x  \n", loader->name, loader->boot_device, bootdev);
                            if (bootdev != loader->boot_device)
                                    continue;
                            if (!CONFIG_IS_ENABLED(SILENT_CONSOLE)) {
    @@ -752,6 +760,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
                                   ret);
                    else
                            puts(PHASE_PROMPT "failed to boot from all boot devices\n");
    +               printf(PHASE_PROMPT "failed to boot from all boot devices (err=%d)\n", ret);
                    hang();
            }
    

    diff --git a/arch/arm/mach-k3/am62lx/boot.c b/arch/arm/mach-k3/am62lx/boot.c
    index a0d3387c..ec3a0aee 100644
    --- a/arch/arm/mach-k3/am62lx/boot.c
    +++ b/arch/arm/mach-k3/am62lx/boot.c
    @@ -37,7 +37,7 @@ static u32 get_primary_bootmedia(u32 devstat)
                                    MAIN_DEVSTAT_PRIMARY_BOOTMODE_SHIFT;
            u32 bootmode_cfg = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_MASK) >>
                                    MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT;
    -
    +       printf("bootmode = 0x%x \n", bootmode);
            switch (bootmode) {
            case BOOT_DEVICE_XSPI_FAST:
            case BOOT_DEVICE_XSPI:
    @@ -50,7 +50,7 @@ static u32 get_primary_bootmedia(u32 devstat)
                    return BOOT_DEVICE_MMC1;
     
            case BOOT_DEVICE_SPI_NAND:
    -               return BOOT_DEVICE_SPI_NAND;
    +               return BOOT_DEVICE_SPINAND;
     
            case BOOT_DEVICE_MMC:
                    if ((bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_PORT_MASK) >>
    @@ -68,6 +68,7 @@ static u32 get_primary_bootmedia(u32 devstat)
                    return BOOT_DEVICE_RAM;
            }
     
    +       printf("=== return bootmode = 0x%x \n", bootmode);
            return bootmode;
     }
    

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

    你好、Junji Wu、

    我很高兴听到这个消息!  

    请告诉我们您是如何通过 AM62L ROM 加载程序成功从定制电路板上的 Gigadevice NAND 闪存启动的。  

    您是否执行了任何硬件更正? 这是 UART 配置中的内容吗?

    感谢您发送编修。

    谢谢你

    此致、

    Anastas Yordanov

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

    您好 Yi Wang、Junji Wu、

    好消息是、您和软件开发团队已进入 U-boot SPL 执行阶段 (SDK 11.01.16.13 )。

    我不是 tispl/U-boot / Linux 专家。 上述  SDK 是什么 11.01.16.13 U-boot SPL 日志  意味着: bootdev = 0x10 不存在于支持的器件列表中:DFU、MMC1、... 包括与非门、其中 BOOT_DEVICE = 0xB。

    是  SDK 中的“SPIND"</s>“ 11.00.15.05  与“NAND"之间“之间的切换  11.01.16.13 U-Boot SPL  相同的引导设备选项或它们不同?

    如果它们是同一个选项、可能是简单的引导列表“bootdev" ID“ ID 与选定的“boot_device" ID“ ID 不一致、还是在 SW 中处理更复杂?

    感谢您的澄清!

    如果我必须重新分配给我们的 Linux 软件团队以支持、请告诉我!

    谢谢

    此致、

    Anastas Yordanov

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

    尊敬的 Anastas Yordanov

    经过彻底的代码跟踪后、发现缺少引导类型是由于没有引起的 CONFIG_SPL_MTD_LOAD引导加载程序配置 defconfig 。 重新启用此配置后、系统现在可以成功进入 U-Boot 命令行阶段 使用时 SDK 版本 11.01.16.13

    感谢您的支持!

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

    尊敬的 Yi Wang、Junji Wu、

    很高兴您能够解决 QSPI 引导问题。

    吴俊基

    是否有一些硬件问题修复可与我们分享?

    如果没有其他问题、请将该线程设置为“已解决“。

    谢谢你

    此致

    Anastas Yordanov   

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

    您好、Anastas、

    它似乎是由于 QSPI 默认支持 1-1-1 模式造成的、QE 可以从其他引导模式启用吗? 例如、从 SD/DFU 引导、启用 QSPI 闪存 QE、闪存 QSPI、然后在 1-1-4 模式下使用 QSPI 闪存引导。

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

    您好、Tony、

    感谢您发送编修。

    我不是软件专家、但我想这样一个技巧可以通过以下引导序列完成:如果 ROM 引导加载程序以 SD 或 DFU 模式引导、则通过 SDMMC1/USB 接口将闪存加载程序加载到 RAM 中。 闪存加载程序(例如 UART Uniflash 加载程序)可以刷写“初始 QSPI 预加载程序“+其他已知映像:tiboot3.bin + tispl.bin + U-Boot.img。 (Linux SPL 或 RTOS SBL) 到 QSPI NAND 闪存、 然后闪存加载程序将控制权返回到 ROM 代码。 ROM 代码 将 QSPI 预加载程序从 NAND 闪存加载到 RAM 中、并首先启动它、而不是启动 tiboot3.bin。 QSPI 预加载程序初始化 DDR PHY 中的 OSPI 控制器、而在默认的 1S-1S-1S 中、OSPI 向 QSPI NAND 闪存发送 QE 命令并将其设置为 1S-1S-4S 模式。 然后、QSPI 预加载程序会检查 QSPI 存储器中偏移 0x0 处是否存在有效的 tiboot3.bin (SPL) 映像、将 tiboot3.bin 加载到 RAM 并启动。 然后 tiboot3.bin 检查是否存在有效的 tispl.bin(例如在 0x80000 处)、将其加载到 RAM 并启动它、以此类推。

    谢谢

    此致、

    Anastas Yordanov

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

    QE 不是一次性编程位。 无法编程为永远启用 4 位。 因此、只能在 1-1-1 内引导、然后启用 QE 并更改为 1-1-4 模式、以在引导阶段完成后加速。

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

    尊敬的 Tony:

    由于我不熟悉 tiboot3、U-boot SPL 和 U-boot 的代码、因此我不确定这里的真正问题。 是的、GD5F2GM7“功能“寄存器 QE 位是一个易失性位、只要 NAND 闪存电源关闭->打开、或闪存 NAND 从处理器接收到上电复位命令 (0x99)、该位就会复位为 0。 我表示将 QE 位设置为 0b1(访问位[0] @寄存器。 地址 0xB0 通过命令“Set Features=0x1F“)可以在从 ROM 代码引导的第一个闪存非 ROM 程序中完成。 请注意、ROM 引导模式也可以是具有 1S-1S-1S 模式的串行 NAND SPI 引导模式。 在 ROM 引导加载程序(如果 ROM 代码在此阶段冻结)和外部加载程序(如可能)中不应更改运行模式。

      

    为什么 在 AM62L ROM 加载程序之前 GD5F2GM7 的上电复位不足够?    在非 ROM 引导阶段之间、何时需要向 GD5F2GM7 NAND 闪存发送上电复位命令 (0x99)?

    如果 NAND 闪存也应在不同的引导阶段之间复位、那么我同意应在每个引导的程序中检查 QE 位并将其设置为高电平 — 即应修改每个引导加载程序)。  

    请告诉我是否将重新指派给 TI Linux 引导加载程序软件专家来澄清细节?

    谢谢

    此致、

    Anastas Yordanov