在这个物联网 时代,我们使用各种嵌入式设备和系统来执行和获取来自各个领域的数据。每当我们谈论嵌入式和物联网设备时,我们总是会考虑我们使用的是什么微控制器/微处理器,最重要的是我们将使用什么样的固件来精确获取数据,没有任何时间延迟。因此,当谈到任何嵌入式物联网项目中的时间延迟时,我们总是选择更适合特定应用程序的嵌入式操作系统,从而轻松提高性能。
嵌入式操作系统 是一种旨在资源高效且可靠地为设备执行特定任务的操作系统。在公开市场上,可以使用各种嵌入式操作系统(如 FreeRTOS、μ-Clinux、ARMmbed、MONGOOSE-OS、RIOT-OS 等)。
什么是防暴操作系统?
RIOT OS是一个用于嵌入式系统的小型操作系统。这个操作系统是一个免费的开源操作系统,在GNU 宽通用公共许可证(LGPL) 下发布,由分布在世界各地的草根社区聚集公司、学术界和爱好者开发 。该操作系统支持低功耗物联网设备和各种微控制器,如 8 位、16 位和 32 位,并为内存受限系统开发,重点是低功耗无线物联网设备。
物联网操作系统支持的不同特性
RIOT OS是一款对物联网应用友好的操作系统,自 2013 年以来一直在积极开发和维护。它的一些功能包括免费开源 (LGPLv2.1) 操作系统,借助它,您可以编写您的使用本地语言(如 C 和 C++)编写代码。它具有微内核(μ-内核)架构(内核使用 ~1.5K RAM 或 32 位架构)。它具有超低延迟中断处理,并支持线程模块架构。它还支持不同的网络堆栈,如 6LoWPAN、IPV6、RPL、UDP、TCP、LoRaWAN、802.15.4、MQTT 等等。它还支持不同的 PHY 技术(如蓝牙、NFC、串口、CAN 等)。它还支持第3派对包(如 lwIP 堆栈、uIP、开放线程堆栈)。除了上面提到的功能,它还支持各种 32 位平台,也支持 16 位和 8 位平台(如 Arduino Nano/Uno、MSP430、x86、ARM、MIPS、AVR 等)
RIOT OS 提供了不同类型的示例源代码。因此,我们可以使用这些示例代码轻松开发我们的代码。但是使用这个操作系统的主要好处是“一次编写您的应用程序并在任何地方运行” ,这意味着,当我们为Arduino/ESP编写代码时,该代码现在可以运行在不同的微控制器上以执行相同的操作而无需更改任何内容代码或配置。
在基于 Linux 的系统中安装 RIOT OS
一旦我们了解了 RIOT OS 是什么,我们就需要一个设置环境来使用 RIOT OS 开发应用程序。用于设置 RIOT OS 环境。我们建议使用基于 Linux/macOS 的系统,因为对 Microsoft Windows 的支持正在开发中。
在 Linux 上开始使用 RIOT 操作系统:
因此,首先,我们使用Ubuntu 20.04.2 LTS-64 位,为了创建开发环境,我们需要在设置 RIOT OS 之前安装先决条件。
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install build-essential cppcheck git make gcc pkg-config
autoconf automake libtool libusb-dev libusb-1.0-0-dev
libhidapi-dev libftdi-dev g++-multilib gcc-multilib python3-serial curl doxygen
graphviz pcregrep python python3 python3-flake8 unzip wget
sudo add-apt-repository ppa:npalix/coccinelle
sudo apt-get install coccinelle
安装所有要求后,现在我们可以设置 RIOT OS。为此,我们需要创建一个工作区文件夹以供下载和 git 克隆最新版本的 RIOT OS。为此,请按照下列步骤操作:
cd $HOME
mkdir riot_workspace
cd riot_workspace/
git clone git://github.com/RIOT-OS/RIOT.git
cd RIOT/
git checkout 2021.01
现在是时候根据您要使用的硬件设置硬件工具链了。今天,在我们的案例中,我们使用 ESP8266 来演示 RIOT OS 示例。对于 ESP8266 工具链,我们需要创建一个名为“esp”的文件夹。
cd $HOME
cd riot_workspace/
mkdir -p esp
cd esp/
因此,在创建了特定于硬件的文件夹之后,现在是时候下载 ESP8266 的工具链和交叉编译器了。
下载 Xtensa GCC 编译器套件:
Mkdir -p $HOME/riot_workspace/esp
cd $HOME/riot_workspace/esp
git clone https://github.com/gschorcht/xtensa-esp8266-elf
下载 ESP8266 RTOS SDK:
mkdir -p $HOME/riot_workspace/esp
cd $HOME/riot_workspace/esp
git clone https://github.com/gschorcht/RIOT-Xtensa-ESP8266-RTOS-SDK.git ESP8266_RTOS_SDK
cd ESP8266_RTOS_SDK/
git checkout release/v3.1-for-riot-os-v2
要使用 ESP8266 Xtensa 编译器和 ESP8266 RTOS SDK,我们需要设置一个环境变量。
[注意:每当我们开发 ESP8266 RIOT OS 基础应用程序时,我们都需要设置这两个环境变量]
a) Xtensa GCC 编译器
export PATH=$HOME/riot_workspace/esp/xtensa-esp8266-elf/bin:$PATH
b) ESP8266 RTOS SDK
export ESP8266_RTOS_SDK_DIR=$HOME/riot_workspace/esp/ESP8266_RTOS_SDK
为 ESP8266 构建/烧录一个“Hello World”示例:
After completing the installation of the RIOT OS & ESP8266 Toolchain, it is time to build an example for ESP8266. So, we need to navigate to folder RIOT/examples/hello-world and set the upper mention environment variables.
cd $HOME/riot_workspace/RIOT/examples/hello-world
export PATH=$HOME/riot_workspace/esp/xtensa-esp8266-elf/bin:$PATH
export ESP8266_RTOS_SDK_DIR=$HOME/riot_workspace/esp/ESP8266_RTOS_SDK
现在是构建应用程序的时候了。所以我们需要调用make命令和BOARD参数。在我们的案例中,我们使用ESP8266开发板,因此该板的值为“ESP8266-esp-12x”。如果您使用不同的板,请检查路径[$HOME/riot_workspace/riot/boards]以获取支持的板列表。
make BOARD=esp8266-esp-12x
现在,将新建的Helloworld示例闪存到ESP8266中。对于flash,我们需要调用此命令的代码。
make BOARD=esp8266-esp-12x PORT=/dev/ttyUSB0 flash term
[注意:如果出现任何错误,如“权限被拒绝:’/dev/ttyUSB0’”,则调用此命令来解决此“sudo chmod a+rw/dev/ttyUSB 0”]
收到此消息后,“键入’/exit’退出。”按下ESP8266开发板的“RST”按钮,在屏幕上获取日志。
在嵌入式和基于物联网的系统中使用RIOT操作系统的好处
如今,我们所看到的,我们所持有的,都与互联网直接间接地联系在一起。因此,物联网设备对每个人来说都很容易获得,在RIOS OS开发环境的帮助下,开发也变得越来越容易。
通过使用RIOT OS,我们可以轻松定制我们的项目,无需开发不同类型的联网设备来完成操作。它还通过使用 RIOT OS 网络堆栈在 IoT 设备之间进行交互来最大限度地减少人机交互工作。因此,RIOT OS 是一个实时操作系统,它可以节省任何操作之间的时间,这对于物联网项目非常重要。
当然,最重要的是安全性。因此,RIOT OS 嵌入了 DTLS 传输层安全性、IEEE 802.15.4 加密、安全固件更新 (SUIT)、多个加密包和加密安全元素。