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

Edge AI Feb 02, 2021

       K210 是一顆 ASIC 處理器,ASIC (Application Specific Integrated Circuit),特定應用積體電路,是針對特定應用需求設計的 IC,在架構上能為目標應用最佳化,讓這種處理器在相對低的功耗下就能有很高的效能。

       而這顆 K210 就是針對機器視覺與聽覺這兩種應用所設計,除了耗電量低,還擁有不錯的 AI 性能(1TOPS)。

       作為對比 NVDIA  Jeston Nano 2GB,由 Maxwell 架構 GPU 閹割而來,從版子上的散熱片可以看出它的發熱量是高出很多的,性能方面轉換後約 0.5 TOPS 略低於 K210。

       對於這次的專題 ── 桌上型互動機器人來說, Jeston Nano 的體積實在是太大了,耗電量也高出很多,所以最後還是選擇 Maix Dock 做為實現手勢識別等互動功能的輔助板,由 Maix Dock 取代藍牙遙控,控制 stm32 開發板。

接下來的內容介紹如何利用勘智官方提供的工具,在 MacOS 建立編譯環境。

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 產生的快取,會導致重複出現同樣的報錯

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.