Implementasi RTOS (Femto OS) pada Mikrokontroller Seri ATMega32
Oleh:Aris Cahyadi Risdianto (23210016)
Vani Virdyawan (23110035)
EL 6011 – Sistem Embedded dan Waktu Nyata
Pendahuluan
Definisi RTOS
“Real-Time Operating System (RTOS) adalah sistem operasi yang multitasking
yang ditujukan untuk aplikasi yang real-time”. Wikipedia, 2011.
“Program yang menjadwalkan semua eksekusi/pekerjaan yang sangat teratur,
mengatur semua resource dari sistem, dan menyediakan dasar yang konsisten
untuk mengembangkan kode aplikasi diatasnya”. Real Time Concept for
Embedded Systems, 2003.
Dari aplikasi simple (jam digital) sampai aplikasi yang kompleks (perangkat
navigasi penerbangan) => Scalable
Komponen RTOS
Scheduler
Indikasi kapan eksekusi suatu pekerjaan akan dilakukan
Round-robin atau preempetive scheduling
Objects
Dibangun oleh kernel untuk memudahkan pengembangan
Terdiri dari tasks, semaphores, dan message queues
Services
Operasi yang diberikan kepada semua objek
Diantaranya timing, interrupt handling, dan resource management
Karakteristik RTOS
Reliability, kemampuan bekerja tanpa intervensi manusia.
Predictability, perilaku bisa diprediksi untuk rentang waktu yang telah ditentukan
Performance, mampu menyelesaikan pekerjaan secepat mungkin
Compactness, ukuran dan penggunaan resource terbatas, pengaruh dari desain dan biaya
Scalability, modular untuk mendukung berbagai macam tingkat kekompleksan aplikasi
Pengenalan Femto OS
Dimulai sejak 2007, terinspirasi oleh FreeRTOS
Didesain untuk mikro kontroler dengan Memory (Flash atau
RAM) minimal seperti Attiny
Menggunakan bahasa C, dengan port file yang terpisah
Kebutuhan Flash Memory 1K – 4K Bytes
Kebutuhan RAM (OS 10 – 20 bytes, Tasks 6 bytes)
Aplikasi terkecil “bare” 258 bytes Flash dan 10 bytes RAM
Keterbatasan jumlah tasks > 16 atau sinkronisasi primitif
Desain Femto OS
Round Robin Scheduling (every task for each priority)
Preemptive and cooperative (task by task basis) Shared Stacks for tasks ( saving ram) Register Compression (only save taskswitch register) Separate OS/ISR Stack Space Power save on Idle Honest Time Slicing (every task same execution time) OS interruptible (almost large OS parts) Resource Tracking (kernel released if task terminated)
Fitur Femto OS Nested Critical Sections (tick and general interrupt)
Rendez Vous, Mutexes, Queues (tasks communication) Priority Lifting Timed Power down (task delay long, OS sleep) Precision Delays between wakeup tasks Watchdog per Task to revive crashed tasks High Resolution Load Monitor to check how many sub ticks Integrated file system for onboard eeprom High speed events to revive tasks for special actions etc
Arsitektur Femto OS
Implementasi Femto OS
Komponen RTOS pada Femtoo
Context Switch
Dispatcher
Scheduling algorithm
Semaphores
Message queue
Pipe
Event register
Context Switch
Memungkinkan terjadinya proses pergantian task
Untuk melakukan context switch pada Femtoo OS terdapat
TCB TDB ttaskSave portSaveContext portRestorecontext
Dispatcher
Bagian dari scheduler yang digunakan untuk mengatur alliran eksekusi.
Pada Femtoo OS komponen-komponen dari dispatcher adalah
PortEnterIsr PortBeginIsr PortReturnIsr PortYieldIsr
Scheduling Algorithm
Pada Femtoo OS task dengan prioritas yang sama akan diselesaikan dengan round robi, sedangkan untuk task dengan prioritas yang berbeda akan dikerjakan sesuai dengan prioritasnya.
Fungsi yang digunakan pada Femtoo OS adalah privSelecttask privEnterTask
Semaphores
Semaphore merupakan bagian dari kernel objek yang digunakan untuk sinkronisasi dari resource.
Pada Femtoo OS digunakan semaphore jenis Mutex
Fungsi yang terdapat pada Femtoo OS adalah taskMutexRequestonname taskMutexReleaseonname TaskSyncrelease TaskDisableSwitchtask TaskEnableswitchtask taskEnterSwitchcritical taskExitSwitchcritical
Message Queue
Merupakan bagian yang mengatur pengiriman dan penerimaan pesan
Pada Femtoo OS bagian-bagian yang berfungsi sebagai message queue adalah
taskQueueReadRequestonName taskQueuewriteRequestonName taskqueueReleasOnName taskQueueRequestonName
Pipe
Pipe secara sederhana berfungsi seperti message queue, namun memiliki perbedaan yang mendasar, yaitu tidak dapat melakukan tugas dengan prioritas
Pada Femtoo OS fungsi pipe yaitu taskFileWritePipe taskFileReadPipe.
Event Register
Pada kernel terdapat suatu spesial register yang merupakan bagian dari TCB dan digunakan untuk mengetahui adanya suatu events.
Pada Femtoo OS fungsi ini disebutkan dengan taskWaitforallEvents taskWaitforEventSetOnName
Implementasi Femtoo pada Eclipse
Dilakukan untuk mengetahui apakah Femtoo OS dapat berjalan dengan baik atau tidak.
Dilakukan dengan mengunggah program pada microcontroller Atmega32 dengan source program dari demo_source.
Untuk dapat melakukan pemrograman pada Eclipse harus dilakukan
Installasi AVR toolchain Konfigurasi AVR toolchain pada Eclipse Pemrograman pada microcontroller
Installasi AVR Toolchain
Unduh AVR Toolchain Installer dengan mengakses web berikut ini www.atmel.com/dyn/products/tools_card.asp?tool_id=2725&category_id=163&family_id=607&subfamily_id=760
Lakukan installasi dengan default options
Konfigurasi AVR Toolchain
untuk melakukan konfigurasi dapat dilakukan secara online maupun dengan mengunduh dahulu program avreclipse-p2-repository-2.3.4.20100807PRD.
Karena terdapat masalah pada jaringan maka dilakukan konfigurasi dengan terlebih dahulu mengunduh program avreclipse-p2-repository-2.3.4.20100807PRD.
Pemrograman pada Microcontroller
Buat project baru dengan memilih project C.Copy folder femtoos_devices, femtoos_source,
femtoos_headers yang terdapat pada FemtoOs ke project tersebut.
Include folder-folder tersebut pada AVR Assembler, AVR Compiler, AVR C linker, dengan membuka properties pada project tersebut dan pilih settings pada C/C++ Build. (Untuk AVR C linker, hanya masukkan pada libraries path (-L)).
Exclude Femtoo_devices.Setelah itu build project dan upload project tersebut
ke mikrokontroller.Pastikan hardware yang digunakan sesuai.
THANK YOU
Top Related