摄像头驱动开发调试总结

本文详细介绍了使用比亚迪摄像头进行嵌入式开发的过程,包括media_support目录结构、摄像头驱动的配置、编译步骤和media_demo的应用调试。开发者可以按照流程配置驱动、集成库并测试图像输出。
摘要由CSDN通过智能技术生成

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

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

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

一、重点开发目录

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 ------------

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

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

Camera驱动开发是指为摄像头设备编写驱动程序,使其能够在计算机系统中正常工作。主要涉及到摄像头设备的初始化、数据输入和输出、设备控制等方面。 在Linux系统中,Camera驱动开发可以利用V4L2(Video for Linux 2)子系统来完成。V4L2是Linux内核中关于视频设备的驱动框架,为上层应用程序提供统一的接口,方便访问和操作视频设备。 Camera驱动开发过程中的主要步骤包括: 1. 导入驱动:将摄像头驱动代码导入到Linux内核中,以便系统能够加载和使用该驱动。 2. 设备初始化:进行摄像头设备的初始化工作,包括配置摄像头的参数和寄存器设置等。 3. 数据输入和输出:实现从摄像头采集视频数据,并将数据传输到上层应用程序或存储设备;同时,也需要支持从上层应用程序接收命令和控制信息,并相应地对摄像头进行操作。 4. 设备控制:实现对摄像头的各种功能进行控制,如调整曝光、对焦、白平衡等参数,以及切换摄像头工作模式等。 5. 错误处理和异常处理:处理驱动运行中可能出现的错误和异常情况,保证驱动的稳定性和可靠性。 需要注意的是,Camera驱动开发的具体实现方式会因不同的摄像头硬件和操作系统平台而有所差异。例如,对于USB摄像头,可以使用UVC(USB Video Class)驱动来支持USB视频设备;而对于MIPI接口摄像头,可以利用MIPI接口规范来实现驱动。 总之,Camera驱动开发是一个相对复杂的过程,需要深入了解相关硬件和软件平台的知识,并综合考虑设备初始化、数据输入输出、设备控制等方面的要求来完成。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

硬核王同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值