Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
tinyos-rtos — RTOS ultra-léger pour l'Internet des objets avec ordonnancement préemptif, TLS/DTLS, MQTT, CoAP, compatibilité POSIX et protection mémoire basée sur MPU. Noyau de moins de 10 Ko. | Kitploit
Outils/GitHubGitHub/cmc-labo/tinyos-rtos
Sécurité des Systèmes EmbarquésSécurité IoTSécurité RéseauHacking MatérielCryptographieSécurité MatérielleAnalyse de Micrologiciel
GitHubcmc-labo/tinyos-rtos

tinyos-rtos

RTOS ultra-léger pour l'Internet des objets avec ordonnancement préemptif, TLS/DTLS, MQTT, CoAP, compatibilité POSIX et protection mémoire basée sur MPU. Noyau de moins de 10 Ko.

Voir le dépôt
235833il y a 5 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

TinyOS — RTOS Ultra-Léger pour l'IdO

Un système d'exploitation temps réel ultra-léger pour les dispositifs IdO et embarqués contraints en ressources.
Empreinte du noyau sous 10 Ko, 2 Ko de RAM minimale, ordonnancement préemptif basé sur les priorités.


Fonctionnalités

CatégorieDétails
NoyauOrdonnancement préemptif basé sur les priorités (256 niveaux), tourniquet au sein d'une même priorité, recherche de priorité O(1) via bitmap, héritage de priorité
SynchronisationMutex (avec héritage de priorité), sémaphore, variable condition, groupes d'événements, files de messages
Minuteries logiciellesUn coup et auto-rechargement, précision milliseconde, changement de période en cours d'exécution
MémoireAllocateur first-fit avec coalescence immédiate (tas 8 Ko, aligné sur 8 octets), détection de débordement de pile, marqueur de niveau d'eau par tâche
ShellShell interactif VT100 — 23 commandes intégrées, historique des commandes (↑↓), complétion par tabulation, éditeur de ligne complet
Compatibilité POSIXpthreads (create/join/detach/exit, mutex, cond var) · API socket BSD (socket/bind/listen/accept/connect/send/recv, inet_pton/ntop, htons/htonl)
Système de fichiersFS à journalisation sur périphérique bloc (WAL, récupération après panne), partage de blocs COW, instantanés atomiques, API de type POSIX
RéseauEthernet, IPv4, ICMP, UDP, TCP, client/serveur HTTP, DNS
TLS / DTLSTLS 1.2/1.3 sur TCP, DTLS 1.2 sur UDP (backend mbedTLS)
MQTTMQTT 3.1.1 complet — QoS 0/1/2 avec table de retransmission en vol, file d'attente hors ligne, reconnexion automatique avec back-off exponentiel
CoAPClient/serveur conforme RFC 7252, motif observe
OTAMises à jour du firmware par partition A/B, vérification CRC32, retour arrière
WatchdogChien de garde matériel et logiciel, surveillance de délai par tâche
AlimentationModes Inactif / Veille / Veille profonde, idle sans tick, variation de fréquence CPU
SécuritéProtection mémoire basée sur MPU, support de démarrage sécurisé
HALCouche d'abstraction matérielle générique — ARM Cortex-M / RISC-V / AVR ; sélection d'architecture à la compilation, tables d'opérations périphériques

Matériel Supporté

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

Démarrage Rapide

Prérequis```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

Vérifiez l'installation:```bash
arm-none-eabi-gcc --version   # 10.x or later
qemu-system-arm --version     # 6.x or later

Compilation```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

Les artefacts de construction sont placés dans `build/` :

| Fichier | Description |
|---|---|
| `build/tinyos.elf` | Image ELF avec symboles de débogage |
| `build/tinyos.bin` | Binaire brut pour le flash |
| `build/tinyos.map` | Carte de l'éditeur de liens (tailles des symboles) |

### Exécution sur QEMU

TinyOS s'exécute sur la cible QEMU `mps2-an385` (ARM Cortex-M3, 4 Mo de flash, 4 Mo de 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

Résultat attendu de la trace d'interruption : des lignes successful exception return répétées confirment que le planificateur est en cours d'exécution, que SysTick émet des ticks et que les changements de contexte PendSV se terminent correctement.

Flasher sur le matériel```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

### Build with TLS (mbedTLS)

Le support TLS est activé automatiquement lorsque mbedTLS est présent dans `~/mbedtls`. Pour utiliser un autre chemin :```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

Exemple de tâche minimale:```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(); }

---

## Aperçu de l'API

### Gestion des tâches```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)

Synchronisation```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)

### Minuteries```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)

**Exemple de commande personnalisée**:```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");

Commandes intégrées du shell

Télécharger l’outil