Pendahuluan

Halaman Wiki ini menjelaskan langkah-langkah modifikasi BeagleBoard, mulai dari mengkompilasi sistem operasi sampai membootnya. Kebanyakan langkah di bawah bisa diterapkan pada BeagleBoard seri xM, dan bisa diterapkan pada seri C. Semua pranala (link) sukses diakses pada tanggal 3 Januari 2010, di masa mendatang mungkin saja diperlukan update untuk menghindari broken link.

Kompilasi Kernel Linux

Toolchain

BeagleBoard menggunakan prosesor ARM, jadi kita tidak bisa langsung memasukkan kernel linux yang kita kompil seperti pada perkuliahan SysProg. Source Code Kernel linux harus dikompil khusus untuk prosesor ARM menggunakan toolchain. Salah satu toolchain yang biasa dipakai mengkompil Linux untuk BeagleBoard adalah Sourcery G++. Anda dapat mengunduh Sourcery G++ yang gratisan (versi Lite) di sini (untuk Linux, 128MB).

Kernel

Pada dasarnya anda dapat menginstall distro Linux apapun pada BeagleBoard. Vendor BeagleBoard sudah menyatakan semuanya akan berjalan dengan kecepatan yang wajar. Namun, para praktisi menyarankan anda menginstall Linux Angstrom. Image Linux Angstrom untuk BeagleBoard pun sudah banyak tersedia. Terlepas dari itu, kita akan menginstall kernel Linux sendiri. Source code Linux yang sudah sedikit dimodifikasi khusus untuk BeagleBoard dapat diunduh di sini (untuk BeagleBoard versi B ke atas, 56MB).

Nantinya, kita juga akan membutuhkan u-boot. u-boot bisa diunduh di sini.

Mengkompil X-Loader

Tutorial ini nantinya akan memakai cara boot menggunakan SD Card, sehingga cara mengkompil X-Loader di bagian ini khusus untuk booting melalui SD Card. Jika anda ingin memboot menggunakan media lain, cara mengkompil X-Loader akan berbeda.

1. Buka berkas "include/configs/omap3530beagle.h".

2. Enable macro "CFG_CMD_MMC" sebagai berikut:

 /* For X-loader to be flashed on to NAND disable the below macro */
       #define CFG_CMD_MMC 1

3. Kompil x-loader dengan perintah sebagai berikut:

make CROSS_COMPILE=arm-none-linux-gnueabi- distclean
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3530beagle_config
make CROSS_COMPILE=arm-none-linux-gnueabi-

maka berkas "x-load.bin" akan tercipta.

4. Ubah "x-load.bin" menjadi MLO. Ini dibutuhkan ketika booting dari MMC nanti. Ikuti langkah berikut:

  1. Gunakan tool "SignGP" untuk men-sign image x-loader.
     ./signGP x-load.bin 
  2. Rename "x-load.bin.ift" jadi MLO
  3. Copy MLO ke MMC/SD card.

Mengkompil u-boot

Langkah-langkah mengkompil u-boot di bawah ini adalah untuk booting kernel biasa. Jika anda ingin mem-flashing NAND automatis, langkahnya akan berbeda dan diluar cakupan tutorial ini.

1. Buka berkas "include/configs/omap3530beagle.h".

2. Enable macro "CONFIG_BOOTCOMMAND" sebagai berikut:

/* buat comment pada CONFIG_BOOTCMD di bawah */       
/*
#define CONFIG_BOOTCOMMAND       \
"mmcinit;fatload mmc 0 0x80200000 x-load.bin.ift;\
nand unlock;nand ecc hw;nand erase 0 80000;nand write.i 0x80200000 0 80000;\
fatload mmc 0 0x80200000 flash-uboot.bin; nand unlock;\
nand ecc sw;nand erase 80000 160000; nand write.i 0x80200000 80000 160000;\0" 
*/

/* hilangkan comment pada CONFIG_BOOTCOMMAND seperti di bawah */
#define CONFIG_BOOTCOMMAND "\0" 

3. Kompil u-boot dengan perintah berikut:

make CROSS_COMPILE=arm-none-linux-gnueabi- distclean
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3530beagle_config
make CROSS_COMPILE=arm-none-linux-gnueabi-

Jika benar, maka berkas "u-boot.bin" akan tercipta.

Mengkompil Kernel

Kompil kernel dengan perintah berikut:

make CROSS_COMPILE=arm-none-linux-gnueabi- distclean
make CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_defconfig
make CROSS_COMPILE=arm-none-linux-gnueabi- uImage             

Jika benar, maka berkas "ulmage" akan tercipta di direktori arch/arm/boot directory

Memboot Linux Pada BeagleBoard

Bagian ini menjelaskan langkah-langkah memboot BeagleBoard dengan SD Card. Cara ini adalah cara yang paling umum dan direkomendasikan. Dua cara lain adalah dengan USB Boot dan NAND Boot. Namun tools untuk cara USB Boot masih experimental dan cara NAND Boot lebih rumit.

Alat-Alat yang Dibutuhkan

Pada paket BeagleBoard yang dibeli tidak disertakan kabel maupun konektor untuk membootnya sehingga kita harus membeli sendiri sebagian besar alat-alat yang disebutkan di bawah. Alat-alat tersebut dapat dibeli satu per satu dan kalau beruntung anda mendapatkannya dalam satu paket. Berikut adalah peralatan yang dibutuhkan:

Untuk Booting

  1. komputer yang ada port serialnya
  2. SD Card

Untuk I/O

  1. kabel HDMI male-to-DVI-D male
  2. monitor
  3. keyboard USB
  4. mouse USB

