- 论坛徽章:
- 0
|
背景
内核版本是2.6.9
硬件用的是优龙的开发板arm9 pxa270,里面有个摄像头ov9655的驱动,不过只支持640x480象素,我想改成1280x1024.
其实其它都不用变,只是改一下驱动的wildth 与 height.以及摄像头的配置寄存器。
摄像头的数据是通过dma传输的:摄象头通过cpu片上的camera interface接入,dma到指定的地址。
但遇到一个问题,为dma分配内存出错。
用 dma_alloc_writecombine() 函数分配内存时出错
error: coherent allocation too big (requested 0x280000 mask 0xffffffff) // 1280x1027=0x140000
通过查看dam_alloc_writecombine()代码发现,
#define CONSISTENT_BASE (0xffc00000) // original
#define CONSISTENT_END (0xffe00000) // original
显然支持DMA consistent 的这个地址空间为2M,即dma分配内存函数支持的最大空间为2M,小于我所需要的2.6M。
我改上述定义的地址范围,使其有4M的地址空间,重新编译内核下载,运行,但出现panic,是内部的内在分配函数
__dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, int gfp pgprot_t prot) 出错,没有成功的分配到内存页。
想求助一下怎么 扩大能够为dma分配的内存大小, 我想2M的也实在太小了吧. 现在动不动就几M的buffer |
|