Beralih ke RTOS: pengalaman di RP2040
Martijn Braam
- Tulisan dari Martijn Braam, yang mengerjakan berbagai hal terkait komputer
- Sedang menjalankan beberapa proyek mikrokontroler
- Terutama menggunakan board Raspberry Pi Pico, dengan pengalaman pengembangan yang baik
Gambaran proyek
- Membuat kontroler perangkat keras untuk mengendalikan peralatan video
- Mengendalikan kamera PTZ dan perangkat switching video
- Karena performa kontroler yang ada kurang baik, perlu membuat panel baru
Desain perangkat keras
- Mencakup 9 tombol RGB, joystick analog, dan display
- Menggunakan modul komunikasi RS-485 dan Ethernet
- Setelah beberapa kali revisi perangkat keras, implementasi fungsi selesai
Perangkat lunak awal
- Dimulai sebagai proyek cmake yang menggunakan pico-sdk
- Core kedua dialokasikan untuk modul Wiznet, sedangkan core pertama menangani I/O antarmuka pengguna
- Kompleksitas meningkat karena harus menangani banyak tugas secara bersamaan
FreeRTOS
- Menggunakan FreeRTOS untuk memproses banyak tugas secara paralel
- Membuat berbagai task: tombol, LED, jaringan, DHCP, mDNS, ATEM, VISCA
- Masalah di FreeRTOS: sistem berhenti saat menggunakan
printf, dan kurangnya abstraksi perangkat keras
Apache NuttX
- Menyediakan lingkungan yang mirip sistem Unix
- Setelah konfigurasi awal, shell sungguhan bisa langsung digunakan
- Konfigurasi perangkat keras dapat dilakukan melalui sistem menuconfig/Kconfig
- Karena masalah pengaturan bus i2c, fungsi dasar tidak berjalan
- Jalur file system dan shell sebenarnya tidak diperlukan
Zephyr
- Menyediakan utilitas Python untuk konfigurasi proyek
- Perlu mengunduh repositori git sebesar 5GB
- Memerlukan instalasi Zephyr SDK, meski toolchain ARM yang sudah ada juga bisa digunakan
- Dukungan untuk Raspberry Pi Pico kurang memadai, sehingga mencoba menggunakan board lain
- Setelah memperbaiki error dan warning build, tetap tidak berjalan
Kesimpulan
- Berhasil membangun sebagian aplikasi dengan FreeRTOS
- Perlu implementasi pengganti untuk
printf
- Akan terus mencoba mewujudkan fungsi yang diinginkan dengan tetap menggunakan FreeRTOS
Ringkasan GN⁺
- Tulisan ini membahas proses beralih ke RTOS dalam proyek mikrokontroler
- Membandingkan kelebihan dan kekurangan FreeRTOS, Apache NuttX, dan Zephyr
- Menyimpulkan bahwa FreeRTOS adalah pilihan yang paling cocok
- Membantu memahami berbagai faktor yang perlu dipertimbangkan saat memilih RTOS
- Proyek dengan fungsi serupa antara lain menggunakan FreeRTOS dan Zephyr
1 komentar
Komentar Hacker News
Penulis ini tampaknya mengharapkan RTOS seperti di lingkungan Arduino
Ringkasan singkat RTOS:
Memasang toolchain ke seluruh sistem dengan cara UNIX tradisional itu menyakitkan
PlatformIO bergerak ke arah yang benar
Sedang memindahkan proyek RP2040 ke Rust dan Embassy
Zephyr mendukung Pi Pico 100%
ThreadX adalah open source
Ingin mencoba memakai Hubris di proyek nyata
Menganggap microPython adalah jalur yang lebih mudah
Membuat timer green thread sederhana
FreeRTOS pada dasarnya adalah standar industri
Rust RTIC mendukung rp2040 dan sangat ringan