What is Proyecto1cc7?
Proyecto1cc7 is an educational bare-metal operating system written in C and ARM assembly, designed to run directly on ARM Cortex-A8 hardware (BeagleBone Black) and in QEMU emulation (versatilepb machine). It implements the core primitives of a real-time OS from scratch — no Linux, no RTOS, no libc.
The OS demonstrates:
- Preemptive multitasking — a hardware timer fires IRQs that trigger context switches between processes
- Round-robin scheduling — a circular queue ensures each process gets CPU time fairly
- Full register save/restore — all ARM banked registers (SP, LR, SPSR) are saved and restored correctly on every context switch
- Dual-platform support — the same codebase targets both real BeagleBone Black hardware and QEMU, selected at compile time via
TARGET - Minimal standard library —
PRINT/READ, string utilities, and numeric conversion run without any OS or libc dependency
Quickstart
Build and run the OS in QEMU in under five minutes
Architecture overview
Understand how the OS components fit together
OS internals
Deep dive into process management and scheduling
Platform support
Configure for BeagleBone Black or QEMU
Project structure
Key concepts
| Concept | Implementation |
|---|---|
| Process control block | Process struct in OS/process.h |
| Ready queue | Circular linked list in OS/scheduler.c |
| Context switch | ARM assembly in OS/root.s (irq_handler, yield) |
| Timer interrupt | BeagleBone DMTIMER2 or QEMU SP804 in Lib/timer.c |
| Serial output | UART0 with platform register abstraction in OS/uart.c |
| Memory layout | Linker scripts assigning separate RAM regions per process |