Dokumen tersebut membahas tentang implementasi Real-Time Operating System (RTOS) bernama Femto OS pada mikrokontroller seri ATMega32. Femto OS dirancang khusus untuk mikrokontroller dengan memori yang minimal dan memiliki fitur-fitur seperti konteks switching, penjadwalan, semaphore, antrian pesan, dan register acara. Implementasi Femto OS pada Eclipse dilakukan dengan mengunduh toolchain, mengonfigurasi, dan memprogram mikrokontroller
Implementasi RTOS (Femto OS) pada Mikrokontroller Seri ATMega32
1. EL 6011 – Sistem Embedded dan Waktu Nyata
Implementasi RTOS (Femto OS) pada
Mikrokontroller Seri ATMega32
Oleh:
Aris Cahyadi Risdianto (23210016)
Vani Virdyawan (23110035)
2. 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
3. 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
4. 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
5. 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
6. 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)
7. 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
11. Context Switch
Memungkinkan terjadinya proses pergantian task
Untuk melakukan context switch pada Femtoo OS
terdapat
TCB
TDB
ttaskSave
portSaveContext
portRestorecontext
12. Dispatcher
Bagian dari scheduler yang digunakan untuk mengatur
alliran eksekusi.
Pada Femtoo OS komponen-komponen dari dispatcher
adalah
PortEnterIsr
PortBeginIsr
PortReturnIsr
PortYieldIsr
13. 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
14. 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
15. 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
16. 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.
17. 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
18. 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
19. 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&subfa
mily_id=760
Lakukan installasi dengan default options
20. 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.
21. 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.