AVR��Ƭ��GCC���

ArticleCategory: [Choose a category, do not translate this]

Hardware

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

en to zh SunDay 

AboutTheAuthor:[A small biography about the author]

Guidoϲ��linux������Ϊ�����ϵͳ�����ҵ������ܵ���Ȥ����Ϊ����DZ�����������.

Abstract:[Here you write a little summary]

Atmel��˾��AVR 8λRISC��Ƭ����һ�ַdz���ͨ�ĵ�Ƭ��.����һ�����е��д�ɱ��ֻ���洢��(EEPROM),������ʴ洢��(RAM),ģ��ת����,����������������·,��ʱ��,RS-232ͨѶ�ӿ�UART�Լ������ܶ๦�ܵĵ�Ƭ���ɵ�·.

��õ�Ī������Linux�¾���һ���ɹ����õ�������̻���:����Բ���GCC�����ֵ�Ƭ������C���Ա��.�����ҽ����㽲����ΰ�װ��ʹ��GCC.��Ҳ�����㽲����ΰ��������뵥Ƭ��.������Ҫ��ֻ��һ��AT90S4433��Ƭ��,һ��4Mhz�ľ���,һЩ���º������������˵IJ���.

��ƪ����ֻ��һ���򵥽���.���Ժ�����������ǽ�������һ����������������LCD��ʾ��,ģ������,Ӳ������һЩLED.���ǵ��뷨����һ����ͨ��Linux�������Ŀ������,����������Ҫѧϰ��ô���ñ�̻���,��Ҳ�DZ��ĵ���Ҫ����.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

������װ:��Щ��������Ҫ��

����GNU C���Կ�����������Ҫ��������:

binutils-2.11.2.tar.bz2 ���Դ�:
ftp://ftp.informatik.rwth-aachen.de/pub/gnu/binutils/
����
ftp://gatekeeper.dec.com/pub/GNU/binutils/����
gcc-core-3.0.3.tar.gz ���Դ�: ftp://ftp.informatik.rwth-aachen.de/pub/gnu/gcc/
����
ftp://gatekeeper.dec.com/pub/GNU/gcc/����
avr-libc-20020106 .tar.gz ���AVR C���Կ���Դ�: http://www.amelek.gda.pl/avr/libc/ Ҳ���Դ��������������:������ҳ
uisp-20011025.tar.gz AVR��������Դ�: http://www.amelek.gda.pl/avr/libc/ Ҳ���Դ���̨����������: ������ҳ
���ǰ�������Щ����װ��/usr/local/atmel��. ����Ϊ��ʹ��Щ�������ͨLinux C���Ա������ֿ�. ���������������Ŀ¼:

mkdir /usr/local/atmel

������װ:GNU binutils

���binutils�������ṩ����Ŀ���ļ�����Ҫ�����еͼ�����.������һ��AVR�����(avr-as),������(avr-ld),�⴦������(avr-ranlib,avr-ar),���ɿ����뵥Ƭ��EEPROMĿ���ļ��ij���(avr-objcopy),�������(avr-objdump)����avr-strip��avr-size����Ĺ�������.

��������������밲װbinutils:

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

����/usr/local/atml/lib���е�/etc/ld.so.conf�ļ�����,����/sbin/ldconfig�����ؽ�����������.

������װ:AVR GCC������

avr-gcc�������ǵ�C���Ա�����.

��������������밲װ���������:

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

������װ:AVR C���Կ�

���C���Կ����ڿ�����.��װ���̿��ܰ汾��汾֮����Щϸ΢�IJ��.����������ű���һ��һ�����Ļ����Ƽ������ϱ��г��İ汾.�ϱ��е��������Ѿ�����������,������������д�ij���ͺ���������еij�������������汾�Ϲ����úܺ�.

����һЩ��������(bash�﷨):
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/avr --target=avr --enable-languages=c --host=avr
make
make install

������װ:�����

����������ָ����׼���õ�Ŀ��������뵽���ǵ�Ƭ����EEPROM��.

���Linux�µ�uisp��һ���dz��õı����.����ֱ������Makefile����.��ֻҪ����"make load"����,������Ϳ��Ա�����������һ�����.

uisp��������������װ:

tar zxvf uisp-20011025.tar.gz
cd uisp-20011025/src
make
cp uisp /usr/local/atmel/bin

һ��С�IJ��Թ���

���ǽ���һ��С�IJ��Ե�·��ʼ.������Ե�·��Ŀ�Ľ����Dz������ǵĿ�������.��������������,�����Լ�����һ��С����.������Գ������������LED��˸.

