我使用的是高通8909平臺的,我在測驗mmc多塊單塊讀寫的時候,使用dd命令寫檔案,比如說我寫10byte,log列印blocks是8(EXT4的blocksize=4k),寫512K log列印的blocks是1024,寫1M則分兩次列印1024。那么DMA大小應該是512k吧(?)而代碼中SDMA的邊界值是512k,但是我這是使用的ADMA2。mmc->max_req_size = (host->adma_max_desc * 65536);之類的大小,我不太確定為什么會有這些?
host->adma_desc = dma_alloc_coherent(mmc_dev(host->mmc),host->adma_desc_sz,&host->adma_addr,GFP_KERNEL);
host->align_buffer = dma_alloc_coherent(mmc_dev(host->mmc),host->align_buf_sz,&host->align_addr,GFP_KERNEL);
而上面sdhci_add_host中的這兩個分配記憶體函式列印出來的size大小又對應不上512k(size分別是8200byte和2048byte),我現在有點蒙,不知道DMA的bufsize和起始地址到底在哪看。
再說DMA初始化階段就應該分配好一塊連續的物理記憶體,那么為啥后面代碼中又有scatter模式之內的?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/212956.html
標籤:驅動程序開發區
