İçerik. Çapraz geliştirme yöntemleri ve araçları Önyükleyiciler C kütüphaneleri Linux Çekirdeği Linux sürücüleri



Benzer belgeler
Akademik Bilişim Linux Çekirdeği. Berk Demir

FreeBSD 5.X Serisi. Ömer Faruk Şen EnderUNIX Çekirdek Takımı Üyesi

Linux Dosya ve Dizin Yapısı

BİT in Temel Bileşenleri (Yazılım-1)

YRD. DOÇ. DR. AGÂH TUĞRUL KORUCU Kernel çeşitleri

İSTANBUL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ SİSTEM PROGRAMLAMA DERSİ. Öğr.Gör. Mehmet DEMİR

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Linux Dosya Yapısı. Eren BAŞTÜRK.

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur.

Çekirdek Nedir? Ne yapar?

LİNUX İŞLETİM SİSTEMİNİN KÖPRÜ MODUNDA ÇALIŞTIRILMASI VE GÜVENLİK DUVARI İŞLEMLERİ

REALTIME LINUX. 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

Linux İşletim Sistemleri. Eren BAŞTÜRK.

Açık Kaynak Kodlu Yazılım

Yrd. Doç. Dr. A. Burak İNNER

Bilgisayar Sistemlerine Genel Bakış

YRD. DOÇ. DR. AGÂH TUĞRUL KORUCU

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması

Bilgisayar İşletim Sistemleri BLG 312

Linux Çekirdeği : Dünü, Bugünü ve Yarını. Ekin Meroğlu. ekin@pardus.org.tr

Android e Giriş. Öğr.Gör. Utku SOBUTAY

EKLER EK 12UY0106-5/A4-1:

Temel Linux Eğitimi. İçindekiler

TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Enformatik Bölümü

DERS 10 İŞLETİM SİSTEMİ ÇALIŞMA PRENSİBLERİ VE HATA MESAJLARI

.. YILI BİLGİSAYAR SİSTEM KURULUM BAKIM ONARIM VE ARIZA GİDERME KURS PLANI MODÜL SÜRESİ

.. YILI BİLGİSAYAR SİSTEM KURULUM BAKIM ONARIM VE ARIZA GİDERME KURS PLANI MODÜL SÜRESİ

Linux ve Windows Üzerinde C ve C++ Kullanımı

Optik Sürücüler CD/CD-ROM DVD HD-DVD/BLU-RAY DİSK Disket Monitör LCD LED Projeksiyon Klavye Mouse Mikrofon Tarayıcı

Kemalettin YıldY KADIR HAS UNIVERSITY. UNIX SYSTEM ADMINISTRATOR

Linux'ta Kabuk ve Kabuk Programlama

Bilgisayar Donanımı Dersi BİLGİSAYARIN MİMARI YAPISI VE ÇALIŞMA MANTIĞI

Temel Linux Eğitimi 1., 2. ve 3. Bölümler

İşletim Sistemleri (Operating Systems)

Linux Terminal Sunucu LKD

İşletim Sistemlerine Giriş

İşletim Sistemleri. Discovering Computers Living in a Digital World

I. Oturum: GNU/LINUX A GİRİŞ

Hızlı Kurulum ve Yapılandırma Kılavuzu

GENTOO LINUX ve KURULUMU

Önyükleyiciler. Ercan Ersoy

Nasıl Pardus Geliştiricisi Olunur?

C# nedir,.net Framework nedir?

Açık Kod VPN Çözümleri: OpenVPN. Huzeyfe ÖNAL

Debian GNU/Linux'da BootSplash & Grub Temalarının Kurulumu

İŞLETİM SİSTEMİNİN TEMELLERİ VE POST (İLK AÇILIŞ)

Pardus 2011 Kurulum Belgesi Sürüm Ocak İçindekiler

PROGRAMLAMA TEMELLERİ

Linux Çekirdeği 2.6 ve Güvenlik. Fatih Özavcı IT Security Consultant.

Apache üzerinden Red Hat 5 yüklenmesi

Bitirme Ödevi Sunumu PLATFORM BAĞIMSIZ BENZETİM PROGRAMI. Danışman : Yrd.Doç.Dr. D Feza BUZLUCA Gökhan Akın ŞEKER

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ

Dersin Konusu ve Amaçları: Ders P lanı: Bölüm 1: Bilgi Teknolojilerinde Temel Kavramlar

Linux un Tarihsel gelişimi

DONANIM. 1-Sitem birimi (kasa ) ve iç donanım bileşenleri 2-Çevre birimleri ve tanımlamaları 3-Giriş ve çıkış donanım birimleri

İşletim Sistemleri. B L M Mesleki Te r minoloji I I Ö ğ r e n c i S unumu

1 STUNNEL NEDİR? 2 STUNNEL KURULUMU

DOSYA NEDİR? Verilerin HDD de saklanması. Verilerin HDD de saklanması DOSYA SİSTEMİ NEDİR?

Kap Temelli Özgür Sanallaştırma Çözümleri

İşletim Sistemi. BTEP205 - İşletim Sistemleri

Kurumsal Masaüstü ve Sunucularda Pardus

Temel Kavramlar-2. Aşağıda depolama aygıtlarının kapasitelerini inceleyebilirsiniz.

Kampüs Ağlarında Köprü-Güvenlik Duvarı (Bridge Firewall) ve Transparent Proxy

PARDUS TOPLULUK SÜRÜMÜ 3.0 KDE KURULUMU

İŞLETİM SİSTEMLERİ. (Operating Systems)

Temel Bilgisayar (Basic Computer) Yazılım (Software)

Pardus Temel Seviye Kullanıcı Eğitimi. Sürüm Ağustos 2012 Pardus K Fatih Akıllı Tahta sürümüne göre hazırlanmıştır.

DONANIM VE YAZILIM. Bilişim Teknolojileri ve Yazılım Dersi

Acarix CD-DVD/Ağ üzerinden çalışan GNU/Linux Dağıtımı

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

İşletim Sistemleri ve FreeBSD. 22 Nisan 2005 Halil DEMİREZEN EnderUNIX Geliştirici Takım Üyesi

Computer Architecture. RAID: (Redundant Array of Independent/Inexpensive Disks)

Pardus. A. Murat Eren, 25 Mart Pardus Geliştiricisi. Pardus Yenilikleri Sık Sorulan Sorular

1. PS/2 klavye fare 2. Optik S/PDIF çıkışı 3. HDMI Giriş 4. USB 3.0 Port 5. USB 2.0 Port 6. 6 kanal ses giriş/çıkış 7. VGA giriş 8.

Bölüm1. İlk Bilgiler ISBN

Linux Terminal Sunucusu. Afşin Taşkıran

BSD İşletim Sistemi Ailesi. EnderUnix Çekirdek Takımı Üyesi afsin ~ enderunix.org

LİNUX. Dosyalar ve dizinler

AirTies Kablosuz Erişim Noktası (Access Point) olarak kullanacağınız cihazı bilgisayarınıza bağlayarak ayarlarını yapabilirsiniz.

İşletim Sistemlerine Giriş

Binnur Kurt İstanbul Teknik Üniversitesi Bilgisayar MühendisliM

İŞLETİM SİSTEMLERİNE GİRİŞ. Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği

WeldEYE. Kurulum Kılavuzu. İçindekiler

Linux Çekirdeğine Nasıl Katkı Verilir?

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

Öğr.Gör. Gökhan TURAN Gölhisar Meslek Yüksekokulu

Pardus. S.Çağlar Onur, 21 Aralık Pardus Projesi [TÜBİTAK / UEKAE] Linux Kullanıcıları Derneği

Wake-On-Lan& LDCM Nedir?

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

MOBIL UYGULAMA GELIŞTIRME

Gömülü Sistem Tasarımı. Dr. Deniz TAŞKIN

Linux altında komut satırında...

Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos

ÇOK ÇEKİRDEKLİ İŞLEMCİLER VE PARALEL YAZILIM GELİŞTİRME OLANAKLARI HAKKINDA BİR İNCELEME

BİLGİSAYAR KULLANMA KURSU

Bölüm 13: Giriş-Çıkış (I/O) Sistemleri

Linux e Giriş ve Dağıtımlar

