linux2.6内核移植zc301摄像头时 kernel BUG at arch/arm/mm/dma-mapping.c:409!..的解决方法

当插上一些在ARM上的摄像头,系统崩溃.这是因为我们分配缓冲一个URB通过usb_buffer_alloc,分配的缓冲区已经在DMA连贯的区域,因此,我们应该设置标志这个urb到URB_NO_TRANSFER_DMA_MAP,否则当我们提交这个urb,HCD核心处理这个地址作为非DMA地址和呼叫dma_map_single / SG映射。 在ARM架构上,dma_map_single连贯的一个DMA地址将被一个BUG_ON()截获。

 

修改内核'目录下drivers/media/video/gspca/gspca.c文件

 

static int alloc_and_submit_int_urb(struct gspca_dev *gspca_dev,   (在这个函数下边加上绿色部分)
usb_rcvintpipe(dev, ep->bEndpointAddress),
buffer, buffer_len,
int_irq, (void *)gspca_dev, interval);
urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;(加上这一行)
gspca_dev->int_urb = urb;
ret = usb_submit_urb(urb, GFP_KERNEL);
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值