�ҽ���������Ƭ��Ūһ��С��ӡˢ��·��.�Ժ���Ϳ���������·������������Լ�������.һ���ð취����һ��ģ��嵱�����.���������Ҳ���ܳ����Ű�AVR������4MHz����ֱ�ӷ���ģ�����.���õİ취���������Ķ��߰�������������ģ�������,��Ϊ������ģ��岻��Ϊ�������ֵ�·������. 4Mhz�ľ���͵�������������Ӧ�÷dz�������Ƭ��.
[circuit diagram]
�������������������������������ʵ�����Dz���Ҫ��.ֻ����������port-B �����������������Ŀ��ʱ����Ҫ.

��Ҫ��Ӳ��

����Ҫ�IJ��������±���.���е���Щ���dz���ͨ,����,ֻ�ǵ�Ƭ�����,���7.5ŷԪ.�������Ƿdz���ͨ�ĵ�Ƭ��,��Ҳ����������Ǽҵ��ص����ߵ��̵�����򵽵�,����Щ��ĵ��Ӳ�������������:(www.reichelt.de(�¹�),www.conrad.de(�¹�),www.selectronic.fr(����)�ȵ�........,��������Ĺ�����Щ���Ƶ�վ��)�IJֿ������ȫ���IJ���.
[avr] 1 x AT90S4433, Atmel 8 λAVR RISC������.
[socket] 2 x 14�� IC���
����
1 x 28 �� 7.5mm IC���
����28�Ų��Ҫ�ҵ��е������,ͨ��28�Ų����14mm����,����������Ҫ����7.5mm�IJ��.
[resistor crystal capacitor] 1 x 10K ���� (��ɫ����: ��,��,��)
3 x 470 ŷķ ����(��ɫ����:��,��,��)
1 x 1K ���� (��ɫ����: ��,��,��)
1 x 220 ŷķ ���� (��ɫ����:��,��,��)
1 x 4Mhz ����
2 x 27pf �յ���
[connector] ���ڱ����������������5�Ų�ͷ/����.����ͨ����Щ��������,Ȼ��5���۳�һ��.
[matrix board] ������.
[db25] 1 x DB25 ������ ���ڲ嵽����.
[led] 1 x LED
[beardboard] һ��ģ���. ���������ﲻ��,�������������������AVRʵ�����Ƿ������õ�.�ҽ������΢�������뾧��͵��ݼ����ھ�������,Ȼ��ͨ���̵��°����ǵ�����/��������ӵ�ģ���.
�����������Щ,����Ҫ�ṩһ���ȶ���5Vֱ����Դ,��Ҳ���Բ���4.5V�ĵ����Ϊ��Դ��Ӧ.

��װ�����Ӳ��

AT90S4433֧�����߱��(ISP). [AVR programmer]
��˵����:��û�б�ҪΪ�˸���Ƭ����̶��ƶ���Ƭ��ģ��.��ῴ��������50-150ŷԪ�����õı����Ӳ��,��û�б�ҪΪһ������������Ͷ��.����Linux,uisp��������ѵIJ�����Ϳ��Խ�����һ���dz��õļ򵥵�AVR�����,Ҳ�Ͳ���һ���򵥵ĵ������Ӷ���.��������µ��߱����������Ҫ��:
AVR����� ���ڶ����
SCK (19) Strobe (1)
MISO (18) Busy (11)
MOSI (17) D0 (2)
Reset (1) Init (16)
GND GND (18)

���³��Ȳ�����70cm.

�����

��GCC�İ�����AT90S4433������һ���C���Ա��. �˽�һЩAVR��������,��Ҳ���Ƿ�Ҫ����.AVR C���Կ��avr-libc-reference ������libc�Ĵ󲿷ֺ���. Harald Leitnerд��һ���������ʹ��AVR��GCC�Ĵ��д������õ����ӵ��ĵ�(haraleit.pdf, 286Kb, ԭ�� http://www.avrfreaks.net/AVRGCC/). ��Atmel��˾����ҳ, (www.atmel.com, �ҵ�: avr products -> 8 bit risc-> Datasheets), ����������������������� (���Ƶ�����: avr4433.pdf, 2361Kb) . �����������еļĴ����Լ����ʹ��CPU.

ʹ��4433��ʱ����һ��Ҫע�������ֻ��128�ֽڵ�RAM��4K�ֽڵ�EEPROM.�����ζ���㲻�ܶ��������ݽṹ���ַ���.�����в��ܲ��������Ƕ�׵��û����ǵݹ����. ����д
char string[90];
����һ�о��Ѿ�̫����. һ��������16bit,�����Ҫһ��С����������Բ���
unsigned char i; /* 0-255 */
�㽫�dz�������ij����Ƕ�ô��.������һ��ǿ��Ĵ�����.

���۲���ʵ��,���ǽ�дһ�����������ǵ�LEDÿ��0.5����˸һ��.��Ȼ���Ǻ����ò���Ҳ��һ���dz��õĿ�ͷ,���ҿ��������������ǵĿ��������ͱ����.

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);
      }
}

