eCos Hello World!
Building Kernel dan Paket
Pada paket eCos untuk Linux, tersedia dua perangkat dalam membangun sistem operasi eCos, yaitu ecosconfig dengan tampilan text-based dan configtool dengan tampilan GUI. Pada perancangan ini digunakan ecosconfig untuk membuat template eCos dan membuat build tree dari konfigurasi eCos, sedangkan configtool hanya digunakan untuk melakukan konfigurasi.
Proses membangun kernel dan paket dimulai dengan memilih template yang sesuai dengan target hardware. Pada percobaan kali ini, dipilih template default yang memasukkan semua paket standard untuk platform i386pc.
Perintah
untuk membuat template tersebut adalah :
$ ecosconfig new pc default
Argumen “new” menginstruksikan ecosconfig untuk membentuk sebuah konfigurasi baru. Argumen “pc” menunjukkan bahwa target hardware yang digunakan adalah i386pc, dan argumen “default” menunjukkan bahwa semua paket standard yang tersedia pada template akan dimasukkan dalam file konfigurasi.
Perintah ini akan menghasilkan sebuah file konfigurasi “ecos.ecc”. File ini merupakan file konfigurasi dari eCos.
Untuk edit konfigurasi tersebut, digunakan perintah:
$ configtool ecos.ecc
Perintah tersebut akan membuka window GUI untuk konfigurasi eCos.
Tampilan window dari konfigurasi ini:
Di bawah ini adalah beberapa konfigurasi eCos yang diubah dari template default yang digunakan.
- eCos HAL –> i386
architecture –> i386 PC target –> Startup Type
Opsi ini digunakan untuk mengatur bagaimana PC akan melakukan booting ke eCos. Boot loader yang akan digunakan adalah GRand Unified Boot loader (GRUB), jadi opsi ini diisi dengan nilai “GRUB”.
- eCos HAL –> i386
architecture –> i386 PC target –> Number of communication channels
Opsi ini digunakan untuk menentukan jumlah serial port yang dimiliki PC. Pada percobaan kali ini dipilih opsi 3 karena digunakan juga port serial ketiga yang merupakan virtual serial port (PC Screen).
- eCos HAL –> i386
architecture –> i386 PC target –> Diagnostic Serial Port
Opsi ini digunakan untuk
mengatur bagaimana PC akan menampilkan diagnosa dari program, misalnya output dari fungsi printf(). Pada percobaan kali ini dipilih opsi 2 yang dalam hal ini menunjuk ke virtual serial port. Virtual serial port di sini adalah PC Screen. Untuk keterangan port ke berapa yang terhubung dengan port serial atau virtual serial, dapat dilihat pada keterangan dari sel “Number of communication channels”.
- eCos HAL –> i386
architecture –> i386 PC target –> Output to PC Screen
Secara default eCos akan menggunakan serial port untuk mengirimkan output seperti output dari printf(). Untuk membuat agar eCos menggunakan monitor untuk menampilkan output, opsi ini harus dibuat aktif.
Setelah selesai konfigurasi, file “ecos.ecc” disimpan kembali dan selanjutnya dibuat build tree dengan menggunakan ecosconfig, yaitu dengan perintah :
$ ecosconfig tree
Langkah berikutnya, dibuat library eCos dengan menggunakan perintah :
$ make
Hasilnya adalah static library pada subdirektori “install/lib” yang siap di-link dengan aplikasi untuk menjadi file image.
Pembuatan File Image
File image yang dibuat nanti akan di load melalui proses boot (native). Pertama dilakukan proses compile terlebih dahulu hingga diperoleh object file dari source code yang kita buat. Source code yang dibuat:
Untuk meng-compile file hello.c menjadi hello.o digunakan perintah:
i386-elf-gcc -I<dir>/include -c hello.c
<dir> di sini merupakan alamat direktori tempat file header yang dibutuhkan untuk proses compile berada. Pada percobaan, file tersebut berada di direktori /home/lss/install/include/, maka perintah yang dijalankan:
i386-elf-gcc -I/home/lss/install/include -c hello.c
Setelah source code yang diperlukan di-compile menjadi object file, selanjutnya semua
object code di-link, termasuk dengan library eCos yang sudah di-build
sebelumnya. Perintah yang digunakan adalah :
i386-elf-gcc -o hello.elf -L<dir>/lib hello.o -Ttarget.ld -nostdlib
<dir> di sini merupakan alamat direktori tempat library eCos. Pada percobaan, file tersebut berada di direktori /home/lss/install/lib/, maka perintah yang digunakan adalah:
i386-elf-gcc -o hello.elf -L/home/lss/install/lib hello.o -Ttarget.ld -nostdlib
Hasil dari proses linking ini, “hello.elf”, merupakan file executable dengan format Executable and Linkable File (ELF).
Karena pada percobaan kali ini digunakan GRUB sebagai boot loader dari eCos, maka file “hello.elf” tadi diletakkan di dalam direktori /boot/. Langkah berikutnya adalah menambahkan baris berikut pada file menu.lst yang terdapat
dalam direktori /boot/grub/:
title eCos sakti
root (hd0,4)
kernel /boot/hello.elf
boot
Setelah itu dilakukan proses reboot pada PC yang digunakan.
Hasil Implementasi
Tampilan pada saat proses boot:
Kemudian dipilih opsi “eCos sakti” pada menu boot loader (GRUB) yang tampil untuk melakukan
proses booting ke eCos.
Output setelah proses booting ke eCos:
NB: Percobaan dilakukan dengan menggunakan distro Linux Ubuntu 7.10 (Gutsy Gibbon).
Semoga tulisan ini dapat bermanfaat bagi orang lain yang ingin mencoba eCos ^^
Selamat Mencoba…
— Learning by doing, you do you understand —









Salam kenal mas, terus terang blognya sangat membantu.
Kalau saya ingin menanyakan tentang embedded sistem, lebih enak lewat blog atau lewat email. Karena tugas akhir saya berkaitan dengan embedded system.
Kayanya enak lewat blog aja d… Jadi orang lain jg bisa tau…
Andry, kalo ecos untuk windows gimana cara bikin paket imagenya, build tree dan confignya coz saya udah install ecos untuk windows? Embedded saya CSB625 dengan micromonitor sebagai system boot platformnya,,
Windows? Pake cygwin? Kemarin sih saya nyobainnya pake Linux… (Harusnya sama saja). Saya punya file pdf yang mungkin bisa membantu. Di sana juga dibahas pengembangan eCos pake Windows (cygwin). Klo berminat, bisa kirimin alamat e-mail ke andry_nkt@yahoo.com atau KPE05001@gmail.com nanti saya kirimkan filenya. Trim’s.
ndri, awak bingung nih ecos2nya
ga punya linux lagi,,, cygwinnya dapet dari mana sih?
Saya coba perintah ini gak bisa:
i386-elf-gcc -I/include -c hello.cBaru jalan setelah diubah menjadi
i386-elf-gcc -c -I/include -c hello.cKenapa ya ?
Hmm… tampaknya merupakan salah satu anomali lg nih…
gile… modul praktikum 3 awak nih… hahahaha