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.

[参考译文] AM275-FREERTOS-SDK:AM275x (AUDIO-AM275_EVM) 调用 OSPI_readIndirect 时发生了数据中止异常中断

Guru**** 2864540 points

Other Parts Discussed in Thread: AUDIO-AM275-EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1637649/am275-freertos-sdk-am275x-audio-am275_evm-data-abort-exception-interrupt-occurred-when-invoking-ospi_readindirect

器件型号:AM275-FREERTOS-SDK
Thread 中讨论的其他器件: AUDIO-AM275-EVM

我们在 AUDIO-AM275-EVM 板上使用 FREERTOS_SDK_am275x_11_01_00_16
根据 SDK 示例工程“ospi_flash_io",“,我们、我们通过修改函数 ospi_flash_IO_main 来调用 OSPI_readIndirect、如下所示:

void ospi_flash_IO_MAIN (void *args)

  OSPI_事务 转换;

  memset ((void *)&trans、0、sizeof (OSPI_Transaction));
  Trans.count = 256;
  trans.buf = g_readbuf;
  TRANS.addrOffset = 0;
  OSPI_readIndirect (gOspiHandle[0]、&trans);
}

在 OSPI_readIndirect 中调用 OSPI_readFifoData 时发生了数据中止异常。

/*从 FIFO 读取数据*/
OSPI_readFifoData (attrs->dataBaseAddr、pDst、readBytes);

其中 attrs->dataBaseAddr 为 0x60000000 (CSL_FSS0_DAT_REG1_BASE)
在 OSPI_readIndirect 中禁用直接访问后、0x60000000 似乎是一个非法地址。

以下是调用 OSPI_readFifoData 之前 FSS0_ospi_flash 的寄存器状态。

image.png

1.间接读取中 OSPI_readFifoData 的 fifo 地址应该是什么?
2.它是否与 OSPI_FLASH_CFG_IND_AHB_ADDR_TRIGGER_REG 和 OSPI_FLASH_CFG_INDIRECT_TRIGGER_ADDR_RANGE_REG 寄存器相关?
  IND_AHB_ADDR_TRIGGER_REG:0x04000000
  INDIREATE_TRIGGER_ADDR_RANGE_REG:0x00000004

随附了项目文件: [project]ospi_flash_io.zip 

 

  

 

 

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

    尊敬的 Chen:

    要使用 INDAC 读取、

    在 OSPI 选项卡的 Read Mode 选项中启用 READ_MODE_INDAC。 然后使用默认的 Flash_read API。 OSPI_readIndirect() 将自动调用。

    这是推荐的实现方式、我已验证 INDAC 读取在该实现中是否有效。

    此致、

    Aryamaan Chaurasia