Linux Camera驱动开发(常见sensor驱动开发的误区)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

关于摄像头,大家都知道很有用,但是如何开发camera,大家并不是很清楚。或者说,大家都知道sensor开发很有用,但是怎么配置、怎么学习,很多同学并不是很清楚,今天正好可以和大家一起讨论一下。

1、优先从ipcam soc处学习camera

提到soc,大家几乎都可以想到linux。但是soc和soc之间差异巨大,有的偏向于消费类,有的偏向于工业,还有的偏向于汽车或者是医疗。这个时候,怎么选择soc就非常重要。大家如果想学习camera驱动方面的知识,可以优先学习ipcam soc。且不说目前在ipcam这块,国内不管是设备,还是soc,整体上都非常领先,而且ipcam soc的资源也很多,各家竞争非常激烈,所以想学习camera,建议优先选择ipcam soc。本质上ipcam,就是cam+ip的集合体,所以在camera驱动这块肯定是花足了功夫。

**当然,不仅仅是soc,现在的camera sensor,国产的ov、思特威、格科微,发展也未尝迅速,所以这部分国产的优势其实非常大。**当然,top级别的sensor,离sony、samsung还是有一点距离。

2、优先学习ipcam soc厂家的media框架

虽然linux kernel里面有v4l2的框架,camera sensor代码应该放在什么地方、soc platform在什么地方,都有官方的推荐目录,但事实上很少厂家会把自己的framework code上传到开源平台上面。只有客户购买自己的soc chip,他们才会把对应的sdk释放给客户。因此,假设客户只是自己希望从公开的渠道获取这些sdk,其实是很难的。

3、很多know-how都在文档里面

除了sdk之外,很多时候我们还可以从渠道拿到对应的原理图、手册、开发文档。这些开发文档一般都是soc厂家持续维护的。不同的soc芯片,很可能使用的都是一份文档。这就意味着,我们学习好了一份文档,基本上可以复用很多的soc芯片。

大部分情况,只要我们认真阅读文档,就可以从中发现自己需要的知识点。就算是不明白的部分,也尽量几个问题凑在一起,发给对方的fae,这样询问的效率比较高。假设自己公司规模不是很大,采购量不是很大,想获得实时的服务响应,有的时候是非常困难的。这个时候,与其抱怨,不如静下心来好好看一下对应的soc文档资料。

4、优先选用适配好的sensor

很多soc,尤其是ipcam soc,都已经是配好了大量的sensor。不管是驱动部分,还是isp标定部分,都不需要自己再去进行配置。这种情况下,我们只需要选用对应的camera模块就可以了。

5、新sensor的驱动也是以拷贝、调试为主

如果是没有适配过的sensor,那么可以找到同品牌的sensor,或者是相同配置的sensor,直接修改他们的源代码、他们的isp calib文件。**不要重头来写代码,一来容易写错,二来没有必要。**我们只需要把这些代码调试好,配置文件配置好,可以在真实场景用起来就可以了。

另外,如果发现其他品牌的soc支持了这个sensor,也可以把代码直接拿过来修改。

6、isp就是学习各个厂家自己的上位机软件

不同厂家的isp实现是不一样的,那么他们的标定过程、上位机软件也是不一样的。即使isp中基本的算法内容差异不大,但是上位机的操作还是差异比较大的。所以,基本上isp标定的过程,就是各个soc上位机软件学习的一个过程。学习好了一次,同品牌的soc,基本上都可以这么来进行标定了。至于调试过程中需要的灯箱、道具、灰度卡、色卡、棋盘格,这些都差异不大。

最后,非常推荐网上的这篇文章,是为数不多的isp调试在线资料,

复制代码
https://doc.embedfire.com/linux/rk356x/quick_start/zh/latest/quick_start/isp/isp.html
相关推荐
小白同学_C8 小时前
Lab4-Lab: traps && MIT6.1810操作系统工程【持续更新】 _
linux·c/c++·操作系统os
今天只学一颗糖8 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
不做无法实现的梦~10 小时前
ros2实现路径规划---nav2部分
linux·stm32·嵌入式硬件·机器人·自动驾驶
默|笙12 小时前
【Linux】fd_重定向本质
linux·运维·服务器
陈苏同学12 小时前
[已解决] Solving environment: failed with repodata from current_repodata.json (python其实已经被AutoDL装好了!)
linux·python·conda
“αβ”12 小时前
网络层协议 -- ICMP协议
linux·服务器·网络·网络协议·icmp·traceroute·ping
不爱学习的老登13 小时前
Windows客户端与Linux服务器配置ssh无密码登录
linux·服务器·windows
小王C语言14 小时前
进程状态和进程优先级
linux·运维·服务器
xlp666hub14 小时前
【字符设备驱动】:从基础到实战(下)
linux·面试
弹幕教练宇宙起源15 小时前
cmake文件介绍及用法
android·linux·c++