原创 AVR编译器的选择

2009-4-21 13:14 8363 9 9 分类: MCU/ 嵌入式

一般来说,单片机的使用要从基础的汇编语言开始讲起,即使使用C语言进行开发,也必须对内部的机器码实现非常熟悉,才能应付设计和调试中可能出现的各种情况。WINAVR是个免费的AVR 开发程序集,它以著名的自由软件GCC C/C++编译器。之所以选用WINAVR,是因为它是一组开放源代码的程序集,也是目前最好的自由软件之一。   下面是关于WINAVR的使用要点,更详细的情况建议参考芯艺的《AVR 单片机GCC 程序设计》。开发工具:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


更适合采用高级语言开发是AVR 单片机最初设计时的目的之一。目前AVR 单片机高级语言发发工具主要有IAR CWINAVRICCAVRCodeVisionBASCOM-AVRBASIC 语言)。IAR 是与AVR 内核协同开发的,很多对AVR 更适合C 语言开发方面的改进是根据IAR开发过程的,它也是ATMEL 公司推荐的C 语言编译器,但它的价格几呼让人难以接受,达到上万元人民币。ICCAVR 是国内AVR 主要推广单位双龙公司代理的C 编译器,它价格低廉,友好的界面把很多烦琐的项目管理和编译设置隐藏了起来,为此它受部分开发人员的欢迎。CodeVision 也是个很不错的C 编译器,目前在国内也有一定数量的用户。Winavr 是个免费的AVR 开发程序集,它以著名的自由软件GCC C/C++编译器。下面所有章节我都会介绍如何使用WINAVR 开发AVR 单片机。GCC 编译器


UNIX 上最原始的C 编译器叫CCC Compiler C 编译器),源于此GNU C 编译器叫作GCCGNU C Compiler),然而,随着GCC 支持语言的增加GCC 这个缩写的意义已演变成了GNU 编译器集合(GNU Compiler Collection),它是GNU 项目的一个产品,是个开放源代码软件。GCC 可编译多种语言,目前支持的语言有CC++Objective-CFortranjava Ada。这些高级语言程序通过编译程序前端(front-end)后产生解析树,之后与器件相关的后端(back-end)程序将它们解释成实际的可执行指令集。前端与后端是完全分开的,解析树是它们中间的产物。GCC 这样的设计使得任何一种语言只要通过合适的语法解析器产生符合格式的解析树,就可以产生GCC 后端程序所支持的所有器件上的可执行指令集。同样的,任何一种器件只要将树结构翻译成汇编,就可以使用GCC 前端所支持的所有语言。要承认的是,以上描述是理论化的,便于理解,实际操作并没有想象的那么简单。事实上前端和后端都不是孤立的。幸运的是AVR 的确得到了GCC 的支持,它也是GCC 支持的唯一一种8 位处理器。不仅如此,我们还可以在WINDOWS 平台上安装程序包WINAVR 来使用GCC AVR C/C++编译程序。WINAVR 是一组开放源代码的程序集,用于ATMEL 公司 AVR 系列单片机的开发,它主要包含:


1. GNU 程序包Binutils


GNU Binutils 非常庞大,WINAVR 仅包含与AVR 相关的部分,有AVR 汇编器、连接器以及与机器指令相关的一些工具


2. GNU GCC C C++编译器。


3. AVR-LIBC


AVR-LIBC AVR 单片机C 运行时库, 它是为应用程序提供标准C 函数的连接时定位库。

         

另外WINAVR 还包含软件调试器、器件编程软件、文件格式转换工具等多个有用工具,这里不一一列出, 请参考WINAVR 说明文档。WINAVR 项目的WEB 地址是http://sourceforge.net/projects/winavr ,这里可以下载最新的版本,并可订阅邮件组。 邮件组是获取WINAVR 相关帮助信息的重要途径。一个简单的例子文件demo1.c :#i nclude


int main( void )


{


unsigned char i, j, k,led=0;


DDRB=0xFF;


while (1)


{


if(led)


PORTB|=0X01;


else


PORTB&=0XFE;


led=!led;


//延时


for (i=0; i<255; i++)


for(j=0; j<255;j++)


k++;


}


}这是一个使接在PB0 口的LED 发光管闪烁的程序。使用Mfile 生成合适的makefile然后运行make all即可生成hex文件。

文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条