历史上的今天
返回首页

历史上的今天

今天是:2025年02月22日(星期六)

2020年02月22日 | 事无巨细,GCC AVR入门详解

2020-02-22 来源:eefocus

简介:乘着Cepark电子园正在搞AVR单片机开发板优惠活动,花160块钱买了他们提供的散件。近日终于收到了,虽然是散件,自己焊的也很难看,但好歹能用,足够我折腾好些日子了。希望接下去的短短日子里,能小有收获,即便是最简单的东西也希望跟大家分享。


这是第一篇,我说说AVR的集成开发环境。也就是常说的IDE(Integrated Development Environment)。图片比较多,虽然用软件处理过体积,网页可能还是比较慢,还请见谅。

现今世界上的AVR开发环境可以说是百花齐放了,互相当然各有长短,我们看看都有哪些:

首当其冲的应该还是IAR,为什么呢,因为当初AVR还在ATMEL胎中酝酿的时候,IAR公司参与了AVR的设计,因此可以认为IAR有更为正统的血液,它最了解AVR,它的编译器编出来的代码应该最优秀。好比你生的孩子还是你最了解——至少相当长一段时间是这样的。事实上,IAR for AVR确实展现了这个实力,它的功能确实最为强大,无论是源代码编写还是软件乃至硬件仿真,编译出来的代码也十分优秀。但是事物总是相对存在的,优点有时就意味着缺点。IAR功能全面而强悍,代价就是它的软件界面比较复杂,设置选项多,网上的资料也比较少,最要命的是这个软件非常的贵,好吧你说你有破解版,但是破解文件一般并不通用,而且破解方法一般都稍显繁琐。以上几条,对于新接触AVR的人来说,几乎是迈不过的坎。


接下来是官方的AVR studio,官方出品,但是一般没有人用这个软件来做开发环境,为什么呢,因为它本身不支持C语言,一般我们只用它的仿真功能搭配其他C编译器来用。


第三个,WINAVR,又称GCC AVR。GCC AVR应该是目前使用率最高的AVR开发环境了,软件体积小,界面简单易用,教程资料很多,代码效率高,最重要的是,它是完全免费的。但是它几乎没有仿真调试的功能。所以我首要推荐GCC AVR+AVR studio搭建你的AVR IDE。


第四个,ICC AVR,大部分AVR教材所用的示例软件,也是十分简单易用,适合新手初学,在此也推荐选用,但是它的功能一般,bug比较多,比较高级的要求它应付起来就有些吃力了。


此外还有CODEVISION,最大的优点就是它的界面很像keil,这会吸引到众多从51转到AVR的人,不过它有2K代码限制,破解方法又不多。略过不表。


归根结底,编译器始终不见得是最重要的,最重要的是使用编译器的人罢。只要适合你,你能用之写出优秀的程序,就是最好的。


我选择了GCC AVR。现在我来讲讲GCC AVR的一个最简单的开发流程。首先要从网上下载WINAVR这个软件,因为是免费软件,应该很容易找到。之后一路NEXT,直到安装完毕。

下图显示了一个完整的GCC工程的界面


可以看出来,GCC AVR有个标准的windows软件界面,有常见的菜单栏工具栏等等,选项也并不多,整个软件界面内容也不多,应该说是很亲切的界面。


下面我们来看怎样用GCC AVR进行开发。


第一步,首先找到开始系统菜单里的WINAVR程序文件夹,双击打开Programmers Notepad,启动GCC AVR,然后点击菜单栏里的File—New Project(s),弹出以下对话框:


将工程名和保存位置填好之后,确定,至此新建一个GCC AVR的工程完毕,可见如下界面:


第二步,添加.C文件,点击工具栏里的“新建”按钮,出现一个名字为NEW*的文本文件,而此时注意工具栏里的“保存”按钮是灰色的无法点击,所以要在这个文本里随意输入任意字符,这时可以将这个文本保存了。将文本在工程文件夹里保存为.c文件,这个就是我们将要用来编辑源代码的程序文件。第二步完成后有下图界面(非全图):


