Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
tinyos-rtos — 사물인터넷(IoT)을 위한 초경량 RTOS로, 선점형 스케줄링, TLS/DTLS, MQTT, CoAP, POSIX 호환성, MPU 기반 메모리 보호를 제공합니다. 커널 크기는 10KB 미만입니다. | Kitploit
도구/GitHubGitHub/cmc-labo/tinyos-rtos
Embedded Systems SecurityIoT SecurityNetwork SecurityHardware HackingCryptographyHardware SecurityFirmware Analysis
GitHubcmc-labo/tinyos-rtos

tinyos-rtos

사물인터넷(IoT)을 위한 초경량 RTOS로, 선점형 스케줄링, TLS/DTLS, MQTT, CoAP, POSIX 호환성, MPU 기반 메모리 보호를 제공합니다. 커널 크기는 10KB 미만입니다.

저장소 보기
2358234개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

TinyOS — 초경량 IoT용 RTOS

리소스가 제한된 IoT 및 임베디드 장치를 위한 초경량 실시간 운영체제입니다.
커널 크기 10KB 미만, 최소 RAM 2KB, 선점형 우선순위 기반 스케줄링.


특징

카테고리세부 사항
커널선점형 우선순위 기반 스케줄링(256레벨), 동일 우선순위 내 라운드 로빈, 비트맵을 통한 O(1) 우선순위 조회, 우선순위 상속
동기화뮤텍스(우선순위 상속 포함), 세마포어, 조건 변수, 이벤트 그룹, 메시지 큐
소프트웨어 타이머원샷 및 자동 재로드, 밀리초 정밀도, 런타임 주기 변경
메모리즉시 병합 기능이 있는 최초 적합 할당자(8KB 힙, 8바이트 정렬), 스택 오버플로 감지, 작업별 최고 사용량 표시
셸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
네트워크이더넷, 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, 오프라인 큐, 지수 백오프를 이용한 자동 재연결
CoAPRFC 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 artifacts are placed in `build/`:

| File | Description |
|---|---|
| `build/tinyos.elf` | 디버그 심볼이 포함된 ELF 이미지 |
| `build/tinyos.bin` | 플래싱을 위한 원시 바이너리 |
| `build/tinyos.map` | 링커 맵 (심볼 크기) |

### QEMU에서 실행

TinyOS는 QEMU `mps2-an385` 대상 (ARM Cortex-M3, 4MB 플래시, 4MB 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)

셸```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네트워크 통계 (이더넷, 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>셸 작업을 N밀리초 동안 지연
reboot시스템 재부팅

라인 편집기 키 바인딩:

키동작
← / Ctrl-B커서 왼쪽 이동
→ / Ctrl-F커서 오른쪽 이동
Home / Ctrl-A줄의 시작으로 이동
End / Ctrl-E줄의 끝으로 이동
↑ / ↓명령어 기록 탐색
Tab명령어 이름 자동 완성
Ctrl-K커서부터 줄 끝까지 삭제
Ctrl-U커서부터 줄 시작까지 삭제
Ctrl-W이전 단어 삭제
Ctrl-L화면 지우고 다시 그리기
Ctrl-C현재 줄 취소
도구 다운로드