Belajar Firmware Engineer dari dasar hingga production-grade: pre-requisites skill & setup environment, peran & karir, firmware & sistem embedded, C untuk firmware, MCU programming, peripherals UART/SPI/I2C, interrupts & NVIC, RTOS dasar, memory & linker, debugging & tracing, device drivers, low power firmware, communication & networking, bootloader & OTA, firmware testing & CI, Rust for firmware, real-time constraints, storage & filesystem, firmware security, secure OTA & update, safety & MISRA, TinyML firmware, DSP & signal processing, automotive & CAN, multi-core & heterogeneous, production & scalability, ekosistem & tren modern 2026, hingga roadmap karir & refleksi akhir dengan total 28 episode.
Sebelum menulis firmware pertama, kalian perlu menguasai C/C++, bit manipulation, dan elektronika dasar, lalu menyiapkan MCU board STM32/ESP32, ARM GCC, OpenOCD, debugger, serta toolchain Rust untuk episode 15. Di episode ini kalian memverifikasi seluruh environment siap dipakai sepanjang series.

Apa yang sebenarnya dikerjakan seorang Firmware Engineer: menulis software yang mengontrol hardware dengan batasan real-time dan memori ketat, memahami alur kerja harian, perbedaan dengan peran software/embedded lain, konteks pasar 2026 dengan track gaji $85-175K, dan peta karir jangka panjang.

Memahami posisi firmware dalam sistem embedded: perbedaan firmware vs software aplikasi, memory map flash dan RAM, proses boot dari reset vector sampai main, alur build menjadi binary, dan praktik memetakan sistem kalian sendiri.

Menguasai C dalam konteks firmware: pointer dan alamat, memory-mapped I/O yang mengakses register hardware, kualifikasi volatile dan const, pola bit manipulation, serta embedded C patterns seperti fixed-width types dan struct-over-register untuk menulis kode firmware yang aman.

Menaklukkan MCU lewat register: menyiapkan clock dengan RCC, memahami pohon clock HSI/HSE/PLL dan prescaler, mengonfigurasi GPIO mulai dari mode hingga pull-up, serta praktik blink LED register-level penuh tanpa HAL pada STM32.

Membuka komunikasi antar chip dan mengukur dunia fisik: memahami protokol UART, SPI, dan I2C beserta perbandingan dan kapan memakainya, ADC untuk membaca sinyal analog, timer dan PWM untuk timing presisi, serta praktik menulis driver UART pertama.

Membuat firmware responsif dengan interrupts: model exception ARM Cortex-M dan NVIC, prioritas dan preemption, menulis ISR yang singkat dan tidak memblokir, interrupt-safe code dengan volatile, critical section, serta pola berbagi data antara ISR dan main loop.

Membawa firmware ke level multitasking dengan FreeRTOS: konsep task, prioritas, dan scheduler preemptive, sinkronisasi dengan semaphore dan mutex, komunikasi antar task dengan queue, pola ISR-ke-queue, serta praktik membangun aplikasi RTOS pertama.

Menjadi penguasa memori firmware: memahami pembagian flash dan RAM ke section .text, .rodata, .data, dan .bss, membaca dan mengubah linker script MEMORY/SECTIONS, penempatan stack dan heap, serta menganalisis file .map untuk mendeteksi pemborosan memori.

Menjinakkan firmware yang bermasalah: sesi GDB via OpenOCD dengan breakpoint dan watchpoint, semihosting dan RTT untuk log real-time, membaca fault handlers HardFault lewat register stack, serta praktik sesi debugging end-to-end.
