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.

[参考译文] OMAP-L138:使用 ISSI 256MB(和 128MB)mDDR(L138 E、C6748 E 和相关器件)的基本安全启动故障(通过 RBL)

Guru**** 2422790 points
Other Parts Discussed in Thread: OMAP-L138

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1535967/omap-l138-basic-secure-boot-failure-via-rbl-using-issi-256-mb-and-128-mb-mddr-l138-e-c6748-e-and-related-parts

器件型号:OMAP-L138
主题中讨论的其他器件:OMAPL138

工具/软件:

您好 TI、

我们的核心产品一直在使用 L138 E 电机类型 E ( E =基本安全启动)器件多年来成功使用 ISSI 的 IS43LR16320C (64 MB)、Micron 的 MT46H32M16 (64 MB) 和 MT46H128M16 (256 MB)。 Micron 器件最近已收到制造商的报废通知。

因此、一个自然的 256 MB 替换候选项似乎是 ISSI 的 IS43LR16128B (256 MB)、但是、在我们当前的设计中、我们在使此部件正常运行方面遇到了问题。 当使用 GEL 文件(首先解锁 JTAG 路径)通过 JTAG 下载代码时、ISSI 256MB 部件会工作。 以这种方式加载我们通常的 mDDR 生产测试通过了所有测试。 这些 mDDR 测试将耗尽内部内存。 这建议至少在使用 GEL 文件时正确设置 mDDR 寄存器和时序。

