2012-11-10 34 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

相关问题