2

我正在使用带有运行 linux (3.0.35) 的基于 ARM 的处理器的板。主板有 1GB RAM,并连接到快速 SSD HD 和 5MP 摄像头。

我的目标是捕获高分辨率图像并将其直接写入磁盘。

一切顺利,直到我尝试保存一个很长的视频(超过 1GB 的数据),

保存大文件后,我似乎无法重新加载相机驱动程序 - 它无法为流分配足够大的 DMA 内存块(调用 dma_alloc_coherent() 时)。

我将其缩小到 Linux 启动的场景(当大部分内存可用时),然后我将随机数据写入一个大文件(>1GB),当我尝试加载相机驱动程序时它失败了。

对于我的问题-

当我打开一个文件进行写入,写入大量数据并关闭文件时,用于将数据写入HD的内存不应该被释放吗?

我可以理解为什么在 HD 访问期间内存会变得碎片化,但是当对 HD 的事务完成时 - 为什么内存仍然如此碎片化以至于我无法分配 15MB 的连续 RAM?

谢谢

4

1 回答 1

0

[...]关闭文件,用于将数据写入HD的内存不应该被释放吗?

不,它会被缓存,你可以检查/proc/meminfo一下。该函数是否dma_alloc_coherent()只使用空闲内存是一个很好的问题。

于 2012-11-10T20:45:19.960 回答