嵌入式下的深度学习 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的开发方式写工程了。

posted @ 2020-03-21 22:40  光年xd  阅读(2619)  评论(1编辑  收藏  举报