Olimex A20
Last updated
Was this helpful?
Last updated
Was this helpful?
Olimex firması tarafından geliştirilen board, Dual-Core Allwinner A20 Cortex-A7 işlemcisiyle gelmektedir. Sadece yazılım değil, donanım da açık bir platform olarak geliştirilmekte ve tüm tasarım dosyaları paylaşılmaktadır.
Kartın tam adı A20-OLinuXino-MICRO olarak geçmektedir fakat dokümanda kısaca Olimex A20 adını kullanacağız.
Temel olarak aşağıdaki bileşenlere sahiptir.
İşlemci
Allwinner A20 Cortex-A7
Çekirdek Sayısı
2
DSP
Yok
GPU
Mali 400
RAM
1 GB DDR3
NAND
Yok
MMC/SD
Var
MicroSD
Var
Ethernet
Var
VGA
Var
HDMI
Var
Konsol
Var
Bu bölümde, cihaz için önyükleyici ve işletim sistemi çekirdeğinin nasıl derlendiğinden, sonrasında cihazın mikro SD kart üzerinden nasıl açıldığından bahsedeceğiz.
İlk olarak, önyükleyici ve çekirdeği nasıl edinip derleyebileceğimize bakalım.
Not: Derleme sürecinde armhf hedefli GNU C çapraz derleme araçlarını kullanacağız. Paket yöneticinizi kullanarak gerekli araçları edinebilirsiniz, Ubuntu için gcc-arm-linux-gnueabihf paketini kurabilirsiniz.
Başka bir derleyici kullanıyorsanız, önyükleyici ve çekirdek derleme aşamalarında, derleyicinize ait öneki (prefix) kullanmalısınız.
Olimex A20, U-Boot önyükleyicisini kullanmaktadır.
Bu aşamada ana dizinde u-boot.img ve spl altında sunxi-spl.bin dosyaları oluşmuş olmalıdır. sunxi-spl.bin dosyası, u-boot önyükleyicisini yüklemekten sorumlu, göreli olarak daha küçük olan önyükleyici olup SPL (Secondary Program Loader) olarak isimlendirilmektedir.
GPIO atamaları, DDR bellek parametreleri ve video çözünürlüğü gibi önemli bazı ayar parametreler, çekirdek kodu yerine, bir veri dosyasında tutulabilmektedir. Bu sayede çekirdek kodu her defasında yeniden derlenmeksizin, bu parametreler üzerinde sonradan değişiklik yapılabilmektedir.
Gerekli ayar dosyası ve araçları aşağıdaki gibi sisteminize indirebilirsiniz.
İlk olarak sunxi-tools dizininde fex2bin uygulamasını derleyecek, sonrasında bu uygulamayı kullanarak, sunxi-boards dizinindeki a20-olinuxino_micro.fex isimli ayar dosyasını, çekirdeğin okuyabileceği, uygun formata dönüştüreceğiz.
Bu aşamada hedeflediğimiz script.bin dosyasını elde etmiş olduk.
Çekirdek kodunu aşağıdaki gibi indirip derleyebilirsiniz.
Bu aşamada u-boot tarafından yüklenebilecek çekirdek imajı uImage ve gerekli modüller oluşmuş olmalıdır. Daha sonra dosya sistemine taşıyacağımız modülleri, aşağıda gösterildiği gibi bir dizin altına toplayabiliriz. Modülleri taşıyacağımız dizini, aşağıdaki örnek için, modules olarak isimlendirdik.
Bu işlem sonrasında, ana dizinden itibaren, çekirdek imajı ve gerekli modüller aşağıdaki gibi bir dizin yolunda bulunacaktır. Çekirdek versiyonuna göre xyz değerleri değişmektedir.
Şimdi cihazı mikro SD üzerinden nasıl açabileceğimize bakalım.
Mikro SD kartın yerleşimi genel olarak aşağıdaki gibi olacaktır.
Başlangıç
Boyut
Kullanım
0
8KB
Bölümlendirme tablosu
8
24KB
SPL önyükleyicisi
32
512KB
u-boot
544
128KB
Çevre değişkenleri
672
352KB
Saklı alan
1024
-
Dosya sistemi için boş alan
Not: Kart üzerinde hem MMC/SD hem de mikro SD bulunmaktadır. Cihaz yalnız mikro SD üzerinden açılabilmektedir, açılış sürecini anlattığımız aşağıdaki bölümlerde çoğnlukla mikro SD yerine yalnız SD ifadesini kullandık.
SD kart üzerinde, ilk 1MB alandan sonra sırasıyla FAT32 ve ext4 olarak formatlayacağımız iki adet bölüm oluşturacağız. FAT32 bölümüne çekirdek imajı ve ihtiyaç duyduğu ayar dosyasını, ext4 bölümüne ise dosya sistemini kopyalayacağız. İlk 1MB'lık alana ise önyükleyicileri yazacağız. SD kartın hedeflediğimiz son durumunu görsel olarak aşağıdaki gibi gösterebiliriz.
Şimdi SD kart üzerine bu işlemleri nasıl yapabileceğimize bakalım.
Sonraki işlemleri kolaylaştırmak için SD karta ilişkin dosya düğümünü ve bölümlendirmeye ilişkin isim bilgisini sırasıyla CARD ve PARTITION isimli çevre değişkenlerinde tutalım. SD karta ilişkin dosya düğümü dahili bir SD okuyucu ya da USB bağlantılı bir kart okuyucu kullanılmasına göre değişecektir. Dahili bir SD okuyucu için kart ve bölümlendirme bilgisi aşağıdaki gibi tanımlanabilir.
SD kartın ilk 1MB'lık alanını temizledikten sonra SPL ve u-boot önyükleyicilerini aşağıdaki gibi yazabiliriz.
Şimdi SD kart üzerinde, sonrasında FAT32 ve ext4 olarak biçimlendireceğimiz, iki adet bölüm oluşturalım. Bunun için sfdisk aracını kullanan aşağıdaki betiği kullanabilirsiniz.
Yeni oluşan bölümleri sırasıyla FAT32 ve ext4 olarak biçimlendirelim.
Bu aşamadan sonra açılış bölümü olarak kullanacağımız FAT32 bölümüne, daha önce derlediğimiz, uImage ve script.bin dosyalarını, ext4 bölümüne ise çekirdek modüllerini içeren dosya sistemini yazmalıyız.
Bu işlemlerden sonra cihazı hazırladığımız SD kart ile açarak u-boot komut satırına düşebiliriz. Açılış sürecinde sırasıyla ROM Bootloader, SPL ve u-boot çalışacaktır. u-boot komut satırına düştükten sonra, çekirdeğe geçirilecek komut satırı argümanlarını oluşturup sonrasında çekirdek kodunu güvenli bir adrese çekip çalıştırabiliriz.