Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
tinyos-rtos — RTOS ultraleve para IoT com escalonamento preemptivo, TLS/DTLS, MQTT, CoAP, compatibilidade POSIX e proteção de memória baseada em MPU. Kernel com menos de 10 KB. | Kitploit
Ferramentas/GitHubGitHub/cmc-labo/tinyos-rtos
Segurança de Sistemas EmbarcadosSegurança IoTSegurança de RedeHacking de HardwareCriptografiaSegurança de HardwareAnálise de Firmware
GitHubcmc-labo/tinyos-rtos

tinyos-rtos

RTOS ultraleve para IoT com escalonamento preemptivo, TLS/DTLS, MQTT, CoAP, compatibilidade POSIX e proteção de memória baseada em MPU. Kernel com menos de 10 KB.

Ver Repositório
235823há 4 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

TinyOS — RTOS Ultra-Leve para IoT

Um sistema operacional em tempo real ultra-leve para dispositivos IoT e embarcados com recursos limitados.
Kernel com footprint inferior a 10 KB, RAM mínima de 2 KB, escalonamento preemptivo baseado em prioridade.


Recursos

CategoriaDetalhes
KernelEscalonamento preemptivo baseado em prioridade (256 níveis), round-robin dentro da mesma prioridade, busca de prioridade O(1) via bitmap, herança de prioridade
SincronizaçãoMutex (com herança de prioridade), semáforo, variável de condição, grupos de eventos, filas de mensagens
Temporizadores de SoftwareDisparo único e recarga automática, precisão de milissegundos, alteração de período em tempo de execução
MemóriaAlocador first-fit com coalescência imediata (heap de 8 KB, alinhado a 8 bytes), detecção de estouro de pilha, marca d'água alta por tarefa
ShellShell interativo VT100 — 23 comandos integrados, histórico de comandos (↑↓), preenchimento com Tab, editor de linha completo
Compatibilidade POSIXpthreads (criar/juntar/destacar/sair, mutex, var. cond.) · API de socket BSD (socket/bind/listen/accept/connect/send/recv, inet_pton/ntop, htons/htonl)
Sistema de ArquivosFS em dispositivo de bloco com journaling (WAL, recuperação de falhas), compartilhamento de blocos COW, snapshots atômicos, API similar à POSIX
RedeEthernet, 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 com tabela de retransmissão em voo, fila offline, reconexão automática com back-off exponencial
CoAPCliente/servidor compatível com RFC 7252, padrão observe
OTAAtualizações de firmware em partições A/B, verificação CRC32, reversão
WatchdogWatchdog de hardware e software, monitoramento de tempo limite por tarefa
EnergiaModos Idle / Sleep / Deep-sleep, idle sem ticks, escalonamento de frequência da CPU
SegurançaProteção de memória baseada em MPU, suporte a boot seguro
HALCamada de Abstração de Hardware genérica — ARM Cortex-M / RISC-V / AVR; seleção de arquitetura em tempo de compilação, tabelas de operação periférica

Hardware Suportado

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

Início Rápido

Pré-requisitos```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 instalação:```bash
arm-none-eabi-gcc --version   # 10.x or later
qemu-system-arm --version     # 6.x or later

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

Build artifacts are placed in `build/`:

| Arquivo | Descrição |
|---|---|
| `build/tinyos.elf` | Imagem ELF com símbolos de depuração |
| `build/tinyos.bin` | Binário bruto para gravação |
| `build/tinyos.map` | Mapa do linker (tamanhos de símbolos) |

### Executar no QEMU

TinyOS executa no alvo QEMU `mps2-an385` (ARM Cortex-M3, 4 MB de flash, 4 MB 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

Saída esperada do rastreamento de interrupção: linhas repetidas successful exception return confirmam que o escalonador está em execução, o SysTick está funcionando e as mudanças de contexto PendSV estão sendo concluídas corretamente.

Flashear no 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 com TLS (mbedTLS)

O suporte a TLS é ativado automaticamente quando o mbedTLS está presente em `~/mbedtls`.
Para usar um caminho 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

Exemplo de tarefa 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(); }

---

## Visão Geral da API

### Gerenciamento de Tarefas```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)

Sincronização```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)

**Exemplo 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 Internos do Shell

Baixar ferramenta