BLE开发笔记——遇到的问题及解决方法记录

在进行BLE开发的学习中总会遇到一些棘手的问题,开此文就是为了记录在进行CC2541开发中遇到的问题和解决的方法,应该会持续更新。。。

更新情况

  • 2015-11-05 18:00:00 添加问题2
  • 2015-10-30 10:00:00 添加问题1

问题1

出现以下编译链接错误:

Error[e133]: The output format intel-extended cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted
Error while running Linker

解决方法:

网上说出现此问题的原因是IAR中EEPROM使用设置的问题,调整编译链接设置可以解决,但不适用于我出现此问题的解决,分析出现此链接错误原因可能有好多,目前经过查找找到了原因:在调用函数传递float类型的数据的时候,不能直接写浮点数,类似这样

printFloat(1.02);

必须传递一个变量,例如

float test = 1.02;
printFloat(test);

找到了根本一点的解决方法,右击工程,选择Options->Linker,在Config标签页下找到Linker configuration file,勾选Override default,选择安装的TI蓝牙协议栈工程例程里common文件夹下的ti_51ew_cc2540b.xcl,ok,编译链接就可以通过了。

问题2

出现编译连接错误:

Error[e104]: Failed to fit all segments into specified ranges. Problem discovered in segment XDATA_N. Unable to  
place 2 block(s) (0xbba byte(s) total) in 0x664 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:189c-1eff"
Error while running Linker

解决方法:

右击工程,选择Options->C/C++ Compiler,在Preprocessor标签页下找到Define symbols:(one per line),更改其中的INT_HEAP_LEN的值,默认值是3000,改到一个小一点的值,点击OK,重新编译,直到成功,我的改到了1500,就可以解决了。

参考:


ble

643 字

2015-10-30 10:00 +0800