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.

[参考译文] AM2632:AM263x 引导流可能性

Guru**** 2394305 points
Other Parts Discussed in Thread: AM2632

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1335029/am2632-am263x-bootflow-possibilities

器件型号:AM2632

您好!

我们正在使用 AM2632、我对启动流的可能性有疑问。
我们在锁步模式下使用 AM2632、因此我们有两个可用内核(R5SS0和 R5SS1)


是否可以从 SBL 将固件加载到 R5SS1、然后在 R5SS1上启动固件。
在下一步中、R5SS1应将固件从闪存加载到 R5SS0、并在 R5SS0上启动。

是否可以将固件映像的此序列加载(SBL 加载到 R5SS1,从 R5SS0加载)?
我这个问题的背景是在将固件加载到 R5SS0之前在 R5SS1上执行 pBIST (测试 R5SS0存储器区域)。

此致
乔·肖

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

    您好、Jo:

    请查找说明子集器件配置的应用手册-

    https://www.ti.com/lit/an/sprada3/sprada3.pdf

    Unknown 说:
    在下一步中、R5SS1应将固件从闪存加载到 R5SS0、并从 R5SS0启动。

    在这种情况下、默认 SBL 流程将不对您有效。 在针对 R5SS1_0调用 runCPU 后、需要将 CPU 放入 WFI。

    完成此步骤后、您可以从 R5SS1_0调用 runCPU 函数。 由于这种用例非常重要、我们从未尝试过您在几个位置更改驱动程序。

    是否可以对固件映像进行此序列加载(SBL 加载到 R5SS1拉杆到 R5SS0)?

    对我来说、这听起来是可能的、但需要一些更改。

    这将是该示例的流程图。

    我希望这对您有所帮助。

    此致、
    Aakash

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

    您好 Aakash、

    感谢您的快速响应、我认为这对我而言可能是一个可行的解决方案。

    我现在正在犹豫什么是更适合我的解决方案、因为我认为更改引导加载程序库函数并不容易。

    我们正在开发将在 R5SS0 (锁步模式)上运行的功能安全应用。
    我们的要求之一是对 R5SS0 (功能安全)的所有相关存储器区域进行 StuckAt-memory-test

    在启动期间一次性执行该测试就足够了。

    我们认为、实际上没有必要再运行固件的第二个内核。
    但现在、SDK 中的 pBIST 库就发挥了作用。

    根据我所理解的 pBIST 文档、为了测试 R5SS0的存储器、必须在 R5SS1上运行 pBIST。
    该 SDK 已提供两个预编译的 pBIST 配置、可在 R5SS0或 R5SS1上运行。 每个配置都会测试另一个内核的存储器并破坏存储器内容。

    昨天、我针对 pBIST 问题尝试了另一种解决方案。 我更改了 R5SS0的 pBIST 配置(文件 sdl_pbist_soc.c)。
    我将 Subsys_R5SS0的 SDL_PBIST_InstInfoArray 扩展成了 Subsys_R5SS0的所有条目、这些条目在 Subsys_R5SS1下面列出、只有我没有接管的存储器 L2_0、因为这里正在运行我的 SBL。
    (L2_0也从 RBL 中的 pBIST 进行检查)
    然后、我重新编译了 pBIST 库并在我的 SBL 中执行它(在 L2_0中的 R5SS0上运行)、然后在 R5SS0上加载我的功能安全固件。
    现在我的问题。

    修改 pBIST 库、尤其是配置本身是否符合发明者的利益?
    我宁愿包含 SDK 函数、而不进行我自己的任何更改。

    两种解决方案
    -启动 R5SS1/pBIST 执行、同时从 R5SS1额外启动 R5SS0、
    - pBIST-配置更改只能从 R5SS0执行
    需要更改 SDK 代码。

    是否有示例说明我必须如何背靠背运行这两个 pBIST 配置而无需更改预编译的 SDK 库(引导加载程序和 pBIST)?
    或许您可以大致描绘一下 pBIST 与相关内核结合的步骤是如何的?

    感谢您的努力和支持
    约瑟夫




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

    尊敬的 Jo Scho

    我在这里不是一个安全专家,但在 同一个复位周期中在同一个内存上运行两次 pBIST 真的是你的意图? 您真的想吗、这会使它  更安全

    ROM 已在部分存储器上执行 pBIST - https://dev.ti.com/tirex/explore/node?node=A__AVRt7VOfMlJSz4InbZKf4A__AM26X-ACADEMY__t0CaxbG__LATEST

    这不能解决您的问题吗?

    此致、
    Aakash

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

    尊敬的 Aakash:


    我认为、这不能解决我的问题、因为 R5SS0中有存储器区域、这些区域未经 RBL/ROM 中执行的 pBIST 测试。
    (例如 VIM0 RAM 和 R5SS0 RAM、我不知道这实际是什么、但我想这可能是 R5SS0的数据和指令缓存)。
    我不想做两次测试,为了达到"更多"的安全,我想做一些额外的内存测试,这不是从 RBL 完成的。

    我认为、一个重要的存储器区域、我应该在运行期间对 R5SS0控制器进行测试、即 VIM0 RAM 区域和 R5SS0 RAM。

    SDK 为 pBIST 提供了两种预编译配置、并建议在运行期间执行一次该 pBIST 测试。

    要在 R5SS0 (主要测试 R5SS1存储器)上执行的配置

    .memoryGroupsBitMap = 1U,/*选择 R5 STC*/
    .memoryGroupsBitMap = 1U,/*选择 R51 STC*/
    .memoryGroupsBitMap = 2u,/*选择 PBISTROM */
    .memoryGroupsBitMap = 5u,/*选择 CPSW*/
    .memoryGroupsBitMap = 6u,/*选择 ICSSM RAM */
    .memoryGroupsBitMap = 7u,/*选择 MBOX */
    .memoryGroupsBitMap = 8u,/*选择 MCAN */
    .memoryGroupsBitMap = 9u,/*选择 TPCC */
    .memoryGroupsBitMap = 11u、/*选择 MSS_L2_1 */
    .memoryGroupsBitMap = 12u,/*选择 MSS_L2_2 */
    .memoryGroupsBitMap = 13u,/*选择 MSS_L2_3 */
    .memoryGroupsBitMap = 15u,/*选择 VIM1 RAM*/
    .memoryGroupsBitMap = 28u,/*选择 R5SS1 RAM */
    .memoryGroupsBitMap = 16u,/*选择 VIM0 R5SS1 RAM*/
    .memoryGroupsBitMap = 17u,/*选择 VIM1 R5SS1 RAM*/
    .memoryGroupsBitMap = 23u,/*选择 MSS CR5B ATCM0*/
    .memoryGroupsBitMap = 24u,/*选择 MSS CR5B ATCM1*/
    .memoryGroupsBitMap = 25u,/*选择 MSS CR5B BTCM0*/
    .memoryGroupsBitMap = 26u,/*选择 MSS CR5B BTCM1*/

    将在 R5SS1上执行的配置(测试主要是 R5SS0存储器、这是我的功能安全应用最相关的存储器、因为这应在 R5SS0上运行)

    .memoryGroupsBitMap = 14u,/*选择 VIM0 RAM*/
    .memoryGroupsBitMap = 10u,/*选择 MSS_L2_0 */
    .memoryGroupsBitMap = 27u,/*选择 R5SS0 RAM */
    .memoryGroupsBitMap = 3U,/*选择 CR5A_ROM0 */
    .memoryGroupsBitMap = 4U,/*选择 CR5A_ROM1 */
    .memoryGroupsBitMap = 18u,/*选择跟踪*/
    .memoryGroupsBitMap = 29u,/*选择 MMCH0 */
    .memoryGroupsBitMap = 19u,/*选择 MSS CR5A ATCM0*/
    .memoryGroupsBitMap = 20U,/*选择 MSS CR5A ATCM1*/
    .memoryGroupsBitMap = 21u,/*选择 MSS CR5A BTCM0*/
    .memoryGroupsBitMap = 22u,/*选择 MSS CR5A BTCM1*/

    我的主要问题是,我不明白,我什么时候应该测试什么.
    据我了解、我需要第二个内核 R5SS1来对我的 R5SS0进行存储器测试。
    使用标准 SBL 时不起作用、因为在 R5SS1上加载和启动固件(R5SS0区域具有 pBIST)将损坏 R5SS0存储器区域。

    由于这个问题、我的想法是、用 pBIST 和 R5SS1启动 R5SS1、并在成功运行 pBIST 后将固件启动到 R5SS0、但 SDK 的引导加载程序不支持这一点...

    您能不能问您的 pBIST 专家和/或安全专家、如何针对所有 R5SS0区域执行 pBIST 测试(如应用手册)

    此致
    约瑟夫

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

    您好、Josef、

    很抱歉耽误你的时间。 我们将与主题专家联系、为您确定最佳的解决方案。

    此致、
    Aakash

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

    您好、Josef、

    当您修改文件  sdl_pbist_soc.c 以包含所有 R5FSS0 存储器时、您是否能够成功运行此示例?

    谢谢。此致、
    Vishwanath Reddy.

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

    您好 Vishwanath:

    我无法从 R5SS0运行所有测试、pBIST 在执行期间出现冻结。
    我必须禁用 VIM0 ram (bitmap 14)和 check  R5SS0 ram (bitmap 27)。

    我想、使用 VIM0的原因是、"pBIST 完成"是由中断评估的。 当我测试 VIM0区域时、pBIST 测试会破坏中断表...因此 pBIST 库永远无法检测到此测试的结束。 我认为 VIM0必须通过 R5SS1进行强制性测试、这是否正确?

    您能给我一些提示吗、R5SS0 ram 是什么? 这是 R5SS0的指令和数据缓存区吗?  

    谢谢。此



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

    您好、Josef、

    您可以从 R5SS0对 R5SS0 VIM0和 R5SS0缓存执行 PBIST。 运行 VIM0 PBITS 测试时、应该会禁用中断、并手动检查状态。  

    在启动 PBIST 序列之前、指令高速缓存和数据高速缓存都必须禁用。 因此、您可以执行 R5SS0将 PBIST 从 R5SS0进行缓存。

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

    尊敬的 QJ Wang:

    能否详细介绍一下 R5SS0的 VIM0测试?

    我认为 SDL 函数 SDL_PBIST_selftest ()不提供手动检查"测试完成"的可能性

    我是否必须基于函数 SDL_PBIST_selftest () m 开发我自己的"pBIST"功能 以从 R5SS0检查 VIM0 RAM?

    此致、

    约瑟夫

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

    您好、Joef、

    在执行 PBIST 测试之前、您需要禁用所有已启用的中断(UART0、RTI、PBIST)。 触发 PBIST 后、检查 VIM 通道71 (RAW)、如果被置位、则完成 PBIST。