Преглед изворни кода

CPU工程更新:
1.优化了emmc使用dma读数据传输完成后未刷新cache导致读到数据错误异常(高带宽条件下);

helen пре 6 месеци
родитељ
комит
4dc7040861

+ 4 - 0
amt630hv160-freertos-beta/ArkmicroFiles/libcpu-amt630hv160/source/sdmmc.c

@@ -1373,11 +1373,15 @@ static int ark_mmc_start_transfer(struct mmc_driver *mmc_drv)
 				}
 			} else if (data->flags & DATA_DIR_READ) {
 				if (mmc_obj->rx_dummy_buffer) {
+					CP15_invalidate_dcache_for_dma((u32)mmc_obj->rx_dummy_buffer, (u32)mmc_obj->rx_dummy_buffer + data->blks * data->blksize);
 					memcpy(data->buf, mmc_obj->rx_dummy_buffer, data->blks * data->blksize);
 					vPortFree(mmc_obj->rx_dummy_buffer);
 					mmc_obj->rx_dummy_buffer = NULL;
 				}
 			}
+		} else {
+			if (data->flags & DATA_DIR_READ)
+				CP15_invalidate_dcache_for_dma((u32)data->buf, (u32)data->buf + data->blks * data->blksize);
 		}
 	} else {
 	    reg = MMC_GetInterruptMask(mmc_obj);