摄像头驱动开发调试总结

点赞+关注   不错过精彩内容 

大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作!

这次用的是比亚迪的摄像头,开发调试了好几天,工作总结下如何开发调试的。

一、重点开发目录

1.media_support目录结构

media_support简介

media_support存放媒体处理平台的代码位于 SDK/media_support 目录下,下面是 media_support 目录下的文件代码功能说明:

  • include :对外头文件

  • driver :音视频媒体处理内核模块和安装脚本

  • make_drivers :音视频媒体内核模块的编译环境,若kernel配置有较多变化,可自行编译适配 kernel 的 ko 文件

  • lib :媒体库和sensor库,以及 sensor 配置文件

  • tools :LOGO 图片转换工具、图像效果调试工具等

  • demo :样例源代码

2.摄像头驱动

摄像头简介

摄像头驱动代码位于 SDK/media_support/tools/sensor-build/isp/libs/sensor/bf3432_mipi 目录下,下面是bf3432_mipi 目录下的示例代码功能说明:

  • bf3432_mipi.c - 是一个源文件,其中包含了bf3432_mipi摄像头的具体实现代码。

  • bf3432_mipi.h - 是一个头文件,其中声明了bf3432_mipi摄像头相关的函数、结构体等的定义。

  • bf3432_mipi_param.h - 是一个头文件,其中包含了bf3432_mipi摄像头的寄存器一些参数配置。

  • cfg - 这是一个文件夹,包含了一些配置的头文件,用来配置bf3432_mipi摄像头的像素及帧率的参数。

  • Makefile - 这是一个用于编译和构建bf3432_mipi程序的make工程文件,主要用于编译可以调用这个摄像头的库。

3.lib/static目录结构

lib/static 简介

lib/static 代码位于 SDK/media_support/lib/static 目录下, lib/static文件中存放的都是一些库文件,所以我们把libbf3432_mipi.a文件放到这里就可以直接调用了。

4.media_demo目录结构

media_demo 简介

出图相关功能代码位于 SDK/media_support/demo/media_demo 目录下,下面是 media_demo  目录下的示例代码功能说明:

  • build.log: 这个文件记录了构建过程中的日志信息。

  • components: 这是一个文件夹,目录包含构成媒体支持演示的各个组件或模块。

  • .config: 这个文件包含了配置文件的设置。

  • config.h: 这个文件包含了媒体支持演示的配置设置。

  • filelist.txt: 该文件包含媒体支持演示中所包含的文件列表。

  • Makefile: 这个文件包含了用于构建的Makefile规则。

  • ReadMe.txt: 这个文件包含了有关使用说明和注意事项的文本。

  • sample_common: 这是一个文件夹,该目录包含媒体支持演示所使用的公共代码或函数。

  • sample_vlcview: 这是一个可执行文件,用于演示VLC视图功能。

  • script: 这是一个文件夹,该目录包含用于运行或配置媒体支持演示的脚本文件。

  • startup: 这是一个文件夹,包含了一些启动脚本。

  • vlcview: 这是一个文件夹,该目录包含VLC媒体播放器的视图模块。

二、开发流程

首先介绍下如何用到这个摄像头:

需要视频信号处理芯片原厂提供一个SDK,在这个SDK上去进行视频流的开发,而摄像头驱动可以被编译成一个库,直接调用。

1. 摄像头驱动开发

当我们有一个新的摄像头,需要去配置他的驱动时,可以把我们之前调过类似的摄像头驱动发一份给摄像头原厂,帮我们写一个这样的文件,再把厂商给配好的驱动文件添加到这个路径来,比如bf3432_mipi文件。

注意,想要成功配置好编译,需要在media_support/tools/sensor-build/isp/libs/sensor修改Sensor.make,它是传感器构建过程中使用的配置文件。通常在构建特定传感器的驱动程序时使用。

在这个文件中需要指定下当前交叉编译工具链前缀和DPS、ISP的根文件路径。

其他的驱动配置这里没有什么好改的,如果以后需要更改摄像头的其他参数配置可以在这里修改,比如这个摄像头是400W的,可以改成1080P的就要在这些文件改里面的配置。

make之后就会生成一个libbf3432_mipi.a的文件,供我们的应用程序去使用摄像头。

2. CP摄像头库到lib/static

lib/static文件中存放的都是一些库文件,所以我们把libbf3432_mipi.a文件放到这里就可以直接调用了。

3. media_demo应用程序调试

media_demo 是用于出图相关的功能,用于采集摄像头的数据并推流,有可以实现查看视频图像的功能。

需要修改的有以下几个文件:

  • script/linux/media.make:这是一个make文件,用于构建媒体支持的Demo程序。

在文件末尾中添加以下代码:

 ifeq ($(FH_USING_BF3432_MIPI),y)MEDIA_LIBS += -lbf3432_mipiendif

  这段代码的作用是,在定义了宏FH_USING_BF3432_MIPI并且其值为y的情况下,将库-lbf3432_mipi添加到变量MEDIA_LIBS中。

  • script/linux/Kconfig:这是一个配置文件,用于配置Linux内核模块的选项。

在文件中menu "ISP Config"的

choiceprompt "Choose sensor"default FH_USING_OVOS05_MIPI

代码内添加以下代码:

config FH_USING_BF3432_MIPIdepends on CONFIG_ARCH_YG || CONFIG_ARCH_FH885xV200 || CONFIG_ARCH_FH885xV210bool "bf3432_mipi"

该配置项FH_USING_BF3432_MIPI用于控制是否使用BF3432_MIPI功能,通过开关该选项来决定是否启用BF3432_MIPI相关的驱动和功能。

该配置项的依赖关系是,只有当CONFIG_ARCH_YGCONFIG_ARCH_FH885xV200或者CONFIG_ARCH_FH885xV210中至少有一个被选中时,才允许启用FH_USING_BF3432_MIPI。

该配置项是一个布尔类型,可以选择在配置时进行设置。选择“是”表示启用BF3432_MIPI功能,选择“否”则表示不启用。

因为我们的摄像头是400WP25的所以还要在文中config FH_APP_USING_FORMAT_400WP25中添加|| FH_USING_BF3432_MIPI,如以下形式

  • .config:这个文件包含了配置文件的设置。

在文中需要配置FH_USING_BF3432_MIPI和FH_APP_USING_FORMAT_400WP25选项为y,如以下形式:

  • config.h:这个文件包含了配置选项的定义。

在文中需要定义FH_USING_BF3432_MIPI和FH_APP_USING_FORMAT_400WP25,如以下形式:

sample_common/isp/src/sample_common_isp.c: 是一个示例的ISP(图像信号处理)源文件。

 ISP是指对图像进行采集、预处理和后处理的技术,用于提高图像质量和增强图像特征。

在文中需要修改API_ISP_SetSensorFmt函数的参数为FORMAT_400WP25,如以下几个地方:

修改成功后直接make,生成可以在开发板上运行的sample_vlcview程序。

运行成功!可以看到图像!

三、总体开发调试流程图

作 者 :硬核王同学

------------ END ------------

如果觉得有用请点个免费三连

您的支持就是我最大的动力,这对我很重要! ! 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬核王同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值