嵌入式 AI 入門好選擇 - 低門檻的 AI 開發板:K210|編譯環境設定 (MacOS)

嵌入式 AI Feb 02, 2021

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
kendryte/kendryte-standalone-sdk
Standalone SDK for kendryte K210. Contribute to kendryte/kendryte-standalone-sdk development by creating an account on GitHub.

2. 安裝交叉編譯工具鏈

這邊本來打算自己編譯,照著文檔試了幾次,還是報錯失敗 ... 直接下載吧

2.1 下載最新發佈的 MacOS 版工具鏈

Releases · kendryte/kendryte-gnu-toolchain
Kendryte GNU Toolchain. Contribute to kendryte/kendryte-gnu-toolchain development by creating an account on GitHub.

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 資料夾內

標籤

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.