点赞+关注 不错过精彩内容
大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作!
这次用的是比亚迪的摄像头,开发调试了好几天,工作总结下如何开发调试的。
一、重点开发目录
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_mipi
endif
这段代码的作用是,在定义了宏FH_USING_BF3432_MIPI
并且其值为y
的情况下,将库-lbf3432_mipi
添加到变量MEDIA_LIBS
中。
-
script/linux/Kconfig:这是一个配置文件,用于配置Linux内核模块的选项。
在文件中menu "ISP Config"的
choice
prompt "Choose sensor"
default FH_USING_OVOS05_MIPI
代码内添加以下代码:
config FH_USING_BF3432_MIPI
depends on CONFIG_ARCH_YG || CONFIG_ARCH_FH885xV200 || CONFIG_ARCH_FH885xV210
bool "bf3432_mipi"
该配置项FH_USING_BF3432_MIPI
用于控制是否使用BF3432_MIPI
功能,通过开关该选项来决定是否启用BF3432_MIPI相关的驱动和功能。
该配置项的依赖关系是,只有当CONFIG_ARCH_YG
或CONFIG_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 ------------
如果觉得有用请点个免费三连
您的支持就是我最大的动力,这对我很重要! !