rt-thread在sipeed maix go BSP的改造与应用

3 下载量 178 浏览量 更新于2024-08-29 收藏 754KB PDF 举报
"在sipeed maix go 专属的BSP上使用rt-thread" 本文主要介绍了如何在Sipeed Maix Go开发板上使用经过修改和移植的rt-thread实时操作系统(RTOS)。作者针对官方k210 BSP进行了一系列优化,修复了部分bug,并添加了对OV2640摄像头驱动的支持,同时修改了引脚配置,提供了摄像头和屏幕的示例程序。这个定制的BSP可以直接用于具有OV2640摄像头的Maix Go开发板,无需修改代码。 首先,要使用这个BSP,你需要将解压后的文件放置在rt-thread工程的bsp目录下。如果你还不熟悉如何配置rt-thread环境或编译下载程序,建议先阅读相关教程,如《在Sipeed Maix Go上用上rt-thread以及vscode》。 关于配置,你可以通过env工具输入`menuconfig`进入配置界面。这里有一些二级菜单,允许你根据所持硬件选择引脚配置,例如对于使用Dock或Bit的用户。但请注意,此BSP主要针对Maix Go进行验证,可能并不适用于所有板子。在Camera选项中,你可以选择开发板上使用的摄像头,目前支持OV2640和OV5640,OV5640的驱动可能较为基础。 rt-thread的配置还包括内核、组件和程序包三大部分,提供了丰富的功能,例如彩色日志打印的ulog、AT指令解析的at组件,以及各种应用程序包,如GUI、物联网、多媒体、安全和传感器等。 完成配置后,使用`scons`或`scons-j4`命令在env环境中编译BSP,生成可下载到开发板的二进制文件。如果你已经正确设置了编译环境,这个过程应当顺利进行。 总结来说,这个资源提供了一个定制化的rt-thread BSP,特别适用于Sipeed Maix Go开发板,它简化了OV2640摄像头的集成,并提供了全面的配置选项,帮助开发者快速启动他们的项目。通过了解和使用这个BSP,你可以更高效地利用Maix Go的硬件资源,开发基于rt-thread的复杂应用。
2021-04-19 上传
【RT-Thread 作品秀】基于RT-Thread的网络照相机作者:吴顶顶 概述随着科技的进步和互联网的发展,基于物联网的可拍照设备也越来越多的融入到人们的生活中来,例如在超市中,管理者利用拍照设备定时抓取货架照片,分析货物状态,并补充、优化货物摆放;在酒吧里,管理者会利用拍照设备定时抓拍酒架照片,传送到网络平台供大众浏览,以招揽更多顾客。本网络照相机基于STM32H7+RTThread平台,采集摄像头数据,并通过无线网络传送到服务器,提供SD卡配网、手动拍摄、定时拍摄、照片推送等功能,并提供windows上位机提供控制和照片显示功能。 主要功能有: 格式化sd卡:格式化sd卡,但是会保留网络配置文件,其他文件全部删除 设备重启:重启设备 实时拍照:发送指令给照相机,照相机拍照,并把照片回传 定时拍照:照相机依据下发的拍照时间,在时间到达时拍摄一张照片,并传给服务器 按键拍照:点击板上用户按钮,拍摄一张照片,并传给服务器 定时任务:可以新建/删除/查询定时拍照任务,任务存储在sd卡中,重启有效 开发环境硬件:ART-PI(STM32H750主控)+ OV2640模组 RT-Thread版本:4.0.3 SDK 版本:1.0.1 开发工具及版本:RT-Thread Studio 1.1.5, Qt5.14.0 RT-Thread使用情况概述内核部分:调度器,信号量,互斥锁,内存管理 调度器:多任务调度 信号量:用于唤醒对应任务 互斥锁:用于互斥资源独占访问 内存管理:动态内存申请与释放 组件部分:虚拟文件系统,IPC,I2C,RTC,NTP 虚拟文件系统:文件操作,sd卡、照片文件 IPC:mqtt发送数据需要 I2C:配置摄像头模块需要 RTC和NTP:同步时间 软件包部分:paho mqtt,cJSON,netutils pahomqtt:用于和服务器通信 cJSON:解析、封装mqtt消息 netutils:NTP网络对时 其他:base64 用于将图片文件转换成字符串,便于mqtt传输 硬件框架总体的硬件框架如下图所示: 本网络摄像机硬件结果较为简单,即art-pi连接一个摄像头模组,art-pi板上用到了AP6212无线模块,外部内存,led指示灯,和sd卡。其中,摄像头模块用于采集图像信号;AP6212用于和服务器进行通信;因一张图像数据量较大,片内内存不够,故而使用外部内存;led灯用于指示设备工作状态;sd卡用于保存网络、服务器、和定时任务配置。 软件框架说明整体的软件框架如下图所示,网络照相机内部有一个proxy线程,负责和云端进行通信,在接收到云端消息后会解析,并分发到其他的线程执行,然后将执行结果返回到云端;照相机发生了其他的事件,例如用户按键拍照,也会将数据传给proxy线程,proxy线程再将数据发送到云端。用户通过上位机终端软件连接上云服务器,实现与照相机的通信及控制。 整个系统支持接入多个照相机,如下图所示,不同的照相机通过sd卡配置文件中sn进行区分,上位机软件可以显示所有在线的照相机,但同一时间只支持操作一个。 软件模块说明1. 用户线程创建流程如下图所示为用户线程创建流程 用户线程作用描述如下: main:用于创建sd_card 线程,检测按键事件,闪灯; sd_card:用于管理与sd卡相关的工作,包括拍照,网络配置,定时任务; network:负责联网,根据sd卡的配置文件连接到指定的wifi网络; proxy:负责启动mqtt,并管理与云端的通信,其他线程都需要通过proxy线程与云端交互数据; event:定时任务和按键任务,在定时时间到达时,或者用户按键时拍摄照片并通过proxy上传云端。 2. 通信接口及流程2.1 MQTT订阅主题设备向服务器订阅主题: /ter/query/discovery,用于接收设备发现消息 /ter/sn/request,用于接收针对该设备的指令,其中sn为设备的SN号,下同 客户端向服务器订阅主题: /dev/response/discovery,用于接收设备发现回复 /dev/response/will,用于接收设备遗嘱消息 /dev/sn/response,用于接收设备操作指令回复 /dev/sn/event,用于接收设备的通知 2.2 设备发现所有的设备均订阅/ter/query/discovery主题,客户端向该主题发布发现消息,所有收到消息的设备向/dev/response/discovery回复一条消息,而客户端又订阅了/dev/response/discovery主题,故而便可以知道哪些设备在线了。 设备连上服务器的时候,会定义一个遗嘱消息,主题为/dev/sn/will,客户端订阅了该主题,当设备因为某些原因掉线,则超过一定时间之后,