[LinuxFocus-icon]
�����  |  �����  |  ������  |  �����

������� | ������ | ������ | ��� LF
��� �������� �������� �� ��������� ������: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  

[Photo of the Author]
����� Guido Socher (homepage)

�� ������:

Guido �������� Linux �� ������ ��-�� ������������ ������������ ������������ �������, �� � ��-�� ����� ����������� � �� ����������...



������� �� �������:
�������� ������� <dm_puh(at)go.com>

����������:

 

���������������� ����������������� AVR � �������������� GCC

[Illustration]

������:

��������������� AVR ����� Atmel - 8-�������� RISC ��������������� ������ ����������, ������ �������� ��������� EEPROM, RAM, ���, ������� ���������� ������ ����� � ������, ������� � ���������������� ����� UART, ����������� ����� �� ��������� RS232, � ������ ������.

������� ���� ����� ���������������� - ������� ������� ���������� ��� Linux. � ��� �������� ������������� GCC. � ���� ������ � ������� ��� ���������� � ������������ GCC. � ����� ������, ����� ������� ��������� ����������� ��� � ���������������. ��� ����� ��� ����������� ��������������� AT90S4433, ��������� ��������� �� 4���, ��������� ������� ������ � ��� ��������� ��������� ���������.

��� ������ �������� �������, � ��������� ������ �� �������� ��� ������� � ����������� ��������, ���������� � �������� �������, ���������� ���������� �������� � ������������. �������� ����, ��������� ������ ���������� ��� Linux-�������. �� ��� ������ ��� ���������� ���������� � ��������� �������� ����������, ���� � ��������� ��� ������.



 

���������: ��� ��� ����� ����������?

��� ������������� ����� ���������� 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. �������� ����� � ������� �������:

mkdir /usr/local/atmel

 

���������: GNU binutils

����� binulils �������� �������������� �������� ����������� ��� �������� ��������� ������. �� �������� � ���� ��������� AVR (avr-as), ������ (avr-ld), ���������� ������� ���������� ������������ (avr-ranlib, avr-ar), ��������� ��� �������� ����������� ������� ����������� � ������ �������� ���������������� (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/atmel/lib � ����� /etc/ld.so � �������� ��� ������� �������� /sbin/ldconfig.  

���������: AVR gcc

avr-gcc - ���������� ���������� �.

��� ��� ��������� ����������� ��������� �������:

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

���������� AVR C �� ��� ��� ��������� � ������ ���������� � ������� ������� ��������� ����� ������� ���������� �� ������ � ������. � ���������� ������������ ������ ��������� ���� � �������, ��� ����������� ���� ��������� ���������. ������ ��� ������ � ����������� ��� �������� �������� ��������� � ���� � ����������� �������.

���������� ��������� ��������� ����� (��������� 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

 

���������: ������������

������������ ������������ ��� �������� ���������� ���� � ������ �������� ����������������.

��������� ������� ��� ���� ����� �������� uisp ��� Linux. �� ����� ���� ����������� ����� �� make-�����. ��� ������ ����� ����� �������� ������ "make load" � make-���� � ��������� ���� ��� ����� �������� � ��������������� ����� ����� ����������.

uisp ��������������� ���������� ���������:

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

 

��������� �������� ���������

������ � ���������� ��������� �������. ��� �������� ������ ��������� ����������������� �������������� ������������ �����������. ��� ��������� ��������������, ��������� � ��������� ��������� ���������. ��� ��������� ����� ���� ������ ��������� ������� ���������.

��� ����� � ��������� ��� ���������� ��������� ���������� �����, � ������� �� ������ �� �������������� � ������������ ��� ����� �����. �� ������ ������������ �������� �����. ������ �� ��������� ��������� �� ��� ��������������� ��������������� � �������, ��� ��� ����� �����, ��� �������, �� ������������� ��� ��������������� �����, ����� ���������� �������� ����� ���������������� � �������� ����� � ������� �������� �����������. ����� � ������������ ���������� � ���������������� �������� �� ����������������.
[circuit diagram]
������������� �� ����� ����� ����������������� � �������� ��� ����������� ������������� � ����� ������ �������������, ��� ����� ������������, � ������ ���� �� �������� � ���������� ������������� ������ ����� �.  

����������� ����������

��� ����������� ������, ������������� ���� � �������. ��� ��� ���������� ���������������� � ���������. ����� ������� ������ � ������ - ���������������, ��� ��������� ����� 7.30 EUR. ����� ��������, ��� ��� �� �������� � ��������� � �������������, �� �� ������ ���� � ������� � ������� �������������� ����������� ��������� ( ��������, www.reichelt.de,www.conrad.de, � �.�., ��������� ������� �������� ���� � � ����� ������).
[avr] AT90S4433,8-������ RISC ��������������� �.Atmel - 1 ��.
[socket] �������� ��� ��������� 14 ����� - 2 ��.
���
�������� 28 �����( ������ 7,5 ��) - 1 ��.
������ ����������� �������� �� 28 ����� ����� ������� �������,�.�. ������ ����� �������� ����� ������ 14 �� ������ ��������� 7.5 ��.
[resistor crystal capacitor] �������� 10 ��� (�������� ����������: ����������, ������, ���������) - 1 ��.
�������� 470 �� (�������� ����������: ������, ���������, ����������) - 3 ��.
�������� 1 ��� (�������� ����������: ����������, ������, �������) - 1 ��.
�������� 220 �� (�������� ����������: �������, �������, ����������) - 1 ��.
��������� ��������� 4��� - 1 ��.
����������� ������������ 27 �� - 2 ��.
[connector] ����� ������ �� 5 ���������, � ������ ������� ������ � ���� ������� �� ����� ��������� � ��������� ����������� ��� ����� �� 5 ���������.
[matrix board] ��������� ����� - 1 ��.
[db25] 25-�� ���������� ������ DB25 ��� ����������� � ������������� ����� - 1 ��.
[led] ��������� - 1 ��.
[beardboard] �������� �����. �� �� �� ������������, �� � ������, ��� ��� ����� ������ ������, ���� �� �������� ���������� ������������ � AVR. ���������� ��������� ��������������� ������ � ������� � �������������� �� ��������� ����� � ���������� ��� ����� � ������ � ������� �������� �������� � �������� �����.
��� ��� ����������� 5-����������� ����������������� �������� ������� ��� ��������� �� 4.5 �.  

������������� ������������

AT90S4433 ������������ ����� �������������� ����������������. [AVR programmer]
��� ��������, ��� ��� �� ����� ����������� ��������������� �� ����� ������ ���, ����� ��� ���������� ��� �������������������. �����-���� ������� �������� ������������� ��������� ��� � 50-150 EUR. � ����� ������ �� ���������� ��� ������ ��������� ��������. � ������� Linux, uisp � ���������� ������������� ����� �� ������� ������� ������� � ������� ������������. � ���� ������������ ������������ ����� ������� ������. �������� ����� ������ �������� ��������� �������:
pin on AVR Pin on parallel port
SCK (19) Strobe (1)
MISO (18) Busy (11)
MOSI (17) D0 (2)
Reset (1) Init (16)
GND GND (18)

����� ������ �� ������ ��������� 70 ��.  

����� ���������

��������� gcc �� ������ ������ ��������� ��� AT90S4433 �� ������ �. ������ AVR ���������� ����� ���� ��������, �� ��������������. � ������ AVR libc ������ avr-libc-reference ��������������� ����������� �� �������. Harald Leitner ������� ������������ �� ������������� AVR � GCC( haraleit.pdf,286Kb, �������� ��������� �� http://www.avrfreaks.net/AVRGCC) � �������� ����������� �������� ��������. �� �������� Atmel (www.atmel.com ����� �� �������: products->8 bit risc -> Datasheets) �� ������ ��������� ������ �������� �� ��������������� (�����: avr4433.pdf,2361Kb). � ��� ���� �������� ���������� ��������� � �������� ������������� CPU.

��� �������� �������� ��� 4433 ��� ���������� ������� � ���, ��� � ����� ������������ ����� 128 ���� ��� � 4� ���. ������� �� ����� ��������� �������� ��������� ������ � ������� ������. ����� ��������� ������������� ������������� ��������� ������� ����������� � ����������� �������. ���������� ���������� �����
char string[90];
��� ���������. ��� ������ "�����"(integer) ����� ����������� � 16 ���. ���� ��� ���������� �������� ����� (small integer) �����������
unsigned char i; /* 0-255 */
��� �� �����, �� ������ �������� ����, ����� ������� ��������� �� ������� ������� ��� ����� ����������������. ��� ������������� ������ ���������!

����, �������� �� ������ � ��������. ������� ���������, ������������ ������ ��������� ����� ��������� 0.5 ��� . ��������� �� ����� �� ��������, �� ������ ����������� ��� �������� ������������� ���� ����� ���������� � �������������.

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 ���������������� �� ���������� ���������������� �� �����, ��������� ��� PD5 � �������� ���������� ������������ ������ ����� ����� D (DDRD(Data Direction Register for port D)). ����� ����� �� ������ �������������� ����� PD5 ������������ �� � 0� � ������� ������� cbi(PORTD,PD5)( clear bit PD5(�������� ��� PD5)) ��� � 5� � ������� ������� sbi(PORTD,PD5)(set bit PD5(���������� ��� PD5)). �������� "PD5" ���������� � io4433.h, ������� ��������� ����� io.h. ����� ������� ����������� ���� (while(1){}), ������ �������� � ���������� ���������� �����������. ��� �� ������ ������, ��� ���� ��������� ���������� �����������. ���� �� ��� ��������� ��������� ��� ��������������������� / ������������� ������, ����� ��� Linux, �� ������ �����, ��� ���� ��������� ������� �� ������ ��������� ��������������� ���������� ����. ������ ��� ����� ���� �������� � ��������� �������� ������������� ������� � ������� �������� ������������������ �������. �� �� � ������ � AVR. � ��� �� ������������� ������� � ��� ��������, ������������� ����������� � ����� ����������. � ��� ��� ���� ������������ �������. ������� �� ����� ��������� ���� ��������� ����.  

����������� � ��������� ���������

� ������ ���������, ��� ���������� ����� PATH �������� ���� /usr/locsl/atmel/bin. ���� ���������� �������������� ��� .bash_profile ��� .tcshrc , �������:

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

��� ���������������� AVR �� ���������� ������������ ���� � ��������� uisp. 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 ��� ���������� ��������� ���, ��������, �������� ��� root, �������

chmod 666 /dev/parport0

��� ���� ���������� ��������������, ��� �� ���� ����� ��� ��������� ������������ ��������. � ��������� ������ ��� �������� ���������� ţ ����� ������������ �������������. ������ ��� ������ ��� ���������� � �������� ��������� � ���������������.
����� � ����� �������� ���������� (avrledtest-0.1.tar.gz) �������� � make-����. ��� ��� ��� �����, �������:

make
make load

����� ����� ��������� ����� ��������������� � ���������. � �� ������������ �������� ��� ����������� ��� ���� �������. �� ������ ���������� �� � Makefile. � ���� �� ����� �� ��� ��������. � ������ �����, ��� ���������� ������� "make load". � ����������, ����� �� ������ ������ ���� ���������, ������ ��������� � Makefile ��� ������������ "avrledtest" �� �������� ����� ���������.  

������� � binutils

��������� �� �������� ������ binutils, ����� ������� ������� ������� �������, ��� ������� ���������� ���������.

avr-objdump -h avrledtest.out

����������� ��������������� ������� ����� ���������� � ������� ��������� ������ ����� ���������. .text - ���������� ��������� ����������� � ��� ����������������. .data - ������������������ ����������, ����� ���
static char str[]="hello";
� .bss - �������������������� ���������� ����������. ��� ������ ����� ���� � ����� ������. .eeprom ��������� ���������� ���������� � eeprom ����������������. �� � ��� ������� �� �����������. � ������� .stab � .stabstr ���������� ��� ���������, � ��������� ����, ������������ � ��������������� ��������� �� �����.
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
��� ������ � AT90S4433 ��� ���������� �������, ����� ��������� ������ text+data+bss �� �������� 4� � ������ data+bss+stack (������ ����� �� ������������, �.�. �������� ������������ � ��������� �� ���������� ��������� ������� � ���������) �� �������� 128 ����.

����� ����������� �������� �������

avr-objdump -S avrledtest.out

��� ������� ������������ ������� ����� ���������.  

����������

����, ������ � ��� ���� ���������� ����������, ����� �������� ������ ��������� ��� AVR � �������������� GCC. � ���������� �� LinuxFocus ��������� ����� ������, ����������� ���������� ���� ������ � ������� ����� ������� � ���������� ��������.  

������

 

�������� �������

� ������ ������� ���� �������� �������. �� ���� �������� �� ������ �������� ���� ����������� ��� ����������� ����������� ������ ���������.
 talkback page 

Webpages maintained by the LinuxFocus Editor team
© Guido Socher, FDL
LinuxFocus.org

Click here to report a fault or send a comment to LinuxFocus
Translation information:
en --> -- : Guido Socher (homepage)
en --> ru: �������� ������� <dm_puh(at)go.com>

2002-02-26, generated by lfparser version 2.19