【新东网技术大咖带您走进嵌入式操作系统】基于RT-Thread的IoT-Camera应用介绍
发布时间: 2017-03-14 16:10:03
新东网自2001年成立以来,掌握大数据、云计算、通信、物联网及区块链等领先信息技术,拥有一支逾16年经验的强大IT团队。为沉淀企业技术实力,继续发挥行业优势,《东网快讯》特邀新东网技术大咖带您走进这些领先信息技术,揭秘新东网16年来的技术成果,每周一发布。
笔者工作以来,一直对嵌入式操作系统有比较大的兴趣,本文首先简要介绍目前市场上嵌入式操作系统的情况,然后分享下在国内一款RT-Thread 系统上调试网络摄像头的收获。
嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。该系统负责全部软、硬件资源的分配、任务调度,控制、协调并发活动。
嵌入式操作系统与通用的操作相比较主要特点在于:
1.小内核,稳定可靠。
2.需要可装卸、可裁剪,以便能灵活应对各种不同的硬件平台。
3.面向应用,强实时性,可用于各种设备控制当中。
国际上常见的嵌入式操作系统大约有40种左右如:Linux、uClinux、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、Free RTOS等。随着物联网的发展日趋火热,包括一些大型国际公司也开始布局适用于物联网硬件的操作系统,比如ARM公司推出的mbed OS,华为公司的LiteOS等,国内一些中小型厂家也投入其中,比如庆科公司推出的MICO等。
物联网的发展必然带来的是智能硬件的爆发,那么这些智能硬件产品突出要解决两个问题:
1)智能手机和云端应用。智能硬件多与手机进行互动,或由手机进行操作控制,或借助手机反映出更多的设备信息;
2)智能硬件不再是孤立的设备,而是与云连接起来。
这些产品的需求主要体现在以下几个方面:
1) 芯片和硬件:各类不同架构和平台的芯片种类繁多,几乎每一款智能硬件的基础硬件平台都不相同。互联网时代操作系统主要是Windows;移动互联网时代操作系统主要是Android和IOS;到了智能硬件和物联网时代,则很难产生一统天下的操作系统,于是行业需要各有特色,能满足不同需求的操作系统;
2) 计算,存储资源:大多智能硬件对于成本都有要求,因此计算和存储资源会非常有限;目前手机上的处理器主频一般是超过1G,ROM和RAM能达到64G,4G,而智能硬件上的计算资源很多是低于100M,ROM和RAM小于100K字节;
3) 传感器:智能硬件通过各类传感器来感知环境,并通过各种不同的传感器融合算法得出感知的结果;
4) 功耗:智能硬件一般都是使用电池供电,因此需要设备大部分时间进入低功耗休眠状态;
5) 联网:智能硬件不是单一,孤立的设备,它们需要通过各种有线或者无线的方式与其他设备和互联网进行通信,有线方式主要是以太网,串口,无线方式则有WiFI,蓝牙,2G/3G/4G,Zigbee, Thread等各种不同标准的协议;
6) 安全:一是指智能设备自身的可靠性,二是指设备连接网络和进行通信的安全;
7) 开机时间和响应速度:电脑和手机的开机时间可以达到几十秒,但智能硬件一般需要在上电后的几毫秒内立刻启动并能够运行;
智能硬件的这些需求特点决定了Linux、Android、 IOS不是适合的操作系统,智能硬件需要使用RTOS,并且对RTOS提出了更高的要求:
1) 需要能够支持不同架构的处理器,需要有硬件抽象层和设备管理器来管理不同的硬件设备。
2) 能够支持计算,存储资源有限的设备,RTOS本身的ROM和RAM资源占用少。
3) 具备传感器管理框架来管理众多的传感器设备,能够提供或者整合感知融合算法。
4) 提供低功耗管理机制,来帮助设备进行低功耗管理。
5) 网络特性变成RTOS的基础标配,需要能够支持各种网络协议,以太网,Wi-FI,蓝牙,2G/3G/4G,Zigbee, Thread等。
6) 能够支持网络升级功能,各种加密机制,安全的套接字功能。
7) 能够支持轻量级的显示UI,音频和视频框架和智能算法。
8) 支持POSIX标准,方便移植程序;并且能够支持脚本语言开发。
笔者的工作是开发智能卡相关产品,也认为在物联网时代,智能卡作为安全认证模块,必然可以在物联网系统中得到广泛的应用。于是完成工作任务之余,一探这些嵌入式操作系统的面目,期望能将我们的芯片融合其中。下面介绍下我在调试一款系统过程中的收获。
当前市场上有很多成熟的网络摄像头产品,这类产品的共同特点就是功能单一、固定,无法进行二次开发,不支持设备联动和功能扩展。与物联网的要求相差甚远,而基于RT-Thread的IoT-Camera,则为创客们提供了一款可以自己选择外设传感器、自己选择算法、应用、控制单元,进行功能二次开发的无线Camera产品。
IoT-Camera即可编程物联网摄像头,是由RT-Thread的开发团队专门针对物联网应用开发的一款实物产品。其软、硬件都完全开源,问世之初,便受到了广大开发者的关注。
图一 IoT-Camera开发板实物图
IoT-Camera开发板上封装了Wifi、图像处理和视频技术,为使用者的二次开发提供了便利。
RT-Thread是一款主要由中国开源社区主导开发的实时嵌入式操作系统,它的开发、维护团队主要来自中国国内。曾获得“第六届中日韩开源软件竞赛”技术优胜奖。目前,国内已有十多家企业将RT-Thread成功应用到自己的产品中。
图二 RT-Thread软件结构
RT-Thread作为一款稳定小巧的实时操作系统,包含了硬实施抢占式内核,文件系统,TCP/IP协议栈,标准的POSIX API接口,libc接口,图形用户界面等。
IoT-Camera开发板上运行RT-Thread内核,通过Wifi网络可以将摄像头采集到的数据上传,用浏览器访问摄像头IP地址就可以看到摄像头采集到的实时图像。
使用时,需要有一张TF卡片,在其根目录下存储内核代码和boot程序固件。开发板默认在串口上提供交互用的命令行。当PC机与开发板连接后,可以使用PuTTY软件开配置串口,并启动交互界面。
图三 PuTTY软件开启窗口
如上图所示,串口波特率选择115200,串口通道根据自己电脑的接口选择(本台电脑使用的是COM3口)。点击Open即口启动操作界面。
系统启动后,先从flash加载烧录好的uboot程序开始执行,接着从TF卡加载存储的rboot.bin执行,执行地址默认为0xA0200000。rboot启动超时后,自动执行/rboot.sh脚本。
图四 通过shell指令设置rboot启动地址
在rboot.sh中可以设置系统启动时使用的rtthread.bin所在的位置。如:
boot /rtthread.bin(直接启动TF卡中的bin文件)
boot http://192.168.10.246:8000/firmware/rtthread.bin(需预先配置好网络连接)
配置网络连接的命令为wifi join your_ssid your_passwd。
rtthread.bin启动后,可以通过help命令列出rt-thread支持的命令行,默认命令行为msh />。
输入命令mjpeg start,启动视频服务mjpeg server。
在PC上打开浏览器,访问IoT-Camera的ip地址,即可看到摄像头采集到的实时视频图像。