工具/软件:Code Composer Studio
你好!
我对 MMCSD 驱动程序和 DMA 的使用有疑问。
我们已转到 PDK 1_0_17和 CCS 9.3
我们遇到了一个问题,MMCSD_open()有时会挂起,我们需要重新启动系统。
当我们将 MMCSD 驱动程序配置为使用中断(无 DMA) 10时、它似乎正常工作、但一旦我们将其配置为使用*。cfg 文件中的 DMA、并对其进行 C 代码随机失败。
之前、我们有一个修改过的 MMCSD 驱动程序与 PDK_1_0_8 ( 正在工作)一起使用。
我一直在研究驱动程序、我认为我可能会发现一个错误。
如果在使用 DMA 时读取完成后没有 cache_invalidate、请参阅下面带粗体标记的行
文件 MMCSD_v1.c 中的第2681行至2697行:
*在此处等待传输完成。
*可以从这里阻止、因为 MMCSD 的 Hwi 将解除阻止
*出错时
*
已启用#ifdef MMCSD_EDMA_ENABLED
if (0U!= hwAttrs->enableDma && transaction->cmd!=MMCSD_CMD (19U))
{
IF (HS_MMCSD_Xfer_TYPE_RX == cmdbj.cmd.xferType)
{
MMCSD_osalPendLock (object->readSem、SemaphoreP_WAIT_FOREVER);
MMCSD_osalCache_Inv(对象->dataBufIdx,(事务->blocksize *事务->blockCount));
}
其他
{
MMCSD_osalPendLock (object->writeSem、SemaphoreP_WAIT_FOREVE);
}
}
#endif
添加后、我们的系统似乎可以使用 DMA 正常工作
是否有人可以验证这是否正确。
迁移到 PDK_1_0_17后、其他所有内容都可以正常工作。 :-)
巴西(BR):
PER-Anders Strand