Linux Performansını Arttırmak. S.Çağlar Onur

Transkript:

İçerik Çapraz geliştirme yöntemleri ve araçları Önyükleyiciler C kütüphaneleri Linux Çekirdeği Linux sürücüleri

Örnek Gömülü Sistem

Gömülü Sistemlerde Linux Kullanımı İşlemcimiz 32/64 bit mimaride mi? MMU var mı? ağ tabanlı bir iş yapılacak mi? Gerçekleştirmesi zor, ve karmaşık arayüzler mi kullanacaksınız? bluetooth USB

Gömülü Sistemlerde Linux Kullanımı Avantajlar: Üstün donanım desteği Açık kaynak topluluğu Topluluk ve şirket desteği (e posta grupları, MontaVista software,...) Dezavantajlar: GPL ile ilgili korkular sıkı gerçek zamanlı uygulamalar

Gömülü Sistemler Üzerinde Geliştirme Anasistem(Host): Geliştirmenin üzerinde yapıldığı sistem örn: Masaüstü PC'niz Hedef(Target): Üretilen kodun üzerinde çalışacağı sistem örn: Üzerinde ARM işlemcisi olan, Linux çalıştıracak olan yeni tasarladığınız ekmek kızartma makinanız ;) Örnek: x86 > ppc8260, sparc > omap5912

Örnek Geliştirme Ortamı

Çapraz Geliştirme Araç Zinciri Hedef ortamımızı kullanılabilir kılmak için: binutils gcc c kütüphanesi (glibc uclibc newlib...) önyükleyici (u boot grub redboot...) Kök dosya sistemi Linux Çekirdeği

Çapraz Geliştirme Araç Zinciri Kendine eziyet etmeyi sevenler: binutils gcc c kütüphanesi(uclibc, libc,...) Linux çekirdek başlıkları İşlerin aşağıda nasıl yürüdüğünü anlamak için iyi bir deneyim Biraz zahmetli

ld: linker as: assembler Binutils objcopy: nesne dosyalarını kopyalamak ve tercüme etmek için objdump: nesne dosyalarıyla ilgili bilgileri görmek için(disassemble, relocation) readelf: elf formatındaki dosyalarla ilgili bilgileri okumak için

Binutils addr2line, ar, nlmconv, nm, size, strip, ranlib, gprof, c++filt Yapılandırma:./configure prefix host target enable languages

with cpu with float Örnek yapılandırma: Binutils configure prefix=/path/to/src/binutils 2.x/./configure build=i386 linux gnu host=i386 linux gnu target=arm linux uclibcgnueabi enable languages=c with gnu ld withfloat=soft with cpu=xscale with arch=armv5te make; make install

gcc binutils derledikten sonra sıra bootstrap derleyicimizde C'den başka bir dil için gcc derlemek istiyorsak, önce hedef platform için C derleyebilen bir derleyici ve C kütüphanesi derlememiz gerekiyor Ondan sonra bu C kütüphanesini kullanarak diğer diller için gcc derleyebiliriz

gcc yapılandırması Yapılandırma için binutils'e verdiğiniz parameterlerle aynı parametlereri kullanın make; make install

Kullanıcı Çekirdek Donanım İlişkisi

uclibc C Kütüphaneleri Küçük boyutlu, glibc uyumlu glibc Standart gnu kütüphanesi dietlibc Sadece statik bağlanmış dosyalar yaratabiliyor newlib Red Hat tarafından desteklenen alternatif

uclibc uclinux projesi kapsamında yazılmaya başlandı. Neredeyse tamamen glibc uyumlu Dinamik bağlama desteği Thread desteği libuclibc 0.9.28.so(arm için derlenmiş) 305k

