tugas embedded operating system - demo aplikasi berbasis tinyos

15
Tugas Embedded Operating System Demo Aplikasi Berbasis TinyOS Muh. Bagus Tesa K. (12/334603/PA/14836) Instalasi TinyOS pada Ubuntu 15.04 Pemasangan dependensi tinyOS Berdasarkan tutorial pada wiki tinyOS yang dihost oleh Stanford [1]. Instalasi tinyOS pad platform Ubuntu dilakukan dengan memanfaatkan cabang tinyos-tools-devel di github untuk distribusi terbaru. Namun, saya menggunakan paket yang disediakan oleh tutorial [2] untuk kemudahan. Pada tutorial tersebut, pemasangan tinyOS dilakukan dengan menggunakan perintah : sudo apt-get install tinyos Dengan terlebih dahulu menambahkan referensi repository ke distribusi lucid main ubuntu milik stanford. Yaitu, deb http://tinyos.stanford.edu/tinyos/dists/ubuntu lucid main. Penambahan dapat dilakukan dengan menggunakan GUI Software & Updates pada System Settings. Atau melalui cara yang lebih sulit dengan menambahkan entri ke root/etc/apt/source.list maupun root/etc/apt/source.list.d.

Upload: arifatiaddiyaani

Post on 05-Feb-2016

72 views

Category:

Documents


2 download

DESCRIPTION

operating system

TRANSCRIPT

Page 1: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

Tugas Embedded Operating System Demo Aplikasi Berbasis

TinyOSMuh. Bagus Tesa K. (12/334603/PA/14836)

Instalasi TinyOS pada Ubuntu 15.04Pemasangan dependensi tinyOSBerdasarkan tutorial pada wiki tinyOS yang dihost oleh Stanford [1]. Instalasi tinyOS pad platform Ubuntu dilakukan dengan memanfaatkan cabang tinyos-tools-devel di github untuk distribusi terbaru. Namun, saya menggunakan paket yang disediakan oleh tutorial [2] untuk kemudahan. Pada tutorial tersebut, pemasangan tinyOS dilakukan dengan menggunakan perintah :

sudo apt-get install tinyos

Dengan terlebih dahulu menambahkan referensi repository ke distribusi lucid main ubuntu milik stanford. Yaitu, deb http://tinyos.stanford.edu/tinyos/dists/ubuntu lucid main. Penambahan dapat dilakukan dengan menggunakan GUI Software & Updates pada System Settings. Atau melalui cara yang lebih sulit dengan menambahkan entri ke root/etc/apt/source.list maupun root/etc/apt/source.list.d.

Setelah penambahan referensi repository, Ubuntu akan menanyakan apakah daftar distribusi perlu diupdate sekarang juga atau tidak – yang eksekusinya ekuvalen dengan sudo apt-get update. Untuk pemasangan tinyOS saya menggunakan distribusi tinyos-2.1.2 (versi terakhir yang disediakan oleh stanford, berbeda dengan versi 2.2.x yang ada di GitHub [3]). Sehingga perintah lengkapnya

Page 2: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

sudo apt-get install tinyos-2.1.2

Pemasangan kerangka kerja tinyOSPemasangan kerangka kerja tinyOS dalam konteks ini adalah mengambil data-data platform, chips, dan komponen-komponen lain yang menyusun tinyOS termasuk aturan kompilasinya. Untuk mendapatkannya dapat dilakukan dengan menggunakan perintah dibawah ini sesuai dengan tutorial [1].

wget http://github.com/tinyos/tinyos-release/archive/tinyos-2_1_2.tar.gz

Perintah tersebut setara dengan pengunduhan tinyos-2_1_2.tar.gz melalui web browser. Ketika paket tersebut diekstraksi, akan terlihat struktur direktori seperti dibawah :

Setelah mengunduh paket tersebut, tinggal dilakukan pendaftaran ke environment variable lokal pada user yang digunakan melalui tinyos.env yang kemudian direferensi oleh .bashrc pada home (atau “root” masing-masing user). Berikut isi tinyos.env berdasarkan tutorial [1].

# Here we setup the environment

# variables needed by the tinyos

# make system

export TOSROOT="<local-tinyos-path>"

export TOSDIR="$TOSROOT/tos"

export CLASSPATH=$CLASSPATH:$TOSROOT/support/sdk/java

export MAKERULES="$TOSROOT/support/make/Makerules"

export PYTHONPATH=$PYTHONPATH:$TOSROOT/support/sdk/python

Page 3: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

echo "setting up TinyOS on source path $TOSROOT"

Kemudian pada .bashrc ditambahkan :

