Categories
Mikrokontroler

Perancangan Aplikasi Real Time (3): Sistem Preemptive Penuh

SINOPSIS

Melanjutkan artikel sebelumnya, apa yang akan dibahas kali ini adalah solusi preemptive multitasking murni atau tradisionil. Menggunakan layanan RTOS secara penuh, tidak peduli efek yang diakibatkan (memori yang rakus maupun beban kerja prosesor yg berat dan seterusnya). Ada partisi sederhana dari fungsi yang dibutuhkan untuk sejumlah tugas otonom.

APAKAH PREEMPTIVE MULTITASKING ITU?

Preemptive multitasking adalah suatu tugas atau task dimana sebuah sistem operasi menggunakan beberapa kriteria untuk menentukan berapa lama suatu tugas/task dijalankan atau mendapatkan alokasi CPU atau menggunakan sistem operasi tersebut, sebelum kemudian CPU mengerjakan tugas lain atau selanjutnya.

  • Aksi mengambil alih sistem operasi dari suatu tugas dan kemudian memberikan ke tugas yang lain disebut sebagai preempting.
  • Suatu kriteria umum dalam proses preempting menggunakan elapsed time sederhana (sistem semacam ini sering disebut menggunakan time sharing atau time slicing).
  • Dalam beberapa sistem operasi, beberapa aplikasi diberi prioritas lebih tinggi dari aplikasi lainnya, dengan demikian, program aplikasi atau tugas tersebut bisa mendapatkan potongan waktu yang lebih panjang.

IMPLEMENTASI

  • Tugas-tugas akan diblokir hingga ada suatu kejadian atau event yang membutuhkan tugas tersebut…
  • Even-even atau kejadian tersebut bisa ekternal (ada tombol yang ditekan dan lain sebagainya) atau internal (habis waktunya atau timeout dan lain sebagainya)…
  • Prioritas ditetapkan untuk masing-masing tugas tersebut, terkait dengan kebutuhan pewaktuannya…
  • Kebutuhan waktu yang ketat memiliki prioritas tertinggi!

Categories
Mikrokontroler

Perancangan Aplikasi Real Time (2): Solusi Tanpa RTOS

SINOPSIS

Melanjutkan artikel sebelumnya, perlu diketahui bahwa tidak setiap aplikasi membutuhkan sistem operasi atau tepatnya RTOS. Hmmm, jadi langsung saja, artikel ini memberikan gambaran tentang solusi tanpa menggunakan sistem operasi, yang nantinya kita evaluasi dan simpulkan baik buruknya, kelebihan kelemahannya.

Okey, take a deep breath, ambil napas yang dalem,…. Tahan…. dan jangan dikeluarkan… what?! he he he just kidding… ya silahkan dilepaskan pelan-pelan… (maksudnya supaya santai dulu relaks)

IMPLEMENTASI

Solusi yang dibahas kali ini menggunakan pendekatan kalang (loop approach), dimana setiap komponen aplikasi dinyatakan dalam bentuk fungsi yang harus dijalankan hingga selesai.

Idealnya digunakan pewaktu perangkat keras untuk melakukan penjadwalan fungsi-fungsi kontrol yang kritis. Namun, menunggu datangnya data dan perhitungan data yang begitu kompleks menyebabkan fungsi kontrol tidak cocok untuk dijalankan dalam batasan rutin layanan interupsi.

Seberapa banyak dan urutan komponen mana yang dikerjakan dalam kalang tak-hingga dapat diatur dengan memasukkan unsur prioritas, silahkan perhatikan pembahasan dalam contoh nantinya.

FUNGSI KONTROL PROSES (PLANT)

Perhatikan kode pseudo berikut…

void PlantControlCycle( void )
{
  TransmitRequest();
  WaitForFirstSensorResponse();
  if( terima data dari sensor pertama )
  {
    WaitForSecondSensorResponse();
    if( terima data dari sensor kedua )
    {
      PerformControlAlgorithm();
      TransmitResults();
    }
  }

FUNGSI ANTARMUKA PENGGUNA

Fungsi ini meliputi antarmuka keypad, LCD, komunikasi RS232 dan server WEB tertanam. Perhatikan kode pseudo berikut…

int main( void )
{
  Initialise();
  for( ;; )
  {
    ScanKeypad();
    UpdateLCD();
    ProcessRS232Characters();
    ProcessHTTPRequests();
  }
// seharusnya tidak pernah sampai disini
  return 0;
}

Ada dua asumsi: Pertama, masukan/luaran komunikasi di-buffer melalui rutin layanan interupsi, sehingga periferal yang terkait tidak perlu melakukan polling (proses menunggu terus menerus). Kedua, fungsi pemanggilan fungsi dalam kalang dikerjakan secepat mungkin sehingga semua syarat pewaktuan dipenuhi.

Categories
Mikrokontroler

Perancangan Aplikasi Real Time (1): Pendahuluan

PENDAHULUAN

Apa yang akan kita bicarakan atau bahas kali ini adalah tentang Real Time Operating System. Apaan? Real Time Operating System? Apa tuch? Oke, sabar dulu sebentar. Real Time Operating System, yang selanjutnya kita singkat saja menjadi RTOS, merupakan sistem operasi untuk aplikasi-aplikasi waktu nyata atau istilah kerennya Real Time Applications, contohnya apa saja? Ya sebagaimana kita jumpai di sekitar kita, seperti handphone (tidak harus smartphone) – bukankah tanpa sistem operasi ketika di-ON-kan tidak akan terjadi apa-apa, padahal kenyataannya HP langsung melakukan ‘booting’ (istilah dalam sistem operasi) beberapa saat, kemudian baru siap kita gunakan – ditandai dengan visualisasi pada LCD-nya, antara lain, kekuatan sinyal, sisa daya baterei, nama provider, jam, tanggal dan lain sebagainya.

Oke, untuk memulai membahas tentang perancangan aplikasi real time dengan sistem operasi, kita mulai dengan kasusnya dulu yang akan dicari solusinya…

STUDI KASUS ATAU APLIKASI

Perhatikan gambar 1 berikut ini..

Gambar 1

Aplikasi akan berjalan pada sebuah sistem (single board) yang berisikan mikrokontroler atau mikroprosesor yang harus melakukan kontrol terhadap suatu proses dan pada waktu bersamaan melakukan akuisisi dan pemantauan/pengontrolan baik secara lokal maupun jarak jauh. Sistem tersebut terdiri dari:

  • Sebuah sistem benam (embedded system) dengan kekuatan suatu mikrokontroler/mikroprosesor;
  • Dua sensor yang terhubung dengan jaringan fieldbus;
  • Sesuatu yang dikontrol (bisa apa saja, motor, pemanas dll), serta dihubungkan pada jaringan fieldbus yang sama;
  • Keypad matriks yang dibaca melalui luaran/masukan;
  • Dua buah indikator LED;
  • Sebuah penampil LCD;
  • Sebuah server web tertanam agar dapat dilakukan pengontrolan jarak jauh (melalui web atau internet);
  • Sebuah antarmuka RS232 agar dapat dihubungkan dengan suatu PDA.