ICC错误集锦,看懂ICC AVR的报错

发布者:星光曲折最新更新时间:2016-10-18 来源: eefocus关键字:ICC  错误集锦  AVR  报错 手机看文章 扫描二维码
随时随地手机看文章
新手用ICC编程的时候,经常会出现一些错误,现在将常见的错误报告整理如下。这里的一些错误是我为了展示而故意制造的,欢迎你提供你遇到的错误。排名不分先后:

一、正常编译通过

CODE:

C:\icc\bin\imakew -f main.mak

  iccavr -c -IC:\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\桌面\实验教程\LED应用\霓虹灯\main.c

  iccavr -o main -LC:\icc\lib\ -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk   -lcatmega

Device 1% full.

Done.

[Copy to clipboard]

这是我们最想看到的了,万事大吉。

二、工程中未加入.C文件

CODE:

C:\icc\bin\imakew -f main.mak

  iccavr -o main -LC:\icc\lib\ -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk   -lcatmega

unknown file type @main.lk, passed to linker

!ERROR unknown file type '@main.lk'

C:\icc\bin\imakew.exe: Error code 1

Done: there are error(s). Exit code: 1

[Copy to clipboard]

解决办法:将你的程序加入工程中,可以右键程序区>>ADD to project

三、程序没有后缀名,或者后缀名不正确。

CODE:

C:\icc\bin\imakew -f main.mak

C:\icc\bin\imakew.exe: 'main' is up to date

Done.

[Copy to clipboard]

这是一个很难理解的错误,它是由工程中的程序文件没有后缀名造成的。

解决办法:将原有文件移出工程,将文件的后缀名改为.C,然后再加入工程中。

四、没有main函数

CODE:

C:\icc\bin\imakew -f main.mak

  iccavr -c -IC:\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\桌面\实验教程\LED应用\霓虹灯\main.c

  iccavr -o main -LC:\icc\lib\ -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk   -lcatmega

!ERROR file 'crtatmega.o': undefined symbol '_main'

C:\icc\bin\imakew.exe: Error code 1

Done: there are error(s). Exit code: 1

[Copy to clipboard]

解决办法,编写程序主函数MAIN。

五、没有选择目标芯片出现如下错误:

CODE:

C:\icc\bin\imakew -f main.mak

  iccavr -c -IC:\icc\include\ -e -l -g -Wa-W D:\桌面\实验教程\LED应用\霓虹灯\main.c

  iccavr -o main -LC:\icc\lib\ -g -Wl-W -bfunc_lit:0.0x2000 -dram_end:0x25f -bdata:0x60.0x25f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk

!E C:\icc\lib\crtAVR.o(41): Code address 0 already contains a value

!E C:\icc\lib\crtAVR.o(41): Code address 0x1 already contains a value

C:\icc\bin\imakew.exe: Error code 1

Done: there are error(s). Exit code: 1

[Copy to clipboard]

解决办法:project>>Options>>target>>device configuration 选择合适的芯片。

六、缺少分号

CODE:

C:\icc\bin\imakew -f main.mak

  iccavr -c -IC:\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\桌面\实验教程\LED应用\霓虹灯\main.c

!E D:\桌面\实验教程\LED应用\霓虹灯\main.c(52): unrecognized statement

!E D:\桌面\实验教程\LED应用\霓虹灯\main.c(53): syntax error; found `}' expecting `;'

!E D:\桌面\实验教程\LED应用\霓虹灯\main.c(53): syntax error; found `end of input' expecting `}'

C:\icc\bin\imakew.exe: Error code 1

C:\icc\bin\imakew.exe: 'main.o' removed.

Done: there are error(s). Exit code: 1

[Copy to clipboard]

上面的报告说明了第52行缺少一个分号,预期分号的地方出现了“}”。

解决方法,在52行末尾添加分号。

类似的有:缺少}的报错

CODE:

C:\icc\bin\imakew -f main.mak

  iccavr -c -IC:\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\桌面\实验教程\LED应用\霓虹灯\main.c

!E D:\桌面\实验教程\LED应用\霓虹灯\main.c(55): illegal statement termination

!E D:\桌面\实验教程\LED应用\霓虹灯\main.c(55): skipping `void'

!W D:\桌面\实验教程\LED应用\霓虹灯\main.c(55):[warning] calling function without prototype may cause errors

!E D:\桌面\实验教程\LED应用\霓虹灯\main.c(56): syntax error; found `{' expecting `;'

!E D:\桌面\实验教程\LED应用\霓虹灯\main.c(57): syntax error; found `end of input' expecting `}'

