1 poin oleh GN⁺ 2024-07-07 | 1 komentar | Bagikan ke WhatsApp

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

 
GN⁺ 2024-07-07
Komentar Hacker News
  • Penulis ini tampaknya mengharapkan RTOS seperti di lingkungan Arduino

    • Banyak Arduino menggunakan mbed atau FreeRTOS
    • Zephyr mudah digunakan dan juga mendukung Pi Pico
  • Ringkasan singkat RTOS:

    • FreeRTOS: didukung di sebagian besar SoC/perangkat, tetapi driver berbeda untuk tiap SoC/perangkat
    • Zephyr: mendukung abstraksi hardware yang nyata dan mendukung sebagian besar SoC
    • NuttX: dukungannya kurang baik, tetapi kalau berjalan, sangat keren
  • Memasang toolchain ke seluruh sistem dengan cara UNIX tradisional itu menyakitkan

    • Menggunakan Python sebagai tool menimbulkan masalah versi
    • Tool seharusnya berupa biner yang ditautkan secara statis
  • PlatformIO bergerak ke arah yang benar

    • Harus mengelola toolchain, SDK, library, dan konfigurasi proyek
    • Build harus bisa direproduksi di mana saja
  • Sedang memindahkan proyek RP2040 ke Rust dan Embassy

    • Rust sulit dibiasakan, tetapi memuaskan
  • Zephyr mendukung Pi Pico 100%

    • Jadi bertanya-tanya apakah dokumentasinya tidak diperiksa
  • ThreadX adalah open source

  • Ingin mencoba memakai Hubris di proyek nyata

    • Lebih banyak menderita dengan C, tetapi mirip Erlang/Elixir
  • Menganggap microPython adalah jalur yang lebih mudah

    • Cooperative multitasking berbasis async/await bekerja dengan baik
  • Membuat timer green thread sederhana

    • Tidak mendukung manajemen proses yang sesungguhnya, tetapi bisa menginterogasi berbagai sensor dan memproses sinyal
  • FreeRTOS pada dasarnya adalah standar industri

  • Rust RTIC mendukung rp2040 dan sangat ringan