U-Boot Giriş¶
U-Boot Linux çekirdeği gibi kendine özel bir konsolu ve komutları vardır. Bu komutlar ve belirli parametreleri kullanarak U-Boot’u yönlendiririz.(çekirdeği nerede arayacak, çekirdeğe hangi parametreleri verecek vs. gibi)
U-Boot Komutları¶
U-Boot komutlarının bir kısmı için link
Önemli olan U-Boot komutları şunlardır(kullanımları aşağıda verilmemiştir) :
bootz
,bootm
Belli bir RAM adresindeki zImage formatındaki kerneli yürütür.fatload
DOS dosya sistemine sahip cihazdan dosyayı RAM adresine yükler.ext2load
EXT2 dosya sistemine sahip cihazdan dosyasını RAM adresine yükler.ping
ağ testi için kullanılır.tftp
ağdan dosya çekip RAM’e yüklemek için kullanılır.dhcp
ağda bulunan DHCP serverdan IP almak için kullanılır.mmc
eMMC, SD-Kart donanımlarına yönelik komutları içerir.help
Varolan komutları listeler.
U-Boot komut seti bizim yapacağımız derlemeye göre değişkenlik gösterebilir. Örneğin FAT dosya sistemi ile ilgili komutları derleme esnasında yapacağımız konfigürasyona göre kapatıp/açabiliriz.
U-Boot Ortam Değişkenleri¶
U-Boot parametre ve komut bütününe ortam değişkenleri (environment variables) denir.
U-Boot ortam değişkenlerini derleme öncesinde, derleme sonrasında harici bir dosya ile veya komut satırından ayarlayabiliriz. Komut satırından yapılan değişiklikler eğer hedef cihazda U-Boot üzerinden kaydetme yapılıyorsa varsa kalıcı olarak saklanabilir. Ancak bu durum üretim için pek pratik değildir.
Ortam değişkenlerinin derleme öncesinde değiştirilmesi daha sonra işlenecektir.
Ortam değişkenleri ile ilgili U-Boot komutları şunlardır:
printenv
tüm ortam değişkenlerini listelersetenv
RAM’de ortam değişkeni varsa değiştirir yoksa ekler.saveenv
RAM’de olan ortam değişkenlerini kaydeder.
Harici ortam değişkeni dosyası olarak çeşitli formatlar var ancak bizim sistemimiz için uEnv.txt
dosyası kullanılacaktır. U-Boot uEnv.txt
dosyasını bulursa mevcut ortam değişkenlerini ezer.
Bazı önemli ortam değişkenleri şunlardır:
bootcmd
U-Boot’un boot amaçlı çalıştıracağı komuttur.bootargs
U-Boot’un kernele ileteceği parametreleri tutar.ipaddr
Cihazın IP Adresiserverip
tftpboot komutu için gerekli olan server IP adresi
Ortam değişkenleri ufak scriptler olabilirler, bu sayede çeşitli U-Boot komutları tek bir ortam değişkeni ile tanımlanabilir.
Örnek : uEnv.txt¶
loadaddr=0x82000000
fdtaddr=0x88000000
arg=setenv bootargs console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait
image=load mmc 0:1 ${loadaddr} uImage ;
fdt=load mmc 0:1 ${fdtaddr} am335x-bonegreen.dtb ;
uenvcmd=run arg;load image;load fdt;bootm ${loadaddr} - ${fdtaddr};
loadaddr
–> RAM adresi.
fdtaddr
–> RAM adresi.
arg
–> setenv
komutu ile bootargs
değişkeni; konsol ttyO0 (UART0) ve rootfs’in mmcblk0p2 içinde ext4 biçiminde olacak şekilde ayarlanır. bootargs
içindeki parametreler kernele bildirilir.
image
–> mmc0:1 (sd-kart boot bölümü) bölümünden uImage dosyasını okur ve loadaddr adresine yükler.
fdt
–> mmc0:1 (sd-kart boot bölümü) bölümünden am335x-bonegreen.dtb dosyasını okur ve fdtaddr adresine yükler.
uenvcmd
–> U-Boot’un yürüteceği ilk komuttur. Örneğimizde görüldüğü üzere U-Boot sırasıyla arg
, image
, fdt
komutlarını ve son olarak bootm
komutunu yürütecektir.