- 论坛徽章:
- 0
|
--------------------------------------------
本文系本站原创,欢迎转载!
转载请注明出处:http://zhiqiang0071.cublog.cn
--------------------------------------------
撰写了符合v4L2的s3c2440的camera驱动,采用videobuf模块管理视频内存,需要申请四个物理上连续的内存,但是linux内核中现有的videobuf-dma-contig在我的系统中只能申请三个(其实是因为默认定义可以申请的buffer大小只有2M, 如果修改大点也可以直接使用videobuf-dma-contig的,修改的地方是arch/arm/include/asm/memory.h, #define CONSISTENT_DMA_SIZE SZ_2M),故以videobuf-dma-contig为蓝本,撰写了videobuf-contig.c,videobuf-contig采用获取物理上连续的页并设置为保留的方式来获得物理上连续的内存,在s3c2440平台中这些物理内存的物理地址等于总线地址,可以进行DMA传输。把videobuf-contig.c加入到内核的drivers/media/video文件夹下 ,把videobuf-contig.h加入到内核的include/media文件夹下,
修改drivers/media/video/kconfig,加入
config VIDEOBUF_CONTIG
select VIDEOBUF_GEN
tristate
修改drivers/media/video/Makefile,加入
obj-$(CONFIG_VIDEOBUF_CONTIG) += videobuf-contig.o
如果有问题,可以回复帖子一起讨论。
代码如下:
[ 本帖最后由 zhiqiang0071 于 2009-5-24 21:05 编辑 ] |
评分
-
查看全部评分
|