AiPi-Eyes-S1是安信可開源團隊專門為Ai-M61-32S設(shè)計的一款開發(fā)板,支持WiFi6、BLE5.3。所搭載的Ai-M61-32S 模組具有豐富的外設(shè)接口,具體包括 DVP、MJPEG、Dispaly、AudioCodec、USB2.0、SDU、以太網(wǎng) (EMAC)、SD/MMC(SDH)、SPI、UART、I2C、I2S、PWM、GPDAC、GPADC、ACOMP 和 GPIO 等。
AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入USB攝像頭。
從零開始學(xué)習(xí)小安派:
1、零基礎(chǔ)開發(fā)小安派-Eyes-S1【入門篇】——初識小安派-Eyes-S1
2、零基礎(chǔ)開發(fā)小安派-Eyes-S1【入門篇】——安裝VMware與Ubuntu
3、入門篇:零基礎(chǔ)開發(fā)小安派-Eyes-S1——新建工程并燒錄調(diào)試
4、零基礎(chǔ)開發(fā)小安派-Eyes-S1入門篇——Win下SSH連接Linux
5、零基礎(chǔ)開發(fā)小安派-Eyes-S1【入門篇】——Samba共享文件夾
新建的工程包含多個文件和文件夾,作為初學(xué)者第一次接觸,下面淺聊一下我對工程文件的了解,若有不對的地方請大家多多指正。
一、build 文件夾
該文件夾是編譯后生成的 bin 文件存儲的地方,如本工程文件的文件名作為 Helloworld,編譯后的 bin 文件也是以工程名 + 芯片命名。

生成的 bin 文件存儲在 build/build_out 下,可以看見有多個類似的文件,這里我們燒錄取 bin 文件,這里可以看到在 hellowworld 工程編譯生成的 bin 文件命名為 helloworld_bl616.bin,因為 bl616 和 bl618 的芯片其實在軟件上的區(qū)分很小,他們通用同一個 SDK,在硬件上的區(qū)分在于 616 的 IO 口數(shù)量不如 618,由于使用同一套 SDK,所以 bl616 和 618 的固件是可以通用的,這里無需過多計較區(qū)別。

注意,這里的 bin 文件在博流的燒錄工具上并不是合成的 bin 文件,這里對應(yīng)的 bin 文件是圖中的 firmware 目錄下的 bin 文件,還需要其他的如 boot2 等文件,那么問題來了,使用 Single Download Options 燒錄的合成 bin 文件在哪里,其實是在 SDK 中,具體的路徑為:
aithinker_Ai-M6X_SDK/tools/bflb_tools/bouffalo_flash_cube/chips/bl616/img_create/whole_flash_data.bin
如果需要使用 Windows 下的燒錄工具燒錄 bin 文件,選擇這個路徑下的 whole_flash_data.bin 即可。

二、CMakeLists.txt
CMake 是一個跨平臺、開源的構(gòu)建系統(tǒng),它可以幫助我們管理好工程里的軟件架構(gòu)。CMakeLists.txt 文件相當(dāng)于執(zhí)行的列表,它可以調(diào)用其他的.h 頭文件和.so/.a 庫文件,生成 Makefile,將.cpp/.c/.cc 文件編譯成可執(zhí)行文件或新的庫文件。我們從簡單的 helloworld 工程學(xué)習(xí),先打開 CMakeLists.txt 查看里面的語句。

BouffaloSDK 中封裝了以下函數(shù)接口,基本滿足常用場景使用。

三、flash_prog_cfg.ini
BouffaloSDK 采用新的 flash tool(bouffalo_flash_cube),并且燒錄依賴 flash prog cfg.ini 文件。我們的燒錄命令 make flash 就是依賴這個文件執(zhí)行的。它也有自己的語法。

