2012-11-10 72 views
2

我正在使用基於ARM的處理器運行Linux(3.0.35)板。主板有1GB內存,連接到一個快速的SSD高清和一個500萬像素的攝像頭。編寫一個大文件可以防止大塊DMA分配

我的目標是捕獲高分辨率圖像並直接寫入這些磁盤。

一切順利,直到我試圖挽救一個很長視頻(超過1GB的數據),

節約了大量文件之後,似乎我無法重新加載攝像頭驅動程序 - 它失敗爲流分配足夠大的DMA內存塊(當調用dma_alloc_coherent()時)。我把它縮小到Linux引導的情況下(當大多數內存可用時),然後將隨機數據寫入大文件(> 1GB),並且當我嘗試加載相機驅動程序時,它會失敗。

我的問題 -

當我打開寫文件,寫了大量的數據,並關閉文件,是不是這是用於編寫應該被釋放的數據HD內存?

我能理解爲什麼內存的HD訪問期間變得支離破碎,但是當交易的HD完成 - 爲什麼是內存還是非常零碎,以至於我不能分配連續的RAM 15MB的?

感謝

回答

0

[...]關閉文件,不將其用於編寫應該將數據HD的內存被釋放?

不,這將是緩存,您可以檢查/proc/meminfo這一點。 dma_alloc_coherent()函數是否只使用空閒內存是一個很好的問題。

+0

確實。好的可能性是寫入閃存的速度相對較慢,並且沒有15MB的空閒頁面用於DMA引腳。 – marko

+0

謝謝Turbo!但是當涉及到新的內存分配時,緩存內存是否被認爲是免費的?另外,如果我放棄緩存,問題仍然存在... – oferlivny

相關問題