uclibc Araç zincirimiz hazır ise ncurses tabanlı yapılandırma: make menuconfig Hedef mimariyle ilgili seçenekler kütüphaneyle ilgili seçenekler(posix thread'leri, malloc implementationı) ağ desteği(rpc, ipv6) geliştirme ortamının yer make; make install

Çapraz Geliştirme Araç Zinciri Daha insancıl yöntemler: Buildroot (http://buildroot.uclibc.org) Scratchbox (http://www.scratchbox.org) ELDK(http://www.denx.de/wiki/DULG/ELDK) crosstool(http://www.kegel.com/crosstool/) Hazır derlenmiş başka araçzincirleri(codesourcery, vs...)

Buildroot Makefile'lar ve yamalardan oluşuyor kök dosya sistemi otomasyonu Derledikleri: busybox linux çekirdeği binutils gcc uclibc

package Buildroot Nasıl Çalışır? buildroot'un derleyip hedef kök dosya sistemine atabileceği araçlar ile ilgili Makefile'ları ve yamaları içerir toolchain binutils, gcc, uclibc, ccache, gdb, kernel target kök dosya sistemi ve önyükleyiciyi derlemek için gerekli Makefile'lar ve yamalar

Buildroot

Buildroot svn co svn://uclibc.org/trunk/buildroot make menuconfig make; make install

Busybox çoğu unix aracının sadeleştirilmiş hallerini içerir Linux tabanlı gömülü sistemlerde yaygın olarak kullanılmakta olan bir paket Kolay yapılandırma, ve derleme. uclibc ile statik olarak link edildiğinde 450 500k civarı bir dosya boyutu.

Busybox standart unix araçları ls, cp, cat, rm, chmod,... (~70 araç) ağ araçları traceroute, nslookup, ifconfig, httpd,...(~30 araç) arama araçları find, grep arşiv araçları(rpm, dpkg, bunzip2), editorler(vi), dosya sistemi araçları(fsck),...

Busybox'ı Derleyip Çalıştırmak Derleme kısmı gene çok kolay make menuconfig make; make [PREFIX= /kök/fs/] install Busybox içinde derlediğiniz bir programı çağırmak için: busybox ls veya kurulum sırasında yarattığı sembolik link ile: ls

FLASH hafıza yerleşimi İşlemci kontrolu önyükleyiciye verir Önyükleyici donanımı hazırlar Kontrolu çekirdeğe verir

Önyükleyiciler U boot (http://u boot.sourceforge.net/) Redboot (http://www.cygwin.com/redboot/) Lilo GRUB LAB(Linux As Bootloader)

Önyükleyicinin işlevi İşlemci çalışmaya başladığı anda denetimi ele alır BIOS görevi görür Bellek ilklendirmesi I/O denetçisi ilklendirmesi Grafik donanımı ilklendirmesi

Önyükleyici seçerken Kullandığım mimariyi destekliyor mu? Arkasında topluluk desteği var mı? Yaygın olarak kullanılıyor mu? Kendi kullanacağım sisteme benzer bir sisteme taşınmış mı? İstediğim özelliklere sahip mi?

Redboot ecos'un hal (Donanım soyutlama katmanı) üstüne yazılmış Ethernet ve seri port üzerinden program yüklenebiliyor TFTP üzerinden dosya sistemi imajı yüklenebiliyor ARM, MIPS, PPC, IA32 destekliyor.

LAB Linux çekirdeğinin gereken kısımları alınarak oluşturulmuş ARM mimarisini destekliyor Dosya, MTD sistemleriyle alakalı kodu kullanıyor. http://handhelds.org/cgibin/cvsweb.cgi/linux/kernel26/lab/modules/

U Boot Gömülü sistemlerde neredeyse standartlaşmış bir ürün Kolay taşınabilirlik Kullanan sayısı yüksek, destek bulması rahat MIPS, ARM, ppc, x86, SPARC TFTP/BootP desteği

Önemli klasörler: U Boot'u Taşımak../u boot 1.1.x/cpu işlemciye bağımlı kaynak kodu tutulur. işlemcinizi destekleyip desteklemediğine buradan bakabilirsiniz.../u boot 1.1.x/board geliştirme boardlarıyla alakalı dosyalar Kullanacağınız kartı tanıyorsa derlemesi make kart_config; make demek kadar kolay

U Boot'u Taşımak İşlemcinizi destekliyorsa işiniz son derece basit Yapmanız gereken kartınızla aynı işlemciyi kullanan benzer bir kart yapılandırma dosyası bulmak(../include/configs/ altinda) ve o dosyayı kendi kartınıza uygun bir şekilde özelleştirmek

U Boot'u taşımak Daha sonra../board klasöründe kendi kartınız için bir klasör yaratıp, diğer kartın dosyalarını buraya atıp özelleştirin Derleyin ve herşey yolunda gittiyse güle güle kullanın http://www.phptr.com/articles/article.asp?p= 674698&seqNum=4&rl=1

Son sürüm: 2.6.21 25 tane işlemci platformu desteği $LNXSRC/arch ~23000 dosya C'de yazılmış C kütüphanesi yok Linux Çekirdeği

Linux Çekirdeği alpha arm arm26 avr32 cris frv h8300 i386 ia64 m32r m68k mips parisc powerpc ppc s390 sh sh64 sparc sparc64 um v850 x86_64 xtensa

Çekirdek yapılandırma Linux çekirdeğini yapılandırmak için: make ARCH=<arch> [config menuconfig xconfig] İşlemci mimarisi Gerekli arayüzleri seç(usb, i2c,...) Process Scheduling I/O Scheduling Ağ desteği Dosya Sistemi

I/O Scheduling I/O optimizasyonu için kullanılır Disk erişimi bilgisayarın gerçekleştirdiği en ağır işlemlerden biri Anticipatory Deadline CFQ(Completely Fair Queueing) NO OP

Çekirdeği derleme make ARCH=<arch> CROSS_COMPILE=<arch> linux make modules_install INSTALL_MOD_PATH=<kökdosyasistemi>

Çekirdek Geliştirme Araçları ketchup: Çekirdek kaynak kodu indirmek ve güncellemek için quilt: Yama yönetimi quilt push quilt pop <patch> PatchSet: quilt'e alternatif Kscope: Kod okumak/analiz etmek için etags/ctags: kod içinde gezinmek için

Linux Modülleri Linux çekirdeği monolitik yapıdadır Çekirdeğe dinamik olarak eklemeler yapmak için modüller kullanılır Sürücü geliştirirken büyük bir avantaj Her değişiklik sistemi baştan başlatmayı gerektirmez Çalıştırılacak kod çekirdekte çalışacağı için dikkatli yazılması gerekiyor

Örnek Modül

Linux Aygıt Sürücüleri Linux iki tür aygıt tanır Karakter Örn: Webcam, ekran kartı, ses kartı Blok Örn: hard disk, loopback aygıtı Sürücüler ise üç türlüdür Karakter Blok Ağ

REKLAMLAR Gömülü Linux veya çekirdek programlamayla uğraşacaksanız okumanız *şart* olan kitaplardan http://lwn.net/kernel/ldd3/

Kullanıcı Çekirdek Donanım İlişkisi

Kök Dosya Sistemi(RootFS) Çekirdeğin sistem açılışında bağlayacağı '/' dizini Önyükleyici sonrası kullanılan bütün yazılımı içerir( Linux çekirdeği, busybox,...) Sistemimizin yer sorunu olabilir, gereksiz hiçbir program bulundurmamakta fayda var

Kök Dosya Sistemi(RootFS)../bin../boot../dev../etc../lib../mnt../sbin../usr../bin../lib../sbin

Kök Dosya Sistemi'ni Yaratmak Herşeyimiz hazır ise ext2, ext3, reiserfs, jffs2,... mkfs.jffs2 d./rootfs o rootfs.jffs2.img

strace Sistem çağrılarını takip etmek için kullanılır IPC, ağ, processler, sinyaller ile alakalı sistem çağrılarını filtreleyerek göstertebilirsiniz Örn: strace e trace=network <dosya_adı> Child process'leri de takip edebilirsiniz( f)

ltrace: ltrace & mtrace C kütüphanesi çağrılarını takip etmek için mtrace: bellek ile alakalı çağrıları takip etmek için malloc(), realloc(), free()

Gerçek zaman Ingo Molnar'in 2.6 rt çekirdek ağacı RTLinux RTAI

Gerçek Zaman Yamaları realtime preempt http://people.redhat.com/mingo/realtime preempt/ realtime lsm http://sourceforge.net/projects/realtime lsm/ hr timers http://high res timers.sourceforge.net/