但是、在安全启动状态下尝试使用 ROM 引导加载程序进行引导时、256Mb ISSI 器件当前不起作用。 从不接收带有 256 MB ISSI 部件的设备发出的“完成“字符串(在“跳转并关闭“后挂起)。 ISSI 器件重新检查了所有时序、所有时序看起来都正常、这可以通过使用解锁的 JTAG 以及上述类似的 mDDR 时序进行的成功测试来证明。 我们尝试了通过 UART 进行安全启动(以还配置 mDDR)。 我们还通过打开的 JTAG 将正确绑定的加密闪存映像编程到闪存中、但(安全)闪存启动随后似乎也无法成功配置 mDDR、并且启动过程会尽早停止。 通过 UART(“BOOTME")“)进行安全启动、闪存使用列出的其他器件工作。

这似乎表明 ROM 引导加载程序 (RBL) 在设置 256MB ISSI mDDR 时存在问题。 所有安全启动过程都涉及 RBL。 RBL 配置器通过结构馈送数据、该结构没有 GEL 文件提供的灵活性。 另外、RBL 的确切执行对我们来说是不透明的、因此我们无法检查此情况。

第一次检查时、sprz301m/sprz303h 2.1.5 中的勘误说明似乎描述了我们看到的确切症状(“在所有器件版本上、某些采用状态寄存器读取 (SRR) 支持设计的 mDDR 存储器可能与 OMAPL138 器件不兼容。 这些 mDDR 存储器误解了 DDR2/mDDR 控制器在器件上电复位或冷复位(通过将 RESET 引脚置为有效)之后发送的某些初始化序列命令。 这导致 mDDR 存储器无响应、因为它卡在 SRR 状态而不是返回到空闲状态。“ 更多详细信息:
e2e.ti.com/.../omapl138-mddr-clarifications-about-ddr2-mddr-controller-mddr-usage-note-in-errata

尽管 sprz301m / sprz303h 2.1.5 确实建议了补救措施(“为了确保这些类型的 mDDR 存储器的正确初始化、DDR2/mDDR 控制器必须在上电复位或冷复位后将两个连续 的 mDDR 初始化序列发送到 mDDR 存储器。“)、但是、我们在使用 256 MB ISSI 部件尝试此操作时没有成功。

E2E 问题:
e2e.ti.com/.../omap-l138-doesn-t-securely-boot-from-uart-while-running-from-mddr
似乎与我们也看到的问题有关。

总之、仔细观察上面列出的 mDDR 器件、我们注意到两个 Micron 器件 (64MB 和 256MB) 和小 ISSI 器件 (64MB) 的状态寄存器定义都非常相似、因为位[15:8]有助于描述器件的密度、类型、数据总线宽度和刷新率、例如:

但是、256 MB ISSI 部件(以及同样的 128 MB 产品)在这方面有所不同:

因此、我们目前的理论是、RBL 会出于某种原因解释位[15:8]、并且似乎需要在该处填充有效字段、如上面讨论的其他 mDDR 器件所示。 这可能是必要的原因尚不清楚、因为所有必要的设置值都已在 SDCR 中给出、并且在绑定过程中传递给 RBL 的其他参数也已给出(参见 sprab41d 章节 D.4,也如下所示)。 可能此设置也已加密、因此最初无法在引导期间配置 mDDR 控制器。

请允许我们提出一些问题:

1. TI 能否确认当与未定义的 mDDR 状态寄存器[15:8]位一起显示时、RBL 的预期行为是什么? RBL 是否会以任何方式解释 mDDR 状态寄存器位[15:8]?

2.如果是、RBL 检查 mDDR 状态寄存器是否有必要? RBL 代码是否可用于检查?

3.我们使用命令行工具生成引导脚本。 AISgen GUI(我们尚未成功使用)是否针对此处所述的情况实施了有效的权变措施?

4.是否有人使用 ISSI IS43LR16128B 成功引导这些基本安全启动处理器?

5. TI 是否知道在可预见的生产中还有其他任何 256MB mDDR/LPDDR 器件、我们可以通过其他方式将这些器件保留在生产中? 对 DDR2 进行重新设计似乎没有很好的预后、因为这些部件似乎也在淘汰割草机的道路上。

6.或者 TI 能否建议一种可行的解决方法来继续安全启动完整的映像? 否则、两个阶段的进程可能是可能的、但在生命周期的这一阶段肯定不是一个伟大的主张。

7. TI 是否可能正在考虑使用最新的存储器接口来提供新的后续器件? 鉴于上述情况、这似乎变得越来越紧迫。

希望提供任何建议。

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

    你好  

    我已将其分配给我们的 DDR 专家、还通知了之前支持 SBL 的人员。 现在这是一个传统设备、因此对它的支持是有限的。 您可能会看到响应延迟、因为这是今天的美国假日、而且这是现在几年前的设备。  

    我相信您已经研究过 E2E、因此您可能已经看过以下 E2E、请查看它是否有所帮助

    (+)[OMAPL138、mDDR]勘误表 — 处理器论坛-处理器 — TI E2E 支持论坛中关于“DDR2/mDDR 控制器:mDDR 使用说明“的说明

    列出的解决方法应该可以正常工作、并且已被一些客户确认可以正常工作、并且已部署在生产中的 AFAIK 中  

    [引述 userid=“144151" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1535967/omap-l138-basic-secure-boot-failure-via-rbl-using-issi-256-mb-and-128-mb-mddr-l138-e-c6748-e-and-related-parts

    1. TI 能否确认当与未定义的 mDDR 状态寄存器[15:8]位一起显示时、RBL 的预期行为是什么? RBL 是否会以任何方式解释 mDDR 状态寄存器位[15:8]?

    2.如果是、RBL 检查 mDDR 状态寄存器是否有必要? RBL 代码是否可用于检查?

    [/报价]

    请查看我刚才提到的 E2E 是否提供了帮助  

    [quote userid=“144151" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1535967/omap-l138-basic-secure-boot-failure-via-rbl-using-issi-256-mb-and-128-mb-mddr-l138-e-c6748-e-and-related-parts 我们使用命令行工具生成引导脚本。 AISgen GUI(我们尚未成功使用)是否针对此处所述的情况实施了有效的权变措施?

    将查看 Rahul 是否能够进一步阐明这一点。 我认为安全器件与通用器件的命令行工具也有区别?

    [quote userid=“144151" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1535967/omap-l138-basic-secure-boot-failure-via-rbl-using-issi-256-mb-and-128-mb-mddr-l138-e-c6748-e-and-related-parts 是否有人使用 ISSI IS43LR16128B 成功引导这些基本安全启动处理器?

    对于特定的客户内存/供应商选择、没有任何其他数据点。  

    [quote userid=“144151" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1535967/omap-l138-basic-secure-boot-failure-via-rbl-using-issi-256-mb-and-128-mb-mddr-l138-e-c6748-e-and-related-parts TI 是否知道在可预见的生产中有任何其他 256MB mDDR/LPDDR 器件、我们可以通过其他方式将这些器件保留在生产中? 对 DDR2 进行重新设计似乎没有很好的预后、因为这些部件似乎也在淘汰割草机的道路上。

    我的理解是 DDR2 比 LPDDR1/mDDR 要流行一些。 但是、这将与您的首选内存供应商合作伙伴就长寿故事进行最好的讨论。  

    [quote userid=“144151" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1535967/omap-l138-basic-secure-boot-failure-via-rbl-using-issi-256-mb-and-128-mb-mddr-l138-e-c6748-e-and-related-parts 或者、TI 是否可以建议一种可行的解决方法来继续安全启动完整的映像? 否则、两个阶段的进程可能是可能的、但在生命周期的这一阶段肯定不是一个伟大的主张。

    勘误表中列出的权变措施是唯一已知的权变措施

    [quote userid=“144151" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1535967/omap-l138-basic-secure-boot-failure-via-rbl-using-issi-256-mb-and-128-mb-mddr-l138-e-c6748-e-and-related-parts TI 是否正在考虑使用最新存储器接口的新后续器件? 鉴于上述情况、这似乎变得越来越紧迫。

    如果您的问题只是想升级 OMAPL138、使其具有相同的封装/设计,但更新的闪存和内存支持 — 这是没有计划的。  

    了解您的功能、性能、集成、操作系统和安全要求会很好。 AM6x 系列中有多种较新的器件、但我们确实意识到、您所处的应用领域可能需要更优化的有源低功耗模式以及集成 DSP 等 您可以评估 AM62、AM62D 器件。 我们很高兴根据保密协议离线讨论 TI 路线图。  

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

    你好 Mukul、

    感谢您的答复并将其分配给 DDR 专家。 您链接到的 e2e 已包含在我的原始帖子中。

    也许我们可以从澄清第 1 点开始。 这在这一阶段是最迫切的。

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

    你好 Mukul、

    您是否收到了您的 DDR 专家的回复? 现有勘误表似乎未描述该错误。 在此阶段、似乎 mDDR 状态寄存器位[15:8]由安全 RBL 进行解释、这似乎会导致 mDDR 配置错误。 DDR 专家能否证实这一点是否也可以通过检查 RBL 代码来证明? 是否可以共享 RBL 代码?

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

    您好 Bernhard、抱歉耽误您的时间。  我需要一些时间与 Mukul 讨论这个问题。  我的第一个倾向是、RBL 不会解释 mDDR 状态寄存器、但我需要确认这一点。

    您说您尝试了 256MB ISSI 设备的变通办法、但它不起作用、您是否可以将对代码所做的修改发送给您?   

    此致、

    James

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

    下面提供了配置 DDR 的 RBL 源文件以供参考:

    e2e.ti.com/.../device.c

    请参阅所附文件中的 DEVICE_DDRConfig fxn。

    谢谢。此致、

    Rahul  

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

    您好 Bernhard  

    感谢您抽出宝贵的时间和精力、对您的调试和观察结果进行详尽的总结。 您可能已经注意到、此类 E2E 存档可以帮助我们和客户、专门用于存放现已十多年的器件。  

    我会看到詹姆斯是否对 VTP 和驱动强度方面有更多的见解、但似乎你有控制的事情吗?

    一般来说、随着我们在 OMAP1x 和器件方面的发展、我们最终决定为新器件从 ROM 中删除 DDR 配置、并将这种可配置性置于用户或次级引导加载程序代码中、因为在器件设计之初、总是有一些新知识需要了解 DDR/LPDDR 存储器兼容性和电路板依赖项、这些内容很难让 ROM 理解  

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

    你好 Mukul、James、Rahul、

    Rahul、感谢您提供 RBL 代码。 James、我们随后还得出结论、RBL 不会解释 mDDR 状态寄存器、因为 SRR 涉及数据引脚、并且在我们的电路板上、数据引脚已根据允许在字节组内进行交换。 由于 RBL 不知道交换、因此它不应解释任何涉及数据总线的固定字段。


    经过大量测试后、我们有了更新:

    1. ISSI IS43LR16128B 256 MB mDDR 部件仅在安全启动中由 RBL 将 DDRDRIVE[1:0]设置为“01"(“(1/2 驱动强度)时在我们电路板上失败。

    2.通过 RBL 使用其他三个 DDRDRIVE[1:0]设置中的任何一个始终有效。

    3.顺便说一句:我们以前使用 Micron 器件的生产代码稳定在 DDRDRIVE[1:0]=“01"(“(1/2 驱动强度)的原因是 sprs586j(OMAP-L138 E 数据表)在表 6-35 的注释 4 中指出:
    (4) 当数据线 (0Ω) 上未使用端接时、必须将 DDR2/mDDR 器件编程为在 60%强度模式下运行。
    mDDR 线路上没有串联终端。 很久以前成功测试过所有四个选项后、我们恰好选择了 50%、因为这最接近数据表的 60%建议值。

    4.作为一个进一步的注意,如果我记得正确:
    DDRDRIVE[1:0]=[00]= EMSR[7:5]=[000]=全 mDDR 驱动强度
    DDRDRIVE[1:0]=[01]= EMSR[7:5]=[001]= 1/2 mDDR 驱动强度
    DDRDRIVE[1:0]=[10]= EMSR[7:5]=[010]= 1/4 mDDR 驱动强度
    DDRDRIVE[1:0]=[11]= EMSR[7:5]=[011]=未定义
    EMSR[7]始终由 L138/C6748 TI 器件写为“0",“,因此、因此在这里只有这 4 个选项是相关的。 大多数器件都同意上面的前两个条目(我认为 JESD209B 中的后两个条目未定义)、Micron 和 ISSI 同意前三个条目、但 Micron 使用[011]作为 3/4 驱动强度、而 ISSI 使用[011]作为 1/8 驱动强度(根据其数据表)。 到目前为止、这些处理器的 TI 文档还声明了后者。

    5.有趣的是,如果引导到内部 RAM(安全或使用开放的 JTAG ),以前*没有*使用 RBL 设置 mDDR ,然后在用户空间中配置 mDDR ,这可以使用任何 DDRDRIVE[1 : 0]选项(即包括“01"(“( 1/2 驱动强度)成功设置(mDDR 测试通过没有错误)。 因此、当正确配置时、1/2 驱动强度是可以工作的、只是当涉及 RBL 时不会如此。

    6.此外、如果使用 RBL 引导加载程序来设置 mDDR、则以后任何时候设置 DDRDRIVE[1:0]=“01"(“(1/2 驱动强度)也会导致故障、即使 RBL 使用其他三个设置中的任何一个、通常 DDRDRIVE[1:0]设置都是成功的。 换句话说、如果 RBL DDR 设置之前已激活、当尝试使用 DDRDRIVE[1:0]=“01"时“时、在用户空间中重新配置 mDDR 会失败。

    7.因此、结论是 RBL mDDR 设置不可靠或不正确。 当 DDRDRIVE[1:0]使用非“01"设置“设置时、它恰好有效、但这可能是巧合。 Micron 部件似乎与 RBL 兼容、可以正常工作、但 ISSI 256 MB 部件容易受到攻击。

    8.虽然 RBL 似乎不考虑时钟稳定后的 200us 最小延迟、但 mDDR 器件在初始化以下内容时需要这种延迟:
    e2e.ti.com/.../3992116
    然而,也许上述问题实际上是由这个相同的 DDRDRIVE bug 所困扰。

    9、此问题可能也是 sprz301m/sprz303h 2.1.5 中的勘误说明的基础或关联?

    10、我们随后还发现了以下问题、这也腐蚀了使用 1/2 驱动强度时处理器出现错误:
    e2e.ti.com/.../driver-strength-for-mddr-supported-l138
    可能是相同的错误。

    我们得出的结论:TI 处理器有一个“1/2mDDR 驱动强度错误“、要么是一个(器件?) 涉及 RBL 的错误、或涉及(器件?) 在某些情况下、涉及扩展模式寄存器 (EMR) 设置的错误。