K210 Maixduino 开发学习(一)环境搭建

 

简述

前些时间,我的偶像稚晖菌在各大网站都发了一篇文章:嵌入式AI从入门到放肆【K210篇】– 硬件与环境,文章简单介绍了一下嘉楠耘智发行的人工智能芯片——K210。tql!看完就种草了,加上疫情影响导致上班内容也少了很多,所以早早就下手了Maixduino,结果杭州的中通没人上班,一拖再拖,总算今天到手。

这是一款由国内公司Spieed开发的、基于K210芯片的、号称可使用Arduino IDE开发的开发板。不仅如此,他们将MicroPython移植到了K210上!不仅功能齐全,官方文档的说明也非常友善清晰,直接就是中文版,工具也很齐全。

放些链接:

K210的算力大约0.8TFLOPS,在嵌入式芯片中已经算非常强大了,且价格实惠,简直可以用作落地首选。

根据嘉楠官方的描述,K210的KPU算力有0.8TFLOPS 。

解释一下这里的单位,FLOPS(Floating-point operations per second)——每秒浮点运算次数,1TFLOPS=每秒万亿次浮点计算(10^12)。

常见的设备:树莓派4- (0.1TFLOPS)、英伟达Jetson Nano - (0.47TFLOPS)、华为昇腾310 - (8TFLOPS)、GTX960 - (3TFLOPS)、GTX1080 - (9TFLOPS)、RTX2080Ti - (13.4TFLOPS)

其实在我看来,任何技术的发展,真正的壁垒只存在在两个时期——出现期和落地期:前者往往总有几位先驱,耕耘一生,呕心沥血,发明出走在人类智力巅峰的技术;后者却不同,它只在工业化的进展中慢慢发展,通过滚雪球的方式降低成本、提高产量,这个过程中聚集了无数人的智慧,只有真正等到技术成熟,这一轮的技术上攻才算结束,并又开始在漫长的过程中循环往复,否定之否定,螺旋上升,就好像深度学习,CNN的提出已经是30年前的事了,但是真正到了算力足够,才产生了现在的暴力美学。

写了半天,环境都还没开始搭,还是尽快动手吧!

搭建环境

Arduino开发

安装驱动

Maixduion用的是CH552,需要使用CDM21228驱动,在官方的ftp里可以找到:点击下载,下载后安装即可。

安装完成后,插上板子的Type-C口,在设备管理器就可以发现新出现的两个端口

为什么是两个?因为ESP32和K210是可以分开的,默认在前的是K210,也就是这里的COM5。

配置IDE

下载安装Arduino IDE:点击下载

这步网上教程太多可以找了,这里不做展开。

下载安装完成后,打开IDE,点击文件 - 首选项

在红框位置添加源:

http://dl.sipeed.com/MAIX/Maixduino/package_Maixduino_k210_index.json

速度慢的话下这个:

http://dl.sipeed.com/MAIX/Maixduino/package_Maixduino_k210_dl_cdn_index.json

点击工具 - 开发板 - 开发板管理器,搜索Maixduino,点击安装。

速度慢的话挂个t,或者多试几次

安装完成了,连接开发板,并在 工具 菜单下设置以下内容:

  • 开发板:选择开发板 Maixduino
  • 烧录固件:暂时仅支持 Maix GO,我们选择默认 open-ec
  • 烧录波特率:如果烧录失败请降低波特率
  • 端口:选择自己的端口
  • 编程器必须选择 k-flash

测试例程

点击文件 - 示例,选择打开一个合适的例程,最简单的,我们还是跑个闪灯吧!

选择Basic - Blink,点击对勾编译,下方提示完成后,点击箭头上传。

搞定了,效果如下

«««< HEAD 例程中的内容还是很多的 所有内容都大致翻译一下好了 =======

MaixPy(MicroPython) 开发

安装驱动

同上文

刷写固件

需要的东西:

串口编程

大致流程同ESP8266的串口开发,因此也不需要太多内容,在IDE之前只要尝试串口收发打个print或亮个等,确定功能无误即可。

测试了一下,串口中好像是没有办法写死循环的,尽量不要这么做。

MaixPy IDE开发

MaixPy IDE:点击下载

其实可以选择的IDE很多,Pycharm、VS code,uPyCraft…之所以现时期选择MaixPy IDE,也是为了避免在早期学习的过程中踩不必要的坑,虽然还是踩了,在这之后才决定暂时使用MaixPy开发,Pycharm开发的过程中,Terminal、串口、烧录过程等都有很多不方便的地方,还是算了吧。

使用官方的IDE开发,可以做的事情就多了,先跑亮灯、摄像头+屏幕两个官方例程吧。

这部分可以完全参照官方文档

坑就这么来了!!!

坑就这么来了!!!

坑就这么来了!!!

使用MaixPy中,出现了嵌入式开发过程中没有遇到过的一个概念——FPIOA(现场可编程 IO 阵列),说明可以参照官方给出的如下声明:

在写程序前,我们需要知道, MaixPy 所使用的硬件 K210 的片上外设(比如GPIO、I2C等)对应的引脚是可以任意映射的,STM32 片上外设和引脚对应关系已经固定了, 只有部分引脚可以复用, 相比之下 K210 自由度更大

大概意思很简单,就是任何外设可以使用任何管脚定义后实现,引脚关系全部可以自定义,这真的非常厉害,不说STM32,哪怕K210在Arduino上,都做不到这个功能(有时间的话去复现一下)。

我们可以在官方文档下方找到示例代码:

from fpioa_manager import *
from Maix import GPIO

fm.register(board_info.LED_R, fm.fpioa.GPIO0)##注册

led_r=GPIO(GPIO.GPIO0,GPIO.OUT)##定义并置高
led_r.value(0)##置低

可以在官方的示例中发现一句让人觉得很陌生的 fm.register() 函数,就是这里的FPIOA功能,他将LED_R注册为了GPIO0管脚,并给管脚置高后置低,运行完示例代码后结果也易看出,就是板子上的某个红色LED灯低电平灯亮。

ebbc0c6cf2d382319d74ee58adea67b1da0e8f64

Platform IO 开发

挖坑

附:在官网的ftp里,可以找到如下的原理图: