original in en Guido Socher
en to zh SunDay
Guido喜欢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/ 也可以从这台服务器下载: 下载主页 |
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
设置一些环境变量(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
tar zxvf uisp-20011025.tar.gz
cd uisp-20011025/src
make
cp uisp /usr/local/atmel/bin
1 x AT90S4433, Atmel 8 位AVR RISC处理器. | |
2 x 14脚 IC插槽 或者 1 x 28 脚 7.5mm IC插槽 这种28脚插槽要找到有点点困难,通常28脚插槽是14mm宽的,但是我们需要的是7.5mm的插槽. |
|
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实验这是非重有用的.我建议你把微控制器与晶震和电容集中在聚酯板上,然后通过短电缆把它们的输入/输出脚连接到模拟板. |
AVR端针脚 | 并口端针脚 |
---|---|
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
确保没有在并口上的打印守护进程运行.如果你运行了就要在你连接编程器电缆前停止这个进程.现在编译和单片机编程的所有准备工作都做好了.avr-objdump -h avrledtest.out
S显示程序的不同段的大小..text是调入falsh EEPROM的指令代码,.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你也可以用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字节.
avr-objdump -S avrledtest.out
它会生成你的代码的汇编列表.