第三步,将建好的C文件添加进GCC工程里。具体操作如下:右键工程文件(注意是工程文件而不是工程文件组),选择Add Files,选择刚才新建好的C文件,确定即可实现添加,添加完毕后可以输入源程序,也可以稍后几步再输。如下三图指示,第三图为添加完毕之后所见界面:


第四步,添加Makefile文件。

PS:如果说GCC AVR有什么缺点的话,要用户自己配置Makefile文件应该算其中一大缺点。Makefile是配置GCC AVR的编译信息的文件,GCC就是根据这个文件的信息来编译的,里面包含了MCU信号,频率,输出信息及优化选项等信息,Makefile每个GCC工程是必须要有的。不过配置Makefile其实也非常简单。


首先找到WINAVR程序文件组里的MFile,就是一盏黄色茶壶的的图标,打开之后见如下界面:


接着点击File——Save as,将此文件另存到你的工程文件夹里。然后类似于添加C文件的操作,把Makefile添加至工程中。完成后有下图界面,注意看左边工程文件区:


第五步,配置Makefile文件。双击打开Makefile,找到如下地方:


其中MCU=“你的主控芯片型号”,F_CPU="当前主控芯片的工作频率",FORMAT=iHEX表示会输出HEX结尾的文件,可以供我们烧写,最后一个要注意(红色框),TARGET="你的C文件名,但是不要填写后缀名",如上图图所示。如实更改完以上四项信息之后(一般只需要改第一和第四项),保存Makefile文件。


第六步,接下来在你添加的C文件有了源代码之后,保存C文件。然后如下图所指,依次点击Tool——[WinAVR]Make All,这时GCC AVR就开始编辑源文件了。


编译很快完成,GCC AVR的编译速度还是过得硬的。软件会有编译结果框,里面会包含有一系列的信息,包括错误和警告信息,我们会经常根据这些信息进行程序的修改。编译结果的最后两行是此次编译的错误个数和编译时间的统计,如果Process Exit Code后面的数字为0,则表示被编译的源代码基本上不会出现什么大问题,可以保证没有大的语法错误(但是不表示你的程序功能是正常的,质量是完美的)。


最后,你会发现工程程序文件夹多了许多文件,值得一提的是,后缀名为elf的文件是仿真文件,可以在AVR studio里进行仿真:


至此,一个简单完整的GCC AVR工程开发流程到这里就告完结,一切复杂的过程都是这样开始的。


希望能给需要的人一些帮助。

推荐阅读

史海拾趣

BURGESS公司的发展小趣事

随着时间的推移,BURGESS不断扩展其业务范围,并于1984年首次开发租船服务。这一创新举措不仅满足了客户多样化的需求,也进一步巩固了其在行业内的领先地位。此后,BURGESS继续其国际化步伐,成功进驻美国市场,进一步扩大了其全球影响力。

智浦欣(Chipstar)公司的发展小趣事

随着技术的不断进步和市场需求的日益增长,智浦欣公司意识到,只有不断创新和突破,才能在激烈的市场竞争中立于不败之地。于是,公司加大了对研发团队的投入,引进了一批国内外顶尖的模拟器件和混合信号设计人才。经过数月的努力,团队成功研发出了一款具有高性价比的WLED驱动器产品,该产品以其卓越的性能和稳定的质量赢得了客户的广泛好评。随后,公司又相继推出了多款具有竞争力的新产品,进一步巩固了其在消费类电子市场的地位。

Boyd Corporation公司的发展小趣事

Boyd Corporation自创立之初,便致力于研发创新的热管理和环境密封解决方案。公司不断投入研发资源,推出了一系列高效、可靠的产品,这些产品在电子行业中迅速获得了广泛应用。通过持续创新,Boyd Corporation逐渐在市场中树立了技术领先的形象,吸引了众多合作伙伴和客户的关注。

G-Link Technology公司的发展小趣事

