����� Guido Socher (homepage)
�� ������:
Guido �������� Linux �� ������ ��-�� ������������ ������������ ������������
�������, �� � ��-�� ����� ����������� � �� ����������...
������� �� �������:
�������� ������� <dm_puh(at)go.com>
����������:
|
���������������� ����������������� AVR � �������������� GCC
������:
��������������� 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
��������� �������� ���������
������ � ���������� ��������� �������. ��� �������� ������ ��������� �����������������
�������������� ������������ �����������. ��� ��������� ��������������, ��������� � ���������
��������� ���������. ��� ��������� ����� ���� ������ ��������� ������� ���������.
��� ����� � ��������� ��� ���������� ��������� ���������� �����, � ������� �� ������ ��
�������������� � ������������ ��� ����� �����. �� ������ ������������ �������� �����.
������ �� ��������� ��������� �� ��� ��������������� ��������������� � �������, ��� ��� ����� �����, ��� �������, �� ������������� ��� ��������������� �����, ����� ���������� �������� ����� ���������������� � �������� ����� � ������� �������� �����������. ����� � ������������ ���������� � ���������������� �������� �� ����������������.
������������� �� ����� ����� ����������������� � �������� ��� ����������� ������������� � ����� ������ �������������, ��� ����� ������������, � ������ ���� �� �������� � ���������� ������������� ������ ����� �.
����������� ����������
��� ����������� ������, ������������� ���� � �������. ��� ��� ���������� ���������������� � ���������. ����� ������� ������ � ������ - ���������������, ��� ��������� ����� 7.30 EUR. ����� ��������, ��� ��� �� �������� � ��������� � �������������, �� �� ������ ���� � ������� � ������� �������������� ����������� ��������� ( ��������, www.reichelt.de,www.conrad.de, � �.�., ��������� ������� �������� ���� � � ����� ������).
|
AT90S4433,8-������ RISC ��������������� �.Atmel - 1 ��. |
|
�������� ��� ��������� 14 ����� - 2 ��.
���
�������� 28 �����( ������ 7,5 ��) - 1 ��.
������ ����������� �������� �� 28 ����� ����� ������� �������,�.�. ������ ����� �������� ����� ������ 14 �� ������ ��������� 7.5 ��.
|
|
�������� 10 ��� (�������� ����������: ����������, ������, ���������) - 1 ��.
�������� 470 �� (�������� ����������: ������, ���������, ����������) - 3 ��.
�������� 1 ��� (�������� ����������: ����������, ������, �������) - 1 ��.
�������� 220 �� (�������� ����������: �������, �������, ����������) - 1 ��.
��������� ��������� 4��� - 1 ��.
����������� ������������ 27 �� - 2 ��. |
|
����� ������ �� 5 ���������, � ������ ������� ������ � ���� ������� �� ����� ��������� � ��������� ����������� ��� ����� �� 5 ���������. |
|
��������� ����� - 1 ��. |
|
25-�� ���������� ������ DB25 ��� ����������� � ������������� ����� - 1 ��. |
|
��������� - 1 ��. |
|
�������� �����. �� �� �� ������������, �� � ������, ��� ���
����� ������ ������, ���� �� �������� ���������� ������������ � AVR.
���������� ��������� ��������������� ������ � ������� � ��������������
�� ��������� ����� � ���������� ��� ����� � ������ � ������� �������� �������� � �������� �����. |
��� ��� ����������� 5-����������� ����������������� �������� ������� ��� ��������� �� 4.5 �.
������������� ������������
AT90S4433 ������������ ����� �������������� ����������������.
��� ��������, ��� ��� �� ����� ����������� ��������������� �� ����� ������ ���, ����� ��� ���������� ��� �������������������. �����-���� ������� �������� ������������� ��������� ��� � 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 ��������� ����� ������, ����������� ���������� ���� ������ � ������� ����� ������� � ���������� ��������.
������
�������� �������
� ������ ������� ���� �������� �������. �� ���� �������� �� ������ ��������
���� ����������� ��� ����������� ����������� ������ ���������.
2002-02-26, generated by lfparser version 2.19