December 5, 2021

Blogna Kang U-2 Man

STM32, Embedded System, Microcontroller, ARM Cortex-M, RTOS, FreeRTOS

Bermain-main dengan FreeRTOS (Bagian 1): Apa Itu RTOS?

4 min read

بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم

APA ITU OS, GPOS DAN RTOS?

Terminologi RTOS (Real Time Operating System) mungkin kurang begitu dikenal, tetapi OS (Operating System) semua orang yang mempunyai komputer atau smart phone pasti mengenalnya, minimal tahu bahwa komputer atau smartphone membutuhkan OS agar bisa berfungsi.

Ketika mendengar kata OS, mungkin kita akan langsung tertuju ke Windows, Linux, MacOS, Android, dan iOS. Ini adalah beberapa OS yang mungkin paling banyak digunakan di komputer dan smartphone.

Jenis-Jenis OS untuk PC dan Smartphone

Di dalam sebuah PC, OS-lah software yang harus pertama kali di-install sebelum meng-install aplikasi lain. OS akan mengatur semua fungsi PC, seperti menjalankan aplikasi, mengakses hardware (device driver), mengatur memori, baca tulis file dan resource yang lain.

Fungsi OS yang disederhanakan

Di komputer OS dirancang agar lebih responsif terhadap user, sehingga proses yang bekerja di belakang (background process) tidak akan terlalu diprioritaskan. Karena memang kalau di komputer kalau suatu proses agak lambat, efeknya tidak akan berakibat fatal, atau bahkan tidak akan diketahui oleh user. Akibatnya, setiap proses atau task waktu eksekusinya tidak tentu, kadang cepat kadang lambat, atau dengan kata lain, tidak deterministic. OS yang bekerja seperti ini dinamakan dengan GPOS (General Purpose Operating System).

GPOS, tentu saja tidak akan cocok jika digunakan pada peralatan yang membutuhkan respon yang cepat atau real time. Misalnya pengendali safety bag di kendaraan atau pengendali mesin-mesin industri yang jika respon prosesor terlambat sedikit saja bisa berakibat fatal. Maka untuk keperluan ini dikembangkanlah RTOS (Real Time Operating System)

Mengutip Wikipedia A Real Time Operating System is an operating system that guarantees to process events or data by a specific moment in time. Jadi RTOS akan menjamin bahwa setiap proses atau task akan selalu dikerjakan dalam waktu yang sama. Misal task 1 akan selalu dikerjakan setiap 1 milidetik, task 2 setiap 10 milidetik, task 3 setiap 1 detik, task 4 mungkin dikerjakan setiap 10 detik dan seterusnya. Ingat ya, real time itu tidak harus cepat, tetapi lebih ke waktu tanggapan terhadap sebuah kejadian (event), sehingga RTOS bersifat deterministic.

RTOS lebih banyak digunakan untuk prosesor dengan sumber yang rendah (mikrokontroler), seperti STM32, ESP32 atau bahkan bisa digunakan di mikrokontroler 8 bit seperti AVR atau 8051. Walaupun ada juga RTOS yang di-porting ke prosesor sekelas ARM Cortex-A (yang mempunyai kemampuan untuk menjalankan Linux).

MULTI-TASKING

OS bisa dirancang untuk jalan di single task atau multi-task. Single task artinya OS hanya bisa menjalankan 1 task dalam 1 waktu. Mungkin MS-DOS adalah jenis OS seperti ini. Sedangkan multi-task artinya dalam 1 waktu OS bisa menjalan lebih dari 1 proses. Seperti kita bisa mendengarkan ceramah di youtube sambil menggambar PCB secara bersamaan.

Tapi ingat bahwa, prosesor itu hanya bisa mengerjakan satu instruksi dalam satu waktu. Bagaimana dengan prosesor dual core, quad core atau octa core? Ya itu berarti yang dual core bisa mengerjakan 2 instruksi dalam satu waktu, quad core artinya bisa mengerjakan empat instruksi dalam satu waktu dan seterusnya.

Lalu bagaimana bisa melalukan multi-task di prosesor single core? Dengan teknik time-sharing atau time slice. Artinya prosesor akan menjalankan setiap task secara bergantian dengan sangat cepat. Ini akan memberikan ilusi bahwa semua task dikerjakan secara bersamaan. Yup bener, ilusi. Seperti ilusi fungsi milis yang memberikan efek multi-task.

Lalu berapa task maksimal yang bisa dijalankan oleh mikrokontroler dengan RTOS? Jawabannya tergantung berapa memori (RAM dan flash) yang dimiliki oleh mikrokontroler tersebut. Dalam RTOS, setiap task akan mempunyai memori stack masing-masing. Semakin komplek sebuah task, dengan banyaknya variabel yang digunakan, semakin banyak memori stack yang diperlukan. RTOS adalah sebuah aplikasi yang cukup haus memori. Apalagi mikrokontroler mempunyai memori yang terbatas, yang saya tahu RAM internal di mikrokontroler baru sampai 1 MB.

JENIS-JENIS RTOS

Banyak sekali RTOS baik yang berbayar maupun yang free (open source), berikut listnya, silakan saja dibuka linknya untuk keterangan lebih lanjut

  1. FreeRTOS
  2. µC/OS
  3. Azure RTOS
  4. Mbed OS
  5. ChibiOS
  6. embOS
  7. RTX RTOS

ARM sendiri mengeluarkan apa yang dinamakan dengan CMSIS-RTOS yang merupakan sebuah interface untuk RTOS. RTOSnya sendiri bisa menggunakan RTOS apa saya, seperti FreeRTOS, Mbed OS atau yang lainnya. CMSIS-RTOS akan membuat fungsi-fungsi standar untuk menggunakan RTOS, lalu menterjemahkan fungsi tersebut ke fungsi RTOS yang dipakai.

Struktur CMSIS-RTOS

Namun karena CMSIS-RTOS berusaha untuk men-generalisir semua RTOS, maka fungsi-fungsi yang hanya dimiliki oleh RTOS tertentu, mungkin tidak bisa dipanggil melalui fungsi CMSIS-RTOS. Artinya, CMSIS-RTOS mungkin tidak bisa menggunakan sebuah kernel RTOS secara maksimal. Walaupun demikian CMSIS-RTOS sudah cukup lengkap untuk membuat aplikasi RTOS.

CMSIS-RTOS sendiri terdiri dari 2 versi:

  • CMSIS-RTOSv1, digunakan untuk ARM Cortex-M0/M0+/M3/M4/M7
  • CMSIS-RTOSv2, digunakan untuk semua ARM Cortex-M dan ARM Cortex-A5/A7/A9

Saya sendiri saat ini menggunakan FreeRTOS dan CMSIS-RTOSv1 melalui STM32CubeMX untuk proyek-proyek yang saya buat. STM32CubeMX sendiri sudah mendukung CMSIS-RTOSv1 dan v2.

Insya Allah di artikel berikutnya akan dijelaskan bagaimana membuat aplikasi menggunakan FreeRTOS.

Semoga bermanfaat.

Visits: 5 Visits: 98043

2 thoughts on “Bermain-main dengan FreeRTOS (Bagian 1): Apa Itu RTOS?

Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright © All rights reserved. | Newsphere by AF themes.