嵌入式下的深度學習 Sparkfun Edge with TensorFlow(一)Hello World


嵌入式下的深度學習 Sparkfun Edge with TensorFlow(一)Hello World

硬件、軟件環境

微控制器:Sparkfun Edge

  • 32位ARM Cortex-M4F處理器
  • 48MHz CPU時鍾,帶有TurboSPOT™的96MHz
  • 極低功耗:6uA / MHz
  • 1MB Flash
  • 384KB SRAM
  • 兩個麥克風,一個三軸加速度計和一個攝像頭連接器

TinyML鏈接:https://pan.baidu.com/s/1G_WB7QhnxcZJxpKpK_NBSA
提取碼:mgj1

 

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

編譯

在拉下的repo中已經有了書中的源碼,所以可以直接編譯。

# 編譯在板子上運行的二進制文件
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=sparkfun_edge hello_world_bin

在這里就有問題了。make的過程中會連續下載幾個包,由於服務器在國外,國內的速度特別慢,一旦中途因網絡超時下載失敗就需重新make,但第二次make時不會重新下載或斷點下載上一次下載失敗的包,缺包編譯就會失敗。這時在第二次make前在 tensorflow/lite/micro/tools/make/downloads 里刪除剛才下載失敗的目錄,第二次make就會重新下載。

如果幾次后還是不行成功編譯,只能重新刪除整個tensorflow的repo,再重新剛才的流程。

可以讓ubuntu終端走國外代理完成這幾個包的下載。

Linux 讓終端走代理的幾種方法 https://zhuanlan.zhihu.com/p/46973701

Linux終端代理方式  https://www.cnblogs.com/hi-eric/p/11563245.html

# 簽名
python3 tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/create_cust_image_blob.py --bin tensorflow/lite/micro/tools/make/gen/sparkfun_edge_cortex-m4/bin/micro_speech.bin --load-address 0xC000 --magic-num 0xCB -o main_nonsecure_ota --version 0x0

# 生成真正在板子上運行的二進制文件
python3 tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/create_cust_wireupdate_blob.py --load-address 0x20000 --bin main_nonsecure_ota.bin -i 6 -o main_nonsecure_wire --options 0x1

 最后生成的main_nonsecure_wire.bin才是真正要燒進去的文件。

燒寫

# 波特率
export BAUD_RATE=921600
# 設備號
export DEVICENAME="/dev/ttyUSB0"
# 燒寫
python3 tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/uart_wired_update.py -b ${BAUD_RATE} ${DEVICENAME} -r 1 -f main_nonsecure_wire.bin -i 6

燒寫前,必須先按住bootloader鍵(14鍵),按住14鍵的同時,按一下reset鍵,此時仍然按住14鍵不松,然后才能執行Python的燒寫命令,同時,不要忘了sudo chmod 666 /dev/ttyUSB0,以給其足夠的權限。

燒寫器用的是沁恆的CH34x,Ubuntu的默認CH340驅動是有問題的,有可能燒不進去。解決辦法:重新編譯CH34x驅動並加載驅動。

$ git clone https://github.com/juliagoda/CH341SER.git
$ cd CH341SER/
$ make
$ sudo insmod ch34x.ko
$ sudo rmmod ch341

但是這是動態加載驅動的方式,所以每一次重啟后,再運行最后兩句重新加載驅動。

 

好了,至此,已經可以通過官方的開發方式或Arduino IDE的開發方式寫工程了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM