Chapter 12: Interrupts

Dari "Embedded Systems - Shape The World"

Oleh Jonathan Valvano dan Ramesh Yerraballi

Skema sinkronisasi antar-thread yang sederhana adalah mailbox. Mailbox adalah semaphore biner dengan variabel data terkait. Simulator 12.1 mengilustrasikan perangkat input yang dihubungkan menggunakan sinkronisasi interupsi dan menggunakan mailbox untuk mengirim data dari ISR (Interrupt Service Routine) ke program utama. Struktur mailbox diimplementasikan dengan dua variabel global bersama. Mail berisi data, dan Status adalah flag semaphore yang menentukan apakah mailbox penuh atau kosong.

Diagram Mailbox
Gambar 12.1. Mailbox dapat digunakan untuk mengirim data antar thread.

Interupsi diminta ketika flag pemicunya diatur, menandakan data baru siap dari perangkat input. ISR akan membaca data dari perangkat input dan menyimpannya di variabel global bersama Mail, lalu memperbarui Status menjadi penuh. Program utama akan melakukan perhitungan lain, sambil sesekali memeriksa status mailbox. Ketika mailbox berisi data, program utama akan memprosesnya. Pendekatan ini memadai untuk situasi di mana bandwidth input lambat dibandingkan dengan kecepatan pemrosesan perangkat lunak.

Simulator 1: Komunikasi Mailbox (Interactive Tool 12.1)

Gunakan simulator ini untuk melihat bagaimana thread foreground (program utama) dan background (ISR) berkomunikasi menggunakan "mailbox".

Penjelasan Alur:

Saat blok A dieksekusi, mailbox kosong dan program utama melakukan tugas lain. Ketika data input baru siap, interupsi diminta. Di blok B, ISR membaca data, menyimpannya di Mail, dan mengatur Status menjadi penuh. Program utama mengenali Status penuh di Blok C. Di Blok D, program utama memproses data dari Mail dan mengosongkan Status. Perhatikan bahwa hanya satu thread yang aktif pada satu waktu.