Megep Alanlari-Modülleri

Tüm MEGEP Modülleri, İndirmek İçin Tıklayınız

Mikrodenetleyicilerde IDE Derleyici (Compiler) Debugger ve Linker Nedir?

Mikrodenetleyicilerde IDE Derleyici (Compiler) Debugger ve Linker Nedir?

Mikrodenetleyici programlamaya yeni başlayan veya çok fazla bu konularla uğraşmayan kişilerde kafa karışıklığına neden olan yukarıdaki kavramlar bir kaç forumda güzel bir şekilde açıklanmış. Oralardan alıntılar yaparak linklerini burada paylaşıyrum umarım faydalı olur.

Soru ?????  Merhaba bir ccs c kullanıcı olarak bu xc8 i sürekli duyuyorum bu ne oluyor yine bir IDE mi tam anlayamadım da birde bende "MPLAB X IDE v1.95" yüklü bunlada ccs c kodlarını derleyebiliyorum su programları acıklarsanız kısca cok sevınırım ıyı kotu yanları nedlerdır 

 

CEVAP ...(Alıntıdır)

Kütüphane değil derleyicidir yani yazdığın C kodlarını işlemcinini anlayacağı kodlara çevirir.

Bazı terimler yanlış anlaşılabiliyor. Kısa açıklama gereği duydum.

IDE (Integrated Development Environment) yani tümleşik geliştirme ortamı, her hangi bir işlemci, mcu, web, yada masaüstü programı yada uygulaması geliştirmek için gerekli tüm araçları barındırır. Kodun yazılıp, derlenmesi bağlanması, programlanması debug yapılması v.s. hepsi bir program yani IDE ile yapılabilir. IDE kullanmak zorunlu değildir. İstenirse tüm işlemler ayrı ayrıda yapılabilir. Eskiden pic ile asm yazan arkadaşlar bilir. Kodları metin belgesi ile yazıp mpasm.exe ile hex kodu üretirlerdi. Sonrasında seri port programlayıcılar ve ilgili programlama programı ile kodu pice atıp çalıştırırlardı. Tabi daha C'den debug yapmaktan bahsetmiyorum bile. Bunlar işin içine girince IDE'leri kullanmak kaçınılmaz oluyor. IDE'ler genellikle ücretiszdir. Ücretli olan derleyicidir ücretsiz derleyicilerde var tabi. IDE'ler genellikle bir çok derleyiciye, debuggera v.s. destek vermektedirler. Örnek IDE'ler Eclipse, Net Beans, MplabX, CCS IDE, Keil uVision IDE, IAR IDE, Microsfot Visual Studio, Atmel AVR Studio CooCox CoIDE v.s.

Bu arada Eclipse, NetBeans gibi IDE'ler çok popüler olan genel amaçlı açık kodlu geliştirme ortamlarıdır. Herhangi bir firmaya bağlı değillerdir açık kodlu ve ücretsizdirler. Örneğin Eclipse için eklentisi olan bir derleyiciyi kolayca Eclipse'e port edip kullanabilirsiniz. Bir çok derleyicinin Eclipse için eklentileri bulunmaktadır.

Birde son zamanlarda gerek mikrodenetleyici üreten firmalar gerekse diğer firmalar Eclipse, NetBeans gibi IDE'leri kullanarak(Açık kodlu oldukları için) kendi geliştirme ortamlarını üretmektedirler. Örneğin Texasın CCS (Code Composer Studio), ve NXP'nin LPCXpresso geliştirme ortamları Eclipse temellidir. Aynı şekilde yeni çıkan MplabX geliştirme ortamı NetBeans temellidir. Benzer şekilde Atmel'in AVR Studio 6 geliştirme ortamı visual studio temellidir. Bu sayede Eclipse, NetBeans gibi IDE'lere alışmış olan kişiler bu IDE'lere daha rahat alışabilir. Aynı zamanda üretici firmalarda daha az zaman ve para harcayarak kendi geliştirme ortamını üretir. Bu IDE'ler kendini kanıtlamış IDE'ler oldukları için hataları v.s. daha az olur. Yani hem kullanıcı hemde üretici için avantajları vardır.

