|
|
| Bu makalenin farklı dillerde bulunduğu adresler: English Castellano ChineseGB Deutsch Francais Italiano Nederlands Russian Turkce |
tarafından Guido Socher (homepage) Yazar hakkında: Guido, Lınux'u sadece işletim sistemlerinin nasıl çalıştığını öğrenmenin ilginç olduğu için değil, aynı zamanda onu tasarlayan kişiler yüzünden sevmektedir. Türkçe'ye çeviri: Erdal MUTLU <erdal(at)linuxfocus.org> İçerik:
|
Özet:
Atmel firmasının AVR 8-Bit RISC Mikroişlemcisi çok yaygın
bir mikroişlemcidir. Tek bir çipte EEPROM, Ram, Analog'dan Digital'e
çevirici, birçok digital giriş ve çıkış hatı, zamanlayıcılar, RS 232
haberleşmesi için UART ve daha fazlasına sahiptir.
En iyisi ise, Linux için tam bir uygulama geliştirme ortamına
sahip olmasıdır: Bu mikroişlemciyi C ve GCC kullanarak
programlayabilirsiniz. Bu yazıda GCC nasıl yüklenip kullanılacağı
anlatılacaktır. Ayrıca, yazılımın Mikroişlemciye nasıl
yükleneceği de anlatılacaktır. Sahip olmanız gerek şeyler,
AT90S4433 Mikroişlemcisi, 4MHz kristal, kablo ve birkaç
ucuz parça daha.
Bu yazı sadece giriş seviyesinde olacaktır. Daha sonraki yazıda,
tuşları, digital ve analog girişleri, LED'leri olan bir LCD
ekran oluşturacağız. Oradaki düşünce, Linux için genel amaçlı
bir denetim paneli oluşturmak olacaktır. Ancak ilk önce, bu yazının amacı olan
uygulama geliştirme ortamını yüklemeyi öğrenelim.
GNU C uygulama geliştirme ortamını kullanmak için aşağıdaki yazılımlara gereksinim vardır:
| binutils-2.11.2.tar.bz2 |
ftp://ftp.informatik.rwth-aachen.de/pub/gnu/binutils/ veya ftp://gatekeeper.dec.com/pub/GNU/binutils/ adresinden elde edilebilir. |
| gcc-core-3.0.3.tar.gz |
ftp://ftp.informatik.rwth-aachen.de/pub/gnu/gcc/ veya ftp://gatekeeper.dec.com/pub/GNU/gcc/ adresinden elde edilebilir. |
| avr-libc-20020106 .tar.gz | AVR C-kütüphanesi:
http://www.amelek.gda.pl/avr/libc/ veya
yazılım sayfası adresinden elde edilebilir. |
| uisp-20011025.tar.gz | AVR programcısı: http://www.amelek.gda.pl/avr/libc/ veya yazılım sayfası adresinden elde edilebilir. |
mkdir /usr/local/atmel
bunzip2 -c binutils-2.11.2.tar.bz2 | tar xvf
-
cd binutils-2.11.2
./configure --target=avr --prefix=/usr/local/atmel
make
make install
tar zxvf gcc-core-3.0.3.tar.gz
cd gcc-core-3.0.3
./configure --target=avr --prefix=/usr/local/atmel
--disable-nls --enable-language=c
make
make install
Birkaç çevre değişkenin ayarlanması gereklidir
(yazımşekli bash kabuğu için):
export CC=avr-gcc
export AS=avr-as
export AR=avr-ar
export RANLIB=avr-ranlib
export PATH=/usr/local/atmel/bin:${PATH}
./configure --prefix=/usr/local/atmel --target=avr
--enable-languages=c --host=avr
make
make install
tar zxvf uisp-20011025.tar.gz
cd uisp-20011025/src
make
cp uisp /usr/local/atmel/bin
|
1 x AT90S4433, Atmel 8 bit Avr risc işlemcisi. |
|
2 x 14 pin IC socket veya 1 x 28 pin 7.5mm IC socket 28 pin socket bulmak biraz daha zordur. Genellikle, 28 socket 14mm genişliğindedir, ancak bize 7.5mmm genişliğindeki olan gereklidir. |
|
1 x 10K direnç (renk kodu: kahverengi,siyah,turuncu) 3 x 470 Ohm direnç (renk kodu: sarı, mor, kahverengi) 1 x 1K direnç (renk kodu: kahverengi, siyah, kırmızı) 1 x 220 Ohm direnç (renk kodu: kırmızı, kırmızı, kahverengi) 1 x 4Mhz kristal 2 x 27pf seramik kondansatör |
|
Programcı için herhangi 5 pin connector/socket. Ben genellikle daha uzun olanlarından alıyorum ve 5'lik olarak kesiyorum. |
|
matris devre |
|
paralel port için 1 x DB25 connector. |
|
1 x LED |
|
Breadboard. Biz burada bunu kullanmayacağız, ancak AVR ile ilgili başka deneyler yapacaksanız, oldukça işinize yarayacaktır. Ben, Mikroişlemci ile kristali matris devresi üzerinde bırakmanızı ve giriş/çıkış hatlarını kısa kablolar ile breadboard'a bağlamanızı öneririm. |
![[AVR programcı]](../../common/images/article231/pcable.jpg)
| AVR'deki uç | paralel porttaki uç |
|---|---|
| SCK (19) | Strobe (1) |
| MISO (18) | Busy (11) |
| MOSI (17) | D0 (2) |
| Reset (1) | Init (16) |
| GND | GND (18) |
void main(void)
{
/* enable PD5 as output
*/
sbi(DDRD,PD5);
while (1) {
/*
led on, pin=0 */
cbi(PORTD,PD5);
delay_ms(500);
/*
set output to 5V, LED off */
sbi(PORTD,PD5);
delay_ms(500);
}
}
export PATH=/usr/local/atmel/bin:${PATH} (for
bash)
setenv PATH /usr/local/atmel/bin:${PATH} (for tcsh)
# /sbin/lsmod
parport_pc
ppdev
parport
modeprobe parport
modeprobe parport_pc
modeprobe ppdev
chmod 666 /dev/parport0
Ayrıca, yazıcı daemon'un paralel portta çalışmadığından emin olunuz. Çalışıyorsa, programcı kablosunu bağlamadan önce onu durdurunuz. Şimdi, Mikroişlemciyi programlamak için gerekli herşeye sahibiz.avr-objdump -h avrledtest.out
Komutu, programımızdaki farklı bölümlerin boyutlarını göstermektedir. .text komut kısmıdır ve flash EEPROM'a yüklenmektedir. .data
avrledtest.out: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000008c 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 0000008c 00000120 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 00800060 0000008c 00000120 2**0
ALLOC
3 .eeprom 00000000 00810000 00810000 00000120 2**0
CONTENTS
4 .stab 00000750 00000000 00000000 00000120 2**2
CONTENTS, READONLY, DEBUGGING
5 .stabstr 000005f4 00000000 00000000 00000870 2**0
CONTENTS, READONLY, DEBUGGING
Tabii ki avr-size komurunu kullanarak daha sıkıştırılmış halini
elde edebilirsiniz:
avr-size avrledtest.out
text data bss dec hex filename
140 0 0 140 8c avrledtest.out
AVR ile çalışırken text+data+bss nin 4K'yı
ve data+bss+stack (stack'ın boyutunu görmenize imkan yoktur,
çünkü kullandığınız iç içe olan fonksiyonlara bağlıdır)
128 Byte'ı geçmemesine dikkat etmeniz gerekmektedir.
avr-objdump -S avrledtest.out
Bu komut programın assembler kodunu yaratacaktır.
|
|
Görselyöre sayfalarının bakımı, LinuxFocus Editörleri tarafından yapılmaktadır
© Guido Socher, FDL LinuxFocus.org Burayı klikleyerek hataları rapor edebilir ya da yorumlarınızı LinuxFocus'a gönderebilirsiniz |
Çeviri bilgisi:
|
2002-03-21, generated by lfparser version 2.27