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.

[参考译文] TDA3:IPU1_0和 IPU1_1之间的连接

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/617790/tda3-connection-between-ipu1_0-and-ipu1_1

器件型号:TDA3

大家好、

是否可以从引导加载程序解析和启动 IPU1_0 (主)内核、并从应用程序(在 Vision SDK 2.12.01中)解析和启动 IPU1_1内核?

我想启动 IPU1_0、稍后再启动将解析、加载和引导 IPU1_1的应用程序。 这是可行的吗? 这两个内核之间是否存在任何可能导致问题的特殊连接?

提前感谢、

Jho。

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

    我已将您的问题转交给 VisionSDK 专家。

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

    您好 Jho、

    您可以按照以下步骤从 Vision SDK 应用程序引导 IPU1_1映像。 您还需要修改 SBL 代码才能实现这一点。

    SBL 会在 DDR 的 while 环路中保留 IPU1_1循环、以防找不到相应的应用程序映像。 您需要删除此代码。

    代码为:

    /*设置 while (1)循环*/
    HW_WR_REG32 (((SBLLIB_IPU1_Core1_BOOT_ADDRESS_NO_IMAGE - 1U)、0xE7FE7FEFEFEEEU);
    
    SBLLibPrintf (SBLLIB_TRACE_LEVEL_IMP_INFO、
    "\n 未找到 IPU1 CPU1应用程序、切换到 while Loop \n");
    HW_WR_REG32 (SBLLIB_IPU1_CORE_1_INPLE_POINT_ADDRESS、
    SBLLIB_IPU1_Core1_BOOT_ADDRESS_NO_IMAGE); 

    2.执行1会导致 IPU1_1在 OCMC RAM 中的 while 循环中。 Vision SDK 应用程序不应使用0x0到0x200偏移的 OCMC RAM。

    3、VISION SDK 应用应解析/加载 IPU1_1的应用映像、并在 SBLLIB_IPU1_CORE_1_INPLE_POT_ADDRESS 设置入口点。

    通过这些更改、两个 IPU 内核都可以正常工作。 应注意、IPU1_1映像不会重新配置 Ammu、因为它可能会导致 IPU1_0崩溃。

    此致、

    Rishabh

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

    我已经尝试过这个、但我有一个问题。 当我对应用程序中的 IPU1_1执行所有操作(解析、加载、引导)时、它不起作用、但当我将函数 SBLLibRprcImageParse (对于 IPU1_1)放入引导加载程序时、我执行其余操作:

    HW_WR_REG32 (SBLLIB_IPU1_CORE_1_INPLE_POINT_ADDRESS、
    gEntryPoints.Entrypoint[SBLLIB_CORE_ID_IPU1_CPU1])

    它在工作。
    这对我来说很奇怪、我看不到这种行为的原因。 IPU1_0和 IPU1_1之间是否缺少某种连接?

    提前感谢、

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

    您好 Jho、

    IPU1是一个双核系统、其中 Core0是主器件、Core1是从器件。 当 RBL 将控制权交给 SBL 时、Core1保持在 WFE 中。

    为了获得可配置矢量表、SBL 将把0x0重新映射到 IPU RAM 而不是 ROM。 如果在重映射0x0后 SEV 被发送到 core1、则会发生硬故障。 因此、SBL 在重映射0x0之前唤醒 Core1。

    SBL 在 OCMC 中设置 while 循环。 SBL 将 OCMC 地址传递给 AUXBOOT、以便在发送'EV' Core1时跳转到 OCMC 并在那里循环。 解析应用程序映像后、SBL 将 IPU1_1的入口点传递给它、IPU1_1从 OCMC 跳转到此位置。

    此致、
    Rishabh

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

    从代码和数据表中可以清楚地看到这一点。 让我感到困惑的是、为什么我的应用程序仅在从 SBL 解析 IPU1_1映像时才能正常工作? 当 IPU1_0是主器件时、在 SBL 和应用程序中解析 IPU1_1映像有何区别?

    提前感谢、

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

    当您从 IPU1_0应用程序解析时、IPU1_1映像也可以正常工作。
    失败的一个可能原因可能是在0x0位置有一些可加载的段、该段写的是内核0的矢量表。
    您能检查一下吗? 谢谢。

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

    我将进行检查。
    EDMA 可能是这里的问题吗? 我是否需要在应用中再次初始化它?

    提前感谢、

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

    问题不在 EDMA 上。 问题可能出在矢量表。
    两个 IPU 内核的矢量表都位于0x0。
    当 BIOS 出现在 Core1上时、它会将矢量表基址更改为其他内容、但可能会在0x0处有可加载段、该段会覆盖 Core0的矢量表(Core 0已在运行)。

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

    如果这样做是为了避免这种情况、还是最好返回并从 SBL 解析 IPU1_1?

    提前感谢、

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

    您好 Jho、
    我刚才为调试提供了一个指针。 我不确定上述情形是否是故障的确切原因。 从应用程序映像或 IPU1_1引导取决于用例。 您可以从任一位置引导。
    此致、
    Rishabh

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

    我还认为我应该能够从两个位置启动它、但仍然、当我将 SBLLibRprcImageParse (对于 IPU1_1)函数放入 SBL 时、它可以正常工作、但当我将其放入应用程序时、它不起作用。 此解析函数会产生影响。

    提前感谢、

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

    我还认为我应该能够从两个位置引导它、但当我将 SBLLibRprcImageParse (用于 IPU1_1)函数放入 SBL 并从应用程序引导时、它仍然有效、但当我将该函数放入应用程序时、它不起作用。 此解析函数会产生影响。

    提前感谢、

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

    您是否有 Vision SDK 软件包?

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

    是的、我使用的是 VisionSDK 2.12.01。

    提前感谢、

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

    您需要调用 API SBLLibMultiCoreImageParseV2来解析 Vision SDK 映像中的应用映像。 您还需要初始化一些 SBL Lib 结构。
    请参阅 utils_boot_slaves.c 中提供的 Utils_bootSlaves API 此 API 可为 TDA3xx 器件引导 DSP1、DSP2和 EVE1。

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

    我查看了 Vision SDK 代码。 如果数据大小小于1KB、SDK 的 DMA API 正在进行内存复制、但 SBL 库会给出 L3地址、因为到 IPU RAM 的复制可能会失败。
    请将所有内容更改为 EDMA、然后尝试。

    此致、
    Rishabh