Editörler adı üstünde düzenleyicilerdir. Kodlarınızı yani kaynak dosyalarınızı editörler ile oluşturabilir, düzenleyebilirsiniz. Yine pic ile asm yazan arkadaşlar bilir, önceleri pic ile asm yazmak için genelde windowsun metin editörü ile bir metin belgesi oluşturulur kodlar buraya yazılarak uzantısı .asm diye kayıt edilirdi. Sonrasında bu dosya mpasm.exe ile çalıştırılarak .hex kod üretilirdi. Bilindiği gibi windowsun metin editörü pek bir özelliği bulunmayan sıradan bir editördür. Günümüzde gerek IDE'lerde entegre olarak gerekse harici olarak programcılar için geliştirilmiş bir çok özelliğe sahip metin editörleri bulunmaktadır. Bu editörlerin bazı özelikleri; Otomatik kod tamamlama özelliği, yazılan kodları, değişkenleri, değerleri v.s. renkli göstererek okumada ve algılamada kolaylık sağlamaları gibi. Harici olarak tavsiye edebileceğim editörler; Notepad++(Kendi kullandığım), Programmer's Notepad editörleridir.

Derleyici yani compiler ise kullandığınız dile göre (C, C++, C#, Java) yazdığınız kodları icra edecek olan denetleyicinin anladığı makine kodlarına çevirir. Örneğin bir mikrodenetleyici için yazdığınız kdo dosyasını .hex uzantılı makine dili koduna çevirir. Derleyicileri arayüzü olmaz en azından ben görmedim. Komut satırı üzerinden belirli parametreler girilerek çalıştırılırlar. Genellikle IDEler ile entegre olduğundan bunu sizin yerinize IDE'ler yapar. Sonuç olarak gelişmiş programlama dilleri ile yazdığınız kodlar makine diline çevirlir. Örnek derleyiciler, XC8, XC16, AVR-GCC, SDCC v.s. derleyicilerdir. Birde GCC adı altında birçok ürüne hizmet veren ücretsiz derleyiciler vardır ki bunlar ayrı bir dünyadır. http://gcc.gnu.org/ adresinden incelenebilir. GCC'ler bedavadır ve özgür yazılım felsefesinin ürünleridir. Bedava oldukları için genellikle kurulumu zordur. Kullandığınız IDE'ye sizin entegre etmeniz gerekir ve uğraştırır. Örneğin AVR-GCC'nin Eclipse entegre edilmesi.

Linker ise yani bağlayıcı derleyici tarafından üretilen makine kodlarını birbirine bağlayıp kullandığınız sistemin işletebileceği tek bir program üreten araçtır. Yazdığınız kodlar birden çok kütüphane dosyası v.s. içerebilir. Bunlar derleyici tarafından ayrı ayrı derlenip parça parça dosyalar üretilir. Linker bu dosyaları kullandığınız denetleyicinin hafızasına yerleştirip bir biri ile bağlantısını yapar. Örneğin mikrodenetleyici ile lcd ve onunla ilgili kullandığınız bir kütüphane var. main.c dahil 2-3 tane dosyanız var ise bunlar derleyici tarafından ayrı ayrı derlenir. Sonrasında bağlayıcı tarafından hafızada uygun yerlere yerleştirilir tek bir .hex uzantılı dosya oluşturulur. Linkerler genelde .exe halinde derleyici ile birlikte kurulduğundan isimleri pek bilinmez. Örneğin; linker.exe, link.exe gibi isimleri vardır. Linker olayı genelde C, C++, C#, Java gibi gelişmiş programlama dillerinde vardır. Assembly gibi dillerde de çoklu kaynak dosyaları, kütüphaneler v.s. kullanılabilir. Assembly programlamada da sonuçta tek bir kaynak dosyası üretiliyor ama assembly'de bu işi yapan araca linker mi deniliyor emin değilim.

Debugger ise sonuç olarak ürettiğiniz kodu yada programı adım adım çalıştırarak ve daha başka güzellikler sağlayarak analiz etmeye yarar. Yazdığınız fonksiyonların düzgün icra edilip edilmediğini, doğru sonuçlar verip vermediğini, kodunuzun istediğiniz gibi icra edilip edilmediğini debugger sayesinde öğrenebilirsiniz. En basit örnek ile kendimden örnek vereyim yaptığımın mikrodenetleyicili bir devrenin çalışıp çalışmadığını anlamak, devreden bir işaret alabilmek için başlangıçta bir led yakıp söndürürdüm. Sonrasında devre çalışıyor deyip kodu yazmaya geçerdim. Sonrasında oluşacak hataları ise ön sezilerim ile 6. 7. hislerimi kullanıp tüm çakralarımı açarak bulmaya çalışırdım. Sonuç olarak debugger ile işlemcinizin içine girip yazdığınız kodları tek tek icra edebilirsiniz. Örnek debuggerlar, J-Link, U-Link, ST-Link, Pickit, ICD, MSP430 Fet Debugger v.s. cihazlardır.

Programlayıcı yani programmer ise adı üstünde programlayıcıdır. Kodunuzu geliştirdiniz derlediniz debug ettiniz hiç bir sorun yok çok güzel, artık kodunuzu programlayıcı ile işlemcinize atıp cihazın kapağını kapatabilirsiniz. Genelde debuggerlar ile program atılır yani debuggerların program atabilme özelliği vardır. Fakat bazı debuggerlar sadece debug kodu üretirler ticari nedenlerden dolayı. Programlayıcıyı ayrıca satın almak gerekir. Bazı arkadaşlar diyebilirki debug yapınca zaten program atılıyor. Evet doğrudur program işlemci içine atılmadan debug yapılamaz zaten.(simulatör kullanımı hariç) Yalnız derleyiciler debug(yani geliştirme aşamasında olan program) ve release(yani bitmiş olan program) diye iki derleme yaparlar. Debug için üretilen kodlarda derleyici otomatik olarak debug işlemleri için bir kaç kod ekler ne olduğunu bilmeyiz. Bu sayede kodunuz önemsenmeyecek ölçüde büyür ama debug yapılabilir hale gelir. Debug işlemi bitince kod zaten işlemcinizin içinde olduğu için programınız çalışmaya devam eder. Debug ve Release kod arasında boyut farkı olduğu için illaki çalışma hızları, optimizasyonu v.s. aynı değildir ama bariz bir fark yoktur. En azından ben görmedim. Belki çok hassas zamanlama yada hız gerektiren uygulamalarda görülebilir. Bitmiş hazır üretimine geçilmiş mikroişlemcili ürüne program atılması yapılırken kodun release olarak derlenip atılmasında fayda var. Yani doğrusu budur. Bazı programlayıcılar, Pickit, MSP430 Gang Programmer, USB Brenner v.s.

Konunun tartışıldığı yer

http://www.picproje.org/index.php?topic=52980.0

 

Dost Siteler: Bursa Rehberi Ulus Otomasyon Guvenli Emlak Megepmodulleri Megep Modülleri

Sitemizin resmi MEGEP sitesi ile herhangi bir bağı yoktur.
Sitemiz üzerinde bulunan MEGEP dokumanları resmi siteden alınmıştır.
Dokümanların güncelliğinden sitemiz sorumlu değildir. Kullanıcıların paylaştığı dosya ve mesajların sorumlulukları kendilerine aittir. Herhangi bir lisans hakkınız olduğunu düşünüyorsanız lütfen bizimle iletişime geçiniz. ilgili dokuman veya yazı en kısa sürede kaldırılacaktır.