MEMBUAT PLATFORM BARU PADA TINYOS
1. Struktur kerja dan Arsitektur TinyOS
Struktur kerja dari TinyOS dapat digambarkan sebagai berikut
.Sedangkan, Arsitektur TinyOS dibagi menjadi 3 komponen, yaitu :
Hardware Independent Layer (HIL)
Hardware Adaptation Layer (HAL)
Hardware Presentation Layer (HPL)
Sebuah platform dibangun dari bawah ke atas, dimulai dari HPL level, kemudian HAL dan HIL layer diatasnya. Platform independent application dibuat menggunakan interface level HIL, yang memungkinkan untuk berpindah dengan mudah dari platform ke platform.
2. Platform TinyOS
Danis Prabandana 12/331439/PA/14693
Platform fisik umumnya terdiri dari kumpulan chip-chip. Begitu juga platform pada TinyOS yang merupakan kumpulan komponen yang merepresentasikan chip-chip tersebut. Chip-chip tersebut dapat digunakan bersama-sama oleh banyak platform dan mengimplementasikan platform baru dapat dilakukan dengan mengubah wiring komponen yang ada.
3. Platform baru TinyOS
Tool chain pada TinyOS akan menemukan platform yang bersangkutan pada waktu kompilasi dan platform baru yang diletakkan pada jalur pencarian akan ditemukan secara otomatis. Mendefinisikan sebuah platform baru dibagi menjadi 3 hal :
1. Definisi chip yang menyusun platform.
2. Definisi platform ( mengkombinasikan chip pada sebuah platform) 3. Tool chain atau membuat definisi
Untuk saat ini kita akan menggunakan istilah PlatformX dan MCUX untuk menyebut platform dan MCU yang akan dibuat.
Definisi dari PlatformX berlokasi di tos/platforms/platformX dan berisi 3 elemen utama:
a. .platform file yang berisi path-path yang digunakan pada “include” dan argumen lainnya untuk nesC
b. Prosedur boot platform : PlatformP/PlatformC
c. Kode-kode spesifik milik platform, termasuk header untuk fungsi-fungsi spesifik hardware (hardware.h) dan kode yang menspesifikasi kombinasi dari chip dan platform.
4. Menambah Platform baru pada TinyOS
Pembuatan aplikasi pada TinyOS menggunakan GNU Make sehingga bisa dikompilasi menjadi satu file c untuk dikompilasi oleh GNU GCC. Sehingga dalam penambahan platform TinyOS perlu mengikuti mekanisme GNU Make. Hal-hal yang perlu didefinisikan dalam penambahan platform antara lain :
File .platform yang berisi alamat direktori file nesC penunjang platform beserta argumennya
Definisi prosedur boot platform, PlatformP/PlatformC
Kode-kode spesifik platform (nesC) yang berisi kombinasi chip, termasuk penggunaan pin, modifikasi, dll. Tidak luput juga pendefinisian fungsi-fungsi spesifik platform pada hardware.h
4.1 .platform file
Setiap direktori platform harus memiliki file .platform didalamnya. File ini berisi instruksi untuk sistem make dimana harus mencari lokasi driver dari tiap komponen dari platform.Definisi-definisi tersebut dibaca dalam dua langkah proses : file dibaca oleh script ncc yang melewatkan argument ke nesC pre-prosesor. .platform file ditulis sebagai script Perl yang kemudian dibaca oleh ncc.
Danis Prabandana 12/331439/PA/14693
4.2 PlatformP dan PlatformC
PlatformP dan PlatformC adalah komponen yang bertanggung jawab melakukan booting sebuah platform sehingga platform dapat digunakan. Secara umum ini berarti sesuatu seperti mengkalibrasi clock dan inisialisasi pin-pin I/O. Jika platform membutuhkan beberapa perangkat agar diinisialisasi dengan urutan tertentu juga dapat diimplementasikan disini.
Urutan boot akan menginisialisasi interface dalam urutan berikut : PlatformC.Init dan MainC.SoftwareInit. PlatformC.Init harus mengatur inisialisasi dari hardware menjadi konsidi yang bisa dioperasikan. Komponen lain diinisialisasi sebagai bagian dari SoftwareInit dengan urutan yang ditentukan saat waktu kompilasi.
Tugas umum dari PlatformC.Init termasuk kalibrasi clock dan pin IO. Namun, komponen ini juga menyediakan control yang lebih banyak dari proses boot bila dibutuhkan.
PlatformP
Danis Prabandana 12/331439/PA/14693
4.3 Platform Specific Code
Selain PlatformP / PlatformC direktori platform berisi code tambahan yang khusus untuk Platform ini. Pertama ini bisa menjadi code yang mengikat resource platform independen untuk kasus tertentu pada platform ini. Kedua bisa menjadi code yang hanya relevan pada platform tertentu (misalnya clock rate pada platform ini). Misalnya LED : sebagian besar platform memiliki beberapa LED, dan sebagian pin pada platform ini terkait dengan implementasi platform independent menggunakan PlatformLedsC. TinyOS membutuhkan header hardware.
4.3.1 Platform Headers
a. hardware.h
File hardware.h termasuk di dalam tos/system/MainC.nc dan biasanya termasuk di dalamnya berisi file header yang menspesifikasi MCU. Sebagai tambahan dalam file hardware.h dapat mengatur flag yang tidak berhubungan dengan hardware secara umum tetapi berhubungan dengan platform. Berikut contoh mica2/hardware.h
b. platform message h
header_t pesan, pesan footer_t, dan message_metadata_t yang digunakan untuk mengisi struktur generik message_t. Di bawah ini adalah contoh dari platform_message.h mica2 :
4.3.2 Platform Specific Component
Code untuk fitur platform dependant juga berada di direktori platform. Jika kode dapat terikat dengan chip tertentu dapat ditempatkan dalam direktori terpisah di bawah direktori chip. Sebagai contoh berikut bagian micaz / chip / cc2420 / HplCC2420PinsC.nc mengait spesifik pin dan general name pada Platform MicaZ.