正常使用只需要創(chuàng)建一個 KEY,例如 [FW],并且填寫 filedir 和 address 就可以使用了。
其中 filedir 的填寫方式有以下幾種:
- bin 文件全路徑 + bin 文件名稱
- bin 文件相對路徑 + bin 文件名稱
- bin 文件名稱添加 _$(CHIPNAME) 后綴可以自動識別成不同芯片(僅在 bin 文件名稱前綴不同的時候使用)
- bin 文件名稱添加 * 通配符,可以自動補全 bin 文件名稱(僅在 bin 文件名稱前綴不同的時候使用)
1.模組作為 MCU(不使用無線功能)
只需要和 helloworld 工程一樣修改 filedir 的文件名即可。
[cfg]
# 0: no erase, 1:programmed section erase, 2: chip erase
erase = 1
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
skip_mode = 0x0, 0x0
# 0: not use isp mode, #1: isp mode
boot2_isp_mode = 0
[FW]
filedir = ./build/build_out/xxx*_$(CHIPNAME).bin
address = 0x0000
2.模組作為 IOT(開啟無線功能)
[cfg]
# 0: no erase, 1:programmed section erase, 2: chip erase
erase = 1
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
skip_mode = 0x0, 0x0
# 0: not use isp mode, #1: isp mode
boot2_isp_mode = 0
[boot2]
filedir = ./build/build_out/boot2_*.bin
address = 0x000000
[partition]
filedir = ./build/build_out/partition*.bin
address = 0xE000
[FW]
filedir = ./build/build_out/xxx*_$(CHIPNAME).bin
address = 0x10000
[mfg]
filedir = ./build/build_out/mfg*.bin
address = 0x210000
- cfg 表示燒錄時的一些配置,正常不需要改動
- FW 要燒錄的應(yīng)用固件,必須使用 FW 名稱。
filedir 表示應(yīng)用固件所在相對路徑,正常來說是編譯完后放在 build/build_out 目錄。_$(CHIPNAME).bin 用于區(qū)分不同芯片。xxx 表示應(yīng)用固件名稱,與 CMakeLists.txt 中 project(xxx) 中名稱一致。
address 由 partition_xxx.toml 指定
- boot2 要燒錄的 boot2 固件,必須使用 boot2 名稱。
filedir 表示 boot2 固件所在相對路徑,正常來說是編譯完后放在 build/build_out 目錄。自動從 bsp/board/board_name/config 目錄拷貝。
address 必須使用 0 地址
- partition 要燒錄的 partition 固件,必須使用 partition 名稱。
filedir 表示 partition 固件所在相對路徑,正常來說是編譯完后放在 build/build_out 目錄。自動從 bsp/board/board_name/config 目錄 partition_xxx.toml 轉(zhuǎn)換成 bin 文件并拷貝。
address 由 partition_xxx.toml 指定
- mfg 要燒錄的 mfg 固件,必須使用 mfg 名稱。mfg 可選,可以不燒錄
filedir 表示 mfg 固件所在相對路徑,正常來說是編譯完后放在 build/build_out 目錄。自動從 bsp/board/board_name/config 目錄拷貝。
address 由 partition_xxx.toml 指定
(備注:如果使用了 partition,address 可以使用 @partition 代替絕對地址,@partition 將會自動從 partition_xxx.toml 找到對應(yīng)的地址)
3.多個運行固化燒錄
禁止使用通配符 * 以及 _$(CHIPNAME) 前綴,因為 bin 文件名稱前綴相同。
[cfg]
# 0: no erase, 1:programmed section erase, 2: chip erase
erase = 1
# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated
skip_mode = 0x0, 0x0
# 0: not use isp mode, #1: isp mode
boot2_isp_mode = 0
[FW1]
filedir = ./build/build_out/xxx0.bin
address = 0x00000
[FW2]
filedir = ./build/build_out/xxx1.bin
address = 0x10000
[FW3]
filedir = ./build/build_out/xxx2.bin
address = 0x20000
四、main.c
main.c,主程序運行的文件。

五、Makefile
編譯的文件,其指定了一系列以賴關(guān)系和依賴規(guī)則。指定哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,可以實現(xiàn)自動化編譯,一旦寫好,只需要一個 make 命令,整個工程完全自動編譯,極大的提高了軟件開發(fā)的效率。

目前來說只需要修改第二行 BL_SDK_BASE ?= $(SDK_DEMO_PATH)/../aithinker_Ai-M6X_SDK 的編譯路徑設(shè)置即可。
六、proj.conf
前面在 CMakeLists.txt 中提到的組件的使用,當(dāng)我們需要使用各種組件或開啟一些配置功能時,需要進入這個文件中添加。

舉例:需要添加 SD 卡,或者 LVGL。需要在 proj.conf 中
set(CONFIG_FATFS 1)
set(CONFIG_LVGL 1)
七、README.md
README 相當(dāng)于一個說明書,由工程的管理者進行編寫,包括該工程一些簡介,使用方法,注意事項等等。
md 文件后綴的格式并不是什么高大上的文件,只是一種編輯的語法,可以使用記事本打開,也可以在 VS 中安裝 Markdown Preview 插件。

這樣查看 README 時可以右鍵點擊 MPE:打開側(cè)邊預(yù)覽,可以方便我們查看 README。

-
開源硬件
+關(guān)注
關(guān)注
8文章
216瀏覽量
30428
發(fā)布評論請先 登錄
【「零基礎(chǔ)開發(fā)AI Agent」閱讀體驗】+ 入門篇學(xué)習(xí)
【「零基礎(chǔ)開發(fā)AI Agent」閱讀體驗】總體預(yù)覽及入門篇
功德+1,用小安派-Eyes-S1做一個電子木魚

零基礎(chǔ)開發(fā)小安派-Eyes-S1 進階篇 ——通過屏幕輸入連接 Wi-Fi

零基礎(chǔ)開發(fā)AiPi-Eyes-S1——通過屏幕輸入連接Wi-Fi

零基礎(chǔ)開發(fā)小安派-Eyes-S1【進階篇】——初識 LVGL 并搭建最小工程

零基礎(chǔ)開發(fā)小安派-Eyes-S1——初識LVGL并搭建最小工程
零基礎(chǔ)開發(fā)小安派-Eyes-S1 外設(shè)篇——DAC

零基礎(chǔ)開發(fā)小安派-Eyes-S1外設(shè)篇——I2S

零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——FLASH

零基礎(chǔ)開發(fā)小安派-Eyes-S1 外設(shè)篇 ——I2C

零基礎(chǔ)開發(fā)小安派-Eyes-S1外設(shè)篇——GPIO中斷編程

零基礎(chǔ)開發(fā)小安派-Eyes-S1外設(shè)篇——GPIO 輸入輸出

開發(fā)教程 零基礎(chǔ)開發(fā)小安派-Eyes-S1入門篇——Win下SSH連接Linux

評論