您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

AVR单片机GCC编程

时间:2007-1-20栏目:电子通信论文

>上面的例子可以看出用它写个程序是多么简单.你看到的仅仅是主程序,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

确保没有在并口上的打印守护进程运行.如果你运行了就要在你连接编程器电缆前停止这个进程.现在编译和单片机编程的所有准备工作都做好了.

我们的测试程序包(avrledtest-0.1.tar.gz) 里面有个编译工程文件文件.你要做的只是输入:
make
make load
T这样就编译和载入软件了.我并不想详细描述所有的命令. 你可以打开那个 Makefile 查看,它们都是一样的.我自己都不能把它们完全记下来.我只是知道我只需要做"make load".如果你想写不同的程序你只要把Makefile中所有出现avrledtest的地方用你的程序名字替换就行了.  

一些有趣的binutils

比实际编译过程更有趣的是一些小工具软件.

avr-objdump -h avrledtest.out

S显示程序的不同段的大小..text是调入falsh EEPROM的指令代码,.data是象
static char str[]="hello";
这类的初始化数据..bss是非初始化全局数据,在我们这个里面全是零..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

上一页  [1] [2] [3] [4] [5] 下一页

下页更精彩:1 2 3 4 下一页

★相关文章: