Bu özellik ileri düzey kullanıcılar için tasarlanmıştır.
15 Temmuz 2014’ten itibaren, Raspberry Pi üretici yazılımı, kullanıcı tarafından sağlanan Cihaz Ağacı blob dosyası aracılığıyla özel varsayılan pin yapılandırmalarını destekler. Yazılımınızın yeterince yeni olup olmadığını öğrenmek için, lütfen vcgencmd sürümünü çalıştırın.
Önyükleme sırası sırasında cihaz pinlerinde yapılan işlemler
Açılış sırası sırasında, GPIO pinleri çeşitli işlemlerden geçer.
- Açılış – varsayılan çeken girişlere varsayılan pinler; Her pin için varsayılan çekimler veri sayfasında açıklanmıştır.
- Bootrom tarafından ayar
- Bootcode.bin tarafından ayar
- Dt-blob.bin ile ayarlama (bu sayfa)
- Config.txt dosyasındaki GPIO komutuyla ayarlama
- Ek üretici yazılımı pinleri (örneğin, UARTS)
- Çekirdek / Cihaz Ağacı
Yazılım sıfırlama işleminde, yalnızca açılışta sıfırlama işlemine uygulanan varsayılan çekimler dışında aynı işlem uygulanır.
Aşama 1’den aşama 4’e geçmenin birkaç saniye alabileceğini unutmayın. Bu süre zarfında GPIO pimleri takılı çevre birimleri tarafından beklenilen durumda olmayabilir (dtblob.bin veya config.txt dosyasında tanımlandığı gibi). Farklı GPIO pinleri farklı varsayılan çekişlere sahip olduğundan, çevre biriminiz için aşağıdakilerden birini yapmalısınız:
- Sıfırlama sırasında çevre biriminin gerektirdiği şekilde çekmesi için varsayılan olan bir GPIO pimi seçin
- Çevrenin başlangıç aşamasını 4/5 aşamaya ulaşana kadar geciktirin.
- Uygun bir çekme / indirme direnci ekleyin
Özel bir Aygıt Ağacı Blob’u Sağlama
Bir Cihaz Ağacı kaynak (.dts) dosyasını bir Cihaz Ağacı bloğu (.dtb) dosyasına derlemek için, Cihaz Ağacı derleyicisinin sudo apt-get install device-tree-compiler komutunu çalıştırarak kurulması gerekir. Dtc komutu daha sonra şu şekilde kullanılabilir:
sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob.dts
NOT: NOOBS kurulumu durumunda, DTB dosyasının kurtarma bölümüne yerleştirilmesi gerekir.
Benzer şekilde, bir .dtb dosyası gerekirse bir .dts dosyasına geri dönüştürülebilir.
dtc -I dtb -O dts -o dt-blob.dts /boot/dt-blob.bin
Dt-blob bölümleri
Dt-blob.bin, önyükleme sırasında ikili blob’u (VideoCore) yapılandırmak için kullanılır. Şu anda Linux çekirdeği tarafından kullanılmamaktadır, ancak Ahududu Pi çekirdeğini yapılandırma için bir dt-blob kullanacak şekilde yeniden yapılandırdığımızda, daha sonraki bir aşamada bir çekirdek bölümü eklenecektir. Dt-blob, Hesaplama Modülü dahil olmak üzere Raspberry Pi’nin tüm sürümlerini alternatif ayarları kullanacak şekilde yapılandırabilir. Aşağıdaki bölümler dt-blob’da geçerlidir:
- Videocore
Bu bölüm tüm VideoCore blob bilgilerini içerir. Takip eden tüm bölümler bu bölüm içine alınmalıdır.
- pins_*
Belirli Raspberry Pi modellerine dayanan birkaç ayrı pin_ * bölümü vardır:
- pins_rev1 Rev1 pin kurulumu. Taşınan I2C pimleri nedeniyle bazı farklılıklar var.
- pins_rev2 Rev2 pin kurulumu. Bu, P5’teki ek kodek pinlerini içerir.
- pins_bplus1 Model B + rev 1.1, tam 40pin konektörü dahil.
- pins_bplus2 Model B + rev 1.2, düşük güç ve lan-run pinlerini değiştiriyor.
- pins_aplus Model A +, Ethernet bulunmuyor.
- pins_2b1 Pi 2 Model B rev 1.0; SMPS’yi I2C0 üzerinden kontrol eder.
- pins_2b2 Pi 2 Model B rev 1.1; SMPS’yi 42 ve 43 numaralı yazılımlardaki I2C yazılımı ile kontrol eder.
- pins_3b1 Pi 3 Model B rev 1.0
- pins_3b2 Pi 3 Model B rev 1.2
- pins_pi0 Pi Sıfır
- pins_pi0w Pi Sıfır W
- pins_cm Hesaplama Modülü. Bunun için varsayılan, yonga için varsayılandır, bu nedenle yonga üzerindeki varsayılan aşağı / yukarı çekmeler hakkında faydalı bir bilgi kaynağıdır.
- pins_cm3 Hesaplama Modülü sürüm 3
Her pin_ * bölümü pin_config ve pin_defines bölümleri içerebilir.
- pin_config
Pin_config bölümü, tek tek pinleri yapılandırmak için kullanılır. Bu bölümdeki her öğe GPIO32 anlamına gelen pin @ p32 gibi adlandırılmış bir pin bölümü olmalıdır. Pin_config bölümünde özel olarak adlandırılmayan herhangi bir şeyin varsayılan ayarlarını içeren özel bir pin @ default seçeneği vardır.
- pin@pinname
Bu bölüm, aşağıdaki öğelerin herhangi bir birleşimini içerebilir:
- polarity
- active_high
- active_low
- termination
- pull_up
- pull_down
- no_pulling
- startup_state
- active
- inactive
- function
- input
- output
- sdcard
- i2c0
- i2c1
- spi
- spi1
- spi2
- smi
- dpi
- pcm
- pwm
- uart0
- uart1
- gp_clk
- emmc
- arm_jtag
drive_strength_mA Sürücü gücü, pimler için bir güç ayarlamak için kullanılır. Lütfen banka için yalnızca tek bir sürücü gücü belirleyebileceğinizi unutmayın. <8> ve <16> geçerli değerlerdir.
- pin_defines
Bu bölüm, belirli VideoCore işlevselliğini belirli pinlere ayarlamak için kullanılır. Bu, kullanıcının kamera güç etkinleştirme pimini farklı bir yere taşımasını veya HDMI hotplug konumunu hareket ettirmesini sağlar: Linux’un kontrol etmediği şeyler. Lütfen aşağıdaki örnek DTS dosyasına bakın.
Saat yapılandırması
Saatlerin konfigürasyonunu bu arayüz üzerinden değiştirmek mümkündür, ancak sonuçları tahmin etmek zor olabilir! Saat sisteminin yapılandırması çok karmaşık. Beş ayrı PLL vardır ve her birinin kendi sabit (veya PLLC durumunda) VCO frekansı vardır. Daha sonra her VCO, VCO frekansının farklı bir bölümü ile kurulabilen birkaç farklı kanala sahiptir. Saat hedeflerinin her biri, saat kanallarından birinden gelmek üzere yapılandırılabilir, ancak kaynağın hedefe sınırlı bir eşlemesi olmasına rağmen, tüm kanallar tüm saat hedeflerine yönlendirilemez.
Belirli saatleri değiştirmek için kullanabileceğiniz birkaç örnek yapılandırma. Saat yapılandırma istekleri yapıldığında bu kaynağa ekleyeceğiz.
clock_routing {
vco@PLLA { freq = <1966080000>; };
chan@APER { div = <4>; };
clock@GPCLK0 { pll = "PLLA"; chan = "APER"; };
};
clock_setup {
clock@PWM { freq = <2400000>; };
clock@GPCLK0 { freq = <12288000>; };
clock@GPCLK1 { freq = <25000000>; };
};
Yukarıdakiler PLLA’yı 1.96608GHz’de çalışan bir VCO kaynağına ayarlayacaktır (bu VCO için sınırlar 600MHz – 2.4GHz’dir), APER kanalını / 4 olarak değiştirecek ve GPCLK0’dan PLLA’dan APER’ye kaynaklanacak şekilde yapılandıracaktır. Bu, 48000 frekans aralığı üretmek için ihtiyaç duyduğu 12288000Hz’lik bir ses kodeğini vermek için kullanılır.
Örnek Cihaz Ağacı kaynak dosyası
Bu örnek dosya üretici yazılımı deposundan gelir.
https://github.com/raspberrypi/firmware/blob/master/extra/dt-blob.dts