我正在尝试为嵌入式 Linux 图像编写 MIPI CSI-2 相机传感器驱动程序。当然,Github 等网站上有大量驱动程序源代码,但我很难理解相机传感器在编程方面的工作原理。
我认为如果有人粗略地一步步解释驱动程序如何与相机传感器配合使用,对每个人都会有所帮助。如果您能澄清使用 I2C 设置寄存器的主题,我会非常高兴。
我正在谈论像流程图一样抽象的解释。
感谢所有感兴趣的人。
我正在尝试为嵌入式 Linux 图像编写 MIPI CSI-2 相机传感器驱动程序。当然,Github 等网站上有大量驱动程序源代码,但我很难理解相机传感器在编程方面的工作原理。
我认为如果有人粗略地一步步解释驱动程序如何与相机传感器配合使用,对每个人都会有所帮助。如果您能澄清使用 I2C 设置寄存器的主题,我会非常高兴。
我正在谈论像流程图一样抽象的解释。
感谢所有感兴趣的人。
通常,第 0 步是寻找现有的驱动程序。通常,您购买的相机附带 Linux 驱动程序 - 除非您销售几千台相机,否则您花在开发驱动程序上的时间比您购买没有参考驱动程序的相机所节省的钱要多,而且在开发驱动程序时可能会遇到各种意外情况。这不是“胆怯”;供应商了解他们的硬件和您没有的测量设备,可以验证设备是否正常工作,这让您编写驱动程序比相机硬件设计人员困难得多。CSI-2 是一种非常高速的总线,因此除了 RF/高速数字硬件设计验证风险之外,当设备完全不工作时,您也很难简单地观察数字信号。这种相机的参数数量相当多,包括通道分割、时钟/时序、数据白化、超分辨率到像素格式、熵编码和颜色信息,因此,如果您使用一台尚未有人证明现有文档足以编写驱动程序的相机,那么您将面临很高的软件开发风险。
如果您确定没有现有驱动程序,并且您确定仍想使用该相机:您可以查看其他 CSI-2 相机的驱动程序,并根据相机的属性对其进行调整。没有人会从头编写相机驱动程序!
您可能需要相当复杂的文档(并且,最好是现有的驱动程序)。
I²C(或现代相机中更常见的 I³C)接口是另一个方面。您将需要寄存器表来告诉您哪个地址影响相机的哪个部分(或包含哪些状态信息);通常,您还需要有关如何初始化相机的详细信息(此处的信息:如果有人在文档中详细地写下这一点,很可能他们也编写了一个可以做到这一点的驱动程序。找到那个驱动程序;重复做同样的工作对您来说贡献很小)。
最后,您需要弄清楚如何将这两个接口、匹配的接口控制器及其嵌入式 SoC 的内存区域组装成描述相机设备的东西;这通常涉及编写设备树覆盖。