Kenapa halaman ini penting
Halaman ini menjelaskan bagaimana Quickstart masuk ke model eksekusi ZeroKernel yang lebih besar, masalah apa yang sebenarnya diselesaikan, dan trade-off apa yang benar-benar Anda bayar saat fitur ini dipakai di firmware produksi. Tujuannya bukan melihat Quickstart sebagai satu API terpisah, tetapi memahami posisinya di dalam bounded scheduling, disiplin queue, visibilitas fault, dan pemilihan profile.
Baca topik ini sebagai kontrak operasional. Mulai dari jalur paling kecil yang benar-benar jalan, pasang dulu di profile lean, lalu baru naik ke routing, diagnostics, atau state transport yang lebih kaya setelah Anda bisa membuktikan hasil timing-nya tetap layak dibanding tambahan flash dan RAM. Pola pikir ini yang menjaga ZeroKernel tetap berguna di board kecil dan tidak berubah jadi abstraksi yang gemuk.
Pola paling aman selalu sama: tentukan batas runtime-nya, jaga hot path tetap pendek, ukur efeknya dengan compare script, lalu baru naikkan kompleksitas. Contoh di bawah bukan pemanis; itu adalah pola minimum yang bisa Anda ambil ke firmware nyata saat Anda butuh integrasi yang rapi, bukan loop manual yang sulit dipertahankan.
Tiga pola yang langsung bisa dipakai
Pakai ini saat Anda ingin source of truth lokal yang bersih dan kontrol update yang eksplisit.
git clone git@github.com:ZeroBitsTech/ZeroKernel.git
cd ZeroKernel
bash scripts/run_desktop_tests.sh
Mulai dari satu task bounded dan clock board yang jelas sebelum menambah queue atau modul network.
ZeroKernel.begin(boardMillis);
ZeroKernel.addTask("Sample", sampleTask, 100, 0, true);
ZeroKernel.tick();
Pasang profile di build flags agar drift footprint terjadi dengan sengaja, bukan tanpa sadar.
[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
build_flags =
-DZEROKERNEL_PROFILE_LEAN_NET
Apa yang perlu Anda cek saat memakainya
- Validasi timing lebih dulu, baru bentuk API. API yang terlihat rapi bukan kemenangan kalau fast miss justru naik.
- Pilih profile paling kecil yang masih cocok, lalu aktifkan modul opsional hanya saat payoff terukurnya benar-benar jelas.
- Jaga callback dan langkah transport tetap bounded supaya watchdog, panic flow, dan batas queue tetap punya arti.
Kesalahan umum yang membuat hasil jadi menyesatkan
- Jangan menyalin pola demo ke firmware produksi tanpa mengukurnya di board dan profile build yang benar-benar akan dipakai.
- Jangan membaca angka sukses tanpa membaca queue depth, timing, dan label workload di sampingnya.
- Jangan menyalakan diagnostics atau kompatibilitas berat di target lean hanya karena default-nya terasa nyaman.
Urutan kerja yang disarankan
Boot runtime, daftar task minimum yang berguna, lalu buktikan baseline timing bersih sebelum menambah lapisan opsional.
Masukkan routing, diagnostics, atau transport satu lapisan demi satu agar biaya dan payoff-nya tetap jelas.
Update docs, chart, atau klaim publik hanya setelah workload yang sama lolos jalur validasi yang sama lebih dari sekali.
1. Install library
- Clone atau download repo ZeroKernel dari github.com/ZeroBitsTech/ZeroKernel.
- Untuk Arduino IDE, letakkan library di folder sketchbook libraries.
- Untuk PlatformIO, link atau vendor library lalu set build profile.
git clone git@github.com:ZeroBitsTech/ZeroKernel.git
cd ZeroKernel
[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps =
symlink://../ZeroKernel
build_flags =
-DZEROKERNEL_PROFILE_LEAN_NET
2. Start runtime
Selalu kirim fungsi clock board. Ini menjaga scheduler tetap deterministik dan membuat runtime tetap portable di banyak board.
#include <ZeroKernel.h>
unsigned long boardMillis() {
return millis();
}
void sampleTask() {
// bounded sensor work
}
void setup() {
ZeroKernel.begin(boardMillis);
ZeroKernel.addTask("Sample", sampleTask, 100, 0, true);
}
void loop() {
ZeroKernel.tick();
}
3. Validasi dulu
- Jalankan desktop test dulu untuk memastikan toolchain lokal bersih.
- Pakai satu compare script di hardware sebelum menambah stack network atau logic sensor sendiri.
- Pastikan semua task bounded dan non-blocking. Pekerjaan berat pindahkan ke queue atau pump modul.
4. Naikkan kompleksitas dengan disiplin
- Mulai dari profile kecil seperti
POWER_SAVEatauLEAN_NET. - Tambah modul hanya kalau payoff-nya memang terukur dan pantas dibayar footprint-nya.
- Pakai benchmark dan compare script sebagai gate regression, bukan demo sekali pakai.
FAQ quickstart
Kenapa quickstart memakai begin(boardMillis), bukan default tersembunyi?
Dengan mengirim clock source secara eksplisit, runtime tetap jelas dan portable saat firmware dipindah antar-board.
Apakah saya bisa langsung menambah banyak task?
Mulai dari satu atau dua task bounded dulu, validasi timing, lalu baru naik.
Bagaimana cara paling aman memvalidasi halaman ini di board nyata?
Mulai dari profile paling lean yang masih relevan, jalankan compare script yang paling sempit untuk topik ini, lalu baru lanjut ke workload yang lebih berat. Jangan lompat langsung ke build penuh kalau timing dasarnya belum jelas.