解決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,還可以通過減小“關聯表”“鄰居表”等的大小來緩解此情況。

大家的支持就是我分享技術的動力,希望大家需轉載時能附上原作者的博客:https://blog.csdn.net/u012993936,謝謝。



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

> 如何7天快速入門Zigbee?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章