嵌入式 AI 入門好選擇 - 低門檻的 AI 開發板:K210|編譯環境設定 (MacOS)
K210 是一顆 ASIC 處理器,ASIC (Application Specific Integrated Circuit),特定應用積體電路,顧名思義就是特別針對「特定的應用需要」而設計出來的積體電路(IC),處理器的架構可以為目標應用深度優化,讓這種處理器在極低的功耗下就能有非常可觀的效能。
而 K210 就是特別針對機器視覺與機器聽覺等應用所設計,具有低成本、低功耗(<1W)、相對可用的 AI 性能(1TOPS)等特性。筆者購入的 Maix Dock 開發板套裝:主板、螢幕、鏡頭、Wifi 天線、Type-C 轉接頭(對沒錯,這是一塊 Type-C 接口的開發板),大約 500 多台幣,非常的划算,很適合筆者這種貧窮的獨立開發者。

作為對比 NVDIA Jeston Nano 2GB,由 Maxwell 架構 GPU 閹割而來,巨大的散熱片也意味著它的發熱較為可觀,性能方面換算下來約具有 0.5 TOPS 的算力,沒錯這就是 ASIC 的優勢所在,更高的效能、更低的功耗。但相較之下較為活躍的開發社群、廣泛的應用場景與豐富的接口,以主板本身約 1800 台幣的價格來說,如果對體積與功耗沒有要求,或是有跑完整作業系統,做單板電腦或微型伺服器等人工智慧應用以外的需求,也不失為一個好選擇。

對於這次的專案 — 桌面級互動機器人來說,其實 Jeston Nano 的體積還是有點過於巨大了,所以最後還是選擇 Maix Dock 這個方案,至於這個機器人的名字嘛,還沒什麼想法,歡迎大家留言提供一下靈感。
底下介紹如何利用勘智官方提供的工具,在 MacOS 搭建編譯環境,至於貧窮的獨立開發者為什麼會有 Mac 呢?那當然是黑蘋果啊。
1. 下載 SDK
將 Standalone 版 SDK 下載到家目錄
git clone https://github.com/kendryte/kendryte-standalone-sdk.git
2. 安裝交叉編譯工具鏈
這邊本來打算自己編譯,照著文檔試了幾次,還是報錯失敗 ... 直接下載吧
2.1 下載最新發佈的 MacOS 版工具鏈

2.2 解壓縮,放至 /usr/local/opt 內
( MacOS 環境下 opt
目錄位置在 /usr/local/opt )
2.3 將 kendryte-toolchain/bin 添加到 PATH 環境變量中
打開 ~/.bash_profile
文件
nano ~/.bash_profile
在文件最末端加入 export PATH=$PATH:/usr/local/opt/kendryte-toolchain/bin
GNU nano 2.0.6 File: /Users/user_name/.bash_profile
export PATH=$PATH:/usr/local/opt/kendryte-toolchain/bin
重新載入 bash_profile 讓修改生效
source ~/.bash_profile
2.4 安裝 make 與 cmake
安裝 xcode-select
獲取 make
工具
xcode-select --install
安裝 cmake
brew install cmake
3. 編譯測試用的 hello_world 專案
3.1 移至 SDK 資料夾內
cd kendryte-standalone-sdk
SDK 中預設的專案資料夾 src
內已經有一個範例專案 hello_world
,透過編譯這個專案我們可以測試環境是不是可以正常運作
3.2 建立 build 資料夾
mkdir build && cd build
如果之前有試過不同的方法,必須先把build
資料夾清空 ,因為cmake
產生的快取會影響到 cmake 的執行,就會導致重複出現同樣的報錯
3.3 執行 cmake
cmake .. -DPROJ=hello_world -DTOOLCHAIN=/usr/local/opt/kendryte-toolchain/bin
其中 -DPROJ
是專案名,-DTOOLCHAIN
是工具鏈的安裝路徑
3.4 編譯
make
...
dyld: Library not loaded: /usr/local/opt/isl/lib/libisl.19.dylib
Referenced from: /usr/local/opt/kendryte-toolchain/libexec/gcc/riscv64-unknown-elf/8.2.0/cc1plus
Reason: image not found
似乎跟上面編譯工具鏈時跳過的錯誤差不多 ... 還是得花點時間解決
參考 stackoverflow,可能是 Homebrew 更新套件時造成的依賴錯誤,編譯時選擇到opt/isl/lib/
中不存在的錯誤檔案 libisl.19.dylib
改成正確檔案後就能解決:
install_name_tool -change '/usr/local/opt/isl/lib/libisl.19.dylib' /usr/local/opt/isl/lib/libisl.dylib /usr/local/opt/kendryte-toolchain/libexec/gcc/riscv64-unknown-elf/8.2.0/cc1plus
重新編譯~
dyld: Library not loaded: /usr/local/opt/isl/lib/libisl.19.dylib
Referenced from: /usr/local/opt/kendryte-toolchain/libexec/gcc/riscv64-unknown-elf/8.2.0/cc1
Reason: image not found
一樣的錯誤,同樣的方式解決吧
install_name_tool -change '/usr/local/opt/isl/lib/libisl.19.dylib' /usr/local/opt/isl/lib/libisl.dylib /usr/local/opt/kendryte-toolchain/libexec/gcc/riscv64-unknown-elf/8.2.0/cc1
4. 編譯完成!
編譯後的檔案 hello_world.bin
已存在 build
資料夾內