SIPEED MaixCube(Kendryte K210)官方网站和开发文档
MaixCube嵌入式集成了摄像头、TF卡槽、用户按键、TFT显示屏、锂电池、扬声器麦克、扩展接口等, 用户可使用 Maix Cube 部署一些轻轻轻轻轻量级AI项目, 同时还预留开发调试接口, 也能将其作为一款功能强大的 AI 学习开发板。
MaixPy 是将 Micropython 移植到 K210(一款 64 位双核带硬件 FPU、卷积加速器、FFT、Sha256 的 RISC-V CPU ) 的一个项目; MaixPy 不但支持 MCU 常规操作, 还集成了硬件加速的 AI 机器视觉和麦克风阵列相关的算法。相应的高达 1TOPS 算力核心模块却不到¥50, 凭借着快速开发和较低成本与其较小的体积很适合 AIOT 领域智能应用。
在电脑上使用AI模型,通常是使用专用的图像加速卡即 GPU 来加速图形计算。
在一些嵌入式上则使用类似的AI硬件XPU,例如GPU, TPU, DPU, NPU, BPU等。
在 K210 上也有专门的硬件叫做 KPU 。
下面就来科普一下这些所谓的“XPU”
CPU全称:Central Processing Unit, 中央处理器;
GPU全称:Graphics Processing Unit, 图像处理器;
TPU全称:Tensor Processing Unit, 张量处理器;
DPU全称:Deep learning Processing Unit, 深度学习处理器;
NPU全称:Neural network Processing Unit, 神经网络处理器;
BPU全称:Brain Processing Unit, 大脑处理器。
回归正题:
KPU 实现了 卷积、批归一化、激活、池化 这 4 种基础操作的硬件加速, 但是它们不能分开单独使用,是一体的加速模块。
一个类似openmv IDE的IDE,在MaixPy 中是使用 Micropython 脚本语法,所以不像 C 语言 一样需要编译,其实不用 IDE 直接使用串口终端工具编写也行,不过就没有很方便。
使用 IDE 则会方便在电脑上实时编辑脚本并上传到开发板以及直接在开发板上执行脚本,以及在电脑上实时查看摄像头图像、保存文件到开发板等。
在 MaixPy 里面,已经集成了推导模型的代码,同时使用了 KPU 进行计算加速,使用时无需编写很多代码,只需要调用几个函数即可快速运行模型。
模型其实就是一组数据结构和参数数据,不同的XPU只能识别特定格式的模型, KPU 只认.kmodel格式的模型, 一般用电脑训练的模型则不是, 比如 tensorflow 是 .h5 格式或者 .tflite 格式, 要给 KPU 使用, 必须经过变成 kmodel 格式, 可以使用 nncase 这个工具来达到模型转换的目的。
正式使用 MaixPy 之前,我们需要先安装好串口驱动,才可进行下一步的开发与使用;因为板子是通过 USB 转串口设备与电脑连接(K210 没有 USB 硬件支持功能)。
根据板子的 USB 转串口芯片型号装驱动。
Linux 不需要装驱动,系统自带了,使用 ls /dev/ttyUSB* 即可看到设备号
Windows 用户需要安装 特定的驱动。
如果没有固件或者固件版本过于落后,需要自己烧写更新固件。
我手头的开发板已经有固件了,如果没有可以参考官方教程
打开 kflash_gui 应用
然后选择固件、设置选项, 点击下载即可, 更多特性介绍、使用说明见 kflash_gui 项目主页
使用时注意串口不能被其它软件占用,选择正确的开发板和串口号,可以适当降低波特率和使用低速模式来提高下载成功率
连接 Type C 线, 一端电脑一端开发板
查看设备是否已经正确识别:
在 Linux 下可以通过 ls /dev/ttyUSB* 或者 ls /dev/ttyACM* 来查看, 如果没有可以 ls /dev 来找找,具体的设备名跟串口芯片和驱动有关. 也可以用sudo dmesg来看是否有设备挂载记录
在 Windows 下可以打开设备管理器来查看
如果没有发现设备, 需要确认有没有装驱动以及接触是否良好。
上电后出现白屏、黄屏、绿屏、蓝屏、闪屏为错误现象。
Windows 常用的串口终端软件有 mobaxterm,xshell,mpfshell-lite 等工具
打开 MaixPy IDE,在 IDE 没有连接板子的时候选择通过串口终端进入开发板
Linux 常用的串口终端软件有pyserial、putty等工具
开发板有配套的摄像头和屏幕,请在上电前检查硬件连接是否正确
控制命令:
Ctrl-A --在空白行上,输入原始REPL模式
Ctrl-B --在空白行上,进入正常REPL模式
Ctrl-C --中断正在运行的程序
Ctrl-D --在空白行上,对电路板进行软复位
Ctrl-E --在空白行上,进入粘贴模式
有关特定对象的进一步帮助,请键入help(obj)
要获得可用模块的列表,请键入help('modules')
然后上电,打开串口终端, 按键盘Ctrl+E,然后粘贴以下代码:
import sensor, lcd
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames()
lcd.init(freq=15000000)
while(True):
lcd.display(sensor.snapshot())