蜂鸟无线自2005年成立以来,始终将技术创新视为企业发展的核心驱动力。公司早期便组建了一支由行业顶尖专家组成的研发团队,专注于无线通信技术的突破。在2010年前后,蜂鸟无线成功研发出高效能无线路由器,该产品凭借其卓越的信号稳定性和传输速率,迅速在市场中脱颖而出,为公司赢得了首批忠实用户。此后,蜂鸟无线持续加大研发投入,不断推出新产品,如集成了先进加密技术的无线网卡和蓝牙设备,进一步巩固了其在无线通信市场的领先地位。

East Texas Integrated Circuits公司的发展小趣事

随着市场的不断扩大,ETIC意识到必须不断提升自身的研发实力才能保持竞争优势。因此,公司加大了对研发的投入,引进了一批高端人才和先进的研发设备。同时,ETIC还积极与国内外高校和研究机构开展合作,共同开展前沿技术的研究和开发。这些努力使ETIC在集成电路领域的技术实力得到了显著提升。

Daniels Manufacturing公司的发展小趣事

自1946年成立以来,Daniels Manufacturing Corporation一直致力于为军事和电信行业提供高质量的工具系统和技术。在20世纪70年代,DMC经历了一次重大的技术突破,成功研发出一种新型的手动压接工具,该工具能够精确、高效地处理各种电子连接器。这一技术的突破为DMC赢得了市场的认可,也为其后续的产品线扩展奠定了基础。在接下来的几十年里,DMC不断投入研发,推出了包括电动、气动、液压压接工具在内的多种产品,广泛应用于通信、光纤、激光等领域。

问答坊 | AI 解惑

关于AVR的熔丝的使用和设置

正确配置AVR熔丝位 对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。 (1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unpro ...…

查看全部问答>

毕业设计“电子爆竹”哪位大哥帮帮忙

本帖最后由 paulhyde 于 2014-9-15 09:06 编辑 哪位大哥知道怎么做?或者以前做过,请告知一声!老师给的题目,也没说什么要求!网上找了半天都没什么东西,急啊!拜托了!!!我的邮箱:szlt520@yahoo.com.cn [ 本帖最后由 open82977352 于 2010 ...…

查看全部问答>

操作系统 任务调度问题

请问:         在操作系统中,一般的调度 和 在中断中的调度 到底是什么原因导致其不同? (我看了几个系统,两个调度都是用不同的 代码段,似乎主要是要记录 nest的数值,但我觉得既然hardstk 中都已近保 ...…

查看全部问答>

请问:WinCE绘的图形如何保存成位图?

WinCE中用程序绘制的图形如何保存成位图?…

查看全部问答>

如何集成第三方软件的帮助文档到 WinCE 本身的帮助里去呢

我们开发了一个软件在WinCE上, 运行很好。 老板要求把我们自己的帮助文档集成到WinCE的帮助文档里,也就是通过start->help 能访问。我用的是windows mobile 6,ce os 5.2. 那位高人能点拨一下呢, 先谢了。…

查看全部问答>

Atmega16读At88sc0104问题

哪位高手调通过M16读AT88SC0104的程序啊,我们公司以前调通过atmel9261读at88sc0104,我只是把底层几个函数给改了,但就是读不出正确的数据,我读的是at880104 0x60寄存器的值,改的底层函数如下: void  _scl_config_out(void) { &nbs ...…

查看全部问答>

请帮我看一下这个简单的VHDL语言到底哪里出错了,谢谢啦

library ieee; use ieee.std_logic_1164.all; USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity SCCB is         port( GCLK: IN std_logic;                   SIOC : OUT s ...…

查看全部问答>

五舟服务器 网络存储 解决方案博士

五舟是国内服务器市场快速成长的新生力量,专注于服务器平台与存储产品的销售与服务,为科学研究与商业应用提供最佳性价比的服务器和存储解决方案。 自 1995 年进入服务器行业, 2002 年创立五舟品牌以来,已经成功的为几千家客户提供了优质的产 ...…

查看全部问答>

zigbee物理层(802.15.4 PHY)软件模型

本人参照802.15.4规范设计的物理层状态图。 …

查看全部问答>