IAR MSP430编译报错说明
更新时间:2024-06-10 22:39:01 阅读量: 综合文库 文档下载
IAR MSP430编译报错说明
无编号警告类型:
1、Sat Jun 23, 2012 17:41:05: The stack pointer for stack 'Stack' (currently Memory:0xF5336) is 原因:http://blog.sina.com.cn/s/blog_4c0cb1c0010153l9.html
IAR相关设置:Tools->Option->Stack->Warn when stack pointer is out of bounds.
2、无法查看结构体/共同体/联合体 变量[Syntax error, unexpected $end, expecting COLON2] column 1 struct drpoint {
uint16 x; uint16 y; }drpoint[10]; 改成: struct {
uint16 x; uint16 y; }drpoint[10]; 参考:
http://tech.groups.yahoo.com/group/lpc2000/messages/34213?threaded=1&m=e&var=1&tidx=1
UESTC 2012.12
IAR 各版本BUG错误修正历史:
ftp://efo-6.ip.peterstar.net/pub/efo-ftp/TMP/pub/atmel/_AVR32_MCUs_32bit/Compilers/IAR/IAR_2.20/Install software/EWAVR32-KS-CD-220A/doc/common/doc/CorrectedProblems.pdf 有编号警告类型:
Error[e16]: Segment XDATA_Z (size: 0x19a1 align: 0) is too long for segment definition. At least 0xe4c more bytes needed. The problem occurred while processing the segment placement command
\the moment of placement the available memory ranges were \Reserved ranges relevant to this placement: XDATA:f000-f1fe XSTACK
XDATA:f1ff-fd53 XDATA_N BIT:0-7 BREG
BIT:80-97 SFR_AN BIT:a8-af SFR_AN BIT:b8-c7 SFR_AN BIT:d8-df SFR_AN BIT:e8-ef SFR_AN A:
其实这个问题并不是你的程序本身有问题,主要是因为你编写的程序太大了,超出了芯片本身的定义。今天在群里学习了一招,就是将数组定义到code里,我们看一下例子。我们定义一个5100个元素的数组,有以下两种方法: mermaid提出的方法是:
typedef unsigned char const __code INT8U; extern INT8U shuzi[5100]; 文晶提出的方法是 INT8U code shuzi[5100];
这两种方法其实效果是一致的,定义完数组之后,调用的部分就是需要用指针来调用数组里面的数值了。
bytes needed. The
pro××em occurred while processing the segment placement command the ××aila××e
memory ranges were \
经过验证是由于RAM耗尽,程序里估计有很大的数据量,最好使用const定义到FLASH里面,问题基本可以解决。
Error[e16]: Segment DATA16_I (size: 0xa80 align: 0x1) is too long for segment definition. At least 0x27f more
\
Error[e16]: Segment DATA16_Z (size: 0x6b9 align: 0x1) is too long for segment definition. At least 0x317 more bytes needed. The problem occurred while processing the segment placement command
\SIZE=0200-09FF\available memory ranges were
\CODE:642-645,CODE:649-64b,CODE:64d-64d,CODE:64 f-65b,CODE:65e-9ff\
Reserved ranges relevant to this placement:
可能的原因:1、设置的某个数组过大,超过了设置的堆栈。 2、设置的堆栈不够大
3、选择的型号不对(编写的程序是用在RAM较大的一个单片机上的,IAR里选择的却是RAM较小的一个型号) UESTC 2013.3.8
2Q:
烧写程序时无法跳入断点
为什么我每次烧程序都出现:The stack plug-in failed to set a breakpoint on \window will not be able to display stack contents. (You can change this setting in the Tool>Options dialog box.)的警告。但是程序能烧进去,只是不能调试。 A:
确认设置没有问题(和好用的工程相比)这是设置不对,请找下面顺序修改: iar->options->linker->output->format; 选择 Debug information for c-SPY选项 3Q:
错误提示:
Fatal Error[Cp001]: Copy protecTIon check, No valid license found for this product [20] A:
可以将IAR全部安装上,但是在编译文件时却会报这个错,原因是安装的时候没有把注册机的0x.....字串的小写字母改为大写字母。 4Q:
“Error[e16]: Segment CSTACK (size: 0x50 align: 0x1) is too long for segment definition. At least 0x50 more bytes needed. The problem occurred while processing the segment placement command \Z(DATA)CSTACK+_STACK_SIZE#\ A:
此错误是所定义的全局变量和数组缓冲区等所占的RAM超出硬件支持所致:size: 0x50为超出的大小。只要减少不不要的全局变量和尽量缩小数组缓冲区就可以了! 5Q: 7Q:
Error[Pe018]: expected a \桌面\\Crane\\Crane\\塔吊防碰撞系统1.1版(SIM908 倾角查询)\\5438A塔吊防碰撞1.1\\api_function.h 5
1、函数或者语句中有变量名复用:
#define length 50 // 吊臂长度
extern int dec_to_bcd(int dec_dat, unsigned char *bcd, int length); 将以上的变量名之一换做别的即可解决。
UESTC 2012.3.27
Error[e27]:(变量没有extern声明外部可调用) uestc
http://blog.sina.com.cn/s/blog_4c0cb1c00100z0w1.html
Error[e27]: Entry \(……)
解决方法是把变量定义在其中一个cpp文件里面, 然后在另一个文件里面用extern来引用。 sample: 文件一: int a=0;
文件二:
extern int a; //此处不能使他等于某个数就可以了,如果此处a再赋值extern int a=0;就会报错e27
以为我在x.h文件中定义有变量,然后x.h放入 config.h中,config.h被其他的各个.c文件包含,就造成了,x.h中的变量在各个.c中定义,造成了重复定义。 UESTC 2012.3.27 相关问答:
http://topic.csdn.net/u/20120222/22/c9b258d3-f58e-49dc-bf97-630271a26dfc.html
14Q:Error[e46]:
Undefined external \A:该问题应该是IAR设置问题,具体设置如下:
Project->Option->Linker->Config 勾选\再选择\
B、 static (const)变量是不能被外部文件调用的 ( ? )
C、只包含了.h文件, .c文件没有添加进工程
从debug切换到release出现错误:release不会自动继承debug的设置,需要
自己重新设置:
snprintf、fmax、fmin这些函数都能在IAR帮助中找到,但是却出现下面错误:
Error[e46]: Undefined external \Settings\\Administrator\\桌面\\塔吊安全监控系统-终版\\塔吊安全监控系统-终版\\ Release\\Obj\\cacu_protect.r43 )
Error[e46]: Undefined external \Settings\\Administrator\\桌面\\塔吊安全监控系统-终版\\塔吊安全监控系统-终版\\ Release\\Obj\\cacu_protect.r43 )
Error[e46]: Undefined external \Settings\\Administrator\\桌面\\塔吊安全监控系统-终版\\塔吊安全监控系统-终版\\ Release\\Obj\\gprs_8.r43 ) Error while running Linker 错误原因:链接库的设置不对:
Error[Pe077]:
this declaration has no storage class or type specifier
不同的版本,就有不同的写法,就像环境不一样,中断函数的名字也不一样,我遇到过这样的情况(两个不同版本下定时器初始化时寄存器的名称不同). 如I/O口中断函数的名的两种版本:
版本1:interrupt[PORT2_VECTOR] void PORT2 (void)
版本2:#pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR (void) 2012.2.x UESTC
8Q:
Error[Pe136]:
struct \Instruments\\ZStack-1.4.3-1.2.1\\Projects\\zstack\\Samples\\SampleApp\\Source\\SampleApp.c 417
//--------------------------------------------// afAddrType_t dstAddr;
dstAddr.addrMode = afAddrBroadcast;
dstAddr.addr.shortAddr = 0xFFFF; // 广播发送 cdwxl
dstAddr.endpoint = SAMPLEAPP_ENDPOINT; //error所在 //--------------------------------------------// A:
我们看看afAddrType_t这个结构就明白错在哪里了。 typedef struct { union {
uint16 shortAddr; } addr;
afAddrMode_taddrMode; byteendPoint; } afAddrType_t;
居然是 endPoint 大小写错误,Ω 。 9Q:
我最开始也是IAR仿真时找不到main函数, 显示:
Fri Jun 11 14:37:00 2010: Error (col 1): Unknown or ambiguous symbol. main Fri Jun 11 14:37:01 2010: Error (col 1): Unknown or ambiguous symbol. main Fri Jun 11 14:37:01 2010: Couldn't go to 'main'.
之后在project==>options==>linker里面的format设成debug,没有这个问题了,但是 程序又不能通过TI的那个Flash Programmer下载到板子里了,说是Could not open specified HEX file A:
这个烧录工具只认release code. 而且扩展名必须是.hex。 所以要用这个烧录工具来烧录必须做两件事: 1. output file设为release version
2. output file 扩展名改为.hex, 默认的是.a51
测试学习阶段可以不用.但产品量产就必须生成二进制文件. 同时programmer还有些其它的功能会常用的
Error[Pe142]: expression must have pointer-to-object type
表达式两边的类型不一样。2012.2.x uestc 例如:
“编译的错误是指第一个?*?的后面应该是指针,却给了是非指针表达式。
如果p是个指针,那么*(p+i)是p后面第i个域或单元的元素,这个域与p所指的变量类型有关,
也就是说'*(p+i)+j'是数,而非指针。与*结合就错了。 ” http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=931945
C++的该错误:
http://efreedom.com/Question/1-4943607/Expression-Must-Pointer-Object-Type-Subscript-Requires-Array-Pointer-Type Error[Pe148]:
variable \
\=0; \声明可外部调用需要赋值
Error[Pe159]: declaration is incompatible with previous
没加头文件,或者主函数内有子函数,而子函数定义在主函数后边而木有在主函数前声明一下。
Error[Pe169]: expected a declaration 错误原因可能性: 1、void read_gprs_return(); { …… }
定义函数的时候,结尾多了一个分号:;。
Error[Pe852]:
Error[Pe852]:expression must be a pointer to a complete object type
Error[Pe260]:
explicit type is missing (\桌面\\下位机\\塔吊防碰撞系统1.1版(SIM908 倾角查询)\\5438A塔吊防碰撞1.1\\LCD(SmallFonts).c 898
问题例子1:定义一个函数,落了红字部分声明
void DrawSector(int x,int y,int R1,int R2,float Ds ,float De,int fill,uchar color) {
…… }
11Q:Error[Pe513]:
a value of type \\
Instruments\\ZStack-1.4.3-1.2.1\\Components\\stack\\sapi\\sapi.c 968
A:估计是一个函数本没有返回值即void类型,而你却将这个函数赋给了一个int型变量了。。 static rxCB( uint8 port,uint8 event )改为 static void rxCB( uint8 port,uint8 event ) 12Q:
Fatal Error[e72]: Segment BANK_RELAYS must be defined in a segment definition option (-Z, -b or -P) A:
使用无线龙的串口互发,发现上述错误,原因是版本太高,具体原因不清,下载一下7.20H就可以了
Fatal Error[e89]: Too much object code produced (more than 0x1000 bytes) for this package 是4K限制版,请使用有非限制版的。
IAR常见错误请先从如下几方面入手: 1序列号是否正确。
2使用版本是否正确,应该使用7.30B打开的工程文件不能使用7.20H打开。 3尽量不要使用中文路径。
4ZigBee协议栈文件夹需要放在IAR安装盘根目录下。 5请确定当前编译文件夹是否具有读写权限。 6使用的版本是否是限制版
Fatal Error[Pe005]: could not open source file \这是什么原因?谢谢了
是因为头文件路径不对造成,改正的方法是在设置选项卡的C/C++ Compiler -> Preprocessor选项里,将$TOOLKIT_DIR$\\INC\\CLIB\\添到Include paths中。($TOOLKIT_DIR$指IAR的安装路径,一般用到标准库函数时要将它写入Include paths里面)
Fatal Error[Pe005]: could not open source file \例子程序\\无线通信综合测试\\Library\\cc2430\\HAL\\source\\setTimer34Period.c 7
先检查 C:\\Users\%user\\Desktop\\例子程序\\无线通信综合测试\\Library\\cc2430\\HAL\\source\\有无setTimer34Period.c 这个文件,若有,则是因为IAR对中文路径支持不好的缘故,你把这个工程复制到全英文路径下编译应该就不会报错了。 Fatal Error[Pe1696]: cannot open source file \注意config.h 存放的位置,最好与main同处于一个文件夹 15Q:
Fatal Error[Cp001]:
Copy protection check, No valid license found for this product [24] XP下装的IAR,到了Win7下出来的问题。
A:这个问题是使用注册机带来的,系统换了,本机ID也要改了。
、、单击IARID.EXE得到本机的ID号
、、右键点Key.cmd,选择编辑,打开,将ID修改为本机ID
、、运行KEY.cmd,在key.txt中的含有EW8051-EV的序列号就是7.30的序列号 16Q:
在用iar debug 下载进已有程序板子出现的 A:将核心板与扩展板分开,只烧写核心板。 17Q:
A:自小峰关于协议栈XDATA溢出的小结 (1)减小程序;
(2)把配置文件f8w2430.xcl/f8w2430pm.xcl中的-D_CODE_END改大点: ******************** f8w2430.xcl:
// CODE //
// These settings determine the size/location of the ROOT segment. // Increase _CODE_END to increase ROOT memory, i.e. for constants. -D_CODE_START=0x0000 // Code size = 128k for CC2430-F128 -D_CODE_END=0x4000 // Last address for ROOT bank ******************** f8w2430pm.xcl:
// CODE //
// These settings determine the size/location of the ROOT segment. // Increase _CODE_END to increase ROOT memory, i.e. for constants. -D_CODE_START=0x0000 // Code size = 128k for CC2430-F128 -D_CODE_END=0x29FF //(原0x28FF) Last address for ROOT bank
Warning[Pe001]: last line of file ends without a newline F:\\emoTion\\IAR\\PK升级\\CC1110-8\\main.c 179 A:
在使用IAR时常常会弹出类似这样一个警告,其实只要在最后一行多加一个回车就不会再有这个警告了. 6Q:
在编写一个串口程序时:编译没有错,但MAKE时就出现下面的错误
正在阅读:
IAR MSP430编译报错说明06-10
液压与气动课后作业06-01
如何做统帅型班主任11-09
23第一课时定稿06-10
管理心理学12-01
青岛版六年级下册科学各单元检测试题及答案(含期中期末)05-08
移动硬盘 如何创建、删除或格式化硬盘分区08-14
关于父爱的诗歌大全03-21
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 编译
- 说明
- MSP430
- IAR
- 《美术学科知识与教学能力》(高级中学) - 图文
- 守卫剑阁乱世枭雄攻略
- 《初中化学中考复习重点》之三 物质构成的奥秘
- 新人教版九年级物理第十七章欧姆定律导学案
- 工作面顺槽胶带输送机安全技术操作规程
- 国家林业局行政许可事项公示内容(国家林业局公告2004年第3号,2
- 触电事故应急准备与响应预案
- 《牛顿第二定律》每课一练
- 九年级英语全册 Unit 2 Section B 2a-2e教案(新版)人教新目标
- 浅谈在课改形势下怎样提高英语教学质量
- 全程编制绵羊皮男装项目可行性研究报告方案(可用于发改委立项及
- 公司融资商业计划书模板 - 图文
- 省分行高管-案例题
- 最新版财经法规与会计职业道德案例分析题及答案
- 手自一体变速箱驾驶基本技巧
- UG命令:边倒圆
- 馨园施工图纸会审(设计修改完成版)
- 人教版《透镜及其应用》单元测试题(三)
- 中国近代外交
- 水力学各章习题