我正在使用基於ARM的處理器運行Linux(3.0.35)板。主板有1GB內存,連接到一個快速的SSD高清和一個500萬像素的攝像頭。編寫一個大文件可以防止大塊DMA分配
我的目標是捕獲高分辨率圖像並直接寫入這些磁盤。
一切順利,直到我試圖挽救一個很長視頻(超過1GB的數據),
節約了大量文件之後,似乎我無法重新加載攝像頭驅動程序 - 它失敗爲流分配足夠大的DMA內存塊(當調用dma_alloc_coherent()時)。我把它縮小到Linux引導的情況下(當大多數內存可用時),然後將隨機數據寫入大文件(> 1GB),並且當我嘗試加載相機驅動程序時,它會失敗。
我的問題 -
當我打開寫文件,寫了大量的數據,並關閉文件,是不是這是用於編寫應該被釋放的數據HD內存?
我能理解爲什麼內存的HD訪問期間變得支離破碎,但是當交易的HD完成 - 爲什麼是內存還是非常零碎,以至於我不能分配連續的RAM 15MB的?
感謝
確實。好的可能性是寫入閃存的速度相對較慢,並且沒有15MB的空閒頁面用於DMA引腳。 – marko
謝謝Turbo!但是當涉及到新的內存分配時,緩存內存是否被認爲是免費的?另外,如果我放棄緩存,問題仍然存在... – oferlivny