Embedded & Micro Framework / Bootloader Nasıl Derlenir?

Yazar:   Hasan AYTIŞ
Tarih:   
Puan:   5 / 5
Verdiğiniz Puan:   

Makale Özeti

Daha önceden derlenmiş bir bootlaoder kullanarak uygulamalarınızı yada sürücü(driver)lerinizi bu bootlaoder ile sisteme yuklemişseniz aslında o kadar da zor bir işlem değildir. Ama, eğer siz bootloader da bazı değişiklikler yapmak isterseniz o zaman ne olcak? Ki bu derleme sırasında neler olduğunu bilmemiz ilerde code değiştirme işleminde ve testlerimizi hızlı yapmamıza yardımcı olacaktır.

Makale

Daha önceden derlenmiş bir bootlaoder kullanarak uygulamalarınızı yada sürücü(driver)lerinizi bu bootlaoder ile sisteme yuklemişseniz aslında o kadar da zor bir işlem değildir.

 Ama, eğer siz bootloader da bazı değişiklikler yapmak isterseniz o zaman ne olcak? Ki bu derleme sırasında neler olduğunu bilmemiz ilerde code değiştirme işleminde ve testlerimizi hızlı yapmamıza yardımcı olacaktır.

Birinci adım , bildiğiniz gibi kaynak kodları bulmamız olacaktır. Kaynak kodun bulunduğu yer Windows CE versiyonuna göre değişmektedir.Ama hepsi bize BSP yi hedef göstererecektir.
Windows CE 4.2 versiyonu ve öncesi için:
            %_WINCEROOT%\Platform\<BSP ADI>\eboot
            %_WINCEROOT%\Platform\<BSP ADI>\sboot
Windows CE 5.0 ve  6.0 için:
            %_WINCEROOT%\Platform\<BSP ADI>\src\Bootloader
Eğer BSP nizi 3. parti bir yerden temin etmişseniz o zaman dosyaların yeri farklı bir yerde olabilir.

Sonraki adım ise bootlaoder built edildiği zaman  hangi ismi almakta olduğunu tespit etmemiz gerekiyor.Bunun için bootloader için olan  BIB dosyası bize bu ismi vermektedir.BIB dosyası genellikle bootlaoder kaslrou ile aynı yerde olur.
Şimdi hep beraber  ,
C:\WINCE600\PLATFORM\CEPC\SRC\BOOTLOADER\EBOOT\boot.bib
C:\WINCE600\PLATFORM\CEPC\SRC\BOOTLOADER\SBOOT\boot.bib
bu iki dosyayı inceleyelim ve   değişikliği görelim.
 eboot.bib;
;   Name     Start     Size      Type
;   ------- -------- -------- ----
    EBOOT   00130000 00020000 RAMIMAGE


sboot.bib
;   Name     Start     Size      Type
;   ------- -------- -------- ----
    SBOOT    00130000 00010000 RAMIMAGE
Name sütunu Type Sütunundaki RAMIMAGE  olarak karar vererk ismini verir,Bu durumda eboot eboot.bin ve eboot.nb0 olarak yaratılırken sboot ise sboot.bin ve sbooy.nb0 olarak oluşturulacaktır. Bu dosyalar oluşturulup platformun uygun alt klasörüne yerleştirilecektir.

Şimdi build işlemi ile bootloader in nasıl derlendiğini,ne oluşturduğunu ve dosyaların build in baştan sona nerede olduğu biliyoruz....O zaman bir bootloader derleyelim. :)
Bootloader derlenmesi: 
Derleme penceresini açalım, Derleme penceresini (Build Window açmak için)  OSDesign yada PBWorkspace in PBXML dosyasını seçip Open Build Window.. diyerek açabiliriz.

Build Window u açtıktan sonra çalışma klasörünü bootloader klasörü olarak seçelim.Sonra da build.exe dosyasını çalıştıralım.ve böylece işlemimiz bitmiş olacaktır.
Neler oldu acaba?
C:\WINCE600\PLATFORM\CEPC\SRC\BOOTLOADER\EBOOT:  

yukardaki folder a bakalim
a.Build kaynaklar dosyasını işledi ve nmake ile kaynak dosyaları derledi.
b.nmake objeleri ve önceden derlenmiş kütüphaneleri linkleyerek eboot.exe yi oluşturdu.  
Kaynaklar dosyasında olan  WINCETARGETFILES RomIMage ile eşitlendi.WINCETARGETFILES ,kaynaklar dosyasında tanımlandığı gibi hedefROmIMage için derleme sonrası derleme bilgilerini soyledi.
Build WINCETARGETFILES ın makefile.inc dosyasında tanımlı olduğunu bilir ve bunun için bu dosyayı ister.
WINCETARGETFILES için kural şudur; 

RomImage:
!IF "$(NOLINK)" == ""    
      romimage boot.bib
!ENDIF        
!IF "$(WINCEREL)"=="1"
      copy $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot.* $(_FLATRELEASEDIR)
!ENDIF


yani diyorki :
                                                               i.     RomImage  derlediğin zaman,eğer değişken NOLINK in değeri herhangi bir şey verilmemiş ise romimage boot.bib komutunu çalışıtır ki bu da ROM images oluşuturur.
              ii.     RomImage  derlediğin zaman, ,eğer değişken WINCERELin değeri 1 verilmişse ROM İmages hedef klasorden _FLATRELEASEDIR  klasörüne kopyala diyor


bitti.(fin).
Blogum

Site içerisinde yazılan tüm makalelerin yazım ve yayınlama hakkı aksi belirtilmediği sürece sadece yazarlara aittir.

v3.0 Geri Bildirim (Feedback) Yazgelistir.Com Ekibi - 2012 - Yazgelistir.com