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.

[参考译文] TDA4VM:如何重新配置 MPU_CFG (gCslR5MpuCfg)?

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1197565/tda4vm-how-to-reconfigure-mpu_cfg-gcslr5mpucfg

器件型号:TDA4VM

您好、专家:

SDK 版本:07_03

我们的引导流程如下所示:



SBL、Bootmanager、闪存引导加载程序应用都在 MCU1_0上运行。

目前、SBL 将配置一次 MPU 配置、在跳转到 bootmanager 之后、bootManager 将再次配置 MPU 配置、然后不再配置 MPU。
但我们希望闪存引导加载程序和应用程序使用不同的 MPU 配置。

我试图在 FBL 和应用程序的启动代码中调用 mpu_init()函数,但它会崩溃。

MPU 的配置是否在 MPU_init 中实现?  如何实现(使用不同的 MPU 配置)?

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

    您好!

    您在配置时面临的问题是什么? 是否刚刚尝试过从您的应用中进行 MPU 配置? 它会崩溃吗?
    我们提供了一些示例、其中 MPU 配置也是在应用中完成的。 请参阅以下位置的 MPU 配置示例: drv/spi/test/ospi_flash/j721e/cached/mpu_config.c

    此致、
    帕尔特

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

    您好、专家:

    我们的引导流程如下所示:

    [/报价]

    ,专家:

    让我们专注于此引导流程:SBL -> AutosarBootmanager -> Autosar Flash 引导加载程序:

    据我所知、SBL 有自己的 MPU Cfg、我们通过调用 MPU_init 函数在 AutosarBootmanager 阶段对其进行重新配置。 但是、我们不能在 FBL 阶段再次调用 MPU_init 函数(我想这可能是因为在 Autosar 中使用了 JSR 来跳转到 FBL 的入口地址)。因此,我曾尝试在 FBL 的 main 函数中调用 CSL_armR5MPUCfg 函数、就会崩溃。

    我们的主要目标是使 BootManager 阶段中使用的 MPU CFG 与 FBL 阶段中使用的 MPU CFG 不同。您能给我们一些实现它的方法吗?

    如果您需要任何其他信息、请告诉我。

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

    大家好

    您能否确认  AutosarBootmanager 和 Autosar 闪存引导加载程序之间没有 R5F 复位、并且这只是跳转到下一阶段的入口点(JSR 跳转到子路由?)?

    此致

    Karan

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

    您好、专家:

    [quote userid="380126" url="~/support/processors-group/processors/f/processors-forum/1197565/tda4vm-how-to-reconfigure-mpu_cfg-gcslr5mpucfg/4516994 #4516994"

    您能否确认  AutosarBootmanager 和 Autosar 闪存引导加载程序之间没有 R5F 复位、并且这只是跳转到下一阶段的入口点(JSR 跳转到子路由?)?

    [/报价]

    是的、JSR 只是一个跳转、没有 CPU 复位。  

    #define JSR(x)          (((void(*)(void))(x))())   /**< Jump to subroutine */
    

    也就是说、如果我想重新配置 MPU CFG、我需要执行 CPU 复位?  如何实现?

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

    您好!

    MPU 重新配置有点棘手、并且在 SDK 中未进行良好测试。 如果可能、最好进行 R5复位。
    否则、重新配置的顺序应为:

       cache_wbInvAll 以确保所有脏行都被提交到 L2存储器
       禁用缓存
       禁用 MPU
       配置 MPU
       启用 MPU
       启用缓存

    重新配置 MPU 时执行的数据结构和代码应放置在 不会导致数据或预取中止的段中。

    此致、
    帕尔特

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

    您好!

      我们将在稍后尝试这些步骤、非常感谢。