主题 : 有人在tiny4412上使用了FIMC吗? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 94381
精华: 0
发帖: 30
金钱: 155 两
威望: 31 点
综合积分: 60 分
注册时间: 2013-07-15
最后登录: 2013-10-16
楼主  发表于: 2013-10-14 15:56

 有人在tiny4412上使用了FIMC吗?

我按照正常的V4L2的编程方法在应用层中通过读写/dev/video1来调用FIMC。但是会有错误发生:
第一个是在用户层ioctl中使用VIDIOC_S_FMT参数后,给出了warning:fimc_pipeline_try_format中fimc->pipeline.subdev[IDX_SENSOR]指针为空。看完了所有fimc相关代码都没有给这个指针进行初始化的地方啊。

第二个是在用户层中ioctl中使用了VIDIOC_REQBUFS控制后,给出了s5p-fimc exynos4-fimc.0: dma_alloc_coherent of size 0 failed。追踪程序发现是在vb2_reqbufs->__vb2_queue_alloc->__vb2_buf_mem_alloc中vb2_queue.plane_sizes[0]=0造成调用vb2_dc_alloc失败造成的。

同样我也没有发现在哪里可以设置这个变量。。。但是按理说这个fimc的驱动是正确的额。。。求大侠们解答!
级别: 新手上路
UID: 94381
精华: 0
发帖: 30
金钱: 155 两
威望: 31 点
综合积分: 60 分
注册时间: 2013-07-15
最后登录: 2013-10-16
1楼  发表于: 2013-10-14 16:05
附上应用层程序:

char* databuf;
    struct v4l2_format v4l2_fmt;
    struct v4l2_requestbuffers v4l2_reqBufs;
    int ret = -1;
    int numBufs = 0;
    int i = 0;
    fd_set fds;
    struct timeval tv;
    FD_ZERO(&fds);
    FD_SET(fd,&fds);
    tv.tv_sec = 2;
    tv.tv_usec = 0;

    ret = ioctl(fd,VIDIOC_S_INPUT,&i);

    v4l2_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;        //V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
    v4l2_fmt.fmt.pix.width = 640;
    v4l2_fmt.fmt.pix.height = 480;
    v4l2_fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV422P;
    v4l2_fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
    ret = ioctl(fd,VIDIOC_S_FMT,&v4l2_fmt);
    if(ret)
        LOGD("Set Image format failed\n");

    //request bufs
    v4l2_reqBufs.count = 4;
    v4l2_reqBufs.type = 9;
    v4l2_reqBufs.memory = V4L2_MEMORY_MMAP;
    ret = ioctl(fd,VIDIOC_REQBUFS,&v4l2_reqBufs);
    if(ret)
        LOGD("Request Buffers failed\n");

而且有几个mplane使用的结构体标准的头文件里面没有额。。。
级别: 新手上路
UID: 89215
精华: 0
发帖: 40
金钱: 205 两
威望: 41 点
综合积分: 80 分
注册时间: 2013-03-24
最后登录: 2014-10-26
2楼  发表于: 2013-10-22 11:27

 回 1楼(ruif) 的帖子

我在tiny210上试过,我也有fimc的问题,也正在找,不知道你怎么样了