basit bir gomulu sistemin kurulusu

Download Basit Bir Gomulu Sistemin Kurulusu

Post on 17-Nov-2015

24 views

Category:

Documents

4 download

Embed Size (px)

DESCRIPTION

Basit Bir Gomulu Sistemin Kurulusu

TRANSCRIPT

  • Basit Bir Gml Sistemin Kuruluu

    Giri

    Bu yazda basit bir gml Linux sisteminin beagleboarda kuruluundanbahsedilecektir. Her ne kadar rnek sistem olarak beagleboard seilmi olsa da,burada anlatlan hemen hemen btn konular dier bordlara da ok az deiiklikleuygulanabilir. Prensipler deimemektedir.

    Burada bahsi geen konular daha ok yeni balayanlar iindir. Bu yazda ok basit biramacmz vardr. Bir cihaza g veya elektrik verildikten sonra login gelene kadararada bulunan aamalar tek tek uygulamaktr. Konu hakknda bilgisi olanlar dorudanzet ksmna gz atabilirler.

    Gml sistemler prensip olarak bir ii ok iyi yapmak zere kurulurlar. Gmlsistemler iletim sistemine bal kalmadan da kurulabilirler. ok geni bir yelpazeyeve uygulama alanna sahip bu tr sistemlerle ilgilenmiyoruz. Bizler sadece Linuxyklenebilen cihazlarla ilgilenmekteyiz. Bundan dolay gml sistem ifadesidorudan gml Linux sistemi anlamna gelmektedir. Ayrca Linux dndaki iletimsistemleri de ilgi alanmzn dndadr.

    1. Yaznn Kayna

    Gml sistemlerin prensip olarak bir ii ok iyi yapmak zere tasarlandklarndanbahsetmitik. Bizler trafikteki aralar zerine taklabilecek bir kara kutu sistemizerinde almaktayz. Bu kara kutu sistemi ivme ler, cayro, manyetik alan lergibi pek ok sensrden bilgi toplamakta ve aracn kinematik bilgilerini kaydetmektedir.Bu ksmn yaznn konusu ile ilgisi yoktur. Fakat bu sensrler bir beaglebordmakinesine baldr ve burada koan bir C program gerekli ilemleri yapmaktadr.

    Gml LinuxSistemleriLogin'e Kadar Linux

    Basit Bir Gml Sistemin Kuruluu ucanlinux.com

    1 of 58

  • Bu rnekten de grlecei gibi gml sistemimiz sensrlerden bilgi toplamak gibiasli bir ie sahiptir. Bunun dnda tabi ki baka iler de yapmaktadr. Ama sisteminyapaca esas i, sensrlerle ilgilenmektir. te bu yazda anlatlacak gml sistem,bu proje iin gelitirilen ve halen kullanlmakta olan bir Linux sistemidir ve son derecegenel bir yapya sahiptir.

    2. Beagleboard

    Bu yazda Beagle Board Rev C3 sistemi zerinde uygulama yaplacaktr. Bu makinezerinde malesef eternet kart mevcut deildir. Bundan dolay dosya al verii MMCkart yardm ile yaplacaktr. Bu yazda MMC (MultiMediaCard) ile SD(SecureDigital)ayn anlamda kullanlacaktr.

    Bordun, seri port zerinden Linux ykl bir masast makineye bal olduunu kabuledilmektedir. Eer masast makinede seri port yoksa seri/usb evirici ile de aynbalant yaplabilir.

    Masast tarafnda seri kanal iletiim program olarak minicom kullanlmaktadr.Okuyucu kendi gzde terminal programn da kullanabilir. Seri kanal, 115200, 8N1 veNoFlow olarak ayarlanmaldr. Masast olarak bahsedilen makine gerek birmasast PC veya bir notebook veya zerinde Linux koan herhangi bir makineolabilir.

    3. Linux Datmlar Hakknda

    Bizler masastnde Slackware Linux kullanmaktayz. Fakat bu yazda bahsi geen hibir konu datma bal olmayacaktr. Btn paketler el ile derlenecek ve herhangi birpaket yneticisi kullanlmayacaktr. Okuyucunun da paket yneticisi kullanmamas,btn paketleri el ile derlemesi tavsiye edilir. Ayrca, eer aksa, otomatik mountzelliinin kapatlmas tavsiye edilir.

    4. apraz Derleme

    rnek bordumuz ARM ilemci kullanmaktadr. ARM ilemcili makineler, cep telefonlarve tablet bilgisayarlar gibi cihazlar sayesinde inanlmaz derecede yaygnlamtr.Buna karn masast makinelerimiz halen x86 ilemcileri kullanmaktadrlar. Doalolarak masastnde bulunan derleyiciler x86 kodu retmektedir. x86 ilemci iin x86kodu reten derleyiciye native derleyici denir. Genellersek kendi zerinde altmimari iin kod reten derleyiciye native derleyici denir.

    Doal olarak x86 makinede bulunan native derleyici, ARM iin kod retemez. Kendialt mimari iin deil de baka bir mimari iin kod reten derleyiciye aprazderleyici (cross compiler) denir. Buna gre, eer bizler x86 makine zerine uygunapraz derleyiciyi yklersek, ARM makinede alacak kodu, x86 makinederetebiliriz. apraz derleyicilerin rettii koda hedef mimari kodu denir.

    Basit Bir Gml Sistemin Kuruluu ucanlinux.com

    2 of 58

  • Yazlm gelitirme sreci sadece derleyicilere baml deildir. Bir kodun derlenerekobje haline getirilmesi, objelerin linker ile balanmas ve alabilir kodun eldeedilmesi, kodun altrlarak debug edilmesi gibi aamalar yazlm gelitirilirkenkullanlr. Dikkat edilirse burada elde edilen k bir baka programn girii olmaktadr.

    rnein, derleyici object kod elde eder. Elde edilen object kod linker ile birletirilir.Linker ile birletirilen kod, debug ile incelenebilir. Birinin kts dierinin girdisi olan butr yazlm sistemlerine ara zinciri (tool chain) denir. nk sistemin genel mantzincir gibidir.

    x86 makinesinde, ARM kodu elde edebilmek iin en az 1 adet tool chaine gerekvardr. ARM ilemcili makineler iin birden fazla tool chain vadr. Bizler beagleboardusatanlarn tavsiye etmi olduu ve CodeSourcery tarafndan desteklenen toolchainikullanacaz. Bu tool chain, artk mentor graphics tarafndan desteklenmektedir.

    http://www.mentor.com/embedded-software/codesourcery

    adresinden Download Lite Edition butonu ile ilgili sayfaya geilir. ARM processorsbal altnda bulunan Download GNU/Linux Release ile gsterilen adrese girilir.Burada e-posta adresi ile kayt yaplr. Kayt yaplan e-postaya, indirme iin gerekliolan adres gnderilir. Bu adrese tklanr ve gelen sayfadan Advanced Packagesaltnda bulunan IA32 GNU/Linux TAR balantsndaki paket indirilir. Eskiden tek tklayaplrd bu i.

    Bu yaz yazlrken en son srm 2012.03-57 idi. Paketin tam ad ise,arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 ile verilmitir.

    Bu toll chain sadece 32 bit makineler iin destek vermektedir. 64 bit makineler iin 32bitlik ktphanelerin kurulmas gerekir.

    Tool chain aadaki gibi kurulur. Paket yneticisi kullanlmas tavsiye edilmez ki neyapldn grelim. Bizler bu tr paketleri /cross dizini altna kurmaktayz. Okuyucukendisine uygun herhangi bir dizin seebilir.

    $ cd /cross

    $ tar jxvf arm-2012.03-57-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2$ ln -s arm-2012.03 arm-none-linux-gnueabi

    $ ls arm-none-linux-gnueabi/bin

    arm-none-linux-gnueabi-addr2line

    arm-none-linux-gnueabi-ar

    arm-none-linux-gnueabi-as arm-none-linux-gnueabi-c++

    Basit Bir Gml Sistemin Kuruluu ucanlinux.com

    3 of 58

  • arm-none-linux-gnueabi-c++filt

    arm-none-linux-gnueabi-cpp

    arm-none-linux-gnueabi-elfedit arm-none-linux-gnueabi-g++

    arm-none-linux-gnueabi-gcc arm-none-linux-gnueabi-gcc-4.6.3

    arm-none-linux-gnueabi-gcov

    arm-none-linux-gnueabi-gdb arm-none-linux-gnueabi-gdbtui

    arm-none-linux-gnueabi-gprof

    arm-none-linux-gnueabi-ld arm-none-linux-gnueabi-nm

    arm-none-linux-gnueabi-objcopy arm-none-linux-gnueabi-objdump

    arm-none-linux-gnueabi-ranlib

    arm-none-linux-gnueabi-readelf arm-none-linux-gnueabi-size

    arm-none-linux-gnueabi-sprite

    arm-none-linux-gnueabi-strings arm-none-linux-gnueabi-strip

    Tool chain tar ile aldnda btn dosyalar arm-2012.03/ isimli bir dizin iindekurulur. Tahmin edilecei gibi bu dizin, aslnda srm numarasdr. Bu tr bir dizinikullanmak pek pratik olmayaca iin 3. admda dizin ismi arm-none-linux-gnueabi ilesembolik olarak balanmtr. Bu admdan sonra btn betiklerde /cross/arm-none-linux-gnueabi ismi kullanlacaktr. Yeni bir srm yklendiinde sadece sembolik linkideitirmek yeterli olacaktr. Betiklerdeki isimleri gncellemeye gerek kalmayacaktr.

    4. admda tool chaine ait btn programlar listelenmitir. Btn programlar bin/ dizinialtndadr. Tool chaini kullanma hazr hale getirmek iin PATH deikenine

    /cross/arm-none-linux-gnueabi/bin girilmesi yeterlidir. rnein:

    export PATH=$PATH:/cross/arm-none-linux-gnueabi/bin

    Artk tool cahin kullanma hazrdr.

    zetlemek gerekirse paketi ap, paket iindeki bin/ dizinini PATH deikenineeklemek apraz derleyici veya tool chaini kullanmak iin yeterlidir.

    Tool chainin srm aadaki gibi elde edilebilir.

    $ arm-none-linux-gnueabi-gcc --version

    Basit Bir Gml Sistemin Kuruluu ucanlinux.com

    4 of 58

  • arm-none-linux-gnueabi-gcc (Sourcery CodeBench Lite 2012.03-57) 4.6.3

    Copyright (C) 2011 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NO

    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    apraz derleyiciyi test etmek iin aadaki gibi basit bir C program yazlabilir. Buprogram daha sonra bord zerinde altrlacaktr.

    /* ilk.c */

    #include

    #include

    int main(int argc, char *argv[]){

    fprintf(stdout, "ARM ilemci iin ilk program.\n");

    fprintf(stdout, "Merhaba ARM.\n");

    return EXIT_SUCCESS;

    }

    rnek programn ismi ilk.c olsun. Bu program x86 iin aadaki gibi derleyebiliriz.

    $ gcc -O2 -Wall -Werror -o ilk.dynamic ilk.c

    -O2 ile optimizasyon seviyesi verilir. -Wall ile btn ikazlarn verilmesi salanr.-Werror ile ikazlarn error gibi alglanmas salanr. Bir C programnda hi ikazbulunmamaldr. Prensip olarak ikaz alnan bir C program kullanlmamaldr.Mmknse btn ikazlar temizlenmelidir. -o ilk.dynamic ile elde edilecek yrtlebilirdosyasnn ismi verilir. Burada derleme dinamik olarak yaplmaktadr. Daha sonrastatik derleme yaplacaktr. En sonda bulunan ilk.c ile de derlenecek dosyann adverilmektedir. Bu derleme sonunda elde edilecek alabilir kod, native bir koddur.Sadece x86 makinede iler.

    apraz derleme yapmak ve hedef mimari iin kod retmek iin yukardaki gccifadesinin hemen ba tarafna arm-none-linux-gnueabi- n ekini getirmek yeterliolacaktr. Buna gre ilk.c program aadaki gibi apraz olarak derlenebilir.

    $ arm-none-linux-gnueabi-gcc -O2 -Wall -Werror -o ilk.dynamic ilk.c

    arm-none-linux-gnueabi- ifadesine apraz derleyici n-eki (cross compiler prefix)

    Basit Bir Gml Sistemin Kuruluu uc

Recommended

View more >