最近在看OpenMV的源碼,和往前一樣,經(jīng)常會卡住,還是對C不夠了解,一知半解的,這些文章不以讀源碼為主,但是會寫一下我日常不見的東西。
OpenMV初體驗
OpenMV最大的賣點就是相對廉價的嵌入式機器視覺了,但是瓶頸其實在IO和運算速度上面。前者就是使用PSRAM這樣的緩沖器,后面就是使用主頻高的MCU。但是一切都有盡頭,無妨,幾十塊錢
目前官方支持得板子是這些得,別的芯片需要移植
在下載的庫里面有很多的Bin文件,這里就是說明文件的作用
這個是makefile文件里面定義要用的編譯器
這個定義的一些目錄
OMV是這個項目最重要的東西,一切魔法的起源,UVC是USB Video devices,CM4是ARM內(nèi)核,還有STM32的AI應(yīng)用,以及下面就是一些CMOS的驅(qū)動了,也是最重要的。
這個就是緩存器的一些操作函數(shù),無參數(shù)無返回的,那就是過程了
這個是控制CMOS的Cambus協(xié)議,要使用IIC,這里是針對STM32的
好像是一些高級的東西
還有延時的封裝函數(shù)
STM32的片子最少都是F4的片子了
UVC在OpenMV里面是一個占比很大的部分,我為此寫了一篇沒有寫完的文章。
OMV這個文件夾就是我們OpenMV這個項目的精華所在了
這個是以字符串?dāng)?shù)組寫進(jìn)去的demo
這些都是支持的傳感器,在傳感器這個目錄里面,后期擴展的話,可以按照樣式自己適配自己的傳感器。
通過寄存器,cambus協(xié)議和傳感器的頭文件連在一起
文件在這里,項目里面一些公用的函數(shù)封裝在這里
本土狗就見過這個傳感器
ov2640的一個時鐘的頻率,和對傳感器的一個初始化
這個是OV2640寄存器的定義
基本上都是宏定義了
傳感器的一個初始化,看下這個操作的結(jié)構(gòu)體
這里是傳感器的ID,在結(jié)構(gòu)體的一開始被定義
camsbus就是IIC的協(xié)議,上面第一個就是寫了這個IIC的協(xié)議的地址,下面按照這個結(jié)構(gòu)體里面寫的是硬件的標(biāo)志位,至于是什么意思,這里的注釋就寫進(jìn)去了,有一些我還是看不懂的。
行同步信號回調(diào)+幀回調(diào)+看不懂+重啟
這個就是回調(diào)的一個定義,就長這樣的
私有的話,這里就是高和低我也不懂是哪里的
像素格式的功能開端,一個是YUV,可變格式,顏色,動態(tài)范圍,拜爾格式
這個是圖像的編碼格式
這個是視頻的分辨率列表
這個函數(shù)就吊了,具體其實定義就是這樣的
怎么起作用呢?就是通過參數(shù)的不同輸入達(dá)到一種不同的函數(shù)功能。
這參數(shù)設(shè)計的有Python那一套的感覺了
把傳感器的結(jié)構(gòu)體的使用范圍擴展一下,以及使用2維數(shù)組來放分辨率的信息
下面還有一些函數(shù),初始化有兩種,一個是狀態(tài),一個是硬件
具體的實現(xiàn),先不看。
但是可以看一下這個初始化的函數(shù)使用
結(jié)構(gòu)體的值和函數(shù)的參數(shù)混在一起
每一個傳感器大概都是通過這樣的被定義
完整的傳感器結(jié)構(gòu)體定義,這里就寫的很亂了,文章寫了兩天了都
傳感器的各種狀態(tài),需要來輸出
代碼中大量看到Void*,有什么用? void*有什么用呢?實際上我們在很多接口中都會發(fā)現(xiàn)它們的參數(shù)類型都是void*,例如:
ssize_t read(int fd, void *buf, size_t count); void *memcpy(void *dest, const void *src, size_t n);為何要如此設(shè)計?因為對于這種通用型接口,你不知道用戶的數(shù)據(jù)類型是什么,但是你必須能夠處理用戶的各種類型數(shù)據(jù),因而會使用void*。void*能包容地接受各種類型的指針。也就是說,如果你期望接口能夠接受任何類型的參數(shù),你可以使用void*類型。但是在具體使用的時候,你必須轉(zhuǎn)換為具體的指針類型。例如,你傳入接口的是int*,那么你在使用的時候就應(yīng)該按照int*使用。
因為這里有大量的Makefile文件,VSCode推薦這個插件
這么貴的x1c連個win11都不能裝,笑死了
文章沒有達(dá)到自己預(yù)期的樣子,寄了,國慶完了。
審核編輯:劉清
-
緩沖器
+關(guān)注
關(guān)注
6文章
1911瀏覽量
45427 -
PSRAM
+關(guān)注
關(guān)注
0文章
35瀏覽量
13304 -
openMV
+關(guān)注
關(guān)注
3文章
39瀏覽量
9785
原文標(biāo)題:OpenMV-源碼細(xì)讀.1
文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論