最近又开始看Camera的驱动了,在Linux下通常实用Video4linux框架来实现Video capture/Camera Capture等功能,先说一下设备注册部分,ov7670.c中,注册方法如下:
static struct v4l2_i2c_driver_data v4l2_i2c_data = {
.name = "ov7670",
.probe = ov7670_probe,
.remove = ov7670_remove,
.id_table = ov7670_id,
};
然后这就完了,真的完了么?
兄弟,当然不是;开始看代码的时候找遍了整个文件没有发现谁调用的v4l2_i2c_data结构。这怎么可能?这是一个static变量啊!,于是向上
找,很快就发现我们熟悉的__init
module_init对其的调用出现在了v4l2-i2c-drv.h文件中,并声明成了一个static类型,这样其他写v4l2架构驱动的人,就可
以少写不少代码了,NND,这帮人真聪明(还是我太笨?)。