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.
海宁志、您好!
我正在查看您的问题、您可能会收到 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(
pwrDmnNumInGrp, pwrDmnNumInGrp );
如果您在使用此宏时遇到任何问题、请告诉我。
很想知道如果我们在 MCU+SDK 中使用相同的宏、我们怎么不会看到任何问题。
此致、
Anil。
Anil、您好!
它位于./source/drivers soc / am64x_am243x/psc.c 文件中的函数 SOC_setPSCState 中 soc
我不知道是否也在当前版本中。 我使用的可能是旧版本9.0.0。 但这对我来说是没有问题的。
此致
海宁
海宁、您好!
上面的错误只是个错误、不会出现任何故障、因为当我们将地址值传递给宏时、每次得到返回值时都是0。 请使用上述建议方法、我将在内部提出错误以修复此问题。
此致、
Anil。
Sitara AM2434安全手册中有一个有关"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
此致
海宁志