Fase 1: Inisialisasi & Output Dasar (Selesai)
Status: Completed (Blinking LED)
Fase ini adalah “Hello World” perangkat keras. Tujuannya membuktikan bahwa toolchain berfungsi, SD Card terbaca, dan kita bisa mengendalikan pin fisik CPU.
- Materi: Setup Toolchain, Booting Process, Assembly Dasar, GPIO Output.
Fase 2: Komunikasi Serial (UART) — “Memberi Suara pada OS”
Saat ini OS kita “bisu”. Jika ada error, kita tidak tahu kenapa. Kita hanya punya lampu kedip. Langkah paling vital berikutnya adalah membuat saluran komunikasi teks.
- Tujuan: Mengirim teks (“Hello World”) dari Raspberry Pi ke terminal Fedora Anda via kabel USB-to-TTL.
- Materi Teknis:
- Memahami protokol UART dan Register PL011 (PrimeCell UART).
- Membuat fungsi pustaka standar sederhana:
putc(kirim karakter),puts(kirim string), danprintfsederhana. - Menerima input keyboard dari laptop ke Raspberry Pi (Echo test).
Fase 3: Interupsi & Timer — “Membangun Refleks Sistem”
Saat ini kita menggunakan sleep (busy wait) yang memboroskan CPU. OS yang baik harus bekerja berdasarkan event, bukan menunggu.
- Tujuan: Mengedipkan LED menggunakan Hardware Timer tanpa menghentikan CPU, dan menangani “Vector Table”.
- Materi Teknis:
- Exception Vector Table: Memahami alamat
0x00–0x20. - IRQ (Interrupt Request): Bagaimana hardware “mencolek” CPU agar berhenti sejenak.
- System Timer vs ARM Timer: Mengonfigurasi timer internal BCM2835.
- Exception Vector Table: Memahami alamat
Fase 4: Antarmuka Grafis (Framebuffer) — “Menampilkan Wajah”
Setelah bisa berkomunikasi lewat teks, kita akan beralih ke HDMI. Namun, kita tidak akan menulis driver HDMI yang rumit, melainkan menggunakan layanan Mailbox Interface milik GPU.
- Tujuan: Menggambar piksel, kotak warna, dan teks langsung ke layar monitor HDMI.
- Materi Teknis:
- Mailbox Property Interface: Cara CPU “titip pesan” ke GPU untuk minta resolusi layar (misal 1920×1080).
- Linear Framebuffer: Menulis warna ke alamat memori tertentu untuk mengubah tampilan layar.
- Font Rendering: Menggambar huruf piksel demi piksel (membuat terminal sendiri di layar).
Fase 5: Input Pengguna (GPIO Button)
Sebelum masuk ke keyboard USB (yang protokolnya sangat rumit untuk pemula), kita akan membuat input sederhana menggunakan tombol fisik (Push Button) pada Breadboard.
- Tujuan: Menekan tombol fisik untuk mengubah warna layar atau kecepatan kedipan LED.
- Materi Teknis:
- GPIO Input & Pull-up/Pull-down Resistors.
- GPIO Interrupts: Menangani penekanan tombol secara asinkron (tanpa mengecek terus-menerus/polling).
Fase 6: Manajemen Memori (Sederhana)
Kita tidak bisa selamanya menebak-nebak alamat memori manual. Kita butuh sistem alokasi.
- Tujuan: Membuat implementasi fungsi
malloc()danfree()sederhana. - Materi Teknis:
- Konsep Heap.
- Manajemen bitmap atau linked list untuk melacak memori yang terpakai vs kosong.
Fase 7: Multitasking (Scheduler) — “Jantung Sistem Operasi”
Ini adalah puncak dari dasar OS. Bagaimana menjalankan dua program (Task A dan Task B) seolah-olah bersamaan.
- Tujuan: Menjalankan dua proses (misal: satu mengedipkan LED merah, satu menulis ke layar) secara bergantian dengan cepat.
- Materi Teknis:
- Context Switching: Menyimpan register Task A, memuat register Task B.
- Round Robin Scheduler: Algoritma pembagian waktu CPU.