��������ӿ��Կ�������д�������Ƕ�ô��.�㿴���Ľ�����������,delay_ms����������ȫ�����嵥(avrledtest.c)��. PD5����������Ļ�,����������ݼĴ�����ΪD�˿�(DDRD)����PD5λ.Ȼ�������cbi*(PORTD,PD5)������PD5����0V��ѹ(���PD5)������sbi(PORT,PD5)����5V��ѹ(����PD5)."PD5"ֵ�Ķ��������ͨ��io.h������io4433.h��.�㲻�õ������. �������������Linux�����Ķ��û�������ϵͳ��д������Ļ����֪������Ҫдһ����ģ�黯�������ѭ��.����˷�CPUʱ��,����ϵͳ�ٶ�.��AVR�ϾͲ�һ����,����û�ж������,Ҳû����������������,����������һ������ϵͳ,����������������ѭ���Եú��ձ�.

���������

�ڿ�ʼ֮ǰȷ��һ��PATH�а�����/usr/local/atmel/bin·��,��Ҫ�Ļ��༭���.bash_profile����.tcshrc,������������:

export PATH=/usr/local/atmel/bin:${PATH} (for bash)
setenv PATH /usr/local/atmel/bin:${PATH} (for tcsh)

�����ò��ں�uisp��ΪAVR���.uispʹ���ں˵�ppdev�ӿ�,���������Ѿ������������ں�ģ��:

# /sbin/lsmod
parport_pc
ppdev
parport

��/sbin/lsmod�������Ƿ��Ѿ�����,���û�о���root�û���������.

modeprobe parport
modeprobe parport_pc
modeprobe ppdev

һ���ȽϺõİ취����������ʱ����Զ�ִ����Щ����.����԰���Щ�������ӵ�rc�ű���(����:Redhat�µ�/etc/rc.d/rc.local).
Ϊ�˸���ͨ�û�ppdev�ӿ�дȨ��,����һ�����������:

chmod 666 /dev/parport0

ȷ��û���ڲ����ϵĴ�ӡ�ػ���������.����������˾�Ҫ�������ӱ��������ǰֹͣ�������.���ڱ���͵�Ƭ����̵�����׼��������������.

���ǵIJ��Գ����(avrledtest-0.1.tar.gz) �����и����빤���ļ��ļ�.��Ҫ����ֻ������:
make
make load
T�����ͱ��������������.�Ҳ�������ϸ�������е�����. ����Դ��Ǹ� Makefile �鿴,���Ƕ���һ����.���Լ������ܰ�������ȫ������.��ֻ��֪����ֻ��Ҫ��"make load".�������д��ͬ�ij�����ֻҪ��Makefile�����г���avrledtest�ĵط�����ij��������滻������.

һЩ��Ȥ��binutils

��ʵ�ʱ�����̸���Ȥ����һЩС��������.

avr-objdump -h avrledtest.out

S��ʾ����IJ�ͬ�εĴ�С..text�ǵ���falsh EEPROM��ָ�����,.data����
static char str[]="hello";
����ij�ʼ������..bss�Ƿdz�ʼ��ȫ������,�������������ȫ����..eeprom���ڴ洢��eeprom�ı���,�Ҵ�û���ù����..stab��.stabstr�ǵ�����Ϣ,��������AVR��.
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
��Ҳ������avr-size����õ�һ�����������ʽ:

avr-size avrledtest.out

   text    data     bss     dec     hex filename
    140       0       0     140      8c avrledtest.out
��AVR�Ϲ���������ر�ע��.text+data+bss������4K,data+bss+stack(����Բ�����stack�Ĵ�С,��ȡ�����ж���Ƕ�׵���)���ܳ���128�ֽ�.

�����������Ҳ�dz�����˼:

avr-objdump -S avrledtest.out

����������Ĵ���Ļ���б�.

����

�������Ѿ��˽⵽���Կ�ʼ���ǵĹ��̵�AVRӲ����GCC�����֪ʶ.LinuxFocus�������и�������ӵ�,����Ȥ�Ĺ���Ӳ���ⷽ�������.

�����