我的IAR版本为8.10.这个错误的完整表述是Error[e104]: Failed to fit all segments into specified ranges. Problem discovered in segment XDATA_N. Unable to place 2 block(s) (0xc02 byte(s) total) in 0xbf3
byte(s) of memory. The problem occurred while processing the segment placement command "-P(XDATA)XDATA_N=_XDATA_START-_XDATA_END", where at the moment of placement the available memory ranges were "XDATA:130d-1eff"
网上很多对这个问题的解释,请参看 http://blog.csdn.net/itas109/article/details/12999831
对于我的问题,网上很多方法都无效,
如改小
INT_HEAP_LEN http://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/t/420664),
或是修改IAR对XDATA大小的配置
http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/78526.aspx
This Err may cause by buffer using by UART DMA too large.
try to find _hal_uart_dma.c and reduce 2 defined paras value below ( it may be default 255) . For example:
HAL_UART_DMA_RX_MAX =64;//255
HAL_UART_DMA_TX_MAX =64;//255
that mean you using 128 byte= 64tx + 64rx of Xdata Ram for uart dma circuit buffer.