Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
tinyos-rtos — 超轻量级物联网RTOS,支持抢占式调度、TLS/DTLS、MQTT、CoAP、POSIX兼容性及基于MPU的内存保护。内核小于10 KB。 | Kitploit
工具/GitHubGitHub/cmc-labo/tinyos-rtos
嵌入式系统安全物联网安全网络安全硬件黑客密码学硬件安全固件分析
GitHubcmc-labo/tinyos-rtos

tinyos-rtos

超轻量级物联网RTOS,支持抢占式调度、TLS/DTLS、MQTT、CoAP、POSIX兼容性及基于MPU的内存保护。内核小于10 KB。

查看仓库
2358224个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

TinyOS — 超轻量级物联网实时操作系统

适用于资源受限的物联网和嵌入式设备的超轻量级实时操作系统。
内核体积小于 10 KB,最低 RAM 需求 2 KB,采用抢占式优先级调度。


特性

类别详情
内核抢占式优先级调度(256 级),同优先级内轮转,基于位图的 O(1) 优先级查找,优先级继承
同步互斥锁(带优先级继承)、信号量、条件变量、事件组、消息队列
软件定时器单次触发和自动重载,毫秒级精度,运行时更改周期
内存首次适应分配器,即时合并(8 KB 堆,8 字节对齐),栈溢出检测,每任务高水位标记
ShellVT100 交互式 Shell——23 条内置命令,命令历史(↑↓),Tab 补全,完整行编辑器
POSIX 兼容性pthreads(创建/加入/分离/退出,互斥锁,条件变量)· BSD 套接字 API(socket/bind/listen/accept/connect/send/recv,inet_pton/ntop,htons/htonl)
文件系统日志式块设备文件系统(WAL,崩溃恢复),写时复制块共享,原子快照,类 POSIX API
网络以太网、IPv4、ICMP、UDP、TCP、HTTP 客户端/服务器、DNS
TLS / DTLSTCP 上的 TLS 1.2/1.3,UDP 上的 DTLS 1.2(mbedTLS 后端)
MQTT完整 MQTT 3.1.1——QoS 0/1/2 带飞行重试表,离线队列,带指数退避的自动重连
CoAP符合 RFC 7252 的客户端/服务器,观察模式
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 (实验性)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)

当 `~/mbedtls` 中存在 mbedTLS 时,TLS 支持会自动启用。
要使用其他路径:```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)

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)

**自定义命令示例:**```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");

内置 Shell 命令

命令描述
help [cmd]列出所有命令,或显示 cmd 的详细帮助
clear清除终端屏幕 (VT100)
echo <text>在终端打印文本
history显示命令历史
ps列出所有任务(状态、优先级、CPU 百分比、栈使用量)
top按 CPU 使用率降序排列的任务列表
kill <name> [suspend|resume|delete]按名称控制任务
mem堆统计信息(总量/已用/空闲,分配/释放计数)
verTinyOS 版本及格式化的运行时间
net网络统计信息(以太网、IP、UDP、TCP 计数器)
ping <ip> [count]发送 ICMP 回显请求
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>延迟 shell 任务 N 毫秒
reboot重启系统

行编辑器按键绑定:

按键动作
← / Ctrl-B光标左移
→ / Ctrl-F光标右移
Home / Ctrl-A跳转到行首
End / Ctrl-E跳转到行尾
↑ / ↓浏览命令历史
Tab补全命令名
Ctrl-K删除到行尾
Ctrl-U删除到行首
Ctrl-W删除前一个词
Ctrl-L清屏并重绘
Ctrl-C取消当前行

Shell 配置 (include/tinyos/shell.h):```c #define SHELL_MAX_COMMANDS 32 /* max registered commands / #define SHELL_LINE_MAX 128 / max input line length (bytes) / #define SHELL_ARGV_MAX 16 / max arguments per command / #define SHELL_HISTORY_DEPTH 8 / command history entries */

### 网络```c
net_init(driver, config) / net_start()
net_socket(type) / net_bind(sock, addr) / net_connect(sock, addr, timeout_ms)
net_send(sock, data, len, timeout_ms) / net_recv(sock, buf, len, timeout_ms)
net_sendto(sock, data, len, addr) / net_recvfrom(sock, buf, len, addr)
net_close(sock)
net_ping(dest_ip, timeout_ms, rtt)
net_dns_resolve(hostname, ip, timeout_ms)
net_http_get(url, response, timeout_ms)
net_http_post(url, content_type, body, len, response, timeout_ms)

POSIX 兼容性

TinyOS提供了两个薄兼容层,允许标准可移植代码在TinyOS上编译和运行,只需最少的更改。

下载工具