我正在使用带有ARM的处理器运行Linux的板(3.0.35)。板有1GB RAM,并连接到快速SSD HD,并连接到5MP相机。
我的目标是捕获高分辨率图像并将其直接写入磁盘。
一切顺利,直到我试图保存一个很长的视频(超过1GB的数据),
保存一个大文件后,似乎我无法重新加载相机驱动程序 - 它失败了,将大量的DMA存储器块分配用于流式传输(调用DMA_ALLOC_COHERENT())。
我将其范围缩小到Linux靴子(大多数内存可用时)的情况,然后将随机数据写入一个大文件(> 1GB),当我尝试加载相机驱动程序时,它会失败。<<<<<<<<<<<<<<<<
我的问题 -
当我打开一个用于写作的文件,编写大量数据并关闭文件时,不是用来将数据写入HD应该释放的内存吗?
我可以理解为什么内存在高清访问过程中变成碎片,但是当完成HD的交易完成时 - 为什么内存仍然如此碎片,以至于我无法分配15MB的连续RAM?
谢谢
[...]关闭文件,不是用来将数据写入高清的内存吗?
否,它将是缓存,您可以检查/proc/meminfo
。dma_alloc_coherent()
功能是否仅使用免费内存是一个很好的问题。