Aviso: para depositar documentos, por favor, inicia sesión e identifícate con tu cuenta de correo institucional de la UCM con el botón MI CUENTA UCM. No emplees la opción AUTENTICACIÓN CON CONTRASEÑA
 

Rust como lenguaje de programación unificado para IoT

Citation

Abstract

El presente trabajo analiza el uso del lenguaje de programación Rust en el ámbito de Internet de las Cosas (IoT). Se plantea el uso del Rust en las áreas de computación en la nube, gateways y nodos edge, y programación embebida de nodos IoT. Se analizan las propiedades de seguridad de memoria y concurrencia de Rust y su adecuación al entorno IoT. En particular se desarrollan dos ejemplos de aplicación en un nodo IoT basado en placa de desarrollo ESP32-C3-DevKit-RUST-1 con la plataforma RISC-V. El nodo dispone de sensores internos de temperatura, humedad y un acelerómetro (IMU) así como sensores I²C externos. Los ejemplos comparan modelos de concurrencia distintos. El primer ejemplo se basa en la librería estándar de Rust implementada con el sistema ESP-IDF (Espressif IoT Development Framework) y el uso de threads y servicios de un sistema RTOS (Real Time Operating System). El segundo ejemplo utiliza programación asíncrona, prescindiendo de la librería estándar (no_std) y por tanto del sistema operativo, y utiliza la librería Embassy que facilita un ejecutor asíncrono.
This work analyzes the use of the Rust programming language in the field of IoT (Internet of Things). The use of Rust in the areas of cloud computing, gateways and edge nodes and embedded programming in the IoT node is discussed. The memory safety and concurrency models of Rust and its application to IoT are analyzed. Two application examples are developed for an IoT node based in the ESP32-C3- DevKit-RUST-1 development board which uses the RISC-V platform. The node has internal sensors for temperature and humidity and accelerometer (IMU) as well as externally connected I²C sensors. The examples compare different concurrency models. The first example is based on the Rust standard library (std) that, in this case, is implemented with the ESP-IDF, and the use of threads and services provided by this RTOS system. The second example uses asynchronous programming, and it does not use the standard library (no_std crate), so there is no operating system. It uses the Embassy library that provides an executor for asynchronous tasks.

Research Projects

Organizational Units

Journal Issue

Description

Trabajo de Fin de Máster en Internet de las Cosas, Facultad de Informática UCM, Departamento de Arquitectura de Computadores y Automática, Curso 2023/2024. Rust in IoT code repository: https://github.com/marcormc/rustiot

Keywords