My IAR version is 8.10. The complete description of this error is error[e104]: Failed to fit all segments into specified ranges. Problem discovered in segment Xdata_n. Unable to place 2 block (s) (0xc02 bytes (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"
There are many explanations of this problem on the Internet, please refer to http://blog.csdn.net/itas109/article/details/12999831
For my problem, many methods on the Internet are not valid, such as change small Int_heap_len http://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/t/ 420664), or modify the IAR configuration for xdata size http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/ 78526.aspx only one available: http://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/t/242056 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 could be default 255). For Example:hal_uart_dma_rx_max =64;//255 Hal_uart_dma_tx_max =64;//255, mean you using 64TX byte= + 64rx of Xda Ta Ram for UART DMA circuit buffer.