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.

[FAQ] [参考译文] [FAQ] MCU-plus-SDK-AM243X:MCU+ SDK 中的 R5F MPU 配置

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1088420/faq-mcu-plus-sdk-am243x-r5f-mpu-configuration-in-mcu-sdk

部件号:MCU-plus-SDK-AM243X

TI 专家:您好!

AM263x,AM273x 和 AM243x 的 MPU 配置中的第一个条目包含一个大部分,如下所示:

  {

        .baseAddr = 0x0u,
        .size = MpuP_RegionSize_2G, //for AM273x it is 4G
        .attrs = {
            .isEnable = 1,
            .isCacheable = 0,
            .isBufferable = 0,
            .isSharable = 1,
            .isExecuteNever = 1,
            .tex = 0,
            .accessPerm = MpuP_AP_S_RW_U_R,
            .subregionDisableMask = 0x0u
        },
    },
此 MpuP_RegionSize_2G 基本上涵盖0x0U 到0x8000000000U,并授予所有地区 RW 访问权限,包括所有 TCMA 和 TCMB 以及 onChip RAM。
因此,SDK 示例似乎尝试解锁所有2G 空间,然后在以后配置每个小节。
问题:
1.为什么需要这一解锁-先解锁-后解锁-单个步骤?
2.似乎如果我删除了第一个2G 解锁步骤,则我的应用程序无法运行,并在系统内部执行 hwip_init()时被困在 HwipP 中止处理程序中。 如果我没有先解锁整个2G,您能帮我理解问题是什么?
3.这种2G 解锁对我来说似乎有风险,因为默认情况下它会打开对该 CPU 的所有内存访问,我们可能希望相反-明确允许 CPU 对某些区域具有写入访问权限,如果未指定,则默认情况下它应该是只读的。 如果我们有更好的方法来处理此 MPU 初始化,请告诉我。  
 
此致,
普拉萨德
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    [引用 userid="121564" url="~/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1088420/FAQ-MCU-plus-SDK-am243x-am2x--r5f-MPU-configure-IN-MCU-SDK"]
    1.为什么需要这一解锁-先解锁-后解锁-单个步骤?
    [/引用]

    由于 MPU 区域有限(只有16个),因此所采用的方法是:  

    标记背景区域以获得完全可寻址空间(4G/2G)。-

    此区域标记为

    -不可执行

    -主管 R/W

    -用户读取

    -有序的不可缓存内存

    此背景区域的主要用途是允许访问大多数内存映射寄存器,而无需为应用程序中访问的每个寄存器空间添加显式 MPU 条目。 根据需要访问的不连续注册区域的数量,16个 MPU 条目可能会用完。

    然后,其他 MPU 条目会标记不同的可执行代码区域,可缓存区域等

    此背景 MPU 区域不是强制性的,可以设置 MPU 条目,只允许应用程序访问明确的区域,但这需要标识每个寄存器访问/内存访问,并显示允许访问这些区域的 MPU 区域,同时满足不超过16的限制 MPU 条目。 最好在应用程序开发完成后执行此操作,以便将 MPU 条目调整为特定应用程序的内存访问。 建议在初始应用程序开发过程中使用允许的背景区域,并在功能完成后删除背景区域,并在需要时创建明确的 MPU 条目。

    SDK 尝试使用适用于所有应用程序的通用 MPU 配置,因此使用了这一大背景区域

    [引用 userid="121564" url="~/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1088420/FAQ-MCU-plus-SDK-am243x-am2x--r5f-MPU-configure-IN-MCU-SDK"]
    2.似乎如果我删除了第一个2G 解锁步骤,则我的应用程序无法运行,并在系统内部执行 hwip_init()时被困在 HwipP 中止处理程序中。 如果我没有先解锁整个2G,您能帮我理解问题是什么?
    [/引用]

    关于以下问题,数据中止是由于 R5 VIM RAM,VIM 寄存器缺少 MPU 条目。 如果删除背景 MPU 区域,则必须显式添加这些区域。

    [引用 userid="121564" url="~/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1088420/FAQ-MCU-plus-SDK-am243x-am2x--r5f-MPU-configure-IN-MCU-SDK"]
    3.这种2G 解锁对我来说似乎有风险,因为默认情况下它会打开对该 CPU 的所有内存访问,我们可能希望相反-明确允许 CPU 对某些区域具有写入访问权限,如果未指定,则默认情况下它应该是只读的。 如果我们有更好的方法来处理此 MPU 初始化,请告诉我。  
    [/引用]

    如前所述,一个大区域不是强制区域,我们将其添加到 SDK 中,以使其对所有应用程序保持通用。 客户可以随意删除它并添加单个条目。

    此致,

    普拉萨德(在巴德里的帮助下)