BeagleBoneBlack

Beagle Bone Black son zamanlarda popüler olan, 50$ mertebesindeki fiyatı ve genişleme imkanlarıyla öne çıkan bir geliştirme platformudur.

bone black

İşlemci TI AM335x 1GHz ARM® Cortex-A8
RAM 512MB DDR3
Storage 2GB beya 4GB 8-bit eMMC on-board flash
GPU 3D hızlandırıcı
NEON Desteği Var
USB Host Var
USB Power Var
Micro SD Kart Var
Ethernet Var
HDMI Var
Konsol Kablosu Yok, ayrıca 3.3V FTDI - TTL dönüştürücü kablosu alınmalı
NAND Flash Yok

Konsol Kablosu

  • BeagleBone-Black versiyonunun beraberinde konsol kablosu gelmemektedir

  • Bootloader seviyesinde konsol erişimi için FTDI-TTL 3.3V USB dönüştürücü kablosuna ihtiyaç bulunmaktadır.

konsol kablosu

Çalışma Dizinin Hazırlanması

  • Bu dokümanda kullanıcının ev dizini altında, beagle alt dizini oluşturulduğu varsayılmıştır:
$ mkdir $HOME/beagle
  • Linux kernel kaynak kodları beagle/kernel dizininde bulundurulacaktır

  • Buildroot kaynak kodları, beagle/buildroot dizininde bulundurulacaktır

Buildroot BeagleBoneBlack Kernel

  • Buildroot içerisinde BeagleBoard için hazırlanmış öntanımlı kernel derleme konfigürasyonu bulunmaktadır

  • Ancak Ağustos 2013 itibariyle, bu konfigürasyon ile çalışan BeagleBoardBlack kernel imajı üretmek mümkün değildir

  • Kernel derleme işleminin Buildroot dışında ayrıca yapılması gerekmektedir

Buildroot Kaynak Kodunun İndirilmesi

Buildroot kaynak kodları git üzerinden klonlanmalıdır:

$ git clone git://git.buildroot.net/buildroot

Out-Of-Tree build yöntemi ile $HOME/beagle dizini altında build dizini içerisinde buildroot ana çalışma dizinimizi oluşturalım:

$ cd buildroot
$ make O=$HOME/beagle/build beaglebone_defconfig

İşlem bitiminde ana beagle çalışma dizininiz altında, build dizini oluşacaktır.

Bu noktadan sonra buildroot ile ilgili tüm işlemlerinizi, build dizini altında iken gerçekleştirmelisiniz:

$ cd $HOME/beagle/build

Buildroot Konfigürasyonu

Buildroot içerisinden çıkan beaglebone_defconfig dosyasında board ile ilgili temel ayarlar mevcuttur.

Bununla birlikte aşağıdaki temel başlıklar için konfigürasyon üzerinde düzenlemeler yapılmalıdır:

  • Kullanılacak toolchain seçimi
  • Dosyaların download edileceği dizinle ilgili düzenlemeler
  • İşlem sonucunda oluşturulacak dosya sistemi tipi
  • /dev yönetimi için tercih edilen yöntem
  • Sistemde yer alması istenilen paketler
  • Bunlar temel düzenlemeler olup, öncelikle bu başlıklara değinilecektir.

Toolchain Seçimi

Buildroot içerisinde toolchain seçiminde External Toolchain kullanımı önerilir. External Toolchain kullanılacağı belirtildikten sonra, toolchain tipi seçilmelidir

Genelde 3 toolchain tipi bulunur:

  • Linaro Toolchain versiyonları
  • Sourcery CodeBench Toolchain versiyonları
  • Custom toolchain

BeagleBone Black için Linaro toolchain güncel versiyonu seçilmelidir. Sourcery CodeBench toolchain'leri henüz EABIhf ABI desteğine sahip olmadığından bu menüden seçilememektedir

Download Dizin Seçimi

Buildroot ile çalışırken, özellikle birden fazla projede buildroot kullanıldığında veya aynı projede farklı konfigürasyonlarda build işlemleri gerektiğinde, dosyaların her seferinde yeniden download edilmesi işlemleriyle vakit kaybetmemek için, genel bir download dizini belirtmekte fayda vardır.

Örneğimizde download dizini /opt/buildroot/downloads şeklinde seçilmiş olup aşağıdaki komutlarla öncelikle bu dizini oluşturabilirsiniz:

