当运行这段代码后
struct v4l2_requestbuffers tV4L2_reqbuf;
tV4L2_reqbuf.count = FRAME_NUM;
tV4L2_reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
tV4L2_reqbuf.memory = V4L2_MEMORY_MMAP;
if (ioctl(fd, VIDIOC_REQBUFS, &tV4L2_reqbuf) == -1)
{
printf("Error getting buffer.\n");
printf("REQBUFS:%s\n", strerror(errno));
return FALSE;
}
printf("REQBUFS succeeded\n");
板子报错并重启
[ 230.970000] Unable to handle kernel NULL pointer dereference at virtual address 00000050
[ 230.974000] pgd = d86c0000
[ 230.977000] [00000050] *pgd=49046831, *pte=00000000, *ppte=00000000
[ 230.983000] Internal error: Oops: 17 [#1] PREEMPT SMP ARM
[ 230.988000] Modules linked in: rtk_btusb nx_vpu(O) vr(O) [last unloaded: wlan]
[ 230.996000] CPU: 1 Tainted: G O (3.4.39-9tripod #20)
[ 231.002000] PC is at do_raw_spin_trylock+0x8/0x4c
[ 231.007000] LR is at __raw_spin_lock_irqsave+0x30/0xa0
[ 231.012000] pc : [<c0296cbc>] lr : [<c073854c>] psr: 60000093
[ 231.012000] sp : d856bc58 ip : 00000000 fp : 00000000
[ 231.023000] r10: 00000000 r9 : e2b5e400 r8 : c995f000
[ 231.028000] r7 : d856a000 r6 : 00000001 r5 : 60000013 r4 : 00000050
[ 231.035000] r3 : 00000050 r2 : 00000001 r1 : 00000001 r0 : 00000050
[ 231.041000] Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user
[ 231.049000] Control: 10c5383d Table: 586c006a DAC: 00000015
如果我把V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE改成V4L2_BUF_TYPE_VIDEO_CAPTURE则打印的错误为Invalid Argument
求解