打印

DMA 空间分配

DMA 空间分配

调试一个摄像头驱动程序,系统是linux_2.6.12,其中需要分配一块DMA。
原来的实例程序是
#define YUV_IMG_BUF_SIZE PAGE_ALIGN(0x96000 + PAGE_SIZE - 1)
camif_yuv_buf = dma_alloc_coherent(NULL, YUV_IMG_BUF_SIZE, &camif_yuv_buf_dma,GFP_KERNEL);

现在我想申请大一点的空间:
#define YUV_IMG_BUF_SIZE PAGE_ALIGN(0x280000 + PAGE_SIZE - 1)

调试时系统提示:coherent allocation too big...
分析内核,发现/arch/arm/mm/consistent.c文件中
#define CONSISTENT_BASE        (0xffc00000)
#define CONSISTENT_END        (0xffe00000)
限制了分配空间。

后打算修改这个宏,但调试又出现了bug:
kernel BUG at arch/arm/mm/consistent.c :221!

刚开始搞,实在不知怎么办
现在请教有过内核或驱动开发经验的各位高人,如何才能增大申请的DMA空间?

TOP