top of page

Apa itu SVC Exception?

System-Level Exception

System level exception simpelnya adalah exception yang terjadi pada level sistem. Apa itu exception? Exception artinya meminta layanan (services) kepada sistem OS/processor untuk mendapatkan sumber daya (resources) yang diperlukan dalam hal ini akses ke system-level.


System-level itu yang seperti apa? misalnya user meminta akses kepada OS untuk mendapatkan akses ke driver, lokasi memory tertentu (yang sifatnya restricted), Kernel API, dan sebagainya yang mana resources tersebut sifatnya privileged. Privileged artinya sumber daya yang dimiliki processor hanya dapat diakses melalui cara-cara tertentu.


Lalu bagaimana caranya user (application level) meminta akses ke OS untuk mendapatkan sumber daya (resources) yang diperlukan? Ada 2 cara yaitu dengan menggunakan SVC Exception & PendSV exception (Tutorial selanjutnya)


SVC Exception

SVCall (Supervisor Call) merupakan salah satu dari 16 Tipe exception yang disediakan processor Cortex-M processor. Bisa dilihat dalam table, SVCall bernomor 11 dan memiliki alamat 0x0000002C

SVC (Supervisor) biasanya digunakan untuk meminta layanan pada sistem OS seperti API, peripheral driver, dsb yang semua itu tidak bisa secara langsung dapat diakses oleh user.

Instruksi SVC akan segera dieksekusi seketika setelah Instruksi SVC ditulis, jadi tidak harus mengantri dengan exception/interrupt yang lain. Kecuali jika priority exeption/interupt tersebut lebih tinggi


Syntax

Untuk melakukan SVC exception kita hanya perlu menuliskan perintah SVC instruction yang dibungkus menggunakan inline assembly di dalam main.c

__asm("SVC #imm") // contoh (__asm("SVC #8")

__asm : inline assembly, diperlukan ketika menyisipkan bahasa assembly ke dalam bahasa C

SVC : Instruksi untuk melakukan SVC Exception

imm : Immediate value (SVC number), nomer (0-255) untuk meminta layanan, apabila nomer cocok dengan layanan yang diminta sistem akan memproses, jika tidak tersedia maka dapat diabaikan


Latihan

Related Posts

See All
bottom of page