Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
tinyos-rtos — RTOS ultra-ligero para IoT con planificación preventiva, TLS/DTLS, MQTT, CoAP, compatibilidad con POSIX y protección de memoria basada en MPU. Kernel de menos de 10 KB. | Kitploit
Herramientas/GitHubGitHub/cmc-labo/tinyos-rtos
Seguridad de Sistemas EmbebidosSeguridad IoTSeguridad de RedesHacking de HardwareCriptografíaSeguridad de HardwareAnálisis de Firmware
GitHubcmc-labo/tinyos-rtos

tinyos-rtos

RTOS ultra-ligero para IoT con planificación preventiva, TLS/DTLS, MQTT, CoAP, compatibilidad con POSIX y protección de memoria basada en MPU. Kernel de menos de 10 KB.

Ver Repositorio
235823hace 4 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

TinyOS — RTOS ultra-ligero para IoT

Un sistema operativo en tiempo real ultraligero para dispositivos IoT y empotrados con recursos limitados.
Huella del kernel inferior a 10 KB, 2 KB de RAM mínima, planificación basada en prioridades con desalojo.


Características

CategoríaDetalles
NúcleoPlanificación basada en prioridades con desalojo (256 niveles), round-robin dentro de la misma prioridad, búsqueda O(1) de prioridad mediante mapa de bits, herencia de prioridad
SincronizaciónMutex (con herencia de prioridad), semáforo, variable de condición, grupos de eventos, colas de mensajes
Temporizadores de softwareDisparo único y recarga automática, precisión de milisegundos, cambio de período en tiempo de ejecución
MemoriaAsignador de primer ajuste con coalescencia inmediata (montón de 8 KB, alineado a 8 bytes), detección de desbordamiento de pila, marca de agua alta por tarea
ShellShell interactivo VT100: 23 comandos integrados, historial de comandos (↑↓), finalización con tabulador, editor de línea completo
Compatibilidad POSIXpthreads (create/join/detach/exit, mutex, cond var) · API de sockets BSD (socket/bind/listen/accept/connect/send/recv, inet_pton/ntop, htons/htonl)
Sistema de archivosFS de dispositivo de bloques con journaling (WAL, recuperación ante fallos), compartición de bloques COW, instantáneas atómicas, API similar a POSIX
RedEthernet, IPv4, ICMP, UDP, TCP, cliente/servidor HTTP, DNS
TLS / DTLSTLS 1.2/1.3 sobre TCP, DTLS 1.2 sobre UDP (backend mbedTLS)
MQTTMQTT 3.1.1 completo: QoS 0/1/2 con tabla de reintentos en vuelo, cola fuera de línea, reconexión automática con retroceso exponencial
CoAPCliente/servidor compatible con RFC 7252, patrón observe
OTAActualizaciones de firmware por partición A/B, verificación CRC32, reversión
Perro guardiánPerro guardián de hardware y software, monitoreo de tiempo de espera por tarea
EnergíaModos inactivo, suspensión y suspensión profunda, inactividad sin ticks, escalado de frecuencia de CPU
SeguridadProtección de memoria basada en MPU, soporte de arranque seguro
HALCapa genérica de abstracción de hardware: ARM Cortex-M / RISC-V / AVR; selección de arquitectura en tiempo de compilación, tablas de operaciones de periféricos

Hardware compatible

ArquitecturaEjemplos
ARM Cortex-M (M0/M0+/M3/M4/M7)STM32, nRF52, Raspberry Pi Pico
RISC-V (RV32I)ESP32-C3
AVR (experimental)ATmega

Inicio rápido

Requisitos previos```bash

ARM cross-compiler (required)

sudo apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi

QEMU ARM emulator (optional — for running without hardware)

sudo apt-get install -y qemu-system

Verificar instalación:```bash
arm-none-eabi-gcc --version   # 10.x or later
qemu-system-arm --version     # 6.x or later

Compilación```bash

Default example (blink_led) — ARM Cortex-M4

make

Target a different architecture (auto-selects toolchain and HAL)

make ARCH=cortex-m0 # Cortex-M0/M0+ make ARCH=cortex-m7 # Cortex-M7 make ARCH=riscv32 # RISC-V RV32I (uses riscv32-unknown-elf-gcc) make ARCH=avr5 # AVR ATmega (uses avr-gcc)

Specific example

make EXAMPLE=blink_led # LED blink + task scheduler demo make EXAMPLE=event_groups # Event group AND/OR/NOT/SYNC demo make EXAMPLE=iot_sensor # Multi-sensor IoT node make EXAMPLE=shell_demo # Interactive UART shell make EXAMPLE=mqtt_demo # MQTT publish/subscribe make EXAMPLE=condition_variable # Producer/consumer

Convenience aliases

make example-blink make example-events make example-shell make example-mqtt make example-iot

Build output

make size # Print ROM/RAM usage

Los artefactos de compilación se colocan en `build/`:

| Archivo | Descripción |
|---|---|
| `build/tinyos.elf` | Imagen ELF con símbolos de depuración |
| `build/tinyos.bin` | Binario sin formato para flasheo |
| `build/tinyos.map` | Mapa del enlazador (tamaños de símbolos) |

### Ejecutar en QEMU

TinyOS se ejecuta en el objetivo `mps2-an385` de QEMU (ARM Cortex-M3, 4 MB flash, 4 MB RAM):```bash
# Run indefinitely (Ctrl-A X to quit)
qemu-system-arm \
    -machine mps2-an385 \
    -cpu cortex-m3 \
    -nographic \
    -kernel build/tinyos.elf

