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.

[参考译文] AM263P4-Q1:有关需要访问权限的区域以及使用 MPU 防火墙进行写入所需的设置

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1626865/am263p4-q1-regarding-the-areas-that-require-access-permissions-and-settings-for-writing-with-the-mpu-firewall

器件型号: AM263P4-Q1

我已使用 MPU 防火墙设置闪存区域的访问权限、如下所示:
1.0x60000000~0x604C0FFF ... R
2. 0x604C1000~0x60982FFF ... R/W

在这种情况下、向第二个区域写入时、会在 0x60000000 处发生写入操作、导致中止。
是否有办法防止这种情况发生?
如果不是、请指定 W 访问必须允许的地址范围。
(例如 0x60000000~0x600003FF)


——中止时调用堆栈——
Texas Instruments XDS110 USB 调试 Probe_0/Cortex_R5_2(已暂停)  
  cslr.h:331 0x70171B82 处的 CSL_REG32_WR_RAW ()  
  ospi_v0.c:1941 0x70171B80 处的 OSPI_writeFifoData ()  
  ospi_v0.c:1497 0x70171B70 处的 OSPI_writeIndirect ()  
  flash_nor_ospi.c:978 0x701767CC 处的 Flash_norOspiWrite ()  
  flash_write_driver ()、位于 kc_flash.c:670 0x701AFE44   
  flash_write_program ()、位于 kc_flash.c:950 0x701AFCA2  
  kc_flash.c:484 0x701AEF80 处的 FLASH_UPDATE_DATA ()   
  kc_task_flash.c:226 0x701AFEB8 处的 task_flash_proce_message ()  
  task_flash_main ()、位于 kc_task_flash.c:124 0x701AFF20  
  TaskP_exit ()[C:\Users\E211094\git\trim_2\kcmd30_core1-0\SysDebug\kcmd30_core1-0.out]、位于 0x7016E456

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

    尊敬的 Imaoka-San:

    在 INDAC 写入中、外部 AHB 主器件在此模式下、CPU 或 DMA 需要向 OSPI 控制器提供数据。 要写入数据的地址在  INDIREATE_WRITE_XFER_START_REG 中进行配置。 然后、我们需要写入闪存的数据被写入 OSPI FIFO、该 FIFO 位于 0x6000_0000 地址。 这是向控制器提供数据的方式。

    由于在 INDAC 模式下、我们需要将数据写入 OSPI FIFO 寄存器、因此写入将变为 0x6000_0000。 这是 OSPI 控制器的一个属性、无法避免。

    您能否提供对区域 1 的 W 访问权限并查看是否出现异常?

    此致、

    Aswin

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

    尊敬的 Aswin:

    向 W 授予 0x60000000~0x600003FF 的访问权限消除了中止。

    请确认以下事项:
    *区域 1 0x60000000~0x600003FF 的范围是否为?
    *无法保护“区域 1“不受意外写入的影响是正确的吗?
    *如果不执行对闪存的写入,是否没有必要授予“区域 1“的 W 访问权限?

    此致、

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

    尊敬的 Imaoka-San:

    区域 1 0x60000000~0x600003FF 的范围是多少?
    [/报价]

    该写入的起始地址将始终为 0x6000_0000。 但结束地址可以达到最大值 0x6000_0000 + 0x100。 这是因为写入以页面写入的形式发生、最大页面写入大小为 0x100。 可以在 Flash_norOspiWrite() API 中看到该实现、在该 API 中完成了 256 字节大小的写入。

    您是否可以通过授予 W 权限 (0x6000_0000 到 0x6000_0000 + 0x100) 来进行检查?

    不能保护“区域 1“不受意外写入的影响吗?

    这些仅作为 INDAC 写入操作的一部分进行写入。 是的、我们不能避免在该区域写入。

    如果未执行闪存写入操作、是否不需要授予“Region 1“的 W 访问权限?

    是、从闪存驱动程序的角度来看、仅对闪存写入 API 内的此区域进行写入。 因此、如果不存在闪存写入、则可以避免这种情况。

    此致、

    Aswin

    [/quote]