- 论坛徽章:
- 0
|
调试一个摄像头驱动程序,系统是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空间?
|
|