C:\icc\bin\imakew.exe: Error code 1

C:\icc\bin\imakew.exe: 'main.o' removed.

Done: there are error(s). Exit code: 1

[Copy to clipboard]

七:变量没有定义

CODE:

C:\icc\bin\imakew -f main.mak

  iccavr -c -IC:\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\桌面\实验教程\LED应用\霓虹灯\main.c

!E D:\桌面\实验教程\LED应用\霓虹灯\main.c(48): undeclared identifier `i'

C:\icc\bin\imakew.exe: Error code 1

C:\icc\bin\imakew.exe: 'main.o' removed.

Done: there are error(s). Exit code: 1

[Copy to clipboard]

解决办法:在程序开始前添加变量定义,比如unsigned char i;注意,定义变量要在函数的最前面进行,及在进行计算操作之前定义所有变量。

欢迎你发布你遇到的错误和解决方法,或者你遇到的错误还没解决的。

八、在编译时总是不能生成COF文件,不能进行调试

解决办法:在ICCAVR编译环境中,进入Project -> Option -> Compiler中在Output format区选COFF/HEX格式

九、请指点一下: 
我的程序出现下列错误提示,是不是我什么地方设置错了呀。 

CODE:

D:\icc\bin\imakew -f tex.mak 
  -lstudio -lfpavr 
want size 346 
lo 3910 hi 4096 size 187 
!E (37): area 'text' not large enough 
D:\icc\bin\imakew.exe: Error code 1 
Done: there are error(s). Exit code: 1 
一点错误那行的时候就出来一个提示框,但没有移到某一行上去。。。。 
ans1:还没有确切的解释,可能原因:应该是定义的数组过大,减小数组的数量应该可以了
ans2:这是超过编译空间了,你可以到压缩下代码,project>options>compiler,选择Enable code compression或者只有优化代码了
十:无意中又发现一个:

too many arguments to `delay_1ms'

问题原因,函数的参数太多,比如上面一个定义的是delay_1ms(void),我确用了delay_1ms(1);改为delay_1ms();就好了。
十一、!ERROR can't open file '\lib\iccavr\libsliccatmega-m.a'

刚才问了一下人,新建一个工程,然后把所有的C文件都导入里面,就没有的问题了,剩下一些语法错误。
十二、ICC7 的代码大小限制的问题,DEMO版超过4K不能编译。
D:\PROGRA~1\iccv7avr\bin\imakew -f mytest.mak
D:\PROGRA~1\iccv7avr\bin\imakew.exe: Couldn't open mytest GetLastError() = 5
Done: there are error(s). Exit code: 1
(斑竹,我后来发现这好像是因为ICC编译生成的某些文件有错误,把ICC生成的文件都删掉,重新建立一个project,重新选择Target,重新编译就好了)
十三、
CODE:

iccavr -o main -LD:\avr\icc\lib\ -g -ucrtatmega.o -bfunc_lit:0x8c.0x10000 -dram_end:0x10ff -bdata:0x100.0x10ff -dhwstk_size:16 -beeprom:1.2048 -fihx_coff -S2 @main.lk D:\PROTEU~1.7\PROTEU~1.7\JOHU\mcu\all\CH375HFB.A -lcatmega
Device 45% full.
warning: COFF no struct tag '_CMD_PARAM' found for symbol index 1362
Done.
一个警告,搞不太清楚,以前starnewtech说过,好像是ram不够用了。
十四、重复定义 ,请在包含的头文件里面用这种格式。

#ifndef __config_H__
#define __config_H__ 1
//你的定义放这里。
#endif

关键字:ICC  错误集锦  AVR  报错 引用地址:ICC错误集锦,看懂ICC AVR的报错

上一篇:AVR中如何操作单个IO口
下一篇:基于AVR单片机的SPI接口的25C256

推荐阅读最新更新时间:2024-03-16 15:16

采用AVR Flash微控制器的电动车窗防夹系统
     汽车上可自动关闭的电动车窗或车门设备潜藏着卡死,挤压以及可能伤人的危险。它们必须能够反向移动以防止马达所施加的力超出正常限制。这种特性意味着必须持续监视速度、电流和玻璃的位置。        由于成本和简化的原因,本文所描述的系统使用普通的带有霍尔效应传感器的刷式马达。基于速度和扭矩导数的检测算法已通过健壮性和容错性的验证。该算法可用于所有带有A/D 转换器和通过变化引发中断的I/O 口的AtmelAVR Flash 微控制器。本文描述的是基本原理,Atmel网站上的应用笔记有关于实现的详细描述。        现代汽车中的电动设备        目前,在高端客用汽车中电子组件和系统在成本中已占20%以上。增