source <local-tinyos-path>/tinyos.env

Dengan pada kasus saya <local-tinyos-path> adalah $HOME/Programming/tinyos/tinyos-main (untuk versi murni 2.1.2). Sebagai alternatif semua perintah export pada file tinyos.env dapat dimasukkan ke .bashrc sehingga tidak diperlukan penambahan baris source <local-tinyos-path>/tinyos.env di atas. Apabila konfigurasi pada tahap ini berhasil (tentu saja perintah echo diikutkan – untuk memberikan informasi visual) akan muncul teks “setting up TinyOS on source path <local-tinyos-path>” pada atas terminal setiap pertama kali dijalankan.

Pada screenshot di atas saya menggunakan konfigurasi tinyos yang dimodifikasi sesuai bahasan sub bab Pemasangan platform msp430g2553 dari repository google code.

Pengujian kerangka kerja tinyOS dengan aplikasi hello world dari tutorial tinyOSDengan komponen-komponen yang diperlukan tinyos telah terpasang melalui sudo apt-get install tinyos-2.1.2 serta pemasangan framework tinyos dan konfigurasi .bashrc yang bersesuaian. Untuk memastikan komponen tinyos berjalan sesuai tujuan, maka perlu dibuat hello world versi tinyos sesuai dengan tutorial [4]. Pada tutorial tersebut kita diperlukan untuk membuat 3 file, yaitu SimpleAppC.nc, SimpleC.nc, dan makefile.

Page 4: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

Kompilasi dilakukan dengan menggunakan perintah make target-platform. Pada tutorial, dicontohkan :

make micaz

Dengan perintah di atas, akan diberikan output sebagai berikut pada terminal.

Pada direktori build terbentuk hasil kompilasi tinyos, yang kurang lebih isinya sebagai berikut.

Page 5: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

Dari hasil kompilasi terlihat penggunaan ROM dan RAM dari aplikasi tinyos yang telah dikompilasi, yaitu ROM menggunakan 610 bytes sedangkan RAM 6 bytes.

Pemasangan platform msp430g2553 dari repository google codeTahapan ini merupakan bagian yang menurut saya adalah crude hack pada kerangka kerja tinyos yang elegan. Cara yang saya gunakan belum saya temukan secara eksplisit dalam dokumen resmi repository tinyos namun tetap dilakukan demi mendapatkan dukungan kompulasi pada platform msp430g2553 yang tidak tersedia pada sumber tinyos yang ada (baik versi 2.1.2 stanford maupun versi 2.2.x dari github).

Langkah pertama yang perlu dilakukan untuk mendapatkan tinyos yang mendukung platform msp430g2553 adalah dengan menduplikasi repository google di [5] melalui git maupun versi GUI-nya (semacam SourceTree). Proses penduplikasian juga dapat dilakukan dengan mengunduh paket tar.gz melalui fitur yang disediakan google code. Berikut adalah struktur dari hasil duplikasi repository google.

Page 6: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

Langkah selanjutnya adalah menggabungkan direktori tersebut dengan direktori tinyos-2.1.2 yang didapatkan melalui wget http://github.com/tinyos/tinyos-release/archive/tinyos-2_1_2.tar.gz pada langkah sebelumnya. Aturan penggabungan adalah sebagai berikut :

Direktori yang dimerge hanya tos (berisi source platform, chip, sensorboard, dan lain-lain) dan support (berisi aturan kompilasi masing-masing konfigurasi platform)

Merger direktori diperbolehkan Replace dilarang (skip)

Sehingga terlihat seperti dibawah – contoh diambil pada direktori platform.

Page 7: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

Pengujian kerangka kerja tinyOS untuk kompilasi aplikasi hello world dari tutorial tinyOS pada platform msp430g2553Pengujian ini dilakukan dengan mengompilasi aplikasi hello world sebelumnya namun dengan target platform msp430g2553.

Make msp430g2553

Maka dari direktori yang sebelumnya terlihat sebagai berikut.

Berubah menjadi :

Page 8: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

Dengan isi direktori msp430g2553 kurang lebih sama dengan direktori micaz akan tetapi tidak memiliki main.srec – yang semoga pada kuliah berikutnya diperjelas kegunaan masing-masing file. Meski metode ini mendapat Warning dari kompiler, namun setidaknya tidak terjadi compile error.

Perbaikan Source Code AplikasiPembuatan interface MoveInterface Move disimpan dalam file Move.nc dengan isi sebagai berikut :

interface Move {

command error_t left(uint8_t distance);

command error_t right(uint8_t distance);

command error_t forward(uint8_t distance);

command error_t backward(uint8_t distance);

}

Dalam artian tidak ada yang diubah.

Pembuatan komponen RobotKomponen Robot disimpan dalam file RobotC.nc dengan source sebagai berikut :

module RobotC {

provides interface Move;

}

implementation {

// pos[0] = posisi x, pos[1] = posisi y

// ke kiri = bergerak di sumbu x ke arah negatif

// ke kanan = bergerak di sumbu x ke arah positif

// ke depan = bergerak di sumbu y ke arah positif

// ke belakang = bergerak di sumbu y ke arah negatif

uint8_t hor = 0;

uint8_t ver = 0;

command error_t Move.left(uint8_t distance) {

hor -= distance;

return SUCCESS;

Page 9: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

}

command error_t Move.right(uint8_t distance) {

hor += distance;

return SUCCESS;

}

command error_t Move.forward(uint8_t distance) {

ver += distance;

return SUCCESS;

}

command error_t Move.backward(uint8_t distance) {

ver -= distance;

return SUCCESS;

}

}

Perubahan pada source ini antara lain :

Pengubahan array menjadi variabel terpisah – saya tidak yakin akan penggunaan array di tinyOS

Pengubahan nama dari masing-masing command menjadi Move.<nama-command>. Koreksi nama variabel dist menjadi distance. Koreksi operasi forward, posisi vertikal (ver) ditambah distance.

Pembuatan komponen ControllerKomponen controller disimpan dalam ControllerC.nc. Source ini berisi langkah-langkah yang dilakukan “Robot” setelah dilakukan booting. Berikut isinya.

module ControllerC {

uses interface Move;

uses interface Boot;

}

implementation {

Page 10: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

event void Boot.booted() {

// lengkapi kodenya untuk menggerakkan robot ke:

// kiri sejauh 8, kanan sejauh 8, kanan sejauh 8

// kiri sejauh 8, maju sejauh 2, mundur sejauh 4

// maju sejauh 2

call Move.left(8);

call Move.right(8);

call Move.right(8);

call Move.left(8);

call Move.forward(2);

call Move.backward(4);

call Move.forward(2);

}

}

Perubahan pada komponen ini adalah sebagai berikut :

Penambahan deklarasi penggunaan interface boot, uses interface boot Penambahan pemanggilan command sesuai dengan perintah tugas melalui call

Pembuatan konfigurasi RobotAppRobotAppC.nc merupakan file konfigurasi aplikasi “Robot” yang dibangun dengan isian sebagai berikut :

configuration RobotAppC{

}

implementation{

components MainC, ControllerC, RobotC;

ControllerC.Boot -> MainC.Boot;

ControllerC.Move -> RobotC.Move;

}

File ini merupakan file baru, tambahan terhadap kumpulan source yang sudah ada.

Page 11: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

Pembuatan makefileMakefile yang dibuat untuk membuat aplikasi “Robot” ini cukup mencontek makefile dari hello world sebelumnya dengan sedikit perubahan. Berikut isinya

COMPONENT=RobotAppC

include $(MAKERULES)

Kompilasi pada platform msp430g2553Sesuai dengan uji kompilasi sebelumnya, kompilasi dilakukan dengan

make msp430g2553

Berikut tampilan terminal yang menunjukkan proses kompilasinya :

Page 12: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

Dari screenshot terlihat bahwa aplikasi menggunakan 584 bytes memori ROM dan 10 bytes memori RAM.

Sekian penjelasan dari saya yang merupakan pemaksaan terhadap framework tinyos. Mengingat proses pemasangan tinyos-tools-devel sudah berkali-kali berujung system wide error yang melibatkan fondasi Ubuntu hingga saya bertanya di [6] sampai saat memulai penulisan tugas ini belum ada jawaban yang memberikan solusi. Seluruh file-file tugas ini dapat diunduh melalui http://tinyurl.com/ncr4c8o.

Page 13: Tugas Embedded Operating System - Demo Aplikasi Berbasis TinyOS

Referensi[1] http://tinyos.stanford.edu/tinyos-wiki/index.php/Automatic_installation. Retrieved 28 April 2015

7:39:43

[2] http://tinyos.stanford.edu/tinyos-wiki/index.php/Installing_TinyOS_2.1.1. Retrieved 30 April 2015 10:40:13

[3] https://github.com/tinyos/.

[4] http://tinyos.stanford.edu/tinyos-wiki/index.php/The_simplest_TinyOS_program. Retrieved 28 April 2015 7:39:12

[5] https://code.google.com/p/tinyos-main/

[6] http://askubuntu.com/questions/616649/installing-tinyos-on-ubuntu-15-04