This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

dm8168 VIP0 采集640x480分辨率图像会导致内核崩溃



          目前我们在dm8168平台上测试摄像头采集,vin[0] 外接一个ov5640 sensor摄像头,使用8 bit discrete SYNC 采集模式,
能够采集640x480 分辨率的图像,但每次采集到几十帧(有时是几百帧,图像是正常的)时就会产生一个Oops错误,
这时只能复位才能恢复。其它分辨率(352x288,320x240,1280x720,1920x1080)都没有这个
现象,测试过两款摄像头 GC2035 OV5640都有这个问题产生。
         log如下,log 当中的LR地址对应的是代码的 kernel/notifier.c line 95行(if (nr_calls))。我们使用最新的EZSDK_05_02 内核  linux-2.6.37-psp04.04.00.01,

应用了5个patch文件  http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/p/186865/675884.aspx 以及ti81xxvin_mai.c做了如下修改

#if 0
out_stream_info->maxOutHeight = VPS_CAPT_MAX_OUT_HEIGHT_UNLIMITED;
out_stream_info->maxOutWidth = VPS_CAPT_MAX_OUT_WIDTH_UNLIMITED;
#else

if(inst->buf_obj.fmt.fmt.pix.width<=352)
out_stream_info->maxOutWidth = VPS_CAPT_MAX_OUT_WIDTH_352_PIXELS;
else if(inst->buf_obj.fmt.fmt.pix.width<=768)
out_stream_info->maxOutWidth = VPS_CAPT_MAX_OUT_WIDTH_768_PIXELS;
else if(inst->buf_obj.fmt.fmt.pix.width<=1280)
out_stream_info->maxOutWidth = VPS_CAPT_MAX_OUT_WIDTH_1280_PIXELS;
else if(inst->buf_obj.fmt.fmt.pix.width<=1920)
out_stream_info->maxOutWidth = VPS_CAPT_MAX_OUT_WIDTH_1920_PIXELS;
else
out_stream_info->maxOutWidth = VPS_CAPT_MAX_OUT_WIDTH_UNLIMITED;

if(inst->buf_obj.fmt.fmt.pix.height<=288)
out_stream_info->maxOutHeight = VPS_CAPT_MAX_OUT_HEIGHT_288_LINES;
else if(inst->buf_obj.fmt.fmt.pix.height<=576)
out_stream_info->maxOutHeight = VPS_CAPT_MAX_OUT_HEIGHT_576_LINES;
else if(inst->buf_obj.fmt.fmt.pix.height<=720)
out_stream_info->maxOutHeight = VPS_CAPT_MAX_OUT_HEIGHT_720_LINES;
else if(inst->buf_obj.fmt.fmt.pix.height<=1080)
out_stream_info->maxOutHeight = VPS_CAPT_MAX_OUT_HEIGHT_1080_LINES;
else
out_stream_info->maxOutHeight = VPS_CAPT_MAX_OUT_HEIGHT_UNLIMITED;
#endif

请帮忙分析一下原因所在或者给一点思路,谢谢。