最近遇到一个问题,Trim CMD 的 DMA xfer 沒有done 。那什么是DMA xfer 呢?
DMA:Direct memory access controller,直接存储器存储。DMA可以实现数据在外设与存储器、存储器与存储器之间的快速转换,且不需要CPU的干预,这样就可以释放CPU的资源,让CPU干其他的事情,提高效率。有的STM32芯片有两个DMA,有的就只有一个DMA,这个要查具体的芯片手册。
xfer就是转移,移交的意思。记录一下。
IO CMD IN
nvme_cmd idx:9 free:59
reqs [0x83f48] id:[4] free:[59] min-free[59] nvme_cmd[59]
NvmeCmd_IO : [9]
NvmeCmd_Trim nr:1 att:4
MEM_ALLOC - nvmet_alloc_admin_res
CPU[1] SZ[0x8] align[4] FreeADR[0x201fee10] AllocADR[0x201fee10] Wasted[0]
get Dtags(0x1f3): mem(0x201f3000) cnt(4)
get Dtags(0x1f4): mem(0x201f4000) cnt(3)
MEM_ALLOC - nvmet_map_admin_prp_check
CPU[1] SZ[0x20] align[4] FreeADR[0x201fee28] AllocADR[0x201fee28] Wasted[0]
NVME_P0 2
/***** CC.EN 0 *****/
FdIORunning: 0x1 BdIORunning: 0x0