Tutorial FreeRTOS : #1 RTOS ber-‘open source’ Untuk Perangkat Embedded dan IoT
Pada beberapa tulisan yang lalu, embeddednesia telah mengulas mengenai penggunaan FreeRTOS pada SoC ESP32, namun begitu penggunaan FreeRTOS tidak terbatas pada chip ESP32, tapi di banyak platform Mikrokontroler yang lain, seperti mikrokontroler STM32, ESP8266, Tiva C Series, NXP dan masih banyak lagi. Total ada 35 jenis arsitektur mikrokontroler yang didukung, menjadikannya sebagai standar defacto RTOS untuk mikrokontroler
Ini adalah artikel suplemen pengantar untuk membantu pembaca memahami FreeRTOS, yang nanti akan diimplementasikan pada banyak tutorial mikrokontroler yang ada di embeddednesia. Dalam keseluruhan artikel ini, pembaca diasumsikan telah memahami prinsip dasar pemrograman menggunakan C/C++
- FreeRTOS.
FreeRTOS (dilafalkan sebagai “free-ar-toss”) adalah Sistem Operasi Waktu Nyata (Real Time Operating System atau disingkat RTOS) untuk sistem benam. FreeRTOS mendukung banyak arsitektur mikrokontroler, toolchain compiler dan dirancang, “kecil, sederhana dan mudah untuk dipergunakan”
Kernel FreeRTOS awalnya dikembangkan oleh Richard Barry pada 2002, dan kemudian dikembangkan hingga kini dalam status “active development” oleh perusahaan miliknya yang bernama Real Time Engineers Ltd.
Sebagaimana “sistem operasi” pada umumnya, pekerjaan utama dari FreeRTOS adalah menjalankan tugas (task). Sebagian besar code FreeRTOS berisi tentang bagaimana mengelola prioritas, penjadwalan dan menjalankan task yang dibuat oleh programmer.
- Arsitektur FreeRTOS
FreeRTOS merupakan aplikasi yang relatif berukuran kecil. Inti dari FreeRTOS hanya terdiri 3 file kode sumber C, yang didapat dibagi menjadi tiga bagian, yaitu task, communication dan antarmuka perangkat keras.
- Task: Hampir setengah dari inti code FreeRTOS memusatkan perhatiannya pada task. Sebuah task didefinisikan oleh programmer dalam sebuah fungsi C dengan prioritas yang telah ditentukan. Pengelolaan task yang berupa pembuatan task, penjadwalan, dan pemeliharaan ini dilaksanakan oleh code di dalam
task.c
dantask.h
- Komunikasi: Pada bagian ini, FreeRTOS mengelola komunikasi antar task, sekitar 40% program inti dari dari FreeRTOS menangani masalah ini. Pekerjaan tersebut diimplementasikan pada
queue.c
danqueue.h
yang berfungsi untuk menangani komunikasi task, dan interupsi menggunakan antrean (queue) untuk mengirim data antar satu task dengan yang lain sekaligus memberikan sinyal penggunaan sumber daya kritikal dengan menggunakan semaphore dan mutex - Hardware Interface : Sekitar 9000 baris program FreeRTOS bersifat hardware independent. code yang sama menjalankan FreeRTOS pada banyak platform mikrokontroler, mulai dari 8051 hingga mikrokontroler dengan arsitektur ARM yang terbaru. Namun 6% inti programnya bergantung pada masing – masing hardware yang digunakan, yang akan dibahas lebih lanjut di dalam sesi yang lain
Lapisan hardware-independent FreeRTOS berada diatas dari lapisan hardware-dependent. Lapisan hardware dependent sudah dirancang untuk berkomunikasi dengan masing – masing arsitektur mikrokontroler yang dipilih. Diagram berikut mengilustrasikan layer yang berada pada FreeRTOS
FreeRTOS sudah dibungkus dengan code untuk layer hardware-dependent dan juga layer hardware-independent. Programmer tinggal menjalankan saja. FreeRTOS mendukung beragam compiler (mulai CodeWarrior, GCC, IAR). dan beragam arsitektur prosesor ( mulai dari ARM7, ARM Cortex-M3, 8051, ESP8266, hingga ESP32). Pembaca dapat merujuk pada situs resmi FreeRTOS di tautan ini untuk melihat daftar lengkapnya.
- Fitur FreeRTOS
FreeRTOS memiliki fitur-fitur standar sebagai berikut
- Operasi Pre-emptive atau co-operative
- Prioritas penugasan task yang sangat fleksibel
- Antrian (Queue)
- Semaphore Biner
- Mutexes
- Mutex Rekursif
- Pewaktu Software
- Event Groups
- Fungsi tick hook
- Fungsi idle hook
- Pengecekan Stack overflow
- Trace Recording
- Task run-time statistic gathering
- Pilihan dukungan dan lisensi komersial
- Model full interupt nesting (untuk beberapa arsitektur mikrokontroler)
- Kemampuan tick-less untuk aplikasi di daya yang sangat rendah
- Stack interrupt yang dikelola oleh software ketika diperlukan
- Lisensi
FreeRTOS menggunakan lisensi MIT Open Source, yang memungkinkan
- Penggunaan FreeRTOS di aplikasi komersial
- FreeRTOS tersedia untuk semua orang
- Pengguna FreeRTOS mempunyai kepemilikan hak cipta atas programnya sendiri
Pembaca dapat mengunjungi tautan berikut, jika ingin mendapatkan informasi terbaru tentang lisensi FreeRTOS
FreeRTOS juga memiliki RTOS turunan yang beberapa diantaranya adalah sebagai berikut
- OpenRTOS adalah versi lisensi komersial dari FreeRTOS yang di-maintain oleh Real Time Engineers Ltd.
- SafeRTOS memiliki lisensi yang sama dengan FreeRTOS namun dikembangkan menurut praktik, prosedur, dan proses yang diperlukan untuk mendapatkan klaim kepatuhan terhadap standar internasional yang terkait
Anda harus log masuk untuk menerbitkan komentar.