# Run for a fixed duration (e.g. 10 seconds)
timeout 10 qemu-system-arm \
    -machine mps2-an385 \
    -cpu cortex-m3 \
    -nographic \
    -kernel build/tinyos.elf

# Debug: trace interrupts
qemu-system-arm \
    -machine mps2-an385 \
    -cpu cortex-m3 \
    -nographic \
    -d int \
    -kernel build/tinyos.elf

Salida esperada del seguimiento de interrupciones: las líneas repetidas successful exception return confirman que el planificador está ejecutándose, SysTick está funcionando y los cambios de contexto de PendSV se completan correctamente.

Flash to Hardware```bash

OpenOCD (STM32 example)

openocd -f interface/stlink.cfg -f target/stm32f4x.cfg
-c "program build/tinyos.bin verify reset exit 0x08000000"

pyOCD (generic ARM Cortex-M)

pyocd flash --target cortex_m build/tinyos.bin

### Compilar con TLS (mbedTLS)

El soporte TLS se habilita automáticamente cuando mbedTLS está presente en `~/mbedtls`.
Para usar una ruta diferente:```bash
# Clone and build mbedTLS
git clone https://github.com/Mbed-TLS/mbedtls ~/mbedtls
make -C ~/mbedtls

# Build TinyOS with TLS
make MBEDTLS_DIR=~/mbedtls

Ejemplo de tarea mínima:```c #include "tinyos.h"

void my_task(void param) { while (1) { / work */ os_task_delay_ms(100); } }

int main(void) { tcb_t task; os_init(); os_task_create(&task, "my_task", my_task, NULL, PRIORITY_NORMAL); os_start(); }

---

## Resumen de la API

### Gestión de Tareas```c
os_task_create(tcb, name, entry, param, priority)
os_task_delete(task)
os_task_suspend(task) / os_task_resume(task)
os_task_delay(ticks) / os_task_delay_ms(ms)
os_task_set_priority(task, priority)
os_task_get_stats(task, stats)
os_task_get_stats_by_index(index, stats)   /* iterate all tasks by index */
os_task_find_by_name(name)                 /* returns tcb_t*, NULL if not found */
os_get_system_stats(stats)
os_get_memory_stats(&free, &used, &allocs, &frees)

Sincronización```c

os_mutex_init(mutex) / os_mutex_lock(mutex, timeout) / os_mutex_unlock(mutex) os_semaphore_init(sem, count) / os_semaphore_wait(sem, timeout) / os_semaphore_post(sem) os_cond_init(cond) / os_cond_wait(cond, mutex, timeout) os_cond_signal(cond) / os_cond_broadcast(cond) os_event_group_set_bits(eg, bits) / os_event_group_wait_bits(eg, bits, opts, out, timeout) os_queue_init(q, buf, item_size, max) / os_queue_send(q, item, timeout) os_queue_receive(q, item, timeout) / os_queue_peek(q, item, timeout)

### Temporizadores```c
os_timer_create(timer, name, type, period_ms, callback, param)
os_timer_start(timer) / os_timer_stop(timer) / os_timer_reset(timer)
os_timer_change_period(timer, ms) / os_timer_get_remaining_ms(timer)

Shell```c

/* Register custom commands before calling shell_start() */ shell_register_cmd(name, handler_fn, help_text)

/* Provide UART I/O callbacks and start the shell task */ shell_io_t io = { .getc = uart_getc, .puts = uart_puts }; shell_start(&io)

/* Change the prompt at any time */ shell_set_prompt("mydevice> ")

/* Execute a single line programmatically */ shell_exec(line)

**Ejemplo de comando personalizado:**```c
static int cmd_led(int argc, char *argv[]) {
    if (argc < 2) return 1;  /* non-zero → prints usage */
    bool on = (strcmp(argv[1], "on") == 0);
    gpio_write(LED_PIN, on);
    return 0;
}

/* In main(), before shell_start(): */
shell_register_cmd("led", cmd_led, "led <on|off>  Toggle LED");

Comandos de shell integrados

Descargar herramienta