Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
tinyos-rtos — Ультралегковесная ОСРВ для Интернета вещей с вытесняющим планированием, поддержкой TLS/DTLS, MQTT, CoAP, совместимостью с POSIX и защитой памяти на основе MPU. Ядро — менее 10 КБ. | Kitploit
Инструменты/GitHubGitHub/cmc-labo/tinyos-rtos
Безопасность встроенных системБезопасность IoTСетевая безопасностьАппаратный ХакингКриптографияАппаратная БезопасностьАнализ Прошивок
GitHubcmc-labo/tinyos-rtos

tinyos-rtos

Ультралегковесная ОСРВ для Интернета вещей с вытесняющим планированием, поддержкой TLS/DTLS, MQTT, CoAP, совместимостью с POSIX и защитой памяти на основе MPU. Ядро — менее 10 КБ.

Репозиторий
2358234 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

TinyOS — сверхлегкая ОСРВ для Интернета вещей

Сверхлегкая операционная система реального времени для устройств Интернета вещей и встраиваемых систем с ограниченными ресурсами.
Размер ядра менее 10 КБ, минимум 2 КБ ОЗУ, вытесняющее планирование на основе приоритетов.


Возможности

КатегорияДетали
ЯдроВытесняющее планирование на основе приоритетов (256 уровней), циклическое планирование для одного приоритета, поиск приоритета O(1) через битовую маску, наследование приоритета
СинхронизацияМьютекс (с наследованием приоритета), семафор, условная переменная, группы событий, очереди сообщений
Программные таймерыОдноразовые и с автоперезагрузкой, точность до миллисекунды, изменение периода во время выполнения
ПамятьАллокатор first-fit с немедленной коалесценцией (8 КБ кучи, выравнивание по 8 байт), обнаружение переполнения стека, метка максимального использования для каждой задачи
ОболочкаИнтерактивная оболочка VT100 — 23 встроенные команды, история команд (↑↓), автодополнение по табуляции, полноценный редактор строки
Совместимость с POSIXpthreads (create/join/detach/exit, мьютекс, условная переменная) · BSD socket API (socket/bind/listen/accept/connect/send/recv, inet_pton/ntop, htons/htonl)
Файловая системаЖурналируемая ФС на блочных устройствах (WAL, восстановление после сбоя), совместное использование блоков COW, атомарные снимки, API, подобный POSIX
СетьEthernet, IPv4, ICMP, UDP, TCP, HTTP клиент/сервер, DNS
TLS / DTLSTLS 1.2/1.3 через TCP, DTLS 1.2 через UDP (бэкенд mbedTLS)
MQTTПолный MQTT 3.1.1 — QoS 0/1/2 с таблицей повторных попыток в полёте, офлайн-очередь, автоматическое переподключение с экспоненциальной отсрочкой
CoAPКлиент/сервер, совместимый с RFC 7252, шаблон observe
OTAОбновления прошивки с разделами A/B, проверка CRC32, откат
Сторожевой таймерАппаратный и программный сторожевой таймер, мониторинг тайм-аута для каждой задачи
ЭнергопитаниеРежимы бездействия / сна / глубокого сна, безтиковое бездействие, масштабирование частоты ЦП
БезопасностьЗащита памяти на основе MPU, поддержка безопасной загрузки
HALУниверсальный уровень аппаратной абстракции — ARM Cortex-M / RISC-V / AVR; выбор архитектуры на этапе компиляции, таблицы операций периферии

Поддерживаемое оборудование

АрхитектураПримеры
ARM Cortex-M (M0/M0+/M3/M4/M7)STM32, nRF52, Raspberry Pi Pico
RISC-V (RV32I)ESP32-C3
AVR (экспериментально)ATmega

Быстрый старт

Предварительные требования```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

Проверьте установку:```bash
arm-none-eabi-gcc --version   # 10.x or later
qemu-system-arm --version     # 6.x or later

Сборка```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/`:

| File | Описание |
|---|---|
| `build/tinyos.elf` | ELF-образ с отладочными символами |
| `build/tinyos.bin` | Сырой бинарный файл для прошивки |
| `build/tinyos.map` | Карта компоновщика (размеры символов) |

### Запуск на QEMU

TinyOS работает на QEMU-цели `mps2-an385` (ARM Cortex-M3, 4 МБ флеш-памяти, 4 МБ ОЗУ):```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

Ожидаемый вывод из трассировки прерываний: повторяющиеся строки successful exception return подтверждают, что планировщик работает, SysTick тикает, и переключения контекста PendSV выполняются корректно.

Прошивка на устройство```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

### Сборка с TLS (mbedTLS)

Поддержка TLS включается автоматически, когда mbedTLS находится в `~/mbedtls`.
Чтобы использовать другой путь:```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

Минимальный пример задачи:```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(); }

---

## Обзор API

### Управление задачами```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)

Синхронизация```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)

### Таймеры```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)

Оболочка```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)

**Пример пользовательской команды:**```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");

Встроенные команды оболочки

Скачать инструмент