PENERAPAN RTOS AVRILOS PADA PENJADWALAN
TUGAS UTS
SISTEM EMBEDDED
PENERAPAN RTOS AVRILOS PADA PENJADWALAN
PENYALAAN LED
Oleh :
1. AgusApriantoro
2. Dodik Romanto
1110121003
1110121008
DosenPengampu :
Akhmad Hendriawan, S.T., M.T.
PROGRAM STUDI DIPLOMA 4
TEKNIK ELEKTRONIKA
DEPARTEMEN TEKNIK ELEKTRO
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
SURABAYA
2015
BAB I
PENDAHULUAN
A. TUJUAN
Dengan melakukan pengerjaan project berupa “PENERAPAN RTOS AVRILOS
PADA PENJADWALAN PENYALAAN LED” menggunakan AVRILOS, mahasiswa
diharapkan mampu:
1. Memahami prinsip kerja secara mendasar dari sebuah system dengan RTOS
2. Menjalankan dan memahami System berbasis RTOS yang telah dikembangkan
oleh pihak lain pada AVR
3. Mengerti struktur dan jenis penjadwalan serta fungsi-fungsi pada RTOS yg dipilih
4. Mengaplikasikan pada berupa penjadwalan penyalaan LED.
B. LANDASAN TEORI
Dalam proses pengerjaan project ini, berikut adalah beberapa teori penunjang
yang penulis gunakan :
1. RTOS
RTOS atau kepanjangan dari Real-Time Operating System merupakan
sebuah sistem operasi real-time yang dimaksudkan untuk melayani data real-time
proses aplikasi, biasanya tanpa penundaan buffering. Persyaratan waktu
pemrosesan (termasuk keterlambatan OS) diukur dalam sepersepuluh detik atau
lebih pendek.
Karakteristik utama dari sebuah RTOS adalah tingkat konsistensi mengenai
jumlah waktu yang dibutuhkan untuk menerima dan menyelesaikan tugas sebuah
aplikasi; variabilitas adalah jitter. Sebuah sistem operasi real-time keras memiliki
jitter kurang dari sistem operasi lembut real-time. Tujuan utama desain tidak
throughput yang tinggi, melainkan jaminan dari kategori kinerja lembut atau keras.
RTOS yang biasanya atau umumnya dapat memenuhi tenggang waktu adalah
lembut real-time OS, tetapi jika dapat memenuhi tenggat waktu deterministik itu
adalah real-time OS keras.
RTOS memiliki algoritma yang canggih untuk penjadwalan. Fleksibilitas
scheduler memungkinkan lebih luas, komputer-sistem orkestrasi prioritas proses,
tapi real-time OS lebih sering didedikasikan untuk satu set sempit aplikasi. Faktor
utama dalam real-time OS adalah latency interrupt minimal dan minimal
switching thread latency; real-time OS bernilai lebih untuk seberapa cepat atau
seberapa diduga dapat merespon daripada jumlah pekerjaan itu dapat melakukan
dalam jangka waktu tertentu.
Algoritma yang umum digunakan pada RTOS adalah:
Cooperative scheduling
Preemptive scheduling
Rate-monotonic scheduling
Round-robin scheduling
1
Fixed priority pre-emptive scheduling, an implementation of
preemptive time slicing
Fixed-Priority Scheduling with Deferred Preemption
Fixed-Priority Non-preemptive Scheduling
Critical section preemptive scheduling
Static time scheduling
Earliest Deadline First approach
Stochastic digraphs with multi-threaded graph traversal
2. AVRILOS
Sistem Embedded sederhana Operating System Framework yang
memungkinkan pesatnya perkembangan membangun aplikasi untuk keluarga
AVR tetapi dapat porting ke arsitektur lain cukup mudah. Sistem multitasking
Round-Robin Co-operative.
Mendukung:
a. UART, SysTick Timer, ADC, SPI, EEPROM, PWM.
b. Juga mendukung: Xilinx FPGA konfigurasi, antarmuka FPGA SSI, smart
card reader dll
c. Diuji secara parsial (modul yang berbeda dalam setiap kasus) pada
ATMega163 / 16/32/323/8.
d. Selain itu dapat digunakan mengkonversi bitstream FPGA ke C table
disediakan.
AVRILOS menggunakan RTOS yang menggunakan sistem penjadwalan
Round-Robin yang awalnya dibuat untuk chip microcontroller keluarga AVR.
Namun sekarang sebagai open source di bawah lisensi CDDL. Secara sederhana
algoritma berasal dari prinsip round-robin diketahui dari bidang lain, di mana
setiap orang mengambil bagian yang sama dari sesuatu pada gilirannya.
2
a. Struktur direktori
Ada dua bagian utama dari direktori, yaitu Hardware (HW) dan
Software(SW)
[1] Direktori hardware berisi tentang hardware yang direkomendasikan
oleh pembuat, baik skematik dan PCB file, kemudian juga dengan
penerapan AVRILOS pada FPGA
[2] Direktori software terdiri dari direktori penyusun terkait chip yang
digunakan. Beberapa direktori pendukung lainnya yang
mempunyai tujian khusus yaitu
i. build.dep
ii. build.err
iii. build.obj
iv. build.lst
v.
build.rom
Direktori root pada makefile.
Direktori Config (direktori pendukung makefile, konfigurasi
harware, dan perihtah compiler), dan direktori Source code yang
berisi
i. Applic, merupakan file utama yang berisi Kernel.c yang
berisi progam penjadwalan.
ii. peripheint, Periperial internal dari microcontroller, seperti
Timer, Uart.
iii. perpheext, Periperial eksternal dari luar mikrokontroller
berupa smartcard, LPC flash, dan peralatan SPI.
iv. utils, berisi script progam untuk konversi dari contoh
hex2bin, bin2hex, delay dan yang lain.
3
v.
vi.
debug, digunakan untuk memonitor proses debug, sehingga
debugging menjadi lebih mudah, fitur ini dapat dimatikan
agar penggunaan memori menjadi hemat.
include, berisi global definition dan pengaturan device yang
akan terhubung dengan OS ini.
Deskripsi kernel
Kernel.c kode inisialisasi dan loop utama. Selama maka startup Kernel
mengeksekusi berbagai inisialisasi setiap modul / periperial . Progam
inisialisasi di bagi menjadi bagian bagian tertentu sehingga progam
menjadi modular dan mudah untuk di modifikasi.
Scheduler menggunakan penjadwalan round-robin. Setiap cek tugas harus
dipicu dari beberapa flag seperti timer SysTick (Dalam periphint /
Timer0.c) :
Cek untuk melihat bahwa timer interrupt telah ditandai b_SysTick (Bit)
di v_SysStat(Variable), jika tidak ada hanya keluar. Jika ya menjalankan
semua fungsi yang ada. Kasus lain akan menguji apakah ada data baru
dalam port serial (sepertiapplic / serial / SerApp.c) atau tidak.
Jadi untuk membuat tugas baru (aplikasi, perangkat dll) taks baru tidak
harus memblokir sistem atau menunggu terlalu lama. Khususnya
pelaksanaan penundaan semua fungsi tidak boleh melebihi waktu SysTick.
Jika tidak ada alternatif:, antara meningkatkan interval Systick atau
mengurangi pemblokiran waktu.
Deskipsi modul
Ada beberapa modul, yaitu Systick, UART, Debugger dan module yang
lain, namun yang akan dibahas hanya modul Systick.
SysTick modul melakukan semua fungsi waktu utama. Contoh
mengedipkan LED, memicu ADC untuk memulai konversi baru, memicu
akhir LCM keterlambatan, memicu keyboard fungsi pemindaian dan juga
memiliki timer software. Untuk mengaktifkan systick, hanya menset (bit)
yang berada di v_SysStat. Untuk mengubah interval waktu memodifikasi
konstanta / ifc_time.h
4
Sesuai definisi aktivasi bit dinyatakan dalam meliputi / settings.h:
Waktu tick dapat dirubah sesuai kebutuhan, sedangkan jika menginkan
Timer lain dapat menambahkan hingga 4 timrt yaitu
Satuan dalam mS, contoh 10mS
Timer diatas mempuyai waktu 10mS , untuk mengecek apakah sudah
10mS menggunakan intruksi
dan untuk menghentikan Timer menggunakan
5
BAB II
PEMBAHASAN
A. PERALATAN
Pada prosses pengerjaan project ini, penulis menggunkan beberapa alat dan
bahan sebagai berikut:
1. Minimum System Atmel ATMega 16
2. I/O LED dan Tombol
3. Power Supply
4. Downloader USB-sASP
USB
5. PC dengan software text editor (Sublime, Notepad++, Notepad)
6. Command Promp
B. RANGKAIAN MIKROKONTROLER
Dari prosses kajian pustaka yang telah dilakukan, maka dilakukukan pemilihan
dan spesifikasi/syarat wajib
Chip yang digunakan dengan dasar minimum requirementdan
penugasan.. Berikut adalah gambar skematik dan Hardware yang digunakan untuk
observasi ini:
Gambar 2.1 Skematik Hardware ATMega16
6
Gambar 2.2 PCB Hardware ATMega16
Gambar 2.3 Extend Board I/O 3 LED
Gambar 2.4 Hardware ATMEGA 16 (tampak atas)
Gambar 2.5 Hardware ATMEGA 16 (tampak samping)
7
C. PEMROGAMAN
Persoalan yaitu
Menyalakan LED 1 setiap 1 detik, mati 1 detik
Menyalakan LED 2 setiap 2 detik, mati 2 detik
Jika Tombol ditekan LED 3 menyala 4 detik
1. Melakukan pemilihan chip pada direktori
\config\hw.in
#put the name of the target mcu here (at90s8515, at90s8535, attiny22, atmega603 etc.)
#
MCU = at90s8515
#
MCU = atmega164p
#
MCU = atmega163
#
MCU = atmega323
#
MCU = atmega16
#
MCU = atmega8
MCU = atmega32
2. Melakukan harware untuk jalur pemrogaman menggunakan USB ASP
\config\env.in
###### define some variables based on the AVR base path in $(AVR) #######
AVRCC
= avr-gcc
AVRAS
= avr-gcc -x assembler-with-cpp
RM
= rm -f
RN
= mv
AVRBIN
= avr-objcopy
AVRSIZE
= avr-size
INCDIR
=.
LIBDIR
= $(AVR)/avr/lib
SHELL = $(AVR)/bin/sh.exe
AVRPROG = avreal32.exe
AVRPROGSP = avrdude.exe
PROGPORT = COM3
PROGDEV = usbasp
###### output format can be srec, ihex (avrobj is always created) #######
FORMAT = ihex
####################### default compiler flags ##########################
CPFLAGS
= -g -O3 -Wall -Wstrict-prototypes -Wa,-ahlms=$(
SISTEM EMBEDDED
PENERAPAN RTOS AVRILOS PADA PENJADWALAN
PENYALAAN LED
Oleh :
1. AgusApriantoro
2. Dodik Romanto
1110121003
1110121008
DosenPengampu :
Akhmad Hendriawan, S.T., M.T.
PROGRAM STUDI DIPLOMA 4
TEKNIK ELEKTRONIKA
DEPARTEMEN TEKNIK ELEKTRO
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
SURABAYA
2015
BAB I
PENDAHULUAN
A. TUJUAN
Dengan melakukan pengerjaan project berupa “PENERAPAN RTOS AVRILOS
PADA PENJADWALAN PENYALAAN LED” menggunakan AVRILOS, mahasiswa
diharapkan mampu:
1. Memahami prinsip kerja secara mendasar dari sebuah system dengan RTOS
2. Menjalankan dan memahami System berbasis RTOS yang telah dikembangkan
oleh pihak lain pada AVR
3. Mengerti struktur dan jenis penjadwalan serta fungsi-fungsi pada RTOS yg dipilih
4. Mengaplikasikan pada berupa penjadwalan penyalaan LED.
B. LANDASAN TEORI
Dalam proses pengerjaan project ini, berikut adalah beberapa teori penunjang
yang penulis gunakan :
1. RTOS
RTOS atau kepanjangan dari Real-Time Operating System merupakan
sebuah sistem operasi real-time yang dimaksudkan untuk melayani data real-time
proses aplikasi, biasanya tanpa penundaan buffering. Persyaratan waktu
pemrosesan (termasuk keterlambatan OS) diukur dalam sepersepuluh detik atau
lebih pendek.
Karakteristik utama dari sebuah RTOS adalah tingkat konsistensi mengenai
jumlah waktu yang dibutuhkan untuk menerima dan menyelesaikan tugas sebuah
aplikasi; variabilitas adalah jitter. Sebuah sistem operasi real-time keras memiliki
jitter kurang dari sistem operasi lembut real-time. Tujuan utama desain tidak
throughput yang tinggi, melainkan jaminan dari kategori kinerja lembut atau keras.
RTOS yang biasanya atau umumnya dapat memenuhi tenggang waktu adalah
lembut real-time OS, tetapi jika dapat memenuhi tenggat waktu deterministik itu
adalah real-time OS keras.
RTOS memiliki algoritma yang canggih untuk penjadwalan. Fleksibilitas
scheduler memungkinkan lebih luas, komputer-sistem orkestrasi prioritas proses,
tapi real-time OS lebih sering didedikasikan untuk satu set sempit aplikasi. Faktor
utama dalam real-time OS adalah latency interrupt minimal dan minimal
switching thread latency; real-time OS bernilai lebih untuk seberapa cepat atau
seberapa diduga dapat merespon daripada jumlah pekerjaan itu dapat melakukan
dalam jangka waktu tertentu.
Algoritma yang umum digunakan pada RTOS adalah:
Cooperative scheduling
Preemptive scheduling
Rate-monotonic scheduling
Round-robin scheduling
1
Fixed priority pre-emptive scheduling, an implementation of
preemptive time slicing
Fixed-Priority Scheduling with Deferred Preemption
Fixed-Priority Non-preemptive Scheduling
Critical section preemptive scheduling
Static time scheduling
Earliest Deadline First approach
Stochastic digraphs with multi-threaded graph traversal
2. AVRILOS
Sistem Embedded sederhana Operating System Framework yang
memungkinkan pesatnya perkembangan membangun aplikasi untuk keluarga
AVR tetapi dapat porting ke arsitektur lain cukup mudah. Sistem multitasking
Round-Robin Co-operative.
Mendukung:
a. UART, SysTick Timer, ADC, SPI, EEPROM, PWM.
b. Juga mendukung: Xilinx FPGA konfigurasi, antarmuka FPGA SSI, smart
card reader dll
c. Diuji secara parsial (modul yang berbeda dalam setiap kasus) pada
ATMega163 / 16/32/323/8.
d. Selain itu dapat digunakan mengkonversi bitstream FPGA ke C table
disediakan.
AVRILOS menggunakan RTOS yang menggunakan sistem penjadwalan
Round-Robin yang awalnya dibuat untuk chip microcontroller keluarga AVR.
Namun sekarang sebagai open source di bawah lisensi CDDL. Secara sederhana
algoritma berasal dari prinsip round-robin diketahui dari bidang lain, di mana
setiap orang mengambil bagian yang sama dari sesuatu pada gilirannya.
2
a. Struktur direktori
Ada dua bagian utama dari direktori, yaitu Hardware (HW) dan
Software(SW)
[1] Direktori hardware berisi tentang hardware yang direkomendasikan
oleh pembuat, baik skematik dan PCB file, kemudian juga dengan
penerapan AVRILOS pada FPGA
[2] Direktori software terdiri dari direktori penyusun terkait chip yang
digunakan. Beberapa direktori pendukung lainnya yang
mempunyai tujian khusus yaitu
i. build.dep
ii. build.err
iii. build.obj
iv. build.lst
v.
build.rom
Direktori root pada makefile.
Direktori Config (direktori pendukung makefile, konfigurasi
harware, dan perihtah compiler), dan direktori Source code yang
berisi
i. Applic, merupakan file utama yang berisi Kernel.c yang
berisi progam penjadwalan.
ii. peripheint, Periperial internal dari microcontroller, seperti
Timer, Uart.
iii. perpheext, Periperial eksternal dari luar mikrokontroller
berupa smartcard, LPC flash, dan peralatan SPI.
iv. utils, berisi script progam untuk konversi dari contoh
hex2bin, bin2hex, delay dan yang lain.
3
v.
vi.
debug, digunakan untuk memonitor proses debug, sehingga
debugging menjadi lebih mudah, fitur ini dapat dimatikan
agar penggunaan memori menjadi hemat.
include, berisi global definition dan pengaturan device yang
akan terhubung dengan OS ini.
Deskripsi kernel
Kernel.c kode inisialisasi dan loop utama. Selama maka startup Kernel
mengeksekusi berbagai inisialisasi setiap modul / periperial . Progam
inisialisasi di bagi menjadi bagian bagian tertentu sehingga progam
menjadi modular dan mudah untuk di modifikasi.
Scheduler menggunakan penjadwalan round-robin. Setiap cek tugas harus
dipicu dari beberapa flag seperti timer SysTick (Dalam periphint /
Timer0.c) :
Cek untuk melihat bahwa timer interrupt telah ditandai b_SysTick (Bit)
di v_SysStat(Variable), jika tidak ada hanya keluar. Jika ya menjalankan
semua fungsi yang ada. Kasus lain akan menguji apakah ada data baru
dalam port serial (sepertiapplic / serial / SerApp.c) atau tidak.
Jadi untuk membuat tugas baru (aplikasi, perangkat dll) taks baru tidak
harus memblokir sistem atau menunggu terlalu lama. Khususnya
pelaksanaan penundaan semua fungsi tidak boleh melebihi waktu SysTick.
Jika tidak ada alternatif:, antara meningkatkan interval Systick atau
mengurangi pemblokiran waktu.
Deskipsi modul
Ada beberapa modul, yaitu Systick, UART, Debugger dan module yang
lain, namun yang akan dibahas hanya modul Systick.
SysTick modul melakukan semua fungsi waktu utama. Contoh
mengedipkan LED, memicu ADC untuk memulai konversi baru, memicu
akhir LCM keterlambatan, memicu keyboard fungsi pemindaian dan juga
memiliki timer software. Untuk mengaktifkan systick, hanya menset (bit)
yang berada di v_SysStat. Untuk mengubah interval waktu memodifikasi
konstanta / ifc_time.h
4
Sesuai definisi aktivasi bit dinyatakan dalam meliputi / settings.h:
Waktu tick dapat dirubah sesuai kebutuhan, sedangkan jika menginkan
Timer lain dapat menambahkan hingga 4 timrt yaitu
Satuan dalam mS, contoh 10mS
Timer diatas mempuyai waktu 10mS , untuk mengecek apakah sudah
10mS menggunakan intruksi
dan untuk menghentikan Timer menggunakan
5
BAB II
PEMBAHASAN
A. PERALATAN
Pada prosses pengerjaan project ini, penulis menggunkan beberapa alat dan
bahan sebagai berikut:
1. Minimum System Atmel ATMega 16
2. I/O LED dan Tombol
3. Power Supply
4. Downloader USB-sASP
USB
5. PC dengan software text editor (Sublime, Notepad++, Notepad)
6. Command Promp
B. RANGKAIAN MIKROKONTROLER
Dari prosses kajian pustaka yang telah dilakukan, maka dilakukukan pemilihan
dan spesifikasi/syarat wajib
Chip yang digunakan dengan dasar minimum requirementdan
penugasan.. Berikut adalah gambar skematik dan Hardware yang digunakan untuk
observasi ini:
Gambar 2.1 Skematik Hardware ATMega16
6
Gambar 2.2 PCB Hardware ATMega16
Gambar 2.3 Extend Board I/O 3 LED
Gambar 2.4 Hardware ATMEGA 16 (tampak atas)
Gambar 2.5 Hardware ATMEGA 16 (tampak samping)
7
C. PEMROGAMAN
Persoalan yaitu
Menyalakan LED 1 setiap 1 detik, mati 1 detik
Menyalakan LED 2 setiap 2 detik, mati 2 detik
Jika Tombol ditekan LED 3 menyala 4 detik
1. Melakukan pemilihan chip pada direktori
\config\hw.in
#put the name of the target mcu here (at90s8515, at90s8535, attiny22, atmega603 etc.)
#
MCU = at90s8515
#
MCU = atmega164p
#
MCU = atmega163
#
MCU = atmega323
#
MCU = atmega16
#
MCU = atmega8
MCU = atmega32
2. Melakukan harware untuk jalur pemrogaman menggunakan USB ASP
\config\env.in
###### define some variables based on the AVR base path in $(AVR) #######
AVRCC
= avr-gcc
AVRAS
= avr-gcc -x assembler-with-cpp
RM
= rm -f
RN
= mv
AVRBIN
= avr-objcopy
AVRSIZE
= avr-size
INCDIR
=.
LIBDIR
= $(AVR)/avr/lib
SHELL = $(AVR)/bin/sh.exe
AVRPROG = avreal32.exe
AVRPROGSP = avrdude.exe
PROGPORT = COM3
PROGDEV = usbasp
###### output format can be srec, ihex (avrobj is always created) #######
FORMAT = ihex
####################### default compiler flags ##########################
CPFLAGS
= -g -O3 -Wall -Wstrict-prototypes -Wa,-ahlms=$(