一、TinyMaix 介绍
TinyMaix是国内sipeed团队开发一个面向MCU单片机的轻量级AI推理框架,以下是官方介绍:
TinyMaix 是面向单片机的超轻量级的神经网络推理库,即 TinyML 推理库,可以让你在任意单片机上运行轻量级深度学习模型。
关键特性
- 核心代码少于 400行(
tm_layers.c
+tm_model.c
+arch_cpu.h
), 代码段(.text)少于3KB- 低内存消耗,甚至 Arduino ATmega328 (32KB Flash, 2KB Ram) 都能基于 TinyMaix 跑 mnist(手写数字识别)
- 支持 INT8/FP32/FP16 模型,实验性地支持 FP8 模型,支持 keras h5 或 tflite 模型转换
- 支持多种芯片架构的专用指令优化: ARM SIMD/NEON/MVEI,RV32P, RV64V
- 友好的用户接口,只需要 load/run 模型~
- 支持全静态的内存配置(无需 malloc )
- 即将支持 MaixHub 在线模型训练
1.1TinyMaix可以简单理解为一个矩阵和向量计算库,目前已支持如下几种计算硬件:
TinyMaix官方代码仓:https://github.com/sipeed/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
二、 RK2206-小凌派介绍
小凌派-RK2206是一款专为HarmonyOS系统打造的HarmonyOS开发板,以下是官方介绍:
小凌派-RK2206是一款由福州市凌睿智捷电子有限公司专为HarmonyOS系统打造的HarmonyOS开发板。
- 采用IoTCluB的E53接口标准,可接入所有的E53案例扩展板。
- 主控为瑞芯微RK2206芯片,200MHz主频,RAM 256KB、ROM 16KB、PSRAM 8M、FLASH 8M。
- 板载NFC Forum Type 2 Tag芯片及天线,可实现HarmonyOS“碰一碰”功能。
- 支持 IEEE 802.11b/g/n 制式,AP 模式。
- USB 2.0 、SD card /SPI/I2C 接口、麦克风接口、E53 接口(包含 UART、 I2C、ADC、DAC、PWM、5 个 GPIO)。
- 一根TypeC USB线,即可实现供电、下载等功能。
- 一根TypeC USB线,可支持串口调试功能。
小凌派-RK2206官方代码仓:小凌派-RK2206开发板: 小凌派-RK2206开发板鸿蒙3.0稳定版资料共享
三、在HarmonyOS源码的lockzhiner-rk2206-openharmony3.0lts/vendor/lockzhiner/rk2206/samples路径下添加 tinymaix-mnist 文件夹,并从TinyMaix代码仓库中复制以下文件到对应文件夹下。
3.1 在arch_arm_simd.h中添加宏定义。
#define __UVISION_VERSION 1
3.2 在tm_port.h 中修改TM_ARCH的宏定义。
3.3 在tm_port.h 中修改TM_OPT_LEVEl的宏定义。
3.4 在TinyMaix_mnist文件夹中添加BUILD.gn。
3.5 在sample的BUILD.gn 文件中添加
"./tinyMaix-mnist:tinymaix_mnist",
3.6 使用hb build -f 编译工程
3.7 使用MobaXterm终端软件,查看RK2206的串口数据,可以看到串口打印出预测的数字 2。