经过了一段时间的编码,我将rtthread官方k210的bsp进行了修改以及驱动的移植。制作了一份maix go的bsp。主要对原先k210bsp的部分bug进行修复、添加了ov2640的驱动、修改了引脚的配置、添加了一个摄像头和屏幕的example程序。这个maix go的bsp可以在不修改代码的情况下直接编译生成二进制文件并应用在使用ov2640的maix go开发板上。下面,我将对这个bsp的使用做一些介绍。bsp文件作为这篇博客的附件可供大家下载。压缩文件解压后放在rtthread 工程文件的bsp目录下即可。
如果还不知道怎么配置rtt的环境以及编译下载程序,请先移步这篇文章《在sipeed maix go上用上rt-thread以及vs code》
如果想要使用从github上下载来的最新的kendryte-standalone-sdk请参考《妥协下的联姻——为rt-thread适配最新k210 kendryte-standalone-sdk的nncase》来适配sdk
menuconfig的一些配置介绍
首先我们在env工具中输入menuconfig进入配置界面:下图将对配置进行一些简要说明。
下面这些带箭头的选项都带有二级菜单,按回车健进入二级菜单后可修改使用接口对应的引脚。如果手头上的板子是dock或者bit的朋友可以试着修改一下这边的引脚。不过目前这个bsp只在maix go上验证过所以不能保证其他板子也有用。
其中Camera选项的二级菜单中可以选择开发板上使用的摄像头。如下图
目前bsp中的摄像头只有ov2640和ov5640两款可以选择。因为我手头上只有ov2640,所以ov5640仅有最基础的驱动。
至于menuconfig主菜单最上面三项(内核、组件、程序包)是rtt系统自带的。感兴趣的朋友进去看看,还是有不少有趣的东西的。比如组件中能打印彩色log的ulog、可以自动解析at指令的at组件,程序包中的gui、物联网、多媒体、安全、传感器等等。
编译和下载
退出并保存menuconfig中的配置之后,如果之前已经做好了编译器环境搭建的准备工作,可以直接在env中使用scons命令对这个BSP包进行编译生成可以下载到开发板上的二进制文件。(如果想要更快的编译速度可以用scons -j4)
我在maix go的bsp中放了kflash.py。这是用于下载固件用的脚本,可以直接使用命令行操作而不需要每次都打开带gui的软件。我们在env窗口中输入
kflash -B goE -b 1500000 rtthread.bin
即可将代码下载到maix go上。想要知道指令具体的含义可以点击这里参考。
终端操作介绍
这一步主要是对rtt的命令行组件FinSH进行一些介绍。首先我们使用向putty这样的终端工具连接上我们的开发板。连接上以后如果对开发板复位就可以看到这样的开机提示。
使用tab键或者输入help可以查看所有支持的指令
使用ps命令可以看到当前运行的线程以及每个线程的状态。
我在ov2640的example程序中主要完成了摄像头的初始化并将获得的图像实时刷新到屏幕上。同时在控制台上添加了snapshot命令,可以将屏幕上显示的一帧画面保存在sd卡上的Camera文件夹中。我实际测下来手头几张sd卡都可以正常读写。(一张三星的64G EVO卡、一张没牌子的1G卡)。
如果sd卡中没有Camera文件夹可以用mkdir命令创建一个文件夹,如下图:
可以看到我们这就创建好了一个叫Camera的文件夹而且我们可以访问这个根目录。退出根目录后我们输入snapshot命令就可以拍快照了。
![图片展示](https://i-blog.csdnimg.cn/blog_migrate/6c4816c728552a41c4b840bfc5379150.png)
后记
虽然sipeed使用maixpy精巧地将k210的一些操作封装了起来,让没有嵌入式经验的人可以以最快的速度上手这款芯片。但对于之前大多数时间都在和单片机打交道的那些人来说,C语言反而显得更加亲切一些。这也是我制作这个BSP的原因之一。通过这个BSP我们可以更好地使用C语言来开发Maix Go这款开发板,最大限度的利用开发板上的资源,榨干k210的性能。而且借助rt thread强大的生态,可以让C语言开发变得更方便,也让这块开发板的开发有了更多可能。使用rtt可以方便地让maix go连个网,接入物联网云。未来maix go一边识别着图像一边将关键数据实时上传到云端,想想也还是挺美好的。
如果在使用这个BSP中发现了什么问题,欢迎在博客下方留言。我会第一时间回复的。
BSP的下载地址在这里。