Embedded system adalah kombinasi dari hardware dan software yang disisipkan
(embedded) dalam suatu perangkat tertentu yang bertujuan melakukan suatu
fungsi/tugas khusus.
Contoh dari embedded systems ini dalam kehidupan sehari-hari adalah microwave,
kalkulator elektronic, game watch, Antilock Brake Systems dan masih banyak lagi.
Hampir semua aspek kehidupan kita tidak dapat dipisahkan dari embedded systems.
Coba anda lihat sekeliling kamar anda, pastinya anda tidak akan sulit menemukan
suatu benda yang mengandung embedded systems di dalamnya. Coba sebutkan, di
kamar saya saja sekarang ada Mobile Phone, MP3 Player dan MIDI Keyboard.
Embedded systems banyak dikaitkan dengan Real-Time Systems (sistem waktu nyata).
Dalam blog ini penulis akan mengajak pembaca untuk membangun sistem embedded
system dengan sistem operasi yang sudah terkenal yaitu Linux, khususnya embedded
Linux. Pembaca sudah seharusnya menguasai bahasa pemrograman C, dasar-dasar
sistem digital dan Organisasi dan Arsitektur sistem komputer.
RAM: 64 MB of SDRAM
ROM: 16 MB of flash and 1 MB boot ROM
Three RS232-compatible serial ports (with external DB9 connectors)
10/100baseTx Ethernet port
USB v1.1 client port
CompactFlash slot
Four programmable timer/counters
Sixteen-channel DMA controller
Watchdog timer
Real-time clock
Eight buffered digital inputs
Eight buffered digital outputs
RedBoot debug monitor program resident in boot ROM
Embedded Linux (based on kernel version 2.6) resident in flash
Dengan demikian, kita bisa belajar banyak hal, mulai dari port access hingga ke
networking.
Ada dua jenis perangkat keras yang membentuk Prosesor : memory dan periferal.
Memory untuk penyimpanan/temu kembali data dan kode. Sementara periferal adalah
perangkat keras yang mengkoordinasikan interaksi dengan dunia luar atau melakukan
suatu fungsi hardware tertentu. Contoh periferal pada embedded system adalah port
serial dan timer.
Keluarga prosesor berbasis Intel 80x86 memiliki dua sistem pengalamatan yang
memungkinkan komunikasi dengan memori dan periferal. Sistem pengalamatan
pertama diperuntukkan bagi perangkat memory, sementara sistem pengalamatan
kedua diperuntukkan bagi periferal terutama I/O.
Pemetaan memory
Semua prosesor menyimpan data dan program di memory. Memory bisa terletak di
dalam chip yang sama dengan prosesor atau diluar chip. Memory terletak pada memory
space dan prosesor berkomunikasi dengan memory dengan menggunakan dua jalur
yaitu address bus dan data bus. Address bus untuk menyimpan alamat dan data bus
untuk menyimpan data. Selain itu ada jalur lain, yaitu control bus yang dipergunakan
untuk membaca , menulis dan mengaktifkan ke berbagai perangkat didalam ruang
lingkup pengalamatan memory. Sinyal untuk control bus termasuk : read, write dan
chip-select (chip-enable).
Saat kita akan menulis suatu program pada suatu board, sebaiknya kita baca dulu
spesifikasi board tersebut, sehingga kita bisa tahun nama dan address range dari tiap
perangkat memori dan periferal yang terletak pada ruang memory. Kita buat tabelnya.
Tabel ini kita sebut peta memory (memory map). Tabel tersebut diorganisasikan
sedemikian rupa sehingga alamat terkecil terletak paling bawah dan alamat tertinggi
terletak di atas. Setiap kali kita menambahkan suatu perangkat ke peta memory,
tempatkan pada lokasi yang benar dan beri label pada alamat awal dan akhir dalam
hexadecimal.
Sebagai contoh bila kita lihat diagram pada Arcom board dibawah ini maka kita lihat
bahwa ada tiga perangkat yang terhubung pada address dan data bus, perangkat
tersebut adalah RAM, ROM dan SMSC Ethernet controller.
Peta memory dari diagram diatas kira-kira sebagai berikut (gambar hak cipta Michael
Barr):
Setelah kita membuat peta memory, kita buat header pada bahasa C sebagai berikut :
/**********************************************************************
*
* Peta memory
* 0x00000000 64M SDRAM
* 0x08000300 N/A Ethernet controller
* 0x50000000 16M Flash
**********************************************************************/
Setelah kita mengetahui nama dan alamat memori dan peripheral yang terhubung
dengan prosesor, maka kita bisa membuat mereka berkomunikasi antara satu dengan
lainnya (prosesor dengan peripheral). Ada dua metode komunikasi yaitu polling dan
interrupt. Keduanya berbasis pada konsep ini, prosesor akan tahu alamat dan range
periferal, prosesor akan memberikan tugas (berupa data) pada alamat tersebut, dan
prosesor akan menunggu periferal menyelesaikan tugasnya. Contoh, ketika prosesor
menugaskan timer menghitung dari 1000 ke 0. Pada detik dimana kalkulasi dimulai,
prosesor hanya akan tertarik pada satu hal, apakah timer selesai menghitung atau
tidak.
Pada metode polling, prosesor akan menanyakan terus menerus pada peripheral (misal
timer) apakah suatu tugas selesai dikerjakan atau tidak. Untuk mengimplementasikan
polling, maka kita akan menciptakan iterasi yang membaca status register pada
peripheral. Sebagai contoh :
do
{
/* Hitung dari 1000 ke 0 */
...
status = Nilai_Sudah_Nol( );
Jika peripheral memberikan sinyal interupsi pada prosesor , maka prosesor akan
menyelesaikan instruksi yang sedang dikerjakannya sekarang, kemudian menyimpan
semua state pada instruksi yang sedang dikerjakannya saat ini, kemudian mengekskusi
suatu rutin yang dinamakan interrupt service routine (ISR) atau interrupt handler, anda
sebagai programmer embedded system yang akan membuat ISR ini. Saat ISR selesai,
maka prosesor kembali ke state sebelum interupsi. Kelebihan interrupt adalah interrupt
lebih menghemat resource dibandingkan polling, tapi kekurangannya adalah interrupt
memiliki jeda waktu (overhead) yang lebih lama dibanding polling.
Bagi anda-anda yang belum terbiasa dengan embedded system programming, anda
harus mulai mengenal makhluk satu ini, databook atau datasheet. Pada databook
semua data penting mengenai periferal dan prosesor akan diberikan. Tiap prosesor
akan berisi data yang berbeda sesuai arsitektur dari register dan instruction set. Semua
yang ingin kita ketahui pada prosesor dapat kita temui pada databook.
Diposkan oleh Adhiguna Mahendra,PhD di 01.42
Label: arcom, arm, embedded linux, embedded
systems, gcc, microcontroller,mikrokontroller, mikroprosesor, prosesor, real time systems, sistem waktu
nyata, viper, viper lite
4 komentar:
Shirazi mengatakan...
Ralph mengatakan...
I recently came across your blog and have been reading along. I thought I would
leave my first comment. I don't know what to say except that I have enjoyed
reading. Nice blog. I will keep visiting this blog very often.
Ruth
http://systemmemory.info
Anonim mengatakan...
mengapa tidak:)
Anonim mengatakan...