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.

[参考译文] AM2434:如何隔离主域和 MCU 域?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1444635/am2434-how-can-the-main-and-mcu-domain-be-isolated

器件型号:AM2434

工具与软件:

Sitara AM2434安全手册中有一个有关"MCU 域与主域的物理隔离"的说明。

每个域都包含专用域 外设 这样
GPIO、I2C、UART、SPI、互连 与配置逻辑。 这可确保 MCU 中的 M4F
通道可使用专用资源独立执行。 启动 AM64x 器件后、MCU
可以将域配置为与主域隔离。 这是通过启用时钟门控隔离实现的。

我们的目标是确保主域不应访问 MCU 域的外设。

我还找到一个示例 mcu_plus_sdk_am243x/examples/drivers/safety/reset_isolation/reset_isolation_mcu_domain.c、并调用函数 SOC_enableResetIsolation (...) 使用以下参数。

   /* Disabling Main2MCU PSC. This would restrict the main domain from accessing
    MCU domain peripherals/registers. Care must be taken no Main domain cores access
    MCU domain registers after this */
    pscMain2MCUDisable = 1;

我尝试在 C++中将代码集成到 OUT 项目中、并尝试从主域访问 GPIO 引脚。 隔离似乎无法正常工作。 GPIO 仍可以切换。

您能帮助我找到我的错了什么吗? 应该如何配置它。

类文件已上载

e2e.ti.com/.../SitaraMcuIsolation.cpp.txte2e.ti.com/.../SitaraMcuIsolation.hpp.txt

此致