$ sudo mkdir -p /opt/buildroot/downloads
$ sudo chown -R $USER /opt/buildroot/downloads

Dosya Sistemi Seçimi

Buildroot ile işlem sonunda cloop, cpio, cramsfs, ext2, jffs2, romfs, squashfs, tar ve ubifs dosya sistemi imajları çıkartılabilir.

BeagleBone-Black üzerinden NAND flash değil, eMMC bulunduğundan ext4 gibi blok tabanlı aygıtlar üzerinde çalışan dosya sistemleri kullanılmalıdır.

Kernel Kaynak Kodunun İndirilmesi

Kaynak kodlar git üzerinden klonlanıp, 3.8 branch'i checkout edilmelidir:

$ git clone git://github.com/beagleboard/kernel.git
$ cd kernel
$ git checkout 3.8
$ ./patch.sh
$ cp configs/beaglebone kernel/arch/arm/configs/beaglebone_defconfig
$ wget "http://arago-project.org/git/projects/?p=am33x-cm3.git;a=blob_plain;f=bin/am335x-pm-firmware.bin;hb=HEAD" -O kernel/firmware/am335x-pm-firmware.bin

Kernel Derleme

Derleme işlemi öncesinde oluşan kernel dosyasını sıkıştırma ve u-boot kernel başlık bilgilerini eklemek için gerekli yardımcı araçların kurulu olduğundan emin olunuz:

$ sudo apt-get install lzop u-boot-tools

Kernel derleme işlemini aşağıdaki adımlarla yapabilirsiniz (tftp sunucu ana dizini /srv/tftp olduğu varsayılmıştır):

$ make ARCH=arm beaglebone_defconfig
$ make ARCH=arm \
CROSS_COMPILE=/home/demirten/beagle/build/host/usr/bin/arm-linux-gnueabihf- \
uImage dtbs -j4
$ make ARCH=arm \
CROSS_COMPILE=/home/demirten/beagle/build/host/usr/bin/arm-linux-gnueabihf- \
uImage-dtb.am335x-boneblack -j4
$ cp arch/arm/boot/uImage-dtb.am335x-boneblack /srv/tftp/uImage

Nfs-Root Çalışma

Aşağıdaki şekilde u-boot üzerinden temel değişkenleri ayarlayarak NFS üzerinden boot işlemini gerçekleştirebilirsiniz:

setenv serverip 192.168.7.1
setenv ipaddr 192.168.7.2
setenv console ttyO0,115200n8
setenv rootpath /home/demirten/beagle/build/target
setenv bootargs console=${console} root=/dev/nfs nfsroot=${serverip}:${rootpath},vers=3 rw ip=${ipaddr}
tftp 0x80200000 uImage-dtb.am335x-boneblack
bootm

uEnv.txt Kullanımı

BeagleBoneBlack için hazırlanan u-boot imajı, çalışmaya başladığında uEnv.txt dosyası bulması halinde içerisindeki değişkenleri import etmektedir. Bu metin dosyasını doğru şekilde düzenlemek suretiyle açılış işlemini u-boot imajını yeniden üretmek zorunda kalmaksızın kalıcı olarak özelleştirmeniz mümkündür.

Örnek bir uEnv.txt dosyasının içeriği aşağıda listelenmiştir:

kernel_file=zImage
initrd_file=uInitrd 
serverip=192.168.7.1
ipaddr=192.168.7.2
rootpath=/home/demirten/beagle/rootfs
console=ttyO0,115200n8

loadkernel=load mmc ${mmcdev}:${mmcpart} 0×80200000 ${kernel_file}
loadinitrd=load mmc ${mmcdev}:${mmcpart} 0×81000000 ${initrd_file}; setenv initrd_size ${filesize}
loadfdt=load mmc ${mmcdev}:${mmcpart} 0x815f0000 /dtbs/${fdtfile}

netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},vers=3 rw ip=${ipaddr}

#just zImage
boot_ftd=run loadkernel; run loadfdt
uenvcmd=run boot_ftd; run netargs; bootz 0×80200000 – 0x815f0000

#zImage + uInitrd: where uInitrd has to be generated on the running system.
#boot_ftd=run loadkernel; run loadinitrd; run loadfdt
#uenvcmd=run boot_ftd; run mmcargs; bootz 0×80200000 0×81000000:${initrd_size} 0x815f0000

results matching ""

    No results matching ""