Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
tinyos-rtos — 超軽量RTOS for IoT、プリエンプティブスケジューリング、TLS/DTLS、MQTT、CoAP、POSIX互換性、およびMPUベースのメモリ保護を備えています。カーネルは10KB未満。 | Kitploit
ツール/GitHubGitHub/cmc-labo/tinyos-rtos
組み込みシステムセキュリティIoTセキュリティネットワークセキュリティハードウェアハッキング暗号化ハードウェアセキュリティファームウェア解析
GitHubcmc-labo/tinyos-rtos

tinyos-rtos

超軽量RTOS for IoT、プリエンプティブスケジューリング、TLS/DTLS、MQTT、CoAP、POSIX互換性、およびMPUベースのメモリ保護を備えています。カーネルは10KB未満。

リポジトリを見る
2358335ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

TinyOS — IoT向け超軽量RTOS

リソース制約のあるIoTおよび組込みデバイス向けの超軽量リアルタイムオペレーティングシステム。
カーネルフットプリント10KB未満、最小RAM 2KB、プリエンプティブ優先度ベースのスケジューリング。


機能

カテゴリ詳細
カーネルプリエンプティブ優先度ベースのスケジューリング(256レベル)、同一優先度内でのラウンドロビン、ビットマップによるO(1)優先度ルックアップ、優先度継承
同期Mutex(優先度継承付き)、セマフォ、条件変数、イベントグループ、メッセージキュー
ソフトウェアタイマーワンショットおよび自動リロード、ミリ秒精度、実行時の周期変更
メモリ即時結合を伴うファーストフィットアロケータ(8KBヒープ、8バイトアライメント)、スタックオーバーフロー検出、タスクごとのHigh-Water Mark
シェルVT100インタラクティブシェル — 組み込みコマンド23個、コマンド履歴(↑↓)、タブ補完、フルラインエディタ
POSIX互換性pthreads(create/join/detach/exit、mutex、cond var)· BSDソケットAPI(socket/bind/listen/accept/connect/send/recv、inet_pton/ntop、htons/htonl)
ファイルシステムジャーナリングブロックデバイスFS(WAL、クラッシュリカバリ)、COWブロック共有、アトミックスナップショット、POSIXライクAPI
ネットワークEthernet, IPv4, ICMP, UDP, TCP, HTTPクライアント/サーバー, DNS
TLS / DTLSTLS 1.2/1.3 over TCP, DTLS 1.2 over UDP(mbedTLSバックエンド)
MQTTフルMQTT 3.1.1 — インフライトリトライテーブル付きQoS 0/1/2、オフラインキュー、指数バックオフ付き自動再接続
CoAPRFC 7252準拠のクライアント/サーバー、observeパターン
OTAA/Bパーティションファームウェアアップデート、CRC32検証、ロールバック
ウォッチドッグハードウェアおよびソフトウェアウォッチドッグ、タスクごとのタイムアウト監視
電源管理アイドル / スリープ / ディープスリープモード、ティックレスアイドル、CPU周波数スケーリング
セキュリティ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 (experimental)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/` に配置されます:

| ファイル | 説明 |
|---|---|
| `build/tinyos.elf` | デバッグシンボル付きELFイメージ |
| `build/tinyos.bin` | フラッシュ用の生バイナリ |
| `build/tinyos.map` | リンカマップ(シンボルサイズ) |

### QEMUでの実行

TinyOSはQEMU `mps2-an385` ターゲット(ARM Cortex-M3, 4 MB フラッシュ, 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

期待される割り込みトレースからの出力: 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");

組み込みシェルコマンド

コマンド説明
help [cmd]すべてのコマンドを一覧表示、または cmd の詳細ヘルプを表示
clearターミナル画面をクリア (VT100)
echo <text>テキストをターミナルに出力
historyコマンド履歴を表示
psすべてのタスクを一覧表示 (状態、優先度、CPU使用率、スタック使用量)
topCPU使用率の降順でタスク一覧を表示
kill <name> [suspend|resume|delete]名前でタスクを制御
memヒープ統計 (合計/使用中/空き、割り当て/解放回数)
verTinyOS バージョンと書式化された稼働時間
netネットワーク統計 (Ethernet、IP、UDP、TCP カウンター)
ping <ip> [count]ICMP Echo 要求を送信
ifconfig [ip|netmask|gw|dns <addr>]ネットワーク設定を表示または変更
power [active|idle|sleep|deepsleep]電源統計またはモード変更
ls [path]ディレクトリ一覧 (デフォルト: /)
cat <file>ファイル内容を表示
mkdir <path>ディレクトリを作成
rm <path>ファイルまたは空のディレクトリを削除
dfファイルシステム使用統計
touch <file>空のファイルを作成
cp <src> <dst>ファイルをコピー
uptimeシステム稼働時間を表示 (HH:MM:SS または N day(s), HH:MM:SS)
sleep <ms>シェルタスクを N ミリ秒遅延させる
rebootシステムを再起動

ラインエディタのキーバインド:

キー動作
← / Ctrl-Bカーソルを左に移動
→ / Ctrl-Fカーソルを右に移動
Home / Ctrl-A行頭に移動
End / Ctrl-E行末に移動
↑ / ↓コマンド履歴を移動
Tabコマンド名を補完
Ctrl-K行末まで削除
Ctrl-U行頭まで削除
Ctrl-W前の単語を削除
Ctrl-L画面をクリアして再描画
Ctrl-C現在の行をキャンセル
ツールをダウンロード