首頁 > 評測 > 【APM32F407IG Tiny Board測評】移植輕量級AI推理框架TinyMaix實現(xiàn)手寫數(shù)字識別
【APM32F407IG Tiny Board測評】移植輕量級AI推理框架TinyMaix實現(xiàn)手寫數(shù)字識別
- [導(dǎo)讀]
- 本文將介紹如何為APM32F407IG芯片移植輕量級AI推理框架TinyMaix,并在開發(fā)板上運行TinyMaix的手寫數(shù)字識別示例。本文將首先介紹TinyMaix是什么,以及APM32F407IG芯片的主要參數(shù)。然后,介紹如何為APM32F407IG芯片創(chuàng)建
一、背景介紹
1.1 TinyMaix框架簡介
TinyMaix 是面向單片機的超輕量級的神經(jīng)網(wǎng)絡(luò)推理庫,即 TinyML 推理庫,可以讓你在任意單片機上運行輕量級深度學(xué)習(xí)模型。
1.2 TinyMaix上層API
/******************************* MODEL FUNCTION ************************************/
tm_err_t tm_load (tm_mdl_t* mdl, const uint8_t* bin, uint8_t*buf, tm_cb_t cb, tm_mat_t* in); //load model
void tm_unload(tm_mdl_t* mdl); //remove model
tm_err_t tm_preprocess(tm_mdl_t* mdl, tm_pp_t pp_type, tm_mat_t* in, tm_mat_t* out); //preprocess input data
tm_err_t tm_run (tm_mdl_t* mdl, tm_mat_t* in, tm_mat_t* out); //run model
/******************************* UTILS FUNCTION ************************************/
uint8_t TM_WEAK tm_fp32to8(float fp32);
float TM_WEAK tm_fp8to32(uint8_t fp8);
/******************************* STAT FUNCTION ************************************/
#if TM_ENABLE_STAT
tm_err_t tm_stat(tm_mdlbin_t* mdl); //stat model
#endif
-
模型函數(shù),包括模型加載、卸載、預(yù)處理、推理;
-
工具函數(shù),包含F(xiàn)P32和uint8的互轉(zhuǎn);
-
統(tǒng)計函數(shù),用于輸出模型中間層信息;
1.3 TinyMaix底層依賴
#define TM_ARCH_CPU (0) //default, pure cpu compute
#define TM_ARCH_ARM_SIMD (1) //ARM Cortex M4/M7, etc.
#define TM_ARCH_ARM_NEON (2) //ARM Cortex A7, etc.
#define TM_ARCH_ARM_MVEI (3) //ARMv8.1: M55, etc.
#define TM_ARCH_RV32P (4) //T-head E907, etc.
#define TM_ARCH_RV64V (5) //T-head C906,C910, etc.
#define TM_ARCH_CSKYV2 (6) //cskyv2 with dsp core
#define TM_ARCH_X86_SSE2 (7) //x86 sse2
#define TM_GET_US() ((uint32_t)((uint64_t)clock()*1000000/CLOCKS_PER_SEC))
#define TM_DBGT_INIT() uint32_t _start,_finish;float _time;_start=TM_GET_US();
#define TM_DBGT_START() _start=TM_GET_US();
#define TM_DBGT(x) {_finish=TM_GET_US();\
_time = (float)(_finish-_start)/1000.0;\
TM_PRINTF("===%s use %.3f ms\n", (x), _time);\
_start=TM_GET_US();}1.4 APM32F407IGT6芯片簡介
-
CPU: Cortex-M4F內(nèi)核,168 MHz
-
Flash: 1 MB
-
RAM: 192 KB
二、開發(fā)環(huán)境搭建2.1 下載APM32F407資料
-
APM32F405xG 407xExG數(shù)據(jù)手冊
-
APM32F4xxx用戶手冊
-
APM32F407IG Tiny 原理圖
-
APM32F4xx_SDK
-
APM32F4xx_DFP Pack
2.2 安裝Keil MDK
2.3 安裝ARM Compiler 5
2.4 安裝APM32F4xx支持包
三、運行SysTick示例程序
3.1 下載APM32F4xx_SDK
3.2 編譯SysTick示例程序
3.3 修改調(diào)試器設(shè)置
-
在Project視圖中,鼠標(biāo)右鍵APMFF407,彈出懸浮菜單,如下圖所示:
-
單擊”Options for Target ‘APM32FF407’“,將會彈出,如下圖所示:
-
點擊Debug標(biāo)簽頁,界面如下圖所示:
-
下來”ULINK2/ME Cortex Debugger“菜單,選中CMSIS-DAP,如下圖所示:
-
繼續(xù)點擊剛剛的調(diào)試器下拉菜單右側(cè)的”Settings“按鈕,彈出CMSIS-DAP Cortex-M Target Driver Setup窗口,如下圖所示:
-
點Flash Download標(biāo)簽頁,界面顯示如下圖所示:
3.4 下載和運行SysTick示例程序
3.5 分析SysTick示例程序主要代碼
-
CMSIS目錄,啟動(.s)和初始化(.c)
-
StdPeriphDriver目錄,外設(shè)驅(qū)動庫
-
Boards目錄,APM32F407系列開發(fā)板條件編譯
-
Application目錄,中斷處理(apm32f4xx_int.c)和應(yīng)用代碼(main.c)
-
APM_MINI_LEDToggle,用于實現(xiàn)LED3燈狀態(tài)翻轉(zhuǎn);
-
SysTick_Delay_ms,用于實現(xiàn)延時,單位毫秒;
-
75行有一行對COM1的初始化,查看實現(xiàn)代碼可以知道就是USART1,串口參數(shù)為8n1;
-
80行有一行printf打印語句,打印了一行文本,前后各有一個換行;
3.6 查看SysTick示例程序的串口輸出
-
開箱之后發(fā)現(xiàn),APM32F407-Tiny開發(fā)板的J3、J5并沒有附帶跳線帽;
-
通過USB線將APM32-Link連接到PC之后,并沒有在設(shè)備管理器中看到串口設(shè)備;
-
APM32-Link固件不支持USB轉(zhuǎn)UART;
-
APM32-Link的主控芯片APM32F103C8T6不支持USB功能;
-
開發(fā)板的U2TX,連接到USB轉(zhuǎn)串口的RX
-
開發(fā)板的U2RX,連接到USB轉(zhuǎn)串口的TX
-
USART1_TX,對應(yīng)PA9
-
USART1_RX,對應(yīng)PA10
-
APM_MINI_COMInit函數(shù)定義;
-
COM_TX_PORT、COM_TX_PIN_SOURCE數(shù)組定義;
-
MINI_COM1_TX_GPIO_PORT、MINI_COM1_TX_PIN_SOURCE宏定義;
-
APM_MINI_COMInit 替換為 APM_TINY_COMInit
-
APM_MINI_LEDInit 替換為 APM_TINY_LEDInit
-
APM_MINI_LEDToggle 替換為 APM_TINY_LEDToggle
-
在Project視圖右鍵APM32F407,選擇”Options for Target ‘APM32F407’“,如下圖所示:
-
在彈出的Options for Target ‘APM32F407’窗口中,點擊C/C++標(biāo)簽頁,如圖下圖所示:
-
在C/C++標(biāo)簽頁,點擊Include Paths右側(cè)的”…”按鈕,會彈出Folder Setup界面,如下圖所示:
-
在Folder Setup界面中,分別點擊如下兩處,選擇目錄進行添加:
-
在彈出的文件夾選擇界面中,選擇拷貝的TinyMaix的include目錄,選擇之后,如下圖所示:
-
APM32F405xG 407xExG數(shù)據(jù)手冊: https://www.geehy.com/uploads/tool/APM32F405xG 407xExG數(shù)據(jù)手冊 V1.5.pdf
-
APM32F4xxx用戶手冊: https://www.geehy.com/uploads/tool/APM32F4xxx用戶手冊 V2.0.pdf
-
APM32F407IG Tiny 原理圖: https://www.geehy.com/uploads/tool/APM32F407IG TinyBoard.zip
-
APM32F4xx_SDK: https://www.geehy.com/uploads/tool/APM32F4xx_SDK_v1.3.zip
-
APM32F4xx_DFP Pack: https://www.geehy.com/uploads/tool/Geehy.APM32F4xx_DFP.1.0.3.pack
- 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!
網(wǎng)友評論
- 聯(lián)系人:巧克力娃娃
- 郵箱:board@21ic.com
- 我要投稿
-
歡迎入駐,開放投稿
-
人均百萬?英偉達中國員工收入曝光! 2024-08-29
-
《黑神話:悟空》玩家硬盤升級攻略:提升游戲體驗,暢享3A大作 2024-08-29
-
數(shù)睿數(shù)據(jù)參加《系統(tǒng)與軟件工程 低代碼開發(fā)平臺通用技術(shù)要求》國家標(biāo)準(zhǔn)編制 2024-08-29
- NRF52810藍(lán)牙數(shù)字耳機找人定制
預(yù)算:¥30005天前
- 125KW模塊式PCS軟硬件外包開發(fā)
預(yù)算:¥1100000015小時前
- 12V汽車啟動電源項目BMS設(shè)計
預(yù)算:¥50000023小時前
- 數(shù)據(jù)可視化軟件 開發(fā)
預(yù)算:¥5000023小時前
- PLC項目調(diào)試修改
預(yù)算:¥100001天前
- 起動電機控制器開發(fā)
預(yù)算:¥1100001天前