Nedir bu XC8 ?

Başlatan baran123, 01 Mayıs 2014, 23:10:08

baran123

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 

Kabil ATICI

#1
CCS C'nin Microchip karşılığı diyelim. 8 bit işlemciler için C derleyici kütüphanesi.
ambar7

baran123

hocam peki ccs de ki kodlar aynen mi yazılır yoksa farklı bir mantığımı farklığı var mı ?

subram

#3
kodlar aynen yazılımıyor. Olay şu şekilde; siz kodları herhangi bir yerde yazdınız (notepad, mplab vs farketmez) sonra bu kodları .hex formatına çevirmeniz lazım. Bunun için karşımıza alternatif derleyiciler çıkıyor: CCS C ya da XC. Tabii kodları yazarken hangi derleyiciyi kullanacağımızı önceden seçmemiz ve kodumuzu kullanacağımız derleyicinin standartlarına göre yazmamız lazım.
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

baran123

ccs c ile çalışıyorum xc de öğrenmem iyi olur mu yoksa ccs c den mi devam etmeliyim ?

Kabil ATICI

Farklı derleyiciler ile çalışmak bir problemin çözümünün birkaç tane olabileceğini görmek açısından faydalı olacaktır.  Farklı bakış açıları kazandırır. Her birini çok iyi bilmen gerekir yoksa olay bir çorbaya dönüşür, ne nerede diye karıştırmaya başlarsın.

ambar7

Erhan YILMAZ

#6
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.

Forumda yeni başlayan arkadaşların kavramları anlamakta zorlandığını yada yanlış anladığını fark ettiğim için bu yazıyı yazma gereği duydum. Arzu edilirse başka yere taşınabilir. Yanlış yazdığım bir yere düzeltirseniz sevinirim.

baran123

@erhan yılmaz çok teşekkür ederim kafamdaki bütün sorular çözüldü yazınız bir bölüme sabitlenirse iyi olur

İyi çalışmalar herkese

RaMu

Öncelikle yazı çok güzel ve çok faydalı olmuş eline sağlık.

Şunuda baştan belirteyim,
pic i üreten firma microchip tir,
microchip in  kendi sunduğu kod geliştirme ortamı MPLAB ve MPLABX tir,
derleyicileri; mpasm, c için c18 c30 xc8 xc16 xc32 vs.
ccsc mikroc vs. diğerleri 3. şahıs oluyorlar,
bu nedenle dahi mplabx tercih sebebi olur
çünkü pic ölene kadar bu microchipin kendi derleyicisi ayakta kalacaktır
diğerlerinin başına heran herşey gelebilir,
örneğin hi-tech c deerleyicisi öncelikle microchip tarafından satın alındı ve
kısa süre sonra artık hiçbir ekleme yapılmayacağı destek verilmeyeceği açıklandı
yani microchip hitech c yi satınaldı ve fişini çekti
yarın birgün mikroc ye ccs ye yapmayacağını yapamayacağını bilemeyiz.


Alıntı yapılan: Erhan YILMAZ - 02 Mayıs 2014, 00:39:04
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. Linkerlar genelde .exe halinde derleyici ile birlikte kurulduğundan isimleri pek bilnmez. Örneğin; linker.exe, link.exe gibi isimleri vardır.


Bende yanlış biliyor olabilirim ama linker
yazılan programda bulunan
örneğin C için lcd gibi kütüphaneleri veya bunların kullandıkları fonksiyonların kütüphanelerini
ana programı,
yardımcı varsa C programını,

asm için; (belki bunu C içinde yapıyordur)
ana asm programı,
projeye eklenen yardımcı alt asm programlarını
relocatable program kodlarını,
.inc include ile tanımlı mikrodenetleyici port register adreslerinin sayı karşılıklarını
vb.

programın tüm bileşenlerini birbirine bağlayan
bu sayede programı derleyici tarafından derlenebilecek
hale getiren ve derleme esnasında gerekli tüm tanımlamaların,
gerekli tüm dosyaların, kodların, kod parçalarının, fonksiyonların
bir bütün halinde derlenebilmesini sağlayan şey linker diye zannediyorum.



Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

sigmoid

Farklı derleyiciler ile çalışmış biri olarak tecrübelerimi paylaşayım. Öncelikle kullanılan derleyici kişiye göre değişmekle birlikte tercih meselesidir. Günümüzde BASIC derleyicileri ile de profesyonel projeler yapanlar var.

Assembly: 1010 makine diline en yakın alt seviyeli dildir. Datasheet içinde instruction set kısmında her komutun 1010 makine dili karşılığını görebilirsiniz. PIC'e tam kontrol sağlamakla birlikte büyük projeler yaparken saç baş yoldurur. Yüksek performanslı az yer kaplayan kodlama yapabilirsiniz. Kullandığınız program kodlarını başka projelere taşırken bile zorlanabilirsiniz.

MikroC: İçerdiği hazır kütüphaneler sayesinde çok hızlı program geliştirebilirsiniz. ANSIC den bazı noktalarda ayrılmaktadır. Büyük küçük harf duyarlılığı yoktur, ister büyük harfle isterseniz küçük harfle yazın değişkenler hep aynıdır.  PIC içerisindeki registerlara direk erişmenize izin vermesi hoşuma gitmiştir. Kütüphaneleri kapalı olduğundan bazen ihtiyacınıza cevap veremediği durumlarda canınızı sıktığı durumlar olabilir. Yardım dosyasında örnek kodların yanında devre şemalarının olması da artısıdır.

CCSC: Kütüphanelerinin de açık olduğu c derleyicisidir. ANSIC den uzak bir dildir. PIC'e ait bir çok şeyi fonksiyonlarla yapabilirsiniz.

Hitech C: ANSIC standartlarına uygun güçlü bir C derleyicisidir. PIC'e tam kontrol sağlayabilirsiniz. Ama kütüphaneleri de kendiniz yazmanız gerekir.

XC8: Hitech C microchip tarafından satın alındıktan sonra artık xc8,xc16,x32 derleyicileri olarak üretilmeye devam etmektedir. XC8 8bitlik mikrodenetleyici ailesi için geliştirilen derleyicidir. PIC18 ailesi için kütüphaneleride mevcuttur.

Kullandığınız derleyiciyi MPLABX geliştirme ortamına ekleyerek sorunsuz bir şekilde debug işlemi yapabilirsiniz. Kodunuzdaki hatanın nereden kaynaklandığını kolayca çözebilirsiniz. Hata kodlamada mı, derleyici de mi yoksa donanımsal mı? PICkit2,PICkit3 ile devre üzerinde debug yapabilirsiniz. eskiden mikroC ile kod yazdığım dönemlerde MPLAB'a ekleyemediğim içim bırakıp hitech cye geçmiştim, iyikide geçmişim diyorum.

Erhan YILMAZ

#10
İlginiz için teşekkür ederim. Editörler ve IDE'ler ilgili unuttuğum bir kaç birşey daha ekledim.

@Ramo hocam bende önce derleyici derler sonra linker bağlar diye biliyorum. Diğerleri dediğiniz gibi fonksiyonların v.s. adreslerini atayarak hepsini birbirine bağlar. Akşam vakit bulursam bir araştırayım.

mesaj birleştirme:: 02 Mayıs 2014, 09:14:40

Dediğim gibi nette bir baktım önce derleyici derliyor sonra linker bağlıyor. %100 iddaa etmiyorum tabi.

mesaj birleştirme:: 02 Mayıs 2014, 09:38:32

Dediğim gibi önce derleyici derliyor sonra linker bağlıyor.
http://ww1.microchip.com/downloads/en/DeviceDoc/50002027C.pdf Sayfa 20'de olayı özetlemiş.

RaMu

Aynen dediğin gibi gözüküyor,
benim anlattığım yanlış,
bir ara ide ve derleyici yapayım diyordum
o zamanlar araştırmıştım ama
görünen o ki iyiki yapmamışım :)



Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Gökhan BEKEN

Konu sabitlenmiştir, faydalı olmalı dileğiyle.
Paylaşımcılara teşekkürler.
Özel mesaj okumuyorum, lütfen göndermeyin.

Erhan YILMAZ

Konu başlığı içerikten uzak kalmış. IDE, Editör, Derleyici, Bağlayıcı, Debugger, Programlayıcı Nedir? gibi bir başlık olarak sabitlense daha iyi olur.

Extreme

Konu çok çok açıklayıcı olmuş ve konu başlığı ve bölümü değiştirilebilir.