Raspberry Board Konfigürasyonu
Raspberry Pi cihazınız açılırken boot yükleyici uygulama tarafından SD kart üzerindeki birinci FAT bölümünde config.txt
adlı dosya aranır ve bu dosyada yer alan tanımlara göre cihazın çalışma biçimine dair bir takım özellikler ayarlanır.
Bu süreci PC mimarisindeki BIOS yazılımları ile benzeştirebiliriz. BIOS'lardan farklı olarak konfigürasyon için ekran üzerinde bir arayüz sunulamadığı için, tüm ayarlar config.txt
adındaki dosya üzerinde yapılır.
Değişikliklerin aktif olması için sistemin yeniden başlatılması gereklidir. config.txt
dosyası GPU tarafından çalıştırılan boot yükleyici içerisinden işlenmektedir. Dolayısıyla CPU ve Linux tarafı henüz başlamadan önce sistemle ilgili önemli ayarlamaların yapılabilmesi sağlanmaktadır.
Örnek olarak GPU ve CPU arasında belleğin hangi oranlarda paylaştırılacağı bu dosyadan ayarlanabilir. Bunun için gpu_mem
konfigürasyon anahtar sözcüğü kullanılır. Eğer 1 GB'lık bir Raspberry Board'unuz var ve GPU tarafına 128 MB ayırmak istiyorsanız config.txt
içerisine aşağıdaki satırı eklemelisiniz:
gpu_mem=128
Yukarıdaki satır boot yükleyici tarafından işlendiğinde 1 GB belleğin 128 MB'ı GPU kullanımına ayrılır, kalan 872 MB ise CPU (ve Linux) tarafından kullanılabilecek hale gelir. 1 GB bellekli modellerde GPU için ayırabileceğiniz minimum alan 16 MB, maksimum ise 944 MB olabilir.
Benzer şekilde CPU saat frekansı, GPU saat frekansı, SDRAM frekansı, H264 Video Decoder lisansları vb. ayarlanabilir. Aşağıdaki bölümlerde başlıca konfigürasyon bloklarını inceleyeceğiz.
Bellek Konfigürasyonu
gpu_mem
Sistemde yer alan GPU'nun belleğin ne kadarını kullanacağını bu şekilde belirtebiliriz. Raspberry Pi modelleri arasında bellek farklılıkları bulunduğundan 256 MB, 512 MB ve 1024 MB belleğe sahip Raspberry Pi modellerinde GPU için ayrılabilecek minimum ve maksimum değerler aşağıdaki tablodaki gibidir:
Raspberry Pi Modeli | Minimum GPU Belleği | Maksimum GPU Belleği |
---|---|---|
256 MB | 16 MB | 192 MB |
512 MB | 16 MB | 448 MB |
1024 MB | 16 MB | 944 MB |
Bazen aynı SD kart imajını her 3 model Raspberry Pi cihazında kullanmak isteyebilirsiniz. Bu senaryoda farklı modellere yönelik GPU bellek miktarını tanımlayabilmek için, 256 MB bellekli modellerde gpu_mem_256
, 512 MB bellekli modellerde gpu_mem_512
ve 1024 MB bellekli modellerde gpu_mem_1024
parametrelerini kullanabilirsiniz.
ÖNEMLİ: gpu_mem=16
şeklindeki bir tanımla GPU tarafına minimum bellek ayırmanız gerekirse, standart start.elf
ve fixup.dat
dosyaları ile sistem boot edilememektedir. Bunun için her iki firmware dosyasının cut-down (kırpılmış) versiyonları kullanılmalıdır. Raspberry Pi Firmware arşivininden start_cd.elf
ve fixup_cd.dat
dosyalarını da SD kartınızın ilk FAT bölümüne kopyalamak suretiyle açılışı gerçekleştirebilirsiniz. GPU tarafına 16 MB bellek ayrıldığında, GPU'nun bazı özellikleri de devre dışı bırakılmakta ve daha hızlı bir açılış gerçekleşmektedir. Ancak bu açılış için yukarıda bahsettiğimiz dosyaların da SD kart üzerinde bulunması zorunludur.
disable_l2cache
Öntanımlı değeri 0 olup, bu değeri 1 yapmanız halinde ARM CPU'nun GPU üzerindeki Level 2 Cache alanına erişimini engelleyebilirsiniz. Özellikle GPU yoğun uygulamalarda bu özelliğin kullanılması tercih edilebilir.
config.txt
üzerinden GPU Level 2 Cache devre dışı bırakıldığında mevcut Linux çekirdek imajınızla ARM CPU tarafında boot gerçekleştiremezsiniz. Boot edebilmek için Linux çekirdeğinin de GPU Level 2 Cache alanını kullanmayacağını bilecek şekilde derlenmiş olması gereklidir. Çekirdek konfigürasyonunda CONFIG_BCM2708_NOL2CACHE=y
yapıp yeniden derleyerek boot işlemini gerçekleştirebilirsiniz.
disable_pvt
Öntanımlı değeri 0 olup, 1 yapılması halinde her 500 milisaniyede bir DRAM sıcaklığının kontrol edilmesi fonksiyonunu devre dışı bırakmaktadır. Her bir kontrol ortalama 16µs zaman almaktadır. Eğer ortam şartlarından eminseniz az da olsa performansı artırmak için bu özelliği kullanmak isteyebilirsiniz.
Grafik Ekran ve Monitor Konfigürasyonları
display_rotate
Ekranı döndürmek veya yatay/dikey oryantasyonunu değiştirmek için kullanılır. Aşağıdaki tabloda display_rotate değerlerine karşılık gerçekleşen durum bilgileri yer almaktadır:
Display_rotate değeri | Sonuç |
---|---|
0 | Herhangi bir dönüşüm uygulanmaz |
1 | Saat yönünde 90 derece döndür |
2 | Saat yönünde 180 derece döndür |
3 | Saat yönünde 270 derece döndür |
0x10000 | Görüntünün yatay katlanmış hali |
0x20000 | Görüntünün dikey katlanmış hali |
Not: 90 ve 270 derece döndürme işlemlerinde bir miktar ek GPU belleği gerektiğinden, GPU için 16 MB bellek ayırmanız halinde çalışmayacaktır. Bunun için GPU bölümüne minimum 32 MB bellek ayırmalısınız.
hdmi_safe
Bu değerin 1 yapılması halinde HDMI monitorlerde sık karşılaşılan otomatik algılama sorunlarına karşılık çeşitli workaround'ler devreye alınır. Eğer HDMI ekranında görüntü alamıyorsanız bu opsiyonun değerini 1 yapıp test etmeniz önerilir.
hdmi_safe=1
durumu aşağıdaki konfigürasyona eşittir:
hdmi_force_hotplug=1
hdmi_ignore_edid=0xa5000080
config_hdmi_boost=4
hdmi_group=2
hdmi_mode=4
disable_overscan=0
overscan_left=24
overscan_right=24
overscan_top=24
overscan_bottom=24
Yukarıda yer alan her bir konfigürasyon anahtar deyiminin detaylarına buradan erişebilirsiniz.
disable_splash
Bu değerin 1 yapılması durumunda, açılış sürecindeki test sırasında gökkuşağı logosunun gösterimi engellenir.
Bazı HDMI monitorlerde algılama süreci uzun sürdüğünden bu logoyu hiç görmemiş de olabilirsiniz. Normalde cihazınız açılmaya başladığında ilk olarak HDMI üzerinde bu logoyu göstermektedir.
bootcode_delay
Değer girilmesi halinde bootcode.bin
yükleyicisi start.elf
ikinci aşama boot yükleyici yüklemeden önce girilen değer kadar saniye boyunca bekler.
Bu opsiyon Raspberry Pi cihazı ile HDMI monitorün aynı güç kaynağından beslendiği ve HDMI monitor tarafında ilklendirme işlemlerinin uzun sürdüğü senaryolarda faydalı olmaktadır.
Overclock Parametreleri
Raspberry Pi, overclock işlemleri için çok sayıda konfigürasyon opsiyonu sunmaktadır. ARM CPU frekansı, GPU içerisinde ayrı ayrı h264 bloğu, 3D bloğu, SDRAM frekansı vb. ayarlanabilmektedir. İlgilenenler detaylı bilgiye buradan ulaşabilir.
Önceleri Raspberry tarafından önerilen overclock fonksiyonlarının dışında bir parametre kullanıldığında cihaz garanti dışı kalıyordu. Daha sonradan force_turbo
parametresi ile aktive edebileceğiniz turbo mode geliştirildi. Turbo mode aktif cihazlarda çalışma frekansları sistem meşgul olduğunda artırılmakta, sistem sıcaklığı 85°C üzerine çıktığında ise düşürülmektedir. Bu şekildeki kullanım garanti kapsamına dahildir.
Codec Lisans Aktivasyonu
Raspberry Pi board'unun güçlü olduğu yanlardan biri de donanım destekli h264 encode ve decode işlemidir. Bu özelliğin aktivasyonu her bir board için lisans satın alınarak yapılmaktadır.
Halihazırda MPEG-2 ve VC-1 olmak üzere 2 tip codec satın alınabilmektedir. VC-1 codec'i sadece Windows Media Video (WMV) dosyalarını oynatmak istiyorsanız gereklidir.
Satın alma işlemleri için http://swag.raspberrypi.org/collections/software adresini ziyaret etmelisiniz. Lisanslar CPU seri numaralarına göre yapıldığından, satın alma işleminden önce sisteminizi boot edip /proc/cpuinfo
dosyasından seri numarasını öğrenmelisiniz:
# cat /proc/cpuinfo
...
Hardware : BCM2709
Revision : a01041
Serial : 00000000634c6685
Temmuz 2015 itibariyle MPEG-2 codec lisansı cihaz başına 2£ (yaklaşık 8,5 TL) civarındadır.
Lisansınız geldikten sonra config.txt
içerisinde bu lisansın ilgili olduğu CPU seri numarasını belirtmeniz gerekiyor. Örnek olarak yukarıdaki CPU için MPEG-2 lisansı alınmışsa girmemiz gereken parametre şu şekilde olacaktır:
decode_MPG2=0x634c6685
Eğer VC-1 codec lisansı almış olsaydık bu durumda aşağıdaki parametreyi girmeliydik:
decode_WVC1=0x634c6685
Bazen aynı SD kart imajını birden fazla üründe kullanmanız gerekebilir. Ancak sözkonusu cihazlar için ayrı ayrı codec lisansları alınmış ise, her bir cihazdaki config.txt
dosyasındaki ilgili parametrelerin düzenlenmesi gereklidir.
Raspberry Pi bu durumu kolaylaştırmak için yukarıdaki konfigürasyon parametrelerine virgül ile ayrılmış şekilde 8 adede kadar CPU seri numarası yazılmasına imkan vermiştir. Aşağıda 3 farklı CPU seri numarasının yer aldığı bir örneği görebilirsiniz:
decode_MPG2=0x634c6685,0x1234567,0x99889922
Her ne kadar birden çok seri numarası yazımı mümkün olsa da, sahada büyük ölçekli bir kullanım içi 8 adet oldukça düşük bir sayı olarak kalmaktadır. Böyle bir ürün içerisinde kullanmak istiyorsanız lisans yönetimi için yazılım tarafında süreci kolaylaştırıcı ek mekanizmalar geliştirmeyi düşünmelisiniz.