0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【入門(mén)篇】——工程文件架構(gòu)

AIoT行業(yè)洞察 ? 2024-11-06 16:10 ? 次閱讀

AiPi-Eyes-S1是安信可開(kāi)源團(tuán)隊(duì)專(zhuān)門(mén)為Ai-M61-32S設(shè)計(jì)的一款開(kāi)發(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接口,可接入U(xiǎn)SB攝像頭。

從零開(kāi)始學(xué)習(xí)小安派:

1、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【入門(mén)篇】——初識(shí)小安派-Eyes-S1

2、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【入門(mén)篇】——安裝VMware與Ubuntu

3、入門(mén)篇:零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1——新建工程并燒錄調(diào)試

4、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1入門(mén)篇——Win下SSH連接Linux

5、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【入門(mén)篇】——Samba共享文件夾

新建的工程包含多個(gè)文件和文件夾,作為初學(xué)者第一次接觸,下面淺聊一下我對(duì)工程文件的了解,若有不對(duì)的地方請(qǐng)大家多多指正。

一、build 文件夾

該文件夾是編譯后生成的 bin 文件存儲(chǔ)的地方,如本工程文件的文件名作為 Helloworld,編譯后的 bin 文件也是以工程名 + 芯片命名。

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

注意,這里的 bin 文件在博流的燒錄工具上并不是合成的 bin 文件,這里對(duì)應(yīng)的 bin 文件是圖中的 firmware 目錄下的 bin 文件,還需要其他的如 boot2 等文件,那么問(wèn)題來(lái)了,使用 Single Download Options 燒錄的合成 bin 文件在哪里,其實(shí)是在 SDK 中,具體的路徑為:

aithinker_Ai-M6X_SDK/tools/bflb_tools/bouffalo_flash_cube/chips/bl616/img_create/whole_flash_data.bin

如果需要使用 Windows 下的燒錄工具燒錄 bin 文件,選擇這個(gè)路徑下的 whole_flash_data.bin 即可。

二、CMakeLists.txt

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

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

三、flash_prog_cfg.ini

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

正常使用只需要?jiǎng)?chuàng)建一個(gè) KEY,例如 [FW],并且填寫(xiě) filedir 和 address 就可以使用了。

其中 filedir 的填寫(xiě)方式有以下幾種:

  • bin 文件全路徑 + bin 文件名稱(chēng)
  • bin 文件相對(duì)路徑 + bin 文件名稱(chēng)
  • bin 文件名稱(chēng)添加 _$(CHIPNAME) 后綴可以自動(dòng)識(shí)別成不同芯片(僅在 bin 文件名稱(chēng)前綴不同的時(shí)候使用)
  • bin 文件名稱(chēng)添加 * 通配符,可以自動(dòng)補(bǔ)全 bin 文件名稱(chēng)(僅在 bin 文件名稱(chēng)前綴不同的時(shí)候使用)

1.模組作為 MCU(不使用無(wú)線(xiàn)功能)

只需要和 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(開(kāi)啟無(wú)線(xiàn)功能)

[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 表示燒錄時(shí)的一些配置,正常不需要改動(dòng)

- FW 要燒錄的應(yīng)用固件,必須使用 FW 名稱(chēng)。

filedir 表示應(yīng)用固件所在相對(duì)路徑,正常來(lái)說(shuō)是編譯完后放在 build/build_out 目錄。_$(CHIPNAME).bin 用于區(qū)分不同芯片。xxx 表示應(yīng)用固件名稱(chēng),與 CMakeLists.txt 中 project(xxx) 中名稱(chēng)一致。

address 由 partition_xxx.toml 指定

- boot2 要燒錄的 boot2 固件,必須使用 boot2 名稱(chēng)。

filedir 表示 boot2 固件所在相對(duì)路徑,正常來(lái)說(shuō)是編譯完后放在 build/build_out 目錄。自動(dòng)從 bsp/board/board_name/config 目錄拷貝。

address 必須使用 0 地址

- partition 要燒錄的 partition 固件,必須使用 partition 名稱(chēng)。

filedir 表示 partition 固件所在相對(duì)路徑,正常來(lái)說(shuō)是編譯完后放在 build/build_out 目錄。自動(dòng)從 bsp/board/board_name/config 目錄 partition_xxx.toml 轉(zhuǎn)換成 bin 文件并拷貝。

address 由 partition_xxx.toml 指定

- mfg 要燒錄的 mfg 固件,必須使用 mfg 名稱(chēng)。mfg 可選,可以不燒錄

filedir 表示 mfg 固件所在相對(duì)路徑,正常來(lái)說(shuō)是編譯完后放在 build/build_out 目錄。自動(dòng)從 bsp/board/board_name/config 目錄拷貝。

address 由 partition_xxx.toml 指定

(備注:如果使用了 partition,address 可以使用 @partition 代替絕對(duì)地址,@partition 將會(huì)自動(dòng)從 partition_xxx.toml 找到對(duì)應(yīng)的地址)

3.多個(gè)運(yùn)行固化燒錄

禁止使用通配符 * 以及 _$(CHIPNAME) 前綴,因?yàn)?bin 文件名稱(chēng)前綴相同。