海宁志

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

     海宁志、您好!

    我正在查看您的问题、您可能会收到 EOD 的回复。

    此致、

    Anil。

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

     海宁志、您好!

    我尝试将代码集成到 C++中的 Out 项目中、并尝试从主域访问 GPIO 引脚。 隔离似乎无法正常工作。 仍可以切换 GPIO。[/QUOT]

    通过上述代码、您可以从 MCU 域访问主域外设。

    此外、您 无法从主域访问 MCU 域外设。

    请确认 您切换的 GPIO 引脚(MCU 或 MAIN)是哪个  ?

    实际上、如果您将 MCU 内核与主域隔离、则不应   在 MCU 域中使用主域外设、在主域中使用 MCU 域外设。

    您需要集成 MCU+SDK 中提供的相同应用、它可以完全满足您的要求。

    如果您设置 以下 标志、SOC 将无法访问跨域访问。

    如果您禁用它们并将其设置为0、则 SOC 可以访问跨域访问。

    PscMain2MCUDisable = 0;

    pscMCU2MainDisable = 0;

    [报价用户 id="325755" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1444635/am2434-how-can-the-main-and-mcu-domain-be-isolated "]

    我们的目标是确保主域不应访问 MCU 域的外设。

    [报价]

    如果以上是您的要求、请设置以下标志。

    pscMain2MCUDisable = 1;

    pscMCU2MainDisable = 1;

    此致、

    Anil。

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

    Anil、您好!

    请确认 您切换的 GPIO 引脚(MCU 或 main)是哪一个  ?

    MCU_GPIO0_16从 R5F 切换。 它连接到我们电路板上的 LED。 当 pscMain2MCUDisable = 1时、LED 仍然闪烁;

    此致

    海宁志

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

     海宁志、您好!

    您能否请尝试以下标志、看看您是否能够从主域控制 MCU GPIO?

    pscMain2MCUDisable = 1;

    pscMCU2MainDisable = 1;

    [报价 userid="325755" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1444635/am2434-how-can-the-main-and-mcu-domain-be-isolated/5542012 #5542012"]

    MCU_GPIO0_16从 R5F 切换。 它连接到我们电路板上的 LED。 当 pscMain2MCUDisable = 1时、LED 仍然闪烁;

    [报价]

    即使采用上述设置,您也不应从 R5F 内核访问 MCU GPIO。

    请分享您的测试程序。 以及您是如何从 CCS 中加载 M4F/R5F 示例的呢?

    此致、

    Anil。  

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

    Anil、您好!

    当两个标志都设置为1时、情况是相同的。

    此致

    海宁

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

    Anil、您好!

    我也直接尝试了 TI-SDK 示例。 效果很好。

    其他问题:CSL_REG32_fins 和 CSL_fins 的功能是否不同? 它是函数 SOC_setPSCState()中的唯一更改。

    是否有任何关键时间点调用函数 SOC_enableResetIsolation()? 也可以在启动后随时调用?

    此致

    海宁

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

    海宁、您好!

    其他问题:CSL_REG32_fins 和 CSL_fins 的功能是否有区别? 它是函数 SOC_setPSCState ()中的唯一变化。

    就功能而言、没有区别、两者是相同的。

    但使用 CSL_REG32_fins 宏命令、因为此宏命令是使用 volatile 关键字定义的变量。

    [报价用户 id="325755" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1444635/am2434-how-can-the-main-and-mcu-domain-be-isolated/5545662 #5545662"]

    是否有任何关键时间点调用函数 SOC_enableResetIsolation()? 也可以在启动后随时调用?

    [报价]

    很好的一点是、在 M4F 内核应用程序运行之前、您可以在 M4F 内核中的所有驱动程序初始化之后调用 SOC_enableResetIsolation。

    此致、

    Anil。

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

    Antil 您好!

    是否只需要调用 SOC_enableResetIsolation()函数来阻止 main2mcu 隔离? 是否必须进行任何其他设置?

    此致

    海宁

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

     海宁、您好!

    如上所述、 MAIN2MCU PSC 和 MCU2MAIN PSC 已 禁用、因此跨域功能不起作用。

    这些更改在 SOC_enableResetIsolation API 中可用、除此之外、我们在任何地方都不会进行更改。

    积分后的积分 SoC_enableResetIsolation resetReqIsr API 在您的应用程序中、已执行所有重置隔离更改、用户无需进行任何其他更改。

    在 SBL 中、我们还需要检查 M4F 内核是否已隔离、如果已隔离、那么我们不应该为每个 WarmReset 重新初始化 M4F 内核时钟配置。 这在 SBL 中已经考虑过。  同样、用户无需考虑任何其他步骤。

    此致、
    Anil。

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

    您好!

    我不确定我是否理解这条线是否正确。 这里的宏调用 CSL_FEXTR 是什么? 特定位的内容、该怎么办? 或者简单地检查寄存器的地址? 因为"reg"是地址本身。

    pdTransStatus = CSL_FEXTR( baseAddr + CSL_PSC_PTSTAT(pwrDmnGrp), \
                                    pwrDmnNumInGrp, pwrDmnNumInGrp );

    /* the Field EXTract (Raw) macro */
    #define CSL_FEXTR(reg, msb, lsb)                                            \
        (((reg) >> (lsb)) & ((((uint32_t)1U) << ((msb) - (lsb) + ((uint32_t)1U))) - ((uint32_t)1U)))

    此致

    海宁

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

     海宁、您好!

    是的、您回答正确。 当我们调用上述 API 时、我们需要传递一个地址内容。

    如下所示:

    pdTransStatus = CSL_FEXTR(

    (*(volatile uint32_t *)( baseAddr + CSL_PSC_PTSTAT (pwrDmnGrp))、\

                                    pwrDmnNumInGrp, pwrDmnNumInGrp );

    如果您在使用此宏时遇到任何问题、请告诉我。

    很想知道如果我们在 MCU+SDK 中使用相同的宏、我们怎么不会看到任何问题。

    此致、

    Anil。

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

    Anil、您好!

    它位于./source/drivers soc / am64x_am243x/psc.c 文件中的函数 SOC_setPSCState 中 soc

    我不知道是否也在当前版本中。 我使用的可能是旧版本9.0.0。 但这对我来说是没有问题的。

    此致

    海宁

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

     海宁、您好!

    上面的错误只是个错误、不会出现任何故障、因为当我们将地址值传递给宏时、每次得到返回值时都是0。 请使用上述建议方法、我将在内部提出错误以修复此问题。

    此致、

    Anil。