2

Linux(3.0.35)を実行しているARMベースのプロセッサを搭載したボードを使用しています。ボードには1GBのRAMが搭載されており、高速SSDHDと5MPカメラに接続されています。

私の目標は、高解像度の画像をキャプチャして、それらをディスクに直接書き込むことです。

非常に長いビデオ(1GBを超えるデータ)を保存しようとするまでは、すべてうまくいきます。

大きなファイルを保存した後、カメラドライバーをリロードできないようです。ストリーミング用に十分な大きさのDMAメモリブロックを割り当てることができません(dma_alloc_coherent()を呼び出す場合)。

Linuxが起動し(ほとんどのメモリが使用可能な場合)、ランダムなデータを大きなファイル(> 1GB)に書き込もうとすると、カメラドライバーを読み込めないというシナリオに絞り込みました。

私の質問に-

書き込み用にファイルを開いたり、大量のデータを書き込んだり、ファイルを閉じたりすると、HDへのデータ書き込みに使用していたメモリが解放されるのではないでしょうか。

HDアクセス中にメモリが断片化する理由は理解できますが、HDへのトランザクションが完了すると、メモリがまだ断片化されているため、15MBの連続RAMを割り当てることができないのはなぜですか?

ありがとう

4

1 に答える 1

0

[...]ファイルを閉じます。HDへのデータの書き込みに使用されたメモリが解放されるはずではありませんか?

いいえ、キャッシュされます。これを確認できます/proc/meminfodma_alloc_coherent()関数が空きメモリのみを使用するかどうかは良い質問です。

于 2012-11-10T20:45:19.960 に答える