BAB 2 DASAR TEORI 2.1. Sistem Embedded Sistem embedded (embedded system) adalah sebuah sistem komputer yang digunakan untuk tujuan khusus, yang secara lengkap dienkapsulasi oleh perangkat yang dikendalikannya. Sistem embedded dibangun atas dasar kebutuhan spesifik dan menjalankan proses yang telah didefinisikan terlebih dahulu, tidak seperti personal computer (PC) yang bersifat general-purpose. Beberapa perbedaan antara sebuah sistem embedded dengan PC adalah : sistem embedded dibuat khusus untuk pekerjaan yang spesifik, sedangkan PC merupakan platfrom untuk komputasi yang generik, sistem embedded didukung oleh banyak jenis prosesor dan arsitektur prosesor, sistem embedded biasanya bersifat cost-sensitive, sistem embedded biasanya memiliki constraint waktu, sistem operasi yang digunakan untuk sistem embedded biasanya adalah realtime operating system (RTOS), dampak dari kegagalan software di sistem embedded lebih fatal daripada di sistem desktop, sistem embedded sering memiliki constraint daya, sistem embedded sering harus beroperasi pada kondisi lingkungan yang ekstrim, sistem embedded memiliki resource sistem yang jauh lebih sedikit, sistem embedded sering menyimpan program di ROM, sistem embedded membutuhkan tool dan metode yang dirancang secara efisien, embedded microprocessor sering memiliki rangkaian debugging yang khusus. 2.1.1. Host dan Target Dalam pengembangan suatu sistem embedded, sistem yang digunakan untuk melakukan pengembangan (menulis source code, meng-compile, dan sebagainya) disebut sebagai host, sedangkan hardware yang sesungguhnya akan digunakan 4 sebagai sistem embedded disebut sebagai target atau embedded target. Toolchain adalah kumpulan program yang digunakan untuk membangun aplikasi, dalam hal ini digunakan di host PC untuk membangun aplikasi embedded yang akan dimasukkan ke embedded target. Beberapa contoh program yang termasuk toolchain adalah assembler, compiler, dan linker. Cross-compiling adalah proses membangun program aplikasi untuk suatu sistem pada sistem lain, dalam hal ini proses membangun aplikasi untuk embedded target yang dilakukan di host PC. 2.1.2. Embedded / Real-Time Operating System Embedded Operating System adalah sebuah sistem operasi untuk sistem embedded. Sistem operasi ini dirancang secara efisien dan compact, mengabaikan fungsi-fungsi yang disediakan oleh sistem operasi computer non-embedded, dan tidak dapat digunakan oleh aplikasi khusus yang dijalankan. Salah satu jenis khusus dari sistem operasi embedded adalah Real-Time Operating System (RTOS), yaitu sistem operasi yang mendukung multitasking untuk memfasilitasi aplikasi real-time system. Real-time system adalah sistem yang memiliki constraint waktu, di mana kebenaran dari suatu operasi tidak hanya bergantung pada kebenaran secara logika, tetapi juga pada waktu ketika operasi tersebut dilakukan. Sistem tersebut disebut hard real-time system apabila operasi yang selesai setelah deadline mengakibatkan kegagalan pada sistem. Sedangkan pada soft real-time system, keterlambatan tersebut dapat ditoleransi, hanya saja menghasilkan kualitas kerja yang lebih rendah. Sebuah RTOS biasanya menggunakan algoritma scheduling yang khusus agar dapat menyediakan tool yang dibutuhkan untuk menghasilkan deterministic behaviour pada sistem akhir. RTOS lebih dihargai untuk seberapa cepat atau dapat diprediksinya respons terhadap suatu event daripada berapa banyak pekerjaan yang dapat dilakukan dalam suatu waktu. Karena itu faktor kunci dari RTOS adalah waktu yang minimal untuk memproses interrupt dan perpindahan task. 5 2.2. Sistem Operasi eCos 2.2.1. Sejarah Singkat Cygnus Solutions didirikan pada tahun 1989 dengan ide menyediakan dukungan dan pengembangan penuh terhadap perangkat lunak open source. Perusahaan ini sukses mempaketkan, mengembangkan dan mendukung seperangkat alat termasuk GNU Compiler Collection (GCC) dan GNU Debugger (GDB). Di tahun 1997, dengan kesuksesan model dukungan open-source, Cygnus memulai pengembangan sebuah real time operating system untuk melengkapi perangkat GNUPro mereka. Tujuannya untuk menghasilkan real-time operating system berukuran kecil dan dapat dikonfigurasi, sehingga dapat dimanfaatkan untuk solusi komersial, tapi bebas royalty. Hasilnya adalah Embedded Configurable Operating System (eCos). eCos terus tumbuh dan berkembang. Hingga kini telah mendukung berbagai tipe prosesor semisal: ARM (termasuk Intel Xscale IX425), Intel IA32, MIPS, Motorola PowerPC (termasuk prosesor MPC74xx G4), Motorola 68k/Coldfire, Sun SPARC, Renesas H8/300H, SuperH, NEC V850, Fujitsu FRV, Matsushita AM3x, Samsung CalmRISC dan beberapa lainnya. Juga telah digunakan di berbagai produk komersial seperti : Sistem Keamanan pada industri otomotif Volvo dan Ford, Gameboy Advance, Mobile phones 3G Labs, Multimedia Iomega HipZip, dan Video, Audio, dan MPEG Sun. 2.2.2. Arsitektural eCos eCos dibangun berbasis arsitektur layered software. Portabilitas aplikasi dan penggunaan kembali perangkat lunak ditingkatkan dengan membangun abstraksi detail perangkat keras target dari aplikasi. Garis putus-putus pada Gambar 2.3 membagi lapisan komponen perangkat lunak. Lapisan pertama di atas garis putusputus : kernel, networking stack, dan filesystem bersifat independen terhadap perangkat keras pemroses pada board. Komponen ini berantarmuka dengan kompatibilitas di atasnya dan lapisan library untuk menghasilkan platform konsisten untuk lapisan aplikasi. Di bawah garis putus-putus adalah RedBoot ROM monitor, Hardware Abstraction Layer (HAL), dan device driver. Komponen ini 6 ditulis dan dikonfigurasi untuk perangkat keras target spesifik. Gambar 2.1: Sistem embedded dengan lapisan paket eCos Dalam eCos dikenal istilah Component Repository, yaitu struktur direktori yang memuat semua paket dari sebuah instalasi eCos. Kerangka komponen termasuk sebuah Package Administration Tool untuk menambahkan paket baru, memperbaharui paket yang sudah ada, dan menghapus paket lama yang ada dalam repository. Direktori utama eCos memuat file-file distribusi eCos. Subdirektori yang memuat component repository disebut packages. Sebuah file database, ecos.db (berada dalam direktori packages) dikelola oleh Package Adminstration Tool dan berisi keterangan detail tentang berbagai jenis paket dalam component repository. Tabel 2.1: Deskripsi struktur direktori Component Repository eCos Direktori compat cygmon devs error fs Deskripsi Berisi paket untuk POSIX (IEEE 1003.1) dan uITRON 3.0 Paket untuk Cygmon standalone debug monitor Memuat semua device driver komponen hardware-specific seperti komunikasi serial, Ethernet, dan PCMCIA Berisi paket identifikasi kesalahan umum dan status kode. Hal ini memungkinkan terjadinya keseragaman diantara paketpaket untuk menyatakan adanya error dan kondisi status Berisi paket file sistem ROM dan RAM 7 Gabungan semua paket target perangkat keras HAL Berisi infrastruktur eCos seperti tipe standard, macro, tracing, infra assertion, dan opsi startup Paket untuk semua dukungan sistem Input/Output (I/O) hardwareio independent, seperti Ethernet, flash, dan serial, yang merupakan basis system device drivers isoinfra Berisi paket yang menyediakan dukungan untuk ISO C library (seperti stdlib dan stdio) dan implementasi POSIX kernel Berisi paket yang menyediakan fungsional inti (seperti scheduler, semaphore, dan thread) pada kernel eCos Gabungan paket untuk library matematika dan ISO C, yang language memungkinkan aplikasi menggunakan fungsi library C standard dan library floating-point matematika Paket untuk dukungan networking dasar, termasuk TCP, UDP dan net IP, dan protokol SNMP, serta agen pendukung library berbasis proyek UCD-SNMP redboot Berisi paket untuk RedBoot standalone debug ROM monitor Berisi paket untuk alokasi memori dinamis dan dukungan untuk services library kompresi dan dekompresi hal 2.2.3. Hardware Abstraction Layer (HAL) HAL adalah komponen utama dalam portabilitas eCos. Ini menyediakan API yang konsisten terhadap layer atas sistem operasi. Tiap platform perangkat keras memiliki HAL sendiri untuk mendukung prosesor spesifik dan set periferalnya. HAL dibangun atas tiga modul : Architecture, Variant, dan Platform. Modul Architecture mendefinisikan tipe keluarga prosesor, contohnya keluarga Motorola MPC74xx PowerPC. Modul Variant mendukung fitur prosesor spesifik dalam keluarga prosesor tersebut. Menggunakan contoh Motorola tadi, modul ini dapat mendukung MPC7457 dan periferal on-chip spesifik untuk prosesor tersebut. Modul Platform memperluas dukungan HAL periferal terkait semisal pengendali interrupt dan devais timer. Sebagai paket lengkap, HAL juga menyertakan komponen untuk sumberdaya platform spesifik, loading dan booting, interrupt, context switch, cache startup, source level debugging, ROM monitor dan beberapa lainnya. Untuk mempertahankan konfigurabilitas, hanya komponen HAL yang secara aktual 8 dibutuhkan oleh aplikasi atau platform spesifik yang dibangun ke dalam kernel. HAL juga menyediakan fasilitas real-time untuk board spesifik, termasuk exception handler, interrupt handler, dan virtual vector. Exception handler memungkinkan embedded system memperbaiki dari kondisi exception perangkat keras semisal overflow, bad memory access, atau operasi pembagi oleh nol. Kondisi ini harus dicegah karena karena dapat mengacaukan sistem, sehingga harus ditangani secara benar oleh HAL, kernel, atau aplikasi itu sendiri. Interrupt penting untuk operasi real-time, namun agar efisien, harus digunakan untuk mencapai kondisi kerja terbaik prosesor perangkat keras. Terdapat dua jenis interrupt. Interrupt Service Routine (ISR) digunakan untuk proses sederhana yang berlangsung cepat. Deferred Service Routines (DSR) digunakan untuk proses kompleks. Dengan kedua tipe ini, pengguna dapat menyusun prioritas interrupt sesuai kebutuhan sistem. Virtual vector mendukung ROM berbasis monitor, memungkinkan debugging aplikasi melalui Ethernet atau kanal komunikasi serial. 2.2.4. RedBoot ROM Monitor Red Hat Embedded Debug and Bootstrap (RedBoot) menyediakan lingkungan untuk bootstrap dan debugging untuk sistem yang berbasiskan eCos. RedBoot dikembangkan sebagai aplikasi eCos tanpa kernel dan dapat digunakan untuk melakukan booting aplikasi eCos lain dan juga RTOS lain. Beberapa fitur RedBoot adalah boot scripting, Command Line Interface (CLI), akses melalui port serial atau ethernet, dukungan untuk GDB, dukungan untuk flash image, dan bootstrap melalui jaringan. Meskipun RedBoot merupakan program yang standalone, proses konfigurasi dan build-nya sama seperti aplikasi eCos. 2.2.5. Paket I/O (Device Driver) Paket I/O di eCos dirancang sebagai framework yang general-purpose untuk mendukung device driver, dari serial port sampai networking stack. Komponen dari paket I/O, dikonfigurasi pada sistem seperti komponen-komponen lainnya. User juga dapat menambahkan driver yang dibuat sendiri. Meskipun driver dapat dianggap static, pengaksesannya dilakukan melalui sebuah handle. Setiap 9 device pada sistem memiliki nama yang unik dan dapat dipetakan ke sebuah handle. 2.2.6. Kernel eCos Kernel eCos dirancang untuk mencapai empat tujuan : • Low interrupt latency, waktu yang dibutuhkan untuk merespon sebuah interrupt dan memulai eksekusi ISR; • Low task switching latency, waktu yang dibutuhkan saat sebuah thread menjadi tersedia ketika eksekusi sebenarnya dimulai; • Small memory footprint, sumber daya memory untuk program dan data dipertahankan minimum dengan memungkinkan semua komponen mengalokasikan memory sesuai kebutuhan; • Deterministic behavior, sepanjang eksekusi, performa kernel harus dapat diprediksi dan dibatasi sehingga memenuhi kebutuhan aplikasi real-time. eCos menawarkan fitur menarik untuk memperlancar performa aplikasi, opsi untuk membangun dengan atau tanpa kernel aktual. Pada aplikasi sederhana yang tidak membutuhkan scheduling atau multi-tasking, fungsi eCos untuk mengatur dan menjalankan perangkat keras dapat dibangun tanpa kernel, meningkatkan kecepatan eksekusi dan mengurangi memory footprint. Pada banyak aplikasi DSP tradisional tipe pemrosesan ini sudah umum. Sebuah aplikasi khusus dapat terdiri dari sebuah aliran data konstan yang diterima dari sebuah perangkat keras semisal A/D converter. Setelah buffer masukan terisi data, dikirim sinyal ke prosesor dengan interrupt dan data dipindahkan ke dalam memory prosesor dengan kanal DMA. Waktu eksekusi pemrosesan data konsisten dengan setiap paket data dan kurang dari waktu yang dibutuhkan untuk paket lain yang akan diproses. Setelah proses selesai, data dipindahkan dari memory prosesor ke buffer keluaran menggunaan DMA lain. Tipe aplikasi ini tidak membutuhkan scheduling dinamis atau multi-tasking dan memberikan keuntungan dalam hal kecepatan eksekusi yang lebih cepat dan pemakaian memory yang lebih kecil dengan tidak menggunakan kernel. Lebih jauh lagi, eCos adalah sistem operasi lengkap dengan fitur kernel dan komponen inti termasuk : scheduling dan sinkronisasi, interrupt dan exception 10 handling, counters, clocks, alarms, timers,POSIX dan uITRON compatibility layer, ROM monitor, RAM dan ROM filesystem, dukungan PCI, TCP/IP networking, dan fitir tambahan oleh para pengembang. 2.2.7. eCos Scheduler Dua tipe scheduler tersedia pada eCos : multilevel queue scheduler dan bitmap scheduler. Multilevel queue scheduler memungkinkan thread diberi nilai prioritas dari level 0 hingga 31, dengan 0 adalah prioritas tertinggi dan 31 terendah. Pada tiap level multiple thread dapat dieksekusi dan pengambilalihan prioritas antar level dimungkinkan, sehingga thread dengan level lebih tinggi dapat dijalankan ketika thread dengan level lebih rendah sedang dihentikan. Timeslicing juga didukung dengan level prioritas dan across priority level, yang memungkinkan adanya penetapan waktu eksekusi sebelum melepaskan sumber daya ke thread berikutnya. Multilevel queue scheduler mendukung Symmetric Multi-Processing (SMP). Bitmap scheduler adalah scheduler yang lebih sederhana dan efisien. Juga mendukung 32 level prioritas, tapi hanya satu thread yang dapat dijalankan pada masing-masing level. Pengambilalihan prioritas dimungkinkan, tapi timeslicing antar thread tidak, dan tidak dibutuhkan karena masing-masing level hanya mengizinkan thread tunggal. Dan dengan pilihan dengan atau tanpa kernel, eCos memungkinkan keseimbangan antara fitur dan efisiensi schudelur yang akan dikonfigurasi oleh pengguna untuk mencocokkan dengan kebutuhan. 2.2.8. Filesystem Infrastruktur filesystem di eCos diimplementasikan oleh paket FILEIO dan menyediakan operasi file yang sesuai dengan standard POSIX. Filesystem yang didukung oleh eCos adalah ramfs, romfs, FAT, dan JFFS2. RAM Filesystem (ramfs) digunakan untuk melakukan operasi file I/O bukan pada storage melainkan pada RAM. ROM Filesystem (romfs) adalah filesystem yang hanya dapat dibaca dan tidak dapat ditulis. File Allocation Table (FAT) merupakan sebuah filesystem yang sudah umum digunakan, misalnya sebagai filesystem untuk sistem operasi Windows 9x. Journaling Flash Filesystem version 2 (JFFS2) adalah 11 filesystem yang umum digunakan pada flash memory. 2.2.9. Networking Stack Perancangan TCP/IP Stack di eCos memungkinkan stack menjadi modular dan pada saat ini mendukung dua implementasi yang berbeda, yaitu dari OpenBSD dari tahun 2000 dan versi yang lebih baru berdasarkan dari FreeBSD. 2.2.10. Web Server eCos menyediakan sebuah HTTP server yang sederhana untuk digunakan aplikasi. Server ini secara spesifik dibuat untuk kendali dan pengamatan secara remote terhadap aplikasi embedded. Karena itu penekanannya adalah pada content yang dibuat secara dinamik, form handling, dan interface CGI. Server ini juga dapat mendukung IPv6 apabila konfigurasi eCos memiliki IPv6. 2.2.11. Library Untuk memfasilitasi aplikasi, eCos menyediakan library untuk C dan untuk fungsi matematika. C Library menyediakan fungsi-fungsi standard C sesuai spesifikasi ISO 9899:1990 untuk library standard C, yang secara esensial sama dengan spesifikasi ANSI C3.159-1989 (C-89). Library matematika menyediakan fungsi-fungsi untuk operasi matematika. 2.2.12. Compatibility Layer Untuk memudahkan porting aplikasi ke eCos, eCos menyediakan kompatibilitas dengan POSIX dan µITRON. Dukungan untuk POSIX terbagi antara paket POSIX dan FILEIO. Paket POSIX menyediakan dukungan untuk thread, signal, sinkronisasi, timer, dan message queue. Paket FILEIO menyediakan dukungan untuk file dan device I/O. Spesifikasi µITRON mendefinisikan arsitektur sistem operasi yang sangat fleksibel dan dirancang khusus untuk aplikasi embedded. Spesifikasi tersebut dapat diimplementasikan pada banyak platform dan memberikan keuntungan yang signifikan dengan mengurangi usaha yang diperlukan dalam memahami dan melakukan porting aplikasi ke arsitektur prosesor yang baru. 12 2.2.13. Lisensi eCos dan Dukungan Pihak Ketiga eCos didistribusikan dibawah GNU General Public License (GPL) versi 2 dengan pengecualian untuk linking (linking exception). Lisensi ini memberikan hak untuk secara bebas mendapatkan source code, memodifikasi, dan kemudian mendistribusikannya. Perangkat lunak yang dimodifikasi dari distribusi asli dapat didistribusikan kembali jika mengidentifikasikan perangkat lunak aslinya dan modifikasi yang dilakukan. Hasil modifikasi juga dilindungi di bawah GPL. Tetapi karena ada pengecualian untuk linking, berbeda dengan syarat lisensi GPL yang standard, aplikasi yang hanya melakukan linking ke eCos tanpa memodifikasi eCos tidak perlu dilisensi dengan GPL. Karena dilatarbelakangi lingkungan open-source, eCos menyertakan sejumlah fungsi tambahan dari lingkungan yang mendukungnya. Fungsi-fungsi ini biasanya disediakan oleh kontributor pihak ketiga eksternal, sebagai hasil pengembangan berdasar kebutuhan mereka sendiri. Beberapa diantaranya adalah : POSIX, EL/IX, dan uITRON Compatibility Layers, ROM Monitor, RAM dan ROM filesystem, PCI, TCP/IP Networking, Embedded Simple Object Access Protocol (SOAP) Toolkit, Kaffe Java Virtual Machine, Bluetooth dan Wireless Application Protocol (WAP), dan Embedded Web Server. 2.2.14. Perbandingan dengan Embedded OS lain Tabel 2.2, diambil dari An Introduction to eCos, paper yang ditulis oleh Robert Sgandurra, membandingkan beberapa fitur dasar dari eCos dengan tiga embedded OS lain. 13 Tabel 2.2: Perbandingan antara eCos, VxWorks, Linux, dan Real-Time Linux 14 2.3. Pengiriman Dokumen Fax 2.3.1. Umum Fax (singkatan dari facsimile dari bahasa Latin fac simile yang artinya membuat serupa atau membuat sebuah salinan) adalah sebuah teknologi telekomunikasi yang digunakan untuk pertukaran salinan dokumen, khususnya menggunakan devais yang beroperasi pada jaringan telepon. Istilah telecopy dan telefax juga digunakan sebagai sinonim. Mesin fax pada dasarnya dibentuk dari sebuah scanner, sebuah modem, dan sebuah printer. Scanner mengubah isi fisik dokumen ke dalam bentuk gambar digital, modem mengirim data gambar melalui jaringan telepon, dan printer menghasilkan salinan / duplikat dokumen aslinya. Secara umum, prosedur pengiriman dokumen antara dua terminal fax pada PSTN terdiri dari : • proses memulai dan mengakhiri panggilan, • pencocokan kompatibilitas, status, dan pengendalian perintah, • pemeriksaan dan pengawasan saluran, • fungsi pengendalian dan pemanggilan kembali dokumen fax oleh operator. 2.3.2. Prosedur Kerja Mesin Fax Pada proses panggilan fax yang umum terjadi tanpa adanya kesalahan, tahapan panggilan dapat diilustrasikan pada Gambar 2.2. Gambar 2.2: Prosedur kerja fax 15 2.3.2.1. Fase A Prosedur Memulai Panggilan Proses terjadinya sebuah panggilan fax dapat dilakukan secara manual, dengan keberadaan seorang operator, atau secara otomatis. Terdapat empat metoda operasi yang dapat dilakukan, yaitu : yaitu : • operasi manual pada terminal pemanggil dan operasi manual pada terminal terpanggil, • operasi manual pada terminal pemanggil dan operasi otomatis pada terminal terpanggil, • operasi otomatis pada terminal pemanggil dan operasi manual pada terminal terpanggil, • operasi otomatis pada terminal pemanggil dan operasi otomatis pada terminal terpanggil. 2.3.2.2. Fase B Prosedur Pra Pengiriman Pesan Fase ini terdiri dari proses identifikasi kapabilitas dan pemanggilan perintah-perintah dari kondisi yang dipilih sesuai konfirmasi dari kondisi yang diterima. Pada fase ini terdapat dua bagian penting, yaitu bagian identifikasi dan bagian perintah. Bagian identifikasi mencakup identifikasi kapabilitas, konfirmasi untuk penerimaan, identifikasi terminal (opsional), dan identifikasi fasilitas nonstandard (opsional). Pada bagian perintah, terdapat perintah pemeriksaan kapabilitas, training, sinkronisasi, dan beberapa perintah tambahan seperti : perintah untuk fasilitas non-standard, identifikasi terminal, perintah polling (pengiriman) dan penghilangan peredam gema (echo suppresser disabling). 2.3.2.3. Fase C1 Prosedur In-message Prosedur ini terjadi bersamaan waktunya dengan pengiriman pesan dan pengendalian terhadap proses pensinyalan secara lengkap untuk prosedur saat pengriman pesan, misalnya sinkronisasi saat pengiriman pesan, pendeteksi kesalahan dan perbaikan serta pengawasan saluran. 16 2.3.2.4. Fase C2 Prosedur Pengiriman Pesan Pada fase ini pesan dikitim sesuai standard fax yang sudah ditetapkan oleh International Telecommunication Union (ITU). 2.3.2.5. Fase D Prosedur Pasca Pengiriman Pesan Prosedur pasca pengiriman pesan memuat informasi berikut : • pensinyalan yang menunjukkan akhir dari pesan, • pensinyalan sebagai konfirmasi, • pensinyalan multi halaman, • prosedur pensinyalan di bagian akhir sesi fax. 2.3.2.6. Fase E Prosedur Akhir Panggilan Prosedur akhir panggilan terjadi setelah diterimanya signal post-message untuk kondisi berikut : • time-out, yaitu ketika sinyal yang telah dispesifikasikan oleh prosedur fax tidak diterima dalam rentang periode time-out tertentu, terminal dapat mengirimkan sinyal ke operator atau memutuskan hubungan telepon; • prosedur interrupt, di mana prosedur fax dapat diinterupsi oleh pengiriman sinyal prosedur interrupt, dengan bantuan operator atau dengan memutuskan hubungan telepon; • perintah, di mana hubungan pada terminal terpanggil dapat diputus oleh terminal terpanggil dengan menggunakan sejumlah perintah, misalnya Escape Character. 2.3.3. Fax Modem Kebanyakan modem mendukung juga pengiriman fax dengan prosedur seperti di atas. Pada modem-modem tersebut, modem dapat beroperasi pada mode data atau mode fax. Mode data digunakan untuk pengiriman data sembarang antara dua buah modem, sedangkan mode fax digunakan khusus untuk pengiriman dokumen fax. 17 2.4. AT Command 2.4.1. Penjelasan umum AT Command Set (AT adalah singkatan dari attention), atau disebut juga Hayes Command Set, merupakan sekumpulan perintah yang digunakan untuk memberi instruksi pada modem. Sebelum adanya Bulletin Board System (BBS), modem biasanya beroperasi pada line telepon yang selalu dimulai dan diakhiri dengan sebuah modem. Pengguna biasanya harus melakukan dial secara manual sebelum memulai koneksi, atau mengangkat telepon jika berdering. Dalam kasus-kasus tertentu komputer harus memanggil beberapa nomor, dan untuk hal ini digunakan dialer yang terpisah, dipasang pada port input/output yang berbeda di komputer (umumnya adalah port RS-232). Ketika Dennis Hayes merancang smart modem pertamanya pada tahun 1977, ia menemukan sebuah masalah yang sebelumnya tidak pernah dialami pembuat modem, yaitu bagaimana memberitahukan modem nomor telepon yang harus di-dial, hanya dengan menggunakan satu port. Salah satu solusi yang dapat dilakukan adalah menggunakan command pins berbeda yang khusus untuk mengirim dan menerima perintah. Solusi lain adalah menggunakan sebuah pin sinyal yang mengindikasikan bahwa modem harus memperlakukan data yang masuk sebagai perintah. Tetapi, untuk menghemat uang, Hayes memilih untuk menggunakan kembali pin data yang sudah ada tanpa modifikasi. Modem dibuat agar dapat beroperasi pada dua mode: Mode data di mana modem mengirim data kepada remote modem, dan Mode perintah di mana data diterjemahkan sebagai perintah kepada local modem. Pemberian AT command biasanya diakhiri dengan karakter <CR> (ASCII 13), atau carriage return. Pada terminal teks biasanya karakter ini akan mengembalikan kursor ke awal baris. Respons dari modem biasanya dimulai dan diakhiri dengan kombinasi karakter <CR><LF>, di mana <LF> (ASCII 10) adalah line feed. Pada terminal teks <LF> biasanya membuat kursor turun satu baris. 18 2.4.2. Contoh AT Command Ada sejumlah AT command yang dapat digunakan untuk mengatur bagaimana modem beroperasi. Perintah-perintah ini dapat diberikan ke modem di awal sebelum komunikasi dengan remote modem (atau mesin fax) terjadi, yaitu untuk inisialisasi, atau ketika komunikasi modem itu sendiri. Beberapa contoh perintah AT command adalah : AT, yang akan dibalas dengan respons OK oleh modem, gunanya hanya untuk memastikan komunikasi dengan modem telah terjadi dengan baik. ATEn, jika n adalah 0 berarti disable command echo, atau membuat agar modem tidak mengirimkan balik perintah yang diterimanya (pada terminal teks biasanya berarti perintah yang diberikan ke modem tidak akan tampil di layar), dan jika n adalah 1 berarti enable command echo, yaitu modem akan mengirim kembali perintah yang diterima (perintah ditampilkan pada layar terminal); AT+FLID=<local ID>, berguna untuk menentukan local ID (nomor telepon) dari modem; AT+FCLASS=<class>, yaitu untuk menentukan kelas fax yang digunakan, kelas 0 berarti mode data (bukan fax), dan untuk fax biasanya ada kelas 1, 2, dan 2.0; AT+FCR=n, yang digunakan untuk mode fax, yaitu jika n bernilai 1 maka modem dapat menerima fax (enable receive capability), sedangkan jika bernilai 0 maka modem tidak dapat menerima fax; ATD[nomor], digunakan untuk memulai proses dial ke nomor tujuan, nomor juga dapat dikosongkan apabila diinginkan; AT+FDT, untuk mengirimkan data fax pada mode fax kelas 2; AT+FET=n, untuk mengakhiri pengiriman sebuah halaman fax pada mode fax kelas 2, jika n adalah 0 berarti masih ada halaman berikutnya, jika n adalah 2 berarti sudah tidak ada halaman lagi; ATA, digunakan untuk menjawab panggilan yang masuk; AT+FDR, untuk menerima data fax pada mode fax kelas 2; ATH, untuk mengakhiri koneksi yang terjadi pada mode data. Perintah-perintah lain serta penjelasan yang lengkap dari semua AT 19 command yang didukung suatu modem dapat dilihat dari referensi AT command yang diberikan oleh modem tersebut. 2.4.3. Mengirim Fax Tabel 2.3 menunjukkan contoh sesi pengiriman fax dua halaman dengan menggunakan mode fax kelas 2. Contoh ini diambil dari referensi AT command untuk modem Rockwell. Tabel 2.3: Contoh sesi pengiriman fax dengan mode fax kelas 2 Perintah ke modem Respons dari modem AT+FCLASS=2 OK AT+FLID=<local ID> OK AT<dial string> +FCON [+FCSI: <CSI>] +FDIS: <DIS codes> OK AT+FDT +FDCS: <DCS codes> CONNECT <XON> <1st page data> <DLE><ETX> OK AT+FET=0 +FPTS: 1 OK AT+FDT CONNECT <XON> <2nd page data> <DLE><ETX> OK AT+FET=2 +FPTS: 1 +FHNG: 0 OK 20 2.4.4. Menerima Fax Tabel 2.4 menunjukkan contoh sesi penerimaan fax dua halaman dengan mode fax kelas 2, yang juga diambil dari referensi AT command untuk modem Rockwell. Tabel 2.4: Contoh sesi penerimaan fax dengan mode fax kelas 2 Perintah ke modem Respons dari modem AT+FCR=1 OK AT+FLID=<local ID> OK ATA +FCON [+FTSI: TSI] +FDCS: <DCS codes> OK AT+FDR +FCFR [+FDCS: <DCS codes>] CONNECT <DC2> <page data stream> <DLE><ETX> +FPTS: 1,<lc> +FET: 0 OK AT+FDR CONNECT <DC2> <page data stream> <DLE><ETX> +FPTS: 1,<lc> +FET: 2 OK AT+FDR +FHNG: 0 OK 21 2.5. Kriptografi 2.5.1. Penjelasan umum Kriptografi (cryptography), berasal dari kata kryptós yang berarti rahasia dan kata gráfo yang berarti menulis, merupakan ilmu dan seni untuk menjaga pesan agar aman. Algoritma kriptografik (cryptographic algorithm) disebut cipher, merupakan persamaan matematik untuk enkripsi dan dekripsi. Biasanya kedua persamaan matematik tersebut memiliki hubungan yang cukup erat. Proses untuk mengamankan sebuah pesan (plaintext) menjadi pesan yang tersembunyi (cyphertext) adalah enkripsi. Ciphertext merupakan pesan yang sudah tidak dapat dibaca dengan mudah. Secara matematis proses enkripsi dapat dituliskan seperti pada persamaan 2.1. C = E(M) (2.1) Pada persamaan 2.1, E adalah proses enkripsi, M adalah pesan, dan C adalah ciphertext. Proses kebalikan dari enkripsi, yaitu mengubah kembali ciphertext menjadi pesan semula disebut dekripsi. Secara matematis proses dekripsi dapat dituliskan seperti pada persamaan 2.2. M = D(C) (2.2) Pada persamaan 2.2, D adalah proses dekripsi. Biasanya untuk melakukan proses enkripsi dan dekripsi digunakan suatu kunci (key). Apabila kunci yang digunakan tidak sesuai, maka ciphertext tidak dapat dikembalikan menjadi pesan semula. Dengan demikian dalam kriptografi yang perlu dijaga kerahasiaannya adalah kunci. Kriptografi secara umum dapat dibagi menjadi dua macam : symmetric-key cryptograhy, yaitu kriptografi di mana proses enkripsi dan dekripsi harus menggunakan kunci yang sama, sehingga pengirim dan penerima harus sama-sama mengetahui kunci yang digunakan; public-key cryptograhy, yaitu kriptografi di mana proses enkripsi dan dekripsi 22 menggunakan kunci yang berbeda, tetapi saling berhubungan secara matematis. Pada kriptografi ini, setiap orang memiliki kunci publik dan kunci privat, suatu pesan yang dienkripsi dengan kunci publik seseorang hanya dapat didekripsi dengan kunci privat orang tersebut. 2.5.2. Block Cipher Salah satu jenis simmetric-key cryptograhy yang umum adalah block cipher, yaitu symmetric-key cryprography yang beroperasi pada kumpulan bit-bit dengan panjang tertentu, disebut blok. Pada proses enkripsi, sebuah block cipher dapat menerima misalnya blok 128 bit plaintext sebagai input, dan menghasilkan output berupa ciphertext yang juga 128 bit. Transformasi data dikendalikan menggunakan input kedua yaitu kunci. Proses dekripsi juga sama, 128 bit ciphertext akan didekripsi dengan kunci menjadi 128 bit pesan semula. Untuk mengenkripsi data dengan ukuran lebih dari 1 blok, perlu digunakan sebuah mode operasi. Contoh mode operasi ini adalah Electronic Codebook (ECB), Cipher Block Chaining (CBC), Cipher Feedback (CFB), dan Output Feedback (OFB). Electronic codebook (ECB) adalah mode paling sederhana, yaitu pesan dibagi-bagi menjadi blok dan tiap blok dienkripsi dengan menggunakan kunci yang sama. Pada mode ini dua buah blok plaintext yang identik akan menghasilkan blok ciphertext yang sama juga. Gambar 2.3 menunjukkan enkripsi pada mode ini. Gambar 2.3: Enkripsi pada mode Electronic Codebook (ECB) Cipher Block Chaining (CBC) menambahkan mekanisme feedback pada skema enkripsi. Pada CBC, sebuah blok plaintext di-XOR dengan ciphertext blok 23 sebelumnya sebelum blok tersebut dienkripsi. Blok pertama dienkripsi dengan sebuah initialization vector. Pada mode ini, dua blok yang identik tidak akan menghasilkan ciphertext yang sama. Gambar 2.4 menunjukkan enkripsi pada mode ini. Gambar 2.4: Enkripsi pada mode Cipher Block Chaining (CBC) Cipher Feedback (CFB) dan Output Feedback (OFB) adalah mode di mana yang dienkripsi justru bukan plaintext tetapi suatu nilai lain, dan plaintext akan diXOR dengan nilai tersebut. Pada CFB, yang mula-mula dienkripsi adalah initialization vector, dan hasilnya di-XOR dengan plaintext. Hasilnya akan menggantikan initialization vector untuk dienkripsi pada blok berikutnya. OFB mirip dengan CFB, tetapi yang dienkripsi pada blok-blok berikutnya adalah hasil enkripsi blok sebelumnya sebelum di-XOR dengan plaintext.. 2.5.3. Advanced Encryption Standard (AES) Advanced Encryption Standard (AES), atau disebut juga Rijndael, adalah sebuah block cipher yang diadopsi sebagai standard enkripsi oleh pemerintah Amerika Serikat. AES diharapkan menjadi metode enkripsi yang digunakan secara luas dan dianalisis secara ekstensif, seperti pendahulunya yaitu Data Encryption Standard (DES). AES dikembangkan oleh dua orang kriptografer dari Belgia, Joan Daemen dan Vincent Rijmen, keduanya merupakan alumni dari Katholieke Universiteit Leuven, dan menyerahkan kriptografi yang dikembangkan mereka pada proses seleksi AES dengan nama "Rijndael", kombinasi dari nama keduanya. AES memiliki ukuran blok yang tetap sebesar 128 bit, sedangkan panjang 24 kunci bisa salah satu antara 128, 192, atau 256 bit. Proses enkripsi dan dekripsi AES terdiri dari beberapa ronde (round), di mana proses pada setiap ronde sama, kecuali beberapa parameter dan penggunaan subkey yang berbeda. Algoritma yang menghitung subkey untuk setiap ronde berdasarkan kunci yang digunakan disebut key schedule. AES beroperasi pada array byte berukuran 4x4, disebut state. Untuk proses enkripsi, setiap ronde dari AES (kecuali ronde terakhir), terdiri dari 4 tahap: 1. AddRoundKey - setiap byte dari state dikombinasikan dengan kunci ronde, setiap kunci round didapatkan dari kunci cipher menggunakan key schedule. 2. SubBytes - langkah substitusi yang tidak linear di mana setiap byte digantikan dengan byte lain berdasarkan lookup table. 3. ShiftRows - langkah transposisi di mana setiap baris dari state di-shift menurut siklus sebanyak jumlah tertentu. 4. MixColumns - operasi penggabungan yang beroperasi pada kolom-kolom state, menggabungkan 4 byte pada setiap kolom menggunakan transformasi linear. Pada ronde terakhir MixColumns digantikan dengan sebuah AddRoundKey lain. Keamanan Kriptografi AES Algoritma kriptografi Rijndael dipilih dari sejumlah algoritma kriptografi lainnya sebagai AES karena setelah melalui proses standarisasi yang berlangsung selama 5 tahun, Rijndael dinilai sebagai algoritma yang paling cocok untuk menjadi standard. Dari sejak terpilihnya sebagai AES pada tahun 2001 sampai sekarang, satu-satunya serangan yang berhasil terhadap Rijndael adalah side channel attack, yaitu serangan yang bukan menyerang algoritma cipher yang digunakan, melainkan menyerang implementasi dari cipher tersebut pada sistem. Pada bulan April 2005, D.J. Bernstein mengumumkan penggunaan cache timing attack yang ia gunakan untuk menyerangkan sebuah server yang menggunakan enkripsi AES dari OpenSSL. Tetapi server ini dibuat agar memberitahukan sebanyak mungkin informasi yang berhubungan dengan timing, dan serangan membutuhkan lebih dari 200 juta plaintext. Pada bulan Oktober 2005, Dag Arne Osvik, Adi Shamir, dan Eran Tromer 25 mempresentasikan sebuah paper yang mendemonstrasikan cache timing attacks terhadap AES yang berhasil mendapatkan kunci AES hanya dengan 800 penulisan, dalam 65 millisecond. Tetapi untuk melakukan serangan ini penyerang harus dapat menjalankan program pada sistem yang sama dengan yang melakukan operasi enkripsi AES. Kunci AES dapat memiliki panjang 128 bit, 192 bit, atau 256 bit. Dengan panjang kunci 128 bit saja, terdapat 3,4 x 1038 kemungkinan kunci. Pada akhir tahun 1990, sebuah mesin dibuat untuk secara khusus mendapatkan kunci kriptografi Data Encryption Standard (DES). Mesin tersebut dapat memperoleh kunci DES dalam beberapa jam dengan mencoba semua kombinasi kunci yang mungkin (brute force attack). Tetapi panjang kunci DES hanya 56 bit. Jika diasumsikan dapat dibuat sebuah mesin yang bisa mendapatkan kunci DES hanya dalam satu detik (berarti mampu mencoba 255 kunci dalam satu detik), mesin tersebut masih akan membutuhkan sekitar 149 trilliun tahun untuk mendapatkan kunci AES yang 128 bit dengan mencoba semua kombinasi kunci. Menurut National Institute of Standards and Technology (NIST), institusi Amerika Serikat yang menentukan standard AES, kriptografi AES akan dapat tetap aman sampai lebih dari 20 tahun. 2.6. Embedded PC Arsitektur yang kompatibel dengan PC adalah pilihan yang populer untuk sistem embedded karena arsitektur tersebut sudah umum digunakan. Tetapi desktop PC tidak cocok digunakan untuk aplikasi embedded. Embedded PC merupakan sebuah komputer yang terlihat seperti PC oleh software, tetapi dibuat agar cocok untuk sistem embedded. Embedded PC biasanya merupakan komputer lengkap yang dibuat dalam satu board, disebut Single Board Computer. Dengan menggunakan arsitektur PC, perancangan sistem embedded dapat dilakukan dengan biaya, resiko, dan waktu yang lebih sedikit, sehingga dapat diperoleh time-to-market yang lebih cepat. Selain itu, dengan menggunakan arsitektur PC, komponen-komponen yang standard untuk hardware dan software tersedia secara luas. Tetapi bus PC yang standard dan komponen-komponen hardware yang digunakan terlalu besar dan mahal untuk sistem embedded. Karena 26 itu diperlukan standard yang lebih cocok untuk Embedded PC. PC/104 adalah sebuah standard untuk embedded computer yang dikontrol oleh PC/104 Consortium. PC/104 dibuat untuk sistem embedded dengan fungsi yang spesifik di mana aplikasi bergantung pada pengambilan data yang reliable meskipun pada kondisi lingkungan yang ekstrim. Bus PC/104 terdiri dari 104 pin, yang terdiri dari semua pin-pin yang biasanya digunakan pada bus Industry Standard Architecture (ISA), ditambah beberapa pin tambahan untuk ground yang berguna untuk menjamin integritas dari bus tersebut. Timing dari sinyal dan level tegangan yang digunakan sama dengan pada bus ISA. Perbedaan utama antara PC/104 dengan bus yang biasa terdapat pada PC adalah: ukuran yang kecil, yaitu hanya 3,6 x 3,8 inch; suatu modul PC/104 dapat dipasang di atas modul PC/104 lainnya (selfstacking); konektor menggunakan pin dan socket; arus yang lebih kecil, sehingga mengurangi konsumsi daya. Gambar 2.5: Dimensi modul PC/104 Tujuan yang ingin dicapai dari PC/104 adalah dapat dibuatnya sistem embedded dengan teknologi PC dalam ruang yang terbatas menggunakan arsitektur yang standard. Dengan adanya standard tersebut, berbagai macam hardware modul dari berbagai vendor tersedia, karena semua vendor mengikuti standard yang sama. 27