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.

[参考译文] TMS570LC4357:MPU 重叠问题

Guru**** 2457700 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1125918/tms570lc4357-mpu-overlay-problem

器件型号:TMS570LC4357

大家好

   有一个背景区域、包括从0x0800_0000到0x0807_FFFF 的整个 SRAM。  该区域的属性为"MPU_PRIV_RW_USER_RO_NOexec | MPU_NORY_OIWBNOWA_NONSHARE"。

   2 、有一个区域6、从0x0800_0000到0x0801_0000。 该区域的属性为"MPU_PRIV_RW_USER_RO_NOexec | MPU_NORY_OIWBNOWA_NONSHARE"。

   此外、我还有一个覆盖区域4、范围为0x0800_0000至0x0803_0000、该区域的属性为"MPU_PRIV_RW_USER_RO_NOexec | MPU_NORY_OIWBNOWA_SHARed"。

  问题是、当我将区域6从非共享更改为共享时、MCU 将继续重启。 但是什么?

祝你一切顺利

锂离子电池

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

    您好!

    对于重叠的 MPU 区、优先级更高的区的属性和权限决定了对重叠区的存储器访问的属性和权限。  

    区域6 的优先级高于区域4。  

    什么操作会导致器件复位、存储器读取、存储器写入或从 SRAM 执行代码?

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

    "mpu_normal_OIWBNOWA_nonshared" ->"mpu_normal_OIWBNOWA_shared"

    Sharedable 具有特定的含义-->由多个处理器共享。 TMS570器件具有锁步配置、 第二个 CPU 内核是一个检查器/诊断通道、它不会独立运行。 我认为共享和非共享在 TMS570器件上没有任何影响。

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

    感谢您的回答。 我曾问过一个有关可共享和不可共享的问题。 我记得、如果这个区域是共享的、所有总线主控可以同时访问。 这里的主总线意味着 DMA、CPU、DMM、EMAC 等、但不是另一个 CPU。

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

    "什么操作会导致器件复位、存储器读取、存储器写入或从 SRAM 执行代码?"

    该项目基于 LWIP、复位原因可能是 DMA 转换。 区域6和区域4上有一个巨大的缓冲区。 因此、这个 buf 的部分可以共享、而复位可能不会共享。

    当我调试这个代码时、我发现我能够接收正确数据的一部分、但是其它部分为零。 在本例中、我认为 MPU 的配置可能有所不同

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

    您好、xy、

    请阅读 ARM TRM :DDI0460D_cortex_r5_r1p2_trm.pdf 中的说明

    处理器之间的共享或无共享方式、而不是器件中的总线匹配方式。  

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

    如果 DMA 或 CPU 访问已实现的存储器位置或不可访问的存储器位置、它将生成数据中止、而不是器件复位。 dabort 处理程序是否通过写入值(而不是0x1)来重置 SYSECR 的[1:0]来特意重置器件?

    您能否在 dabort 处理程序中添加断点以检查数据中止状态和地址寄存器(DFSR、DFAR)的值?

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

    感谢您的回答。

    请举一个例子、说明什么是已实现的内存或不可访问的内存?

    在我 看来、buf 位于 SRAM 中、我认为整个区域都是可访问的。

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

    未实现的存储器是超出有效范围的存储器位置。 不可访问存储 器是指在用户模式下配置为无访问且代码执行处于代码模式的存储器位置。  

    将 MPU 区6从非共享更改为共享后、代码是否会生成中止?

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

    您好!

    SHAREDRAM (RW):origin=0x0807C000 length=0x00004000

    #pragma SET_DATA_SECTION (".sharedRAM")
    unsigned int myValue= 28;
    uint8_t TX_DATA[8]={0、1、2、3、4、5、6、7};
    uint8_t RX_DATA[8]={0、2、4、6、8、9、1、3};
    #pragma SET_DATA_SECTION ()

    我像以前一样更改了 MPU 区15的 MPU 设置、一切都正常。 TX_DATA[]和 RX_DATA[]映射到此区域。

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

    如何将区域15设置为非共享?

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

    您好、Li、

    [~ userid="487390" URL"/support/microcontrollers/arm-based microcontrollers-group/arm-based microcontrollers/f/arm-based microcontrollers-forume/1125918/tms570lc4357-mpu-overlay-problem "]问题是、当我将区域6从非共享更改为共享时、MCU 将继续重启。 但是什么?[/引述]

    MPU 可以产生后台故障、权限故障和对齐故障。 当发生故障时、存储器访问或指令提取 会同步中止、并根据需要采取预取中止或数据中止异常。 所有这些故障不会导致器件重新启动。