OpenMV源码细读

描述

最近在看OpenMV的源码,和往前一样,经常会卡住,还是对C不够了解,一知半解的,这些文章不以读源码为主,但是会写一下我日常不见的东西。

OpenMV初体验

PSRAM

OpenMV最大的卖点就是相对廉价的嵌入式机器视觉了,但是瓶颈其实在IO和运算速度上面。前者就是使用PSRAM这样的缓冲器,后面就是使用主频高的MCU。但是一切都有尽头,无妨,几十块钱

PSRAM

目前官方支持得板子是这些得,别的芯片需要移植

PSRAM

在下载的库里面有很多的Bin文件,这里就是说明文件的作用

PSRAM

这个是makefile文件里面定义要用的编译器

PSRAM

这个定义的一些目录

OMV是这个项目最重要的东西,一切魔法的起源,UVC是USB Video devices,CM4是ARM内核,还有STM32的AI应用,以及下面就是一些CMOS的驱动了,也是最重要的。

PSRAM

这个就是缓存器的一些操作函数,无参数无返回的,那就是过程了

PSRAM

这个是控制CMOS的Cambus协议,要使用IIC,这里是针对STM32的

PSRAM

还有模拟的USB设备,传输视频使用

PSRAM

好像是一些高级的东西

PSRAM

还有延时的封装函数

PSRAM

STM32的片子最少都是F4的片子了

PSRAM

UVC在OpenMV里面是一个占比很大的部分,我为此写了一篇没有写完的文章。

PSRAM

这个就是我们树莓派Pico的配置文件了

PSRAM

OMV这个文件夹就是我们OpenMV这个项目的精华所在了

PSRAM

这个是以字符串数组写进去的demo

PSRAM

这些都是支持的传感器,在传感器这个目录里面,后期扩展的话,可以按照样式自己适配自己的传感器。

PSRAM

通过寄存器,cambus协议和传感器的头文件连在一起

PSRAM

文件在这里,项目里面一些公用的函数封装在这里

PSRAM

本土狗就见过这个传感器

PSRAM

ov2640的一个时钟的频率,和对传感器的一个初始化

PSRAM

这个是OV2640寄存器的定义

PSRAM

基本上都是宏定义了

PSRAM

传感器的一个初始化,看下这个操作的结构体

PSRAM

这里是传感器的ID,在结构体的一开始被定义

PSRAM

camsbus就是IIC的协议,上面第一个就是写了这个IIC的协议的地址,下面按照这个结构体里面写的是硬件的标志位,至于是什么意思,这里的注释就写进去了,有一些我还是看不懂的。

PSRAM

行同步信号回调+帧回调+看不懂+重启

PSRAM

这个就是回调的一个定义,就长这样的

PSRAM

私有的话,这里就是高和低我也不懂是哪里的

PSRAM

像素格式的功能开端,一个是YUV,可变格式,颜色,动态范围,拜尔格式

PSRAM

这个是图像的编码格式

PSRAM

这个是视频的分辨率列表

PSRAM

这个函数就吊了,具体其实定义就是这样的

怎么起作用呢?就是通过参数的不同输入达到一种不同的函数功能。

PSRAM

这参数设计的有Python那一套的感觉了

PSRAM

把传感器的结构体的使用范围扩展一下,以及使用2维数组来放分辨率的信息

PSRAM

下面还有一些函数,初始化有两种,一个是状态,一个是硬件

具体的实现,先不看。

PSRAM

但是可以看一下这个初始化的函数使用

PSRAM

结构体的值和函数的参数混在一起

PSRAM

每一个传感器大概都是通过这样的被定义

PSRAM

完整的传感器结构体定义,这里就写的很乱了,文章写了两天了都

PSRAM

传感器的各种状态,需要来输出

代码中大量看到Void*,有什么用? void*有什么用呢?实际上我们在很多接口中都会发现它们的参数类型都是void*,例如:

 

ssize_t read(int fd, void *buf, size_t count); 
void *memcpy(void *dest, const void *src, size_t n);
为何要如此设计?因为对于这种通用型接口,你不知道用户的数据类型是什么,但是你必须能够处理用户的各种类型数据,因而会使用void*。void*能包容地接受各种类型的指针。也就是说,如果你期望接口能够接受任何类型的参数,你可以使用void*类型。但是在具体使用的时候,你必须转换为具体的指针类型。例如,你传入接口的是int*,那么你在使用的时候就应该按照int*使用。

 

因为这里有大量的Makefile文件,VSCode推荐这个插件

PSRAM

这么贵的x1c连个win11都不能装,笑死了

文章没有达到自己预期的样子,寄了,国庆完了。




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分