IAR编译zstack常见报错解决

本文开发环境如下:

IAR版本:8.1
硬件平台:TI的cc2530
zstack版本:2.3.0-1.4.0

持续更新

如何打开一个工程

一般工程文件的所在路径为:ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\SampleApp\CC2530DB
在这里插入图片描述
.eww文件即为IAR的工程文件。

打开后可能会出现下面几个对话框,这是由于IAR版本过高导致的,不用管,一里路yes\确定下去就好了。
在这里插入图片描述
在这里插入图片描述
打开工程后,在左边我们可以看到一个workspace,虽然有很多文件夹,但我们重点关心的主要是画箭头的几个文件,如下图:
在这里插入图片描述
从上到下主要包含了:用户应用层代码、zstack配置、main函数。
然后我们右键工程,选择 Rebuild all对整个工程进行编译。

编译常见报错

Error[e16]: Segment RAM_CODE_FLASH (size: 0x27 align: 0) is too long for segment definition. At least 0x4 more bytes needed. The problem occurred while processing the segment placement command

这种报错提示:分配的空间大小不够,我们首先找到TOOLS文件下的f8w2530.xcl文件,利用CTRL+F找到报错的那一项,如下图:
在这里插入图片描述
对下面的代码进行修改,将空间多分配4个字节即可,如下:

-D_RAM_CODE_FLASH_END=(_RAM_CODE_FLASH_START+0x26)

Error[e46]: Undefined external “?V1” referred in AF ( D:\code\MCU\cc2530\air_sensor\Projects\zstack\Samples\SampleApp\CC2530DB\CoordinatorEB-Pro\Obj\AF.r51 )

针对这类报错,我们右键工程,选择Options,并将其中的number of virtual改为8,如下图所示:
在这里插入图片描述
这时候在编译,发现还是会报相同的错,这还是IAR版本的锅,我们再在Projects\zstack\ZMain\TI2530DB目录下找到chipcon_cstartup.s51文件
在这里插入图片描述
对这个文件进行替换,百度网盘链接,提取码abcd

替换后重新编译即可。

Error[Pa045]: function “” has no prototype D:\code\MCU\cc2530\chuankou\ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\SampleApp\Source\iic_fxread.c 204

这种问题一般出现在加入自己编写的函数后,我们在之前的options选项中,取消选择Require prototypes即可。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43550173/article/details/110950597