- File: 初使用STM32CubeMX 燒錄AI極簡model
- Tips: 沒有圖片的文章都是耍流氓,本文填充了大量的截圖
- Github: project1
- Author: [email protected]
- Date: 2020/07/02
- 感謝張老師 ([email protected]) 的援助之手
文章目錄
0x00 嵌入式關聯AI
AI落地
一直是一個很紅火的前景和朝陽行業。
關於任何嵌入式和AI相關的都是想嘗一嘗。
此篇文章就是關於STM32CubeMX
初體驗的一篇文章。
STM32CubeMX是ST公司推出的一種自動創建單片機工程及初始化代碼的工具,適用於旗下所有STM32系列產品。
0x01 準備工作
1.1 安裝三個軟件包
操作系統是ubuntu 18.04, 安裝過程很是簡單,網上都有很成熟的教程,在此不贅述
-
STM32CubeMx
-
STM32CubeProgrammer
安裝好之後,在終端執行安裝包路徑下的
bin
文件夾下的`` , 會報**錯誤:找不到或無法加載主類 com.st.app.Main**
,這時候只要將 ubuntu 默認的Open-JDK 換成Oracle JDK就好了,下面是切換成Oracle JDK 成功的截圖# Oracle 官網中下載JavaSE JDK 壓縮包 $ sudo tar zxvf jdk-8u172-linux-x64.tar.gz -C /usr/lib/jvm # 將下載的JDK註冊到系統中 $ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_172/bin/java 300 # 切換JDK $ sudo update-alternatives --config java # 查看JDK 版本 $ java -version
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KYAgbwuk-1593757543159)(https://s1.ax1x.com/2020/07/03/NO9x8x.png)]
-
STM32CubeIDE
1.2 PC端搭建一個極簡網絡
在此處,我選擇了最簡單的一個項目 - Linear Regression
tf2_linear_regression.ipynb
內涵三種不同方式搭建網絡結構tf2_線性迴歸_擴展.ipynb
內涵不同方式訓練模型
其中,在模型搭建的時候,重新溫習了一下,有三種方式:
- Sequence
- 函數式API
- 子類
其中,三種方式的優缺點在這篇博客中已經詳細闡述。
在後期將PC端上的模型導入到CubeMx中,生成的時候出現了一點問題:
INVALID MODEL: Couldn't load Keras model /home/lebhoryi/RT-Thread/Edge_AI/Project1/keras_model.h5,
error: Unknown layer: Functional
暫時的解決方式是採用Sequence
搭建網絡
訓練好的Model:keras_model.h5
網絡結構模型如下:
0x02 使用CubeMx
在此處,我選擇的是STM32H743ZIT6U
2.1 打開CubeMx & 選擇 H743ZI
2.2 導入軟件包
打開菜單欄中的Help,選擇Embedded Software Packages Manager
選擇 STMicroelectronics,選擇 X-CUBE-AI,選擇版本,安裝好之後選擇右下角的Close
導入下載好的包
會出現如下界面
選擇串口通信
2.3 導入PC端訓練好的模型
分析model 能否燒錄,我的模型比較簡單,分析起來也就比較快
驗證工程文件,我的系統是ubuntu 18.04,不支持MDK,所以我選擇的是STM32CubeIDE
驗證成功界面
2.4生成項目工程
文件夾樹如下:
(base) #( 07/03/20@10:51上午 )( lebhoryi@RT-AI ):~/RT-Thread/Edge_AI@master✗✗✗
tree -L 2 ./Project1
./Project1
├── DNN # CubeMX 生成工程路徑
│ ├── DNN.ioc # CubeIDE 類型文件
│ ├── Drivers
│ ├── Inc
│ ├── Middlewares
│ ├── network_generate_report.txt
│ ├── Src
│ ├── Startup
│ ├── STM32CubeIDE
│ ├── STM32H743ZITX_FLASH.ld
│ └── STM32H743ZITX_RAM.ld
├── image # 相關圖片保存文件夾
│ ├── mymodel1.png # model
│ └── STM32H743.jpg # H743
├── model # model 保存路徑
│ └── keras_model.h5
├── Readme.md
├── tf2_linear_regression.ipynb
└── tf2_線性迴歸_擴展.ipynb
至此,神功練成了一大半,剩下的就是代碼調試的工作了
0x03 代碼調試
關於STM32CubeIDE 的初步認識:基礎說明與開發流程
3.1 導入工程
File 選項 --> import
導入成功的界面:
3.2 生成.bin
文件
3.3 燒錄.bin
文件
打開STM32CubeProgramming
,點擊右上角connect
,然後選擇Open file
,選擇要打開的.bin
文件
燒錄成功的界面:
3.4 other
在串口中實時顯示,有minicom
和cutecom
兩種工具
下面是cutecom
的截圖
cutecom 和 上面的programming 有且僅有一個connect