[嵌入式]
avr单片机eeprom初始化配置及说明
ATmega16 包含 512 字节的 EEPROM 数据存储器。它是作为一个独立的数据空间而存在的,可以按字节读写。 EEPROM 的寿命至少为 100,000 次擦除周期。 EEPROM 的访问 由地址寄存器、数据寄存器和控制寄存器决定。 /* EEPROM 数据存储器 EEPROM 地址寄存器(EEARH 和 EEARL) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 Res: 保留 保留位,读操作返回值为零。 EEAR8..0
[单片机]
AVR单片机如何在编写程序里就配置好熔丝位
  熔丝是一个保护知识产权的设计。简单的说,你在特定的引脚上加电压,足够的电流,就可以烧断里边的这根熔丝,烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行。一般成品出售时都这样做。专用的写片机支持这个功能。自己也可以根据芯片的官方文档来操作。熔丝位是在一个特定的地址上可以读到熔丝状态的一个位。0表示已熔断,1表示未熔断。   在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”
[单片机]
基于AVR单片机与FPGA的低频数字式相位测量仪设计
在工业领域中经常要用到低频数字式相位仪来精确测量两信号之问的相位差,比如在电力系统、频率特性的研究、激光测距等领域均有广泛的应用,相位检测的精度直接决定系统的整体性能。这就要求测量仪逐渐向智能化和测试自动化方向发展,本设计采用MCU和FPGA相结合的系统方案,以AVR单片机ATmega128和Altera公司的Cyclone系列EP1C3T100为核心,充分发挥各自的优势,如AVR单片机先进的RISC结构和强劲的运算、控制功能,Altera公司的FPGA运算速度快、资源丰富以及易编程的特点,合理设计,此方案的相位仪具备速度快、稳定可靠、精度高等优点,而且容易实现“智能化”和“自动化”。 1 系统方案设计 1.1 测量方法的比较
[单片机]
基于<font color='red'>AVR</font>单片机与FPGA的低频数字式相位测量仪设计
AVR单片机延时程序
AVR单片机延时程序: 1.毫秒级的延时 延时1ms; void delay_1ms(void) { unsigned int i; for(i=1;i (unsigned int)(xtal*143-2);i++) ; } 在上式中,xtal为晶振频率,单位为MHz. AVR 延时程序 当晶振频率为8M时,延时函数软件仿真的结果为1000.25μs.当晶振频率为4M时,延时函数软件仿真结果为999.5μs. AVR 延时程序 如果需要准确的1ms延时时间,则本计算公式只供参考,应通过软件仿真后,再确定循环的次数及循环初值,并且循环中还必须关闭全局中断,防止中断影响延时函数的延时时间。 下面的函数可以获得1
[单片机]
使用AVR Studio+Winavr
1. 获得必须的软件 请从Atmel官方获得最新版本的AVR Studio 请从WinAVR官方获得最新版本的WinAVR 注意:WinAVR和AVR Studio是2个不同的软件,前者是开源项目,不属于Atmel所有,后者是Atmel版权所有的。 2. 安装步骤 1)安装WinAVR 2)安装AVR Studio 3)安装AVR Studio的Service Pack(如果有的话) 3. 新建测试工程 1)启动AVR Studio 2)选择 New Project 3) Project type 里选择 AVR GCC ,单击 Location 旁的按钮,选择工程保存位置(这里假设为C:\),避免路径中有中文
[单片机]
基于AVR的锂电池智能充电器的设计与实现
   1 引言   锂电池闲其比能量高、自放电小等优点,成为便携式电子设备的理想电源。近年来,随着笔记本电脑、PDA,无绳电话等大功耗大容量便携式电子产品的普及,其对电源系统的要求也日益提高。为此,研发性能稳定、安全可靠、高效经济的锂电池充电器显得尤为重要。   本文在综合考虑电池安全充电的成本、设计散率及重要性的基础上,设计了一种基于ATtiny261单片机PWM控制的单片开关电源式锂电池充电器,有效地克服了一般充电器过充电、充电不足、效率低的缺点,实现了对锂电池组的智能充电,达到了预期效果。该方案设计灵活,可满足多种型号的锂电池充电需求,且ATtiny261集成化的闪存使其便于软件调试与升级。    2 锂电池充电特性
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved