sdcc – small device c compiler
Mikro denetleyiciler ile oldukça sık uğraşıyorum aynı zamanda linux kullanıyor / kullanmak istiyorum diyorsanız sdcc tam size göredir. oldukça basit ve kullanışlı olan sdcc kendi sitesinde
“SDCC is a retargettable, optimizing ANSI – C compiler that targets the Intel 8051, Maxim 80DS390, Zilog Z80 and the Motorola 68HC08 based MCUs. Work is in progress on supporting the Microchip PIC16 and PIC18 series. SDCC is Free Open Source Software, distributed under GNU General Public License (GPL).”
şeklinde tanımlanıyor. yani tam bizim istediğimiz şey.
Dağıtım olarak benimde destek verdiğim ve kullandığım dağıtımlardan biri olan PARDUS dağıtımını kullanıyorsanız contrib deposunu depo listenize ekledikten sonra
# sudo pisi it sdcc
komutunu kullanarak sdcc yi pardusunuza kurabilirsiniz. faklı bir dağıtım veya işletim sistemi kullanıyorsanız http://sdcc.sourceforge.net adresinden gerekli paketleri bulabilirsiniz.
Pardus gibi paket yöneticisi olan bir dağıtım kullanıyorsanız mevcut bağımlılıklar algılanarak gerekli diğer paketler sdcc ile birlikte kurulacaktır.
sdcc kurmadan önce sisteminize kurmanızda fayda olan ve gerekli bazı paketler mevcut.Bu paketlerden en önemlileri gputils, gpsim paketleridir. Bu paketlerin sisteminizde olup olmadığını kontrol ederek eğer yok ise sdcc kurulumuna başlamadan önce bu paketlerin kurulumunu yapınız.
Eğer ben kendi işimi kendim yaparım diyorsanız ( Ben dağıtım olarak debian kullandığım için sdcc nin paketlenmiş hali mevcut. Bu yüzden kaynak koddan kurulum yapmaya gerek duymuyorum.)
# svn co http://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc sdcc
ile güncel kaynak koduna ulaşıp kendiniz derleyebilirsiniz. kurulum bilgi dosyasından veya http://sdcc.sourceforge.net sitesinden kurulum hakkında detaylı bilgi alabilirsiniz.
sdcc kurulduktan sonra
# sdcc -v
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.6.0 #4309 (Nov 10 2006) (UNIX)
bilgisini alıyoruz. Bu bizi sdcc nin büyük olasılıkla sorun çıkarmadan çalışacağını gösteriyor. sdcc de karşılaşılabilecek en önemli sorun kütüphanelerin eksik derlenmesi, linklerin oluşturulmaması v.b. olabilir.
sdcc miz hazır olduğuna göre derleyicinin manuellerine hemen bir göz atarak basit bir kod yazalım
#define __16f84
#include “pic/pic16f84.h”
typedef unsigned int word;
word at 0x2007 __CONFIG = 0x3f72;
unsigned char count;
void main(void) {
TRISA = 0;
count = 0;
while(1) {
PORTA = count;
count ++;
}
}
komuduzu ornek.c olarak kaydedelim.
# sdcc -mpic14 -p16f84 ornek.c
message: using default linker script “/usr/share/gputils/lkr/16f84.lkr”
# ls
ornek.asm ornek.c ornek.cod ornek.hex ornek.lst ornek.o ornek.p
ornek.c dosyamız başarı ile derlendi. Artık mcu larımız için linux altında kod yazıp onları derleyebiliriz.