IAR 常见报错与实用小技巧(ZigBee)

一、报错

1.未发现选择目标

原因:硬件连接存在问题

解决方案:将数据线重新插拔或更换接口、数据线

2. 烧录终止

原因:烧录前未点击仿真器复位按钮

解决方案: 进行烧录前点击仿真器复位按钮(下载过程中不能按

注:是点击仿真器复位按钮不是点击板子上的按钮。

3.编译器在尝试链接程序时找不到名为 main 的函数定义

原因: 未知(多种原因可造成该问题:定义缺失、链接器的设置......)

 解决方案:

1.Project--->option--->C/C++Compiler--->output中的generate debug information选项勾上。

 2.project--->options--->linker里面的format设成debug了

3.更换设备尝试(电脑) 

 4.内存爆炸

Error[e16]: Segment XDATA_Z (size: 0x1d90 align: 0) is too long for segment definition. At least 0x210 more bytes needed.

 原因:变量定义问题,数据量过大,定义的XDATA_Z段(外部数据段)的大小超出了其在内存中分配的空间。

 解决方案:

1.优化程序——减少全局变量和静态变量

2.修改XDATA大小(不建议,可能导致硬件不支持)

3.将数据定义成const的,这样数据就会被放到flash里。

二.实用小技巧

1.Erase flash

擦除设置:可以避免原先存储的内容干扰新程序

2.Rebuild All

首次打开一个项目并进行编译时或修改多个文件后,使用Rebuild All。

Rebuild All是对整个工程进行清理、重新编译、链接,耗费时间较长。

与Rebuild All相关的操作还有两个:

  • Compile:只对当前打开的C文件进行语法检查,而不进行链接。这在你只需要检查单个文件的语法时很有用。
  • Make:对工程所有打开的C文件进行语法检查和链接,但只编译有改动的文件或设置变动的文件。这在你修改了少量文件并希望快速看到结果时很有用。

3.PAN ID 

多个协调器同时工作,解决终端匹配错误问题。

注:若周围存在一样的ID号则协调器组网时ID自动修改。烧录终端时ID号是多少那么终端就会接入该ID号的网络。(有效范围内确保唯一性)

点赞+收藏,探索不迷茫!

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值