AVR��Ƭ��GCC���
ArticleCategory: [Choose a category, do not translate
this]
Hardware
AuthorImage:[Here we need a little image from you]
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]
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�������Ƭ��.
�������������������������������ʵ�����Dz���Ҫ��.ֻ����������port-B �����������������Ŀ��ʱ����Ҫ.
��Ҫ��Ӳ��
����Ҫ�IJ��������±���.���е���Щ���dz���ͨ,����,ֻ�ǵ�Ƭ�����,���7.5ŷԪ.�������Ƿdz���ͨ�ĵ�Ƭ��,��Ҳ����������Ǽҵ��ص����ߵ��̵������,����Щ��ĵ��Ӳ�������������:(www.reichelt.de(�¹�),www.conrad.de(�¹�),www.selectronic.fr(����)�ȵ�........,��������Ĺ�����Щ���Ƶ�վ��)�IJֿ������ȫ���IJ���.
|
1 x AT90S4433, Atmel 8 λAVR RISC������. |
|
2 x 14�� IC���
����
1 x 28 �� 7.5mm IC���
����28�Ų��Ҫ�ҵ��е������,ͨ��28�Ų����14mm����,����������Ҫ����7.5mm�IJ��. |
|
1 x 10K ���� (��ɫ����: ��,��,��)
3 x 470 ŷķ ����(��ɫ����:��,��,��)
1 x 1K ���� (��ɫ����: ��,��,��)
1 x 220 ŷķ ���� (��ɫ����:��,��,��)
1 x 4Mhz ����
2 x 27pf �յ��� |
|
���ڱ����������������5�Ų�ͷ/����.����ͨ����Щ��������,Ȼ��5���۳�һ��. |
|
������. |
|
1 x DB25 ������ ���ڲ嵽����. |
|
1 x LED |
|
һ��ģ���. ���������ﲻ��,�������������������AVRʵ�����Ƿ������õ�.�ҽ�������������뾧��͵��ݼ����ھ�������,Ȼ��ͨ���̵��°����ǵ�����/��������ӵ�ģ���. |
�����������Щ,����Ҫ�ṩһ���ȶ���5Vֱ����Դ,��Ҳ���Բ���4.5V�ĵ����Ϊ��Դ��Ӧ.
��װ�����Ӳ��
AT90S4433֧�����߱��(ISP).
��˵����:��û�б�ҪΪ�˸���Ƭ����̶��ƶ���Ƭ��ģ��.��ῴ��������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�������и�������ӵ�,����Ȥ�Ĺ���Ӳ���ⷽ�������.
�����