问题

1、HenryDebug::get spi master succeessfully--------->    和    HenryDebug::iss_register_subdev_group done--------->之间  增加了cmv4000的内容,是如何调用到cmv4000的?是这个函数v4l2_spi_new_subdev中有什么机制调用了device。还是仅仅是并行的执行了cmv4000?


2、cmv4000的probe函数执行到cmv4000_frame_req函数后,如何 切换到v4l2_ctrl_add_handler函数,是通过设置寄存器的吗?

iss.c中的iss_register_subdev_group调用了v4l2_spi_new_subdev函数->v4l2_device_register_subdev->v4l2_ctrl_add_handler

v4l2_ctrl_add_handler被调用了两次的原因是在iss.c中iss_register_entities函数和iss_register_subdev_group函数都调用了相应的v4l2_spi_new_subdev函数和omap4iss_csi2_register_entities函数。




3. Why do the touch screen need to use the I2C bus form


4.

[   13.011810] HenryDebug::ov5640_mod_init--------------->

[   13.017639] HenryDebug::cmv4000_mod_init------------->

[   13.023376] HenryDebug::iss_init-------------->

加载这些驱动的顺序是什么?为什么在cmv4000_mod_init之后并未执行下去,而是执行了iss_init?


5、是谁调用了

 HenryDebug::ft5x0x_openEnter---------------------->


6、从yavta.c中的调用如何调用到v4l2_ioctl.c中的函数。接口是以什么样的形式。

是通过filep调用得到的。


7、从v4l2_ioctl.c到cmv4000.c中的调用到相关的ioctl函数是怎么调用到的?


8、为什么要进行这样的转换?iss_video_mbus_to_pix


9、是怎么跳转到iss_csi2.c函数中的?

之前有iss_csi2.c的初始化,为什么初始化和iss_initialize_modules函数是分开的?


难道是双核,多线程的原因?


iss_csi2.c中的v4l2_subdev_init(sd, &csi2_ops);----->

static const struct v4l2_subdev_ops csi2_ops = {
.video = &csi2_video_ops,
.pad = &csi2_pad_ops,
};

---->

static const struct v4l2_subdev_video_ops csi2_video_ops = {
.s_stream = csi2_set_stream,
};

在csi2_set_stream函数中有csi2_print_status(csi2);即打印出了这些状态。


v4l2_subdev_init(sd, &csi2_ops);----->因此我们想该ops是在subdev中的调用生成的。因此应当是抓图时候触发了subdev的生成,所以调用了这个ops。


这些是条件触发而不是顺序触发。


HenryDebug::start to get stream----->中是在cmv4000.c中    v4l2_spi_subdev_init(&cmv4000->subdev, spi, &cmv4000_subdev_ops);

进行初始化的。是同样的道理。



10、在

[   44.607452] vb2: Will sleep waiting for buffers

[   44.806030] MeterDebug omap4iss_csi2_isr------->

两者之中同样是有一个条件语句。


omap4iss_csi2_isr - CSI2 interrupt handling.

处理中断,等待buffer,因此亦为条件语句。


我们可以在iss.c中的iss_probe函数中看到了注册如下中断:

if (request_irq(iss->irq_num, iss_isr, IRQF_SHARED, "OMAP4 ISS", iss)) {
dev_err(iss->dev, "Unable to request IRQ\n");
ret = -EINVAL;
goto error_iss;
}


而中断处理函数iss_isr中调用了函数iss_isr---->

if (irqstatus & ISS_HL_IRQ_CSIA)
omap4iss_csi2_isr(&iss->csi2a);


omap4iss_csi2_isr - CSI2 interrupt handling.



中断是反常规的,不需要按顺序执行,即只要之前初始化完毕即可。

11、为什么在irqstatus = readl(iss->regs[OMAP4_ISS_MEM_TOP] + ISS_HL_IRQSTATUS_5);
writel(irqstatus, iss->regs[OMAP4_ISS_MEM_TOP] + ISS_HL_IRQSTATUS_5);

从寄存器中读取数据之后还要往该寄存器中写入?难道读取会消去寄存器中的值。



12、中断CSIA_IRQ发生在iss.c中的probe函数注册中断时的中断函数中iss_isr,其中有发生中断时的调用iss_isr_dbg。



13、为什么要先使用640*480成功之后再使用2048*2048的格式。

为什么要先使用OV5640测试成功之后再测试cmv4000。


14、这个主板的名字叫什么?OMAP4460


15、对于FPGA和TC358746的控制和配合是通过什么形式的?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
r40_tinav2.1_最终验证通过_使用CB-S来验证OV5640有横条纹fpscamera+SPI2.0成功_20171114_1443没有外层目录.7z 开发板:CB-S 1、(可选修改/调试技巧:) 除了ov5640.c之外,其它的驱动都不编译,节省编译时间! W:\ov5640_spi20_r40t\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\device\Makefile obj-m += ov5640.o #obj-m += ov2640.o #obj-m += ov7736.o #obj-m += s5k4ec.o #obj-m += s5k4ec_mipi.o #obj-m += gc2035.o #obj-m += gt2005.o #obj-m += gc0307.o #obj-m += gc0308.o #obj-m += gc0328.o #obj-m += gc0328c.o #obj-m += gc2145.o #obj-m += gc0329.o #obj-m += gc0311.o #obj-m += hi253.o #obj-m += sp2518.o #obj-m += sp2519.o #obj-m += sp0718.o #obj-m += sp0838.o #obj-m += ov16825.o #obj-m += ov5650.o #obj-m += ov5647.o #obj-m += ov5647_mipi.o #obj-m += t8et5.o #obj-m += s5k4e1.o #obj-m += s5k4e1_mipi.o #obj-m += sp2518.o #obj-m += sp0718.o #obj-m += gc5004.o #obj-m += gc5004_mipi.o #obj-m += ov5648.o #obj-m += ar0330.o #obj-m += ov5648.o #obj-m += sp5408.o #obj-m += ov12830.o #obj-m += ov8825.o #obj-m += ov8850.o #obj-m += gc2155.o #obj-m += ov8858.o #obj-m += ov13850.o #obj-m += imx214.o #obj-m += ov8858_4lane.o #obj-m += sp5409.o #obj-m += s5k5e2yx.o #obj-m += ov2710_mipi.o #obj-m += ov2686.o (这里是看ov5640的驱动的probe执行是否正确?设备ID是否读取成功!) W:\ov5640_spi20_r40t\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\device\ov5640.c static int sensor_detect(struct v4l2_subdev *sd) { data_type rdval; printk("****wyb %s:%d/%s()! \n", __FILE__, __LINE__, __func__); LOG_ERR_RET(sensor_read(sd, 0x300a, &rdval;)) printk("****wyb %s:%d/%s()! 0x300a rdval=0xx\n", __FILE__, __LINE__, __func__, rdval); if(rdval != 0x56) return -ENODEV; LOG_ERR_RET(sensor_read(sd, 0x300b, &rdval;)) printk("****wyb %s:%d/%s()! 0x300b rdval=0xx\n", __FILE__, __LINE__, __func__, rdval); if(rdval != 0x40) return -ENODEV; return 0; } (在全志R16平台改过这个文件,让摄像头不要休眠,但是全志R40平台的tina v2.1系统下不需要修改!) W:\ov5640_spi20_r40t\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\vfe.c 2、(可

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值