我正在使用运行Linux(3.0.35)的基于ARM的处理器的电路板。主板有1GB RAM,连接到快速SSD HD和500万像素摄像头。
我的目标是捕获高分辨率图像并将其直接写入磁盘。
一直顺利,直到我试图保存一个很长的视频(超过1GB的数据),
保存一个大文件后,似乎我无法重新加载摄像头驱动程序 - 它无法为流分配足够大的DMA内存块(调用dma_alloc_coherent()时)。
我将其缩小到Linux启动的场景(当大部分内存可用时),然后我将随机数据写入一个大文件(> 1GB),当我尝试加载相机驱动程序时,它失败了。
对我的问题 -
当我打开一个文件进行写入,写入大量数据并关闭文件时,是不是用于将数据写入HD的内存应该被释放?
我可以理解为什么在HD访问期间内存会碎片化,但是当HD的事务完成时 - 为什么内存仍然如此碎片化以至于我无法分配15MB的连续RAM?
由于
答案 0 :(得分:0)
[...]关闭文件,是不是用于将数据写入应该被释放的HD的内存?
不,它将缓存,您可以检查/proc/meminfo
。 dma_alloc_coherent()
函数是否仅使用空闲内存是一个很好的问题。