搜索
bottom↓
回复: 48

AVR-GCC编译调试在VC++6.0中的建立详解

[复制链接]

出0入0汤圆

发表于 2004-12-5 10:32:14 | 显示全部楼层 |阅读模式
参考21IC的文章,自己安装调试了一遍。VC中界面显得很美观,对于用惯了VC的人来说,确实是很方便。现把步聚方法写如下,以利于初次安装的朋友。



1、安装WinAVR20040702

   可以到本网站下载:http://www.ouravr.com/es_avr_serial_software.html

    我的安装目录是D:\WinAvr



2、安装AVR Studio 4.09

   可以到本网站下载:http://www.ouravr.com/es_avr_serial_software.html



    我的安装目录是D:\program Files\Atmel\...



3、安装 VC++6.0   

   下载这个软件



4、好了,三个工具软件安装完毕,下面开始在VC中建立AVR-GCC集成开发环境。

运行VC++6.0,选择“Tools”菜单的“Custumize...”选项:





移动到最下端空白处,双击输入make clean

然后在Command:后面的文本框中输入make

在Arguments:后面的文本框中输入clean

在Initial directory:后面的文本框右面的按钮点鼠标左键,选Workspace Directory

在Use Output Window前面打对钩

如下图:





重复上面各个步骤,加入make all, make extcoff (只需将clean替换成all和extcoff)



再加入AVRProgram和AVR Studio 4两个Menu contents

Command:分别为你的系统中它们的全路径文件名,

在我的机器上分别是:

D:\Program Files\Atmel\AVR Tools\AvrProg\AVRprog.exe和

D:\Program Files\Atmel\AVR Tools\AvrStudio4\AVRStudio.exe

Arguments:内容为空

Initial directory:内容同上

在Use Output Window前面打对钩



最后按Close按钮关闭Customize窗口,点按Tools菜单项可以看到增加了如下5个工具项:



make clean

make all

make extcoff

AVRProgram

AVR Studio 4



5、在VC中建一个C文件,注意要加入makefile文件。

  点击此处下载makefile.rar



注意:这个makefile文件是用于test01这个C文件的,如果用于其它C文件,则需要更改:

将MCU = atmega128改为MCU = "你用的芯片型号"

将TARGET = main改为TARGET = "你的C文件名" 然后选存储文件





选Tools/make clean

再选Tools/make all

再选Tools/make extcoff



在此期间在屏幕下半部分的Expand docked window中会看到输出信息



之后可选Tools/AVR Studio 4启动AVR Studio调入test1.cof进行调试,

选Tools/AVRProgram启动AVRProgram把程序烧入芯片运行



阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2004-12-5 17:54:20 | 显示全部楼层
写得好,但我还有一个问题请教一下,就是我用GCCAVR的目标程序似乎无法实现代码优化,你是如何解决的?

出0入0汤圆

发表于 2004-12-5 20:38:12 | 显示全部楼层
确实21IC上的好文章很多...有些"沉船"里的珍宝也不少...

出0入0汤圆

发表于 2004-12-5 21:08:24 | 显示全部楼层
啥叫代码优化,是编译器提供的么?

出0入0汤圆

发表于 2004-12-5 23:22:53 | 显示全部楼层
再给VC装上 VA,sourceSytle. wndTabs,然后,嘿嘿,就好用多了。

出0入0汤圆

发表于 2006-3-21 14:59:27 | 显示全部楼层
我用6.0怎么不行啊!

出0入0汤圆

发表于 2006-3-22 17:44:26 | 显示全部楼层
写得好,我也准备用

出0入0汤圆

发表于 2006-3-22 18:42:40 | 显示全部楼层
用VC++2005更爽啊!!编辑C文件时有代码提示功能!!

出0入0汤圆

发表于 2006-3-22 20:22:35 | 显示全部楼层
archeng504兄弟,帮我一把,我怎么用VC++6.0不行呢?

我试了很多遍,最后编译的时候就是error, MAKEFILE是用你的那个软件生成的,在AVRSTUDIO中正常运行的。
-----此内容被alisha于2006-03-22,20:24:59编辑过

出0入0汤圆

发表于 2006-3-22 22:07:01 | 显示全部楼层
错误不能自动定位?

出0入0汤圆

发表于 2006-3-22 22:50:36 | 显示全部楼层
alisha 我的MAKEFILE只能在AVRSTUDIO用!你可以用楼主给的那个啊(要自己修改一下)或用WinAVR的MFile工具生成一个。

出0入0汤圆

发表于 2006-3-26 11:58:50 | 显示全部楼层
谢谢archeng 兄弟,现在可以了,但有个新问题,很奇怪的。



用你的MAKEFILE生成的HEX文件和VC++生成的一样,而COF文件比VC++生成的大了0.01k,VC++的COF文件不能在仿真中调试。

******************************************************************************

下面是用你的MFILE在AVRSTUDIO中的编译结果

*******************************************************************************

-------- begin --------

avr-gcc (GCC) 3.4.3