[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,主程序運(yùn)行的文件。

五、Makefile

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

目前來(lái)說(shuō)只需要修改第二行 BL_SDK_BASE ?= $(SDK_DEMO_PATH)/../aithinker_Ai-M6X_SDK 的編譯路徑設(shè)置即可。

六、proj.conf

前面在 CMakeLists.txt 中提到的組件的使用,當(dāng)我們需要使用各種組件或開(kāi)啟一些配置功能時(shí),需要進(jìn)入這個(gè)文件中添加。

舉例:需要添加 SD 卡,或者 LVGL。需要在 proj.conf 中

set(CONFIG_FATFS 1)
set(CONFIG_LVGL 1)

七、README.md

README 相當(dāng)于一個(gè)說(shuō)明書(shū),由工程的管理者進(jìn)行編寫(xiě),包括該工程一些簡(jiǎn)介,使用方法,注意事項(xiàng)等等。

md 文件后綴的格式并不是什么高大上的文件,只是一種編輯的語(yǔ)法,可以使用記事本打開(kāi),也可以在 VS 中安裝 Markdown Preview 插件。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)源硬件
    +關(guān)注

    關(guān)注

    8

    文章

    204

    瀏覽量

    29700
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    小安 AiPi-Eyes-R2 玩植物大戰(zhàn)僵尸

    - Eyes-R1 帶外置 ES8388 音頻芯片,支持兩路音頻輸入輸出。小安 - Eyes-R2 采用內(nèi)置 CodeC,支持單路音頻輸入輸出。 如果是編譯帶 8388
    的頭像 發(fā)表于 11-06 16:10 ?37次閱讀
    用<b class='flag-5'>小安</b><b class='flag-5'>派</b> AiPi-<b class='flag-5'>Eyes</b>-R2 玩植物大戰(zhàn)僵尸

    零基礎(chǔ)開(kāi)發(fā)小安-Eyes-S1【外設(shè)】——PWM

    小安-Eyes-S1入門(mén)篇】——初識(shí)小安-Eyes-S
    的頭像 發(fā)表于 11-06 16:10 ?32次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>【外設(shè)<b class='flag-5'>篇</b>】——PWM

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

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 產(chǎn)品資料:https://docs.ai-thinker.com/eyes
    的頭像 發(fā)表于 10-29 14:56 ?617次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>外設(shè)<b class='flag-5'>篇</b>——GPIO中斷編程

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

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從開(kāi)始學(xué)習(xí)小安
    的頭像 發(fā)表于 10-25 13:50 ?897次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>外設(shè)<b class='flag-5'>篇</b>——GPIO 輸入輸出

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

    AiPi-Eyes-S1 是安信可開(kāi)源團(tuán)隊(duì)專(zhuān)門(mén)為Ai-M61-32S設(shè)計(jì)的一款開(kāi)發(fā)板,支持WiFi6、BLE5.3。所搭載的Ai-M61-32S 模組具有豐富的外設(shè)接口,具體包括 DV
    的頭像 發(fā)表于 09-24 14:31 ?211次閱讀
    <b class='flag-5'>開(kāi)發(fā)</b>教程 <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b><b class='flag-5'>入門(mén)篇</b>——Win下SSH連接Linux

    功德+1,用小安-Eyes-S1做一個(gè)電子木魚(yú)

    2024積德累功,心想事成!接下來(lái) 看看如何用小安-Eyes-S1做一個(gè)電子木魚(yú) 。 01、GUI-Guider 頁(yè)面設(shè)計(jì) 先新建一個(gè)工程。 直接進(jìn)入 UI 設(shè)計(jì)界面,這里用到了兩個(gè)
    的頭像 發(fā)表于 01-16 14:33 ?623次閱讀
    功德+<b class='flag-5'>1</b>,用<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>做一個(gè)電子木魚(yú)

    如何用小安-Eyes-S1做一個(gè)電子木魚(yú)?

    2024年的第一教程來(lái)了,本篇學(xué)習(xí)如何添加LVGL事件,并制作完成一個(gè)電子木魚(yú)(小美苦苦哀求,我略微出手而已)。祝大家2024積德累功,心想事成!接下來(lái)看看如何用小安-Eyes-S1
    的頭像 發(fā)表于 01-13 15:18 ?934次閱讀
    如何用<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>做一個(gè)電子木魚(yú)?

    用安信可的小安小安,DIY個(gè)簡(jiǎn)單的CC表

    本作品由安信可社區(qū)用戶(hù) bzhou830 制作 原貼地址:【DIY電子作品】電壓與電流CC表 基于小安AiPi-Eye-S1 匯總 https://bbs.ai-thinker.com
    的頭像 發(fā)表于 12-25 17:07 ?609次閱讀
    用安信可的<b class='flag-5'>小安</b><b class='flag-5'>派</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>,DIY個(gè)簡(jiǎn)單的CC表

    小安DIY個(gè)簡(jiǎn)單的CC表

    Power-Z 上使用的是 INA226,正好手上有這個(gè)芯片。那么搭配小安驚艷的屏幕應(yīng)該能實(shí)現(xiàn)出來(lái)一個(gè)高顏值的CC表。打開(kāi)原理圖可以看到S1正好預(yù)留了一個(gè)I2C的接口,完美
    的頭像 發(fā)表于 12-22 18:15 ?1540次閱讀
    用<b class='flag-5'>小安</b><b class='flag-5'>派</b>DIY個(gè)簡(jiǎn)單的CC表

    零基礎(chǔ)入門(mén) Hyperlynx 仿真教程

    電子發(fā)燒友網(wǎng)站提供《零基礎(chǔ)入門(mén) Hyperlynx 仿真教程.pdf》資料免費(fèi)下載
    發(fā)表于 12-22 10:49 ?28次下載

    使用小安-DSL-3.5寸開(kāi)發(fā)的Rd-03D雷達(dá)檢測(cè)站

    Hello~工程師又來(lái)整活了。這是一個(gè)使用小安-DSL-3.5寸開(kāi)發(fā)的Rd-03D 雷達(dá)檢測(cè)站,可以把Rd-03D檢測(cè)的內(nèi)容顯示在3.5寸觸摸屏上,直觀(guān)地查看雷達(dá)的檢測(cè)結(jié)果。
    的頭像 發(fā)表于 12-16 16:05 ?484次閱讀
    使用<b class='flag-5'>小安</b><b class='flag-5'>派</b>-DSL-3.5寸<b class='flag-5'>開(kāi)發(fā)</b>的Rd-03D雷達(dá)檢測(cè)站

    入門(mén)篇3:零基礎(chǔ)開(kāi)發(fā)小安-Eyes-S1——新建工程并燒錄調(diào)試

    01 新建工程文件 1、復(fù)制helloworld工程 2、將工程移動(dòng)到AiPi-Open-Kits下 3、修改helloworld
    的頭像 發(fā)表于 12-12 16:35 ?522次閱讀
    <b class='flag-5'>入門(mén)篇</b>3:<b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>——新建<b class='flag-5'>工程</b>并燒錄調(diào)試

    基于小安Eyes-S1開(kāi)發(fā)板新建工程并燒錄調(diào)試

    Makefile文件的修改一般只修改編譯路徑,make文件作為建立編譯關(guān)系和依賴(lài),我們所有的demo編譯都依賴(lài)SDK
    的頭像 發(fā)表于 12-11 11:27 ?562次閱讀
    基于<b class='flag-5'>小安</b><b class='flag-5'>派</b><b class='flag-5'>Eyes-S1</b><b class='flag-5'>開(kāi)發(fā)</b>板新建<b class='flag-5'>工程</b>并燒錄調(diào)試

    小安Arduino開(kāi)發(fā)板 ,全新支持以太網(wǎng)口

    前面幾款小安派出來(lái)的時(shí)候,經(jīng)常有粉絲詢(xún)問(wèn)是否支持Arduino?其它款小安也是支持的,大家可以去安信可社區(qū)搜索查看,小安-UNO-ET4
    的頭像 發(fā)表于 12-06 16:00 ?725次閱讀
    <b class='flag-5'>小安</b><b class='flag-5'>派</b>Arduino<b class='flag-5'>開(kāi)發(fā)</b>板 ,全新支持以太網(wǎng)口

    小安-UNO-ET485 Arduino開(kāi)發(fā)板簡(jiǎn)介

    前面幾款小安派出來(lái)的時(shí)候,經(jīng)常有粉絲詢(xún)問(wèn)是否支持Arduino?其它款小安也是支持的,大家可以去安信可社區(qū)搜索查看,小安-UNO-ET4
    的頭像 發(fā)表于 12-03 09:58 ?868次閱讀
    <b class='flag-5'>小安</b><b class='flag-5'>派</b>-UNO-ET485 Arduino<b class='flag-5'>開(kāi)發(fā)</b>板簡(jiǎn)介