Untuk Sambungan I/O

  1. hub USB 3 port dengan Ethernet
  2. adapter 5mm barrel power plug-to-USB A male
  3. kabel On-The-Go (OTG) USB mini-A-to-USB-A female (boleh tidak ada)

Untuk Koneksi Serial

  1. kabel serial IDC10-to-DB9M
  2. kabel DB9M-to-USB
  3. kabel USB mini-B male-to-USB-A male
  4. kabel modem null DB9F-to-DB9F

Menyambungkan Alat-Alat

Membuat Koneksi Port Serial

(1) Kabel IDC10 ke BeagleBoard
(2) DB9M ke kabel DB9F modem
(3) Kabel DB9F ke kabel DB9M/USB
(4) Kabel DB9M/USB ke komputer

Membuat Koneksi USB dan Power

(5) USB mini-A ke BeagleBoard
(6) Hub USB (power) ke USB mini-A tadi
(7) Kabel USB/5mm barrel ke Hub
(8) 5mm barrel ke BeagleBoard

PERHATIAN: Jangan menyambungkan power listrik ke hub dulu!

Membuat Koneksi I/O

(9) Kabel video HDMI ke BeagleBoard
(10) DVI-D ke monitor
(11) Keyboard ke hub
(12) Mouse ke hub

Jika anda menyambungkannya dengan benar, akan terlihat kurang lebih seperti gambar di bawah

Menyiapkan Console

Setelah semua perangkat terpasang, tentu kita ingin mengetahui apakah berhasil atau tidak. Untuk itu satu-satunya cara adalah berinteraksi dengan output serialnya melalui console, yaitu dengan program emulator terminal. Dengan demikian, aktivitas apapun pada BeagleBoard dapat kita lihat di console. Untuk itu, kita memerlukan program emulator terminal seperti minicom (bisa diunduh di sini). Kemudian, ikuti langkah-langkah berikut:

  1. Install minicom pada komputer
  2. Jalankan setup sebagai root dengan perintah
     sudo minicom -s 
  3. Pilih "Serial Port Setup", kemudian pilih "Return"
  4. Ketik A untuk memilih port Serial Device, ubah ke direktori "/dev/ttySO", kemudian pilih "Return"
  5. Pastikan setting komunikasi (E) 115200 8N1.
  6. Matikan "Hardware Flow Control" dengan mengetik "F".
  7. Pasikan "Software Flow Control" juga mati.
  8. Pilih "Return" untuk kembali ke menu utama.
  9. Pilih "dfl" pada "Save Setup" agar setting ini menjadi default.
  10. Pilih "Exit" untuk keluar dan jalankan minicom dengan setting ini.

Menyalakan BeagleBoard

Untuk mengecek apakah sejauh ini sudah benar, kita nyalakan BeagleBoard dengan menyambungkan kabel USB ke BeagleBoard. Jika sudah benar maka akan muncul kurang lebih seperti di bawah

Texas Instruments X-Loader 1.41
Starting OS Bootloader...

U-Boot 1.3.3 (Jul 10 2008 - 16:33:09)

OMAP3530-GP rev 2, CPU-OPP2 L3-165MHz
OMAP3 Beagle Board + LPDDR/NAND
DRAM: 128 MB
NAND: 256 MiB
In:   serial
Out:  serial
Err:  serial
Audio Tone on Speakers ... complete
Hit any key to stop autoboot: 0
OMAP3 beagleboard.org #

Menyiapkan Linux

Berkas untuk boot terdiri dari 4 komponen, harus dicopy ke SD Card berdasarkan urutan berikut:
  1. 1st stage bootloader
  2. 2nd stage bootloader
  3. Ulmage (image boot linux)
  4. berkas sistem Linux

Pada firmware BeagleBoard terdapat pula bootloader:
1. 1st stage: X-loader
– Hanya cukup utk memboot 2nd stage bootloader.
– Dapat diload dari SD Card dlm bentuk MLO
2. 2nd stage: U-boot.
– Pada flash memory dlm file u-boot.bin.
– Menginisialisasi sistem lalu memboot kernel linux.
– Dapat dijalankan dari console.

Menyiapkan SD Card

Buat 2 partisi pada SD Card:
  1. FAT untuk menaruh bootloader & image kernel linux
  2. Ext3 untuk sistem berkas root linux
Kemudian, cabut SD Card & masukkan kembali ke komputer. Lakukan langkah-langkah berikut.
PERHATIAN: Wajib mengikuti urutannya!
  1. Copy MLO ke FAT
  2. Copy u-boot.bin ke FAT
  3. Copy ulmage ke FAT
  4. Extrak sistem berkas root ke ext3 dengan perintah:
     cd ext3FileSystem; tar xvjf downloadLocation/Angst*.tar.bz2 
  5. Unmount
     cd ~; sync; sudo unmount <nama_partisi_FAT>; sudo unmount <nama_partisi_ext3> 
  6. Cabut SD Card & masukkan ke BeagleBoard

Menghidupkan Linux

Nyalakan BeagleBoard, kemudian ketikkan perintah berikut:

setenv bootargs ‘console=ttyS0, 115200n8 root=/dev/mmcblk0p2 rw rootwait’
setenv bootcmd ‘mmcinit; fatload mmc 0 80300000 uImage.bin; bootm 80300000
saveenv
boot

Jika benar, akan muncul seperti di bawah ini (jika anda menggunakna linux Angstrom)

Dengan demikian anda telah memiliki BeagleBoard yang telah ada linux di dalamnya. Selamat bermain-main BeagleBoard! :)