解决ZStack 3.0.2 加宏定义“ZTOOL_P1”编译发生内存不足的情况

点击左上角的“关注”,定期更新Zigbee最新资讯,总有你想要的信息!

1、系统信息

协议栈Z-Stack3.0.2
设备CC2530

2、问题描述

  当CC2530使用ZStack 3.0.2协议栈想打开串口功能时,添加宏定义“ZTOOL_P1”编译,会发生内存不足的情况。错误提示如下:

Error[e16]: Segment XDATA_Z (size: 0x1d00 align: 0) is too long for segment definition. At least 0x201 more bytes needed. The problem occurred while processing the segment placement command
“-Z(XDATA)XDATA_Z,XDATA_I=_XDATA_START-_XDATA_END”, where at the moment of placement the available memory ranges were “XDATA:401-1eff”
Reserved ranges relevant to this placement:
XDATA:1-400 XSTACK
XDATA:401-1eff XDATA_Z
BIT:0-7 BREG
BIT:80-87 SFR_AN
BIT:90-97 SFR_AN
BIT:a0-af SFR_AN
BIT:b8-c7 SFR_AN
BIT:e8-ef SFR_AN
BIT:f8-ff SFR_AN
Error while running Linker

  Z-Stack3.0.2协议栈需要的内存太大,CC2530无法提供那么大的内存。

2、解决方法

  可调整串口的接收buff和发送buff的大小来缓解此内存不足的情况,串口的接收buff和发送buff大小定义在“_hal_uart_dma.h”文件中,如下图所示:
在这里插入图片描述
  由上图可知串口的接收buff和发送buff都为256个字节,我们将其调整为50个字节,在预编译中添加“HAL_UART_DMA_RX_MAX=50”,减小串口接收发送缓存buffer,编译通过。
  如果不想减小串口的收发buff,还可以通过减小“关联表”“邻居表”等的大小来缓解此情况。
具体如何优化 flash 和 RAM 可查看:《Optimizing CC2530 Z-Stack 3.0.2 Flash and RAM 翻译》文章。

大家的支持就是我分享技术的动力,希望大家需转载时能附上原作者的博客:https://blog.csdn.net/u012993936,谢谢。



--- End ---
你可能还想看:

> 如何7天快速入门Zigbee?
> 免费的Zigbee抓包神器!比Ubiqua还好用!


文章都看完了,随手点个赞吧~
在这里插入图片描述
↓↓↓ ↓↓↓

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jesse_嘉伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值