Belajar Firmware Engineer - Pre-Requisites Skill & Setup Environment
Episode 0 of 28

Belajar Firmware Engineer - Pre-Requisites Skill & Setup Environment

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.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Selamat datang di series Belajar Firmware Engineer! Series ini akan membawa kalian menguasai peran yang menulis software tingkat rendah untuk perangkat keras: kontrol langsung, real-time, dan constraint ketat. Total ada 28 episode yang tersusun dalam enam fase, dari fondasi konsep sampai production readiness.

Sebelum menjalankan arm-none-eabi-gcc pertama kalian, ada skill dasar dan perangkat yang wajib disiapkan. Mengapa prasyarat ini penting? Karena firmware bekerja di lapisan paling bawah: ia menulis ke register perangkat keras, membaca bit-bit dari sensor, dan berjalan dengan RAM puluhan kilobyte. Jika kalian belum paham pointer atau belum tahu beda 3.3V dengan 5V, kalian akan kesulitan mendiagnosis saat board tidak merespons atau terbakar.

Episode 0 ini adalah peta jalan kalian: kita akan memastikan skill dasar terpenuhi, menyiapkan board dan debugger, memasang toolchain, lalu memverifikasi seluruh environment siap dipakai sepanjang series.

Skill Dasar yang Wajib Dimiliki

C/C++ dan Bit Manipulation

Firmware hampir selalu ditulis dalam C. Kalian wajib nyaman dengan variabel, fungsi, struct, pointer, dan operasi bitwise. Pointer adalah bahasa utama firmware — register perangkat keras diakses lewat alamat memori, dan peripheral driver bekerja dengan membaca-menulis bit di register. Contoh yang akan kalian pakai terus:

Bit manipulation - pola set, clear, dan toggle
uint32_t reg = 0;
 
reg |= (1U << 3);     // set bit 3
reg &= ~(1U << 3);    // clear bit 3
reg ^= (1U << 3);     // toggle bit 3

Elektronika Dasar

Kalian tidak perlu menjadi ahli elektronika, tapi wajib paham empat hal: tegangan (volt), arus (ampere), ground, dan pull-up/pull-down resistor. Sebagian besar board belajar bekerja pada logika 3.3V — memberi 5V ke pin GPIO bisa membakar papan. Menyalakan LED cukup dengan memberi tegangan pada pin + resistor pembatas arus (±220 ohm).

Konsep Sistem dan Register

Firmware hidup dalam batasan keras. Pahami perbedaan flash (menyimpan program, tetap saat listrik mati) dan RAM (data runtime, hilang saat listrik mati), plus konsep register — lokasi memori khusus yang mengontrol hardware. Register inilah yang menjadi jembatan antara software dan hardware sepanjang series ini.

Perangkat Hardware yang Disiapkan

Pilihan paling seimbang untuk belajar adalah STM32 (arsitektur ARM Cortex-M yang dominan di industri) dan ESP32 (populer untuk proyek ber-konektivitas). Rekomendasi minimal:

PerangkatFungsiKeterangan
STM32 Nucleo (F103/F411)Board utamaAda ST-Link terintegrasi, murah, dokumentasi raksasa
ESP32 DevKitBoard alternatifWiFi/BLE bawaan, cocok untuk episode 12 (networking)
ST-Link / J-Link / Black Magic ProbeDebuggerSWD + GDB; Nucleo sudah punya ST-Link di papan
Breadboard + jumperMerakit rangkaianTanpa solder, mudah dipindah
LED + resistor + buttonOutput & input dasarMenguji GPIO sejak episode 4
Logic analyzer (opsional)Observasi sinyalBerguna untuk memahami UART/SPI/I2C di episode 5

Jika kalian belum punya hardware fisik, QEMU (emulator ARM) dan Wokwi (simulator di browser) cukup untuk mengikuti hampir semua episode — kita bahas penggunaannya di episode 9.

Tools Software yang Disiapkan

Toolchain C dan Debugger

ARM GCC (arm-none-eabi-gcc) men-compile C ke binary ARM tanpa OS, dan OpenOCD men-jembatani debugger ke GDB:

Install toolchain ARM + OpenOCD (Ubuntu/Debian)
sudo apt install gcc-arm-none-eabi openocd

Untuk board Nucleo, driver ST-Link juga berguna:

Install driver ST-Link
sudo apt install stlink-tools

PlatformIO dan ESP-IDF

Untuk praktik ESP32 (episode 12), install PlatformIO:

Install PlatformIO Core
curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py | python3 -

Toolchain Rust (untuk Episode 15)

Episode 15 akan menulis firmware Rust. Siapkan sejak sekarang:

Install Rust + target embedded ARM
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add thumbv7em-none-eabihf

Verifikasi Environment

Sebelum lanjut ke episode 1, jalankan verifikasi menyeluruh:

Verifikasi seluruh toolchain
arm-none-eabi-gcc --version
openocd --version
pio --version
rustc --version

Uji toolchain dengan firmware blink paling sederhana. Buat project PlatformIO untuk board Nucleo:

Buat project PlatformIO untuk STM32
pio project init --board nucleo_f103rb

Lalu ganti src/main.cpp dengan LED blink (pakai Arduino API yang disediakan PlatformIO), dan jalankan:

Build dan upload firmware pertama
pio run
pio run -t upload

Note

Jika upload gagal, cek kabel USB dan driver serial. Untuk Nucleo, tombol reset di papan sering membantu. QEMU bisa menggantikan hardware: qemu-system-arm -M netduino2 menjalankan STM32F103 virtual — cukup untuk menguji kode di episode 3 sampai 9.

Ringkasan Prasyarat

Rangkuman yang sudah kalian siapkan di episode 0:

  • Skill: C/C++ (pointer, struct, bitwise), elektronika dasar (tegangan, ground, pull-up), konsep register.
  • Hardware: STM32 Nucleo (rekomendasi) atau ESP32, debugger SWD, breadboard + LED + button.
  • Software: ARM GCC, OpenOCD, PlatformIO, dan toolchain Rust untuk episode 15.
  • Verifikasi: build blink berhasil di-flash ke board.

Jika ada yang belum terpenuhi, berhenti dulu dan lengkapi sebelum melanjutkan. Perjalanan 27 episode ke depan akan jauh lebih lancar dengan pijakan yang kuat ini.

Penutup

Inti yang harus dibawa pulang:

  • Firmware Engineer bekerja di persimpangan software dan hardware — pointer, register, dan bit adalah bahasa sehari-hari.
  • Skill wajib: C/C++ dengan bit manipulation, elektronika dasar, dan konsep sistem (flash, RAM, register).
  • Siapkan STM32 Nucleo (atau ESP32), debugger, ARM GCC, OpenOCD, PlatformIO, dan Rust toolchain.
  • Verifikasi dengan build blink pertama yang berhasil di-flash.

Di episode 1 selanjutnya kita akan membahas peran & karir Firmware Engineer — apa yang sebenarnya dikerjakan sehari-hari, perbedaannya dengan software engineer, dan konteks pasar 2026 dengan track gaji $85–175K serta posisi Rust yang mulai mainstream. Pastikan environment kalian sudah siap, karena perjalanan Belajar Firmware Engineer baru saja dimulai!