Copyright (C) 2004 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.





Compiling: text.c

avr-gcc -c -mmcu=atmega16 -I. -gstabs -DF_CPU=4000000UL  -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=text.lst  -std=gnu99 -MD -MP -MF .dep/text.o.d text.c -o text.o



Linking: text.elf

avr-gcc -mmcu=atmega16 -I. -gstabs -DF_CPU=4000000UL  -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=text.o  -std=gnu99 -MD -MP -MF .dep/text.elf.d text.o --output text.elf -Wl,-Map=text.map,--cref    -lm



Creating load file for Flash: text.hex

avr-objcopy -O ihex -R .eeprom text.elf text.hex



Creating load file for EEPROM: text.eep

avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \

--change-section-lma .eeprom=0 -O ihex text.elf text.eep



Creating Extended Listing: text.lss

avr-objdump -h -S text.elf > text.lss



Creating Symbol Table: text.sym

avr-nm -n text.elf > text.sym



Converting to AVR Extended COFF: text.cof

avr-objcopy --debugging --change-section-address .data-0x800000 --change-section-address .bss-0x800000 --change-section-address .noinit-0x800000 --change-section-address .eeprom-0x810000  -O coff-ext-avr text.elf text.cof

Discarding local symbol outside any compilation unit: .do_copy_data_start

Discarding local symbol outside any compilation unit: .do_copy_data_loop

Discarding local symbol outside any compilation unit: .do_clear_bss_start

Discarding local symbol outside any compilation unit: .do_clear_bss_loop



Size after:

text.elf  :

section    size      addr

.text       512         0

.data        16   8388704

.bss         11   8388720

.noinit       0   8388731

.eeprom       0   8454144

.stab      1440         0

.stabstr   1670         0

Total      3649





AVR Memory Usage:

-----------------

Device: atmega16



Program:     528 bytes (3.2% Full)

(.text + .data + .bootloader)



Data:         27 bytes (2.6% Full)

(.data + .bss + .noinit)





-------- end --------



工具返回代码: 0

*****************************************************************************

以下是在VC++中的编译结果:

*****************************************************************************

Build started 26.3.2006 at 11:56:45

avr-gcc.exe  -mmcu=atmega16 -Wall -gstabs -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT led74hc164.o -MF dep/led74hc164.o.d  -c  ../led74hc164.c

avr-gcc.exe -mmcu=atmega16   led74hc164.o    -o led74hc164.elf

avr-objcopy -O ihex -R .eeprom  led74hc164.elf led74hc164.hex

avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex led74hc164.elf led74hc164.eep

avr-objcopy --debugging --change-section-address .data-0x800000 --change-section-address .bss-0x800000 --change-section-address .noinit-0x800000 --change-section-address .eeprom-0x810000  -O coff-ext-avr led74hc164.elf led74hc164.cof

Discarding local symbol outside any compilation unit: .do_copy_data_start

Discarding local symbol outside any compilation unit: .do_copy_data_loop

Discarding local symbol outside any compilation unit: .do_clear_bss_start

Discarding local symbol outside any compilation unit: .do_clear_bss_loop



AVR Memory Usage:

-----------------

Device: atmega16



Program:     528 bytes (3.2% Full)

(.text + .data + .bootloader)



Data:         27 bytes (2.6% Full)

(.data + .bss + .noinit)



Build succeeded with 0 Warnings...

********************************************************************************

下面是我用GCC生成的MAKEFILE以及在VC++6中生成的HEX,COF文件

点击此处下载armok01110546.rar

点击此处下载armok01110567.rar

下面是用您的工具生成的MAKEFILE以及在AVRSTUDIO中生成的HEX,COF文件

点击此处下载armok01110547.rar

点击此处下载armok01110566.rar

下面是仿真文件和源程序

点击此处下载armok01110568.rar






-----此内容被alisha于2006-03-26,12:21:27编辑过

出0入0汤圆

发表于 2006-3-26 16:29:48 | 显示全部楼层
顶起来,acheng

出0入0汤圆

发表于 2006-3-26 18:35:52 | 显示全部楼层
两个makefile 时钟设置不同,一个用4M,另一个用8M,而且你的延时函数是使用WINAVR提供的,这个延时函数的时钟由makefile决定的。其实,那两个HEX文件也是不同的(内容有点不同)。

出0入0汤圆

发表于 2006-3-26 20:10:26 | 显示全部楼层
archeng兄弟,谢谢你!我明天试。



您真是个热心人,我在苏州,有用的着我的地方就发信给我

godblessyouandme@163.com

出0入0汤圆

发表于 2006-3-27 08:13:24 | 显示全部楼层
有谁解决了,

错误不能自动定位?和

变量不能自动提示?

这两个问题?



帮助呀???

出0入0汤圆

发表于 2006-3-27 14:39:10 | 显示全部楼层
archeng兄弟,我改了晶振结果还是一样。

出0入0汤圆

