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,就可以解决了。