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