发表于 2006-3-27 17:03:15 | 显示全部楼层
我试了一下,用cof仿真,仿真结果不正常(M16的管脚电平不会变化,有没有使用优化结果都一样),但可以进行源代码调试(使用coff,extcoff看不到源代码),我用WINAVR20060125。

出0入0汤圆

发表于 2006-3-28 19:06:57 | 显示全部楼层
我的测试结果和你的一样,不清楚怎么回事。

我现在用VC6写程序,然后到AVRSTDIO中编译,想不到其他好的办法了。

出0入0汤圆

发表于 2006-3-29 13:06:06 | 显示全部楼层
如果是用VC6的话,建议再加两把大刀:

1.Visual Assist (X):这个写代码特方便,特别是变量名长了的时候,在文件中相互查找也方便,着色也不错.所以我从来看不上UltraEdit这类东西.



2.WndTab:给VC6加上Tab,就是在窗口的下方加上方便不同文件间切换的Tab,这样就不用从"窗口"中切换到其它文件了.而且可以将头文件和实现文件归在一个Tab中.极其方便.



其实,将AVR-GCC整合到UE,SourceInsight,VC6,VS 2003/2005,甚至Keil的uV3中原理都是一样的.

出0入0汤圆

发表于 2006-4-15 10:59:35 | 显示全部楼层

出0入0汤圆

发表于 2006-4-26 12:14:09 | 显示全部楼层
请问8楼,如何在2005 版里边设置呢?谢谢!

我试了n次都有问题

出0入0汤圆

发表于 2006-4-26 13:28:57 | 显示全部楼层
VC2005中

菜单:工具->外部工具,出现一个外部工具对话框,使用“添加”按钮添加。参数如下:

标题输入:make clean  

命令:E:\program\WinAVR\utils\bin\make.exe (注:根据WinAVR安装目录决定)

参数:clean

初始目录:后面的文本框右面的按钮点鼠标左键,选Workspace Directory

在“使用输出窗口”前面打对钩



其他命令用同样方法添加。



使用方法:用VC2005创建一个空项目,往项目中添加C文件、头文件和MAKEFILE文件,然后

选Tools/make all。

出0入0汤圆

发表于 2006-8-5 22:55:34 | 显示全部楼层
谁能上传个 WndTab 吗?

出0入0汤圆

发表于 2006-8-7 08:56:39 | 显示全部楼层
求WndTab

出0入0汤圆

发表于 2006-8-7 09:42:45 | 显示全部楼层
http://www.wndtabs.com

出0入0汤圆

发表于 2006-8-7 09:51:34 | 显示全部楼层
点击此处下载armok01125563.zip

点击此处下载armok01125564.zip

一个是wndtabs,一个是语言包(据官网说支持中文)

出0入0汤圆

发表于 2009-4-11 23:56:00 | 显示全部楼层
谢谢!!!!!!!!!

出0入0汤圆

发表于 2009-4-12 10:39:20 | 显示全部楼层
顶,学习了

出0入0汤圆

发表于 2009-4-14 19:44:11 | 显示全部楼层
ding

出0入0汤圆

发表于 2009-5-29 15:49:02 | 显示全部楼层
ding 下会试下

出0入0汤圆

发表于 2009-5-29 16:26:59 | 显示全部楼层
楼主太有才了,赶快在Visual Studio 2008 下,试试看, 还是VS用的顺手点

出0入0汤圆

发表于 2009-5-29 17:46:26 | 显示全部楼层
在Visual Studio2008下成功使用了,那个爽啊,谢谢楼主的无私精神。

出0入0汤圆

发表于 2010-2-28 15:59:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-1 09:16:13 | 显示全部楼层
终于找到我想实现却不知怎样实现的东东了,太感谢楼主了!

出0入0汤圆

发表于 2010-3-1 10:14:56 | 显示全部楼层
神奇

出0入0汤圆

发表于 2010-4-6 16:37:45 | 显示全部楼层
mark

出0入264汤圆

发表于 2010-4-6 16:55:39 | 显示全部楼层
试一下。

出0入0汤圆

发表于 2010-4-6 17:37:06 | 显示全部楼层
codeblock里面内置了winavr开发工程,安装好winavr,设置一下编译器就好用了,而且是开源的,比VC++6.0好用。。。

出0入0汤圆

发表于 2010-4-25 23:29:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-1 17:45:58 | 显示全部楼层
写的很好,真是太感谢了!

出0入0汤圆

发表于 2010-10-28 15:40:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-19 08:49:25 | 显示全部楼层
为何VC++6.0这个软件下载不下来呢?

出0入0汤圆

发表于 2010-11-25 13:57:42 | 显示全部楼层
谢谢分享。

出50入0汤圆

发表于 2012-2-2 15:37:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-3 22:57:34 | 显示全部楼层
先去玩玩回头再看

出0入0汤圆

发表于 2012-2-6 17:33:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-19 21:45:38 | 显示全部楼层
atmanavr IDE界面与VC界面一样,超强的代码向导工具,编译器用的是gcc,习惯用vc的朋友可以试试
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 22:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表