TI论坛
直播中

陈舒斌

7年用户 218经验值
私信 关注
[问答]

IAR CC2541编译报错

很急,很急!有碰到过类似问题的兄弟请给个指导。  小弟先谢过!
最近在搞蓝牙BLE的一个项目。 目前在调试硬件驱动阶段。移植 MPU6050  (陀螺仪+三轴加速度) 的四元素融合算法的时候编译器报错。  
IAR版本:IAR FOR 8051     v9.1     .
情景一::
// compute reference direction of flux
hx = 2*(*mx)*(0.5 - q2q2 - q3q3) + 2*(*my)*(q1q2 - q0q3) + 2*(*mz)*(q1q3 + q0q2);
hy = 2*(*mx)*(q1q2 + q0q3) + 2*(*my)*(0.5 - q1q1 - q3q3) + 2*(*mz)*(q2q3 - q0q1);
hz = 2*(*mx)*(q1q3 - q0q2) + 2*(*my)*(q2q3 + q0q1) + 2*(*mz)*(0.5 - q1q1 - q2q2);
如上的计算就会报下面这个错。   
Error[e133]: The output format intel-extended cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted
情景二::公式angle= (atan2((double)y,(double)x) * (180 / 3.14159265) + 180);  计算也会报上面这个错,  
因为这个公式只有一个,我把它分开写了  
Rangle=atan2((double)y,(double)x);
KRad=180.0 /PI;
angle=Rangle*KRad;
angle=angle+KAngle;
编译成功,能正常计算。  但是四元素融合算法里类似这种复杂公式的计算太多了,这样全部分开不是一个解决办法。。。还需要从根本上解决这个报错问题。
情景三:
不仅计算,光光声明一个函数头
void AHRSupdate(float gx, float gy, float gz, float ax, float ay, float az, float mx, float my, float mz) [/*  函数体计算部分全部屏蔽  */}
这样,编译能通过,但是在主程序中调用该函数时,也会包上面那个错。Error[e133]: The output format intel-extended cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted。
试过网上的的由于EEROM使用,输出设置不当造成。。但是我程序中并没有使用EEPORM。     有各位大侠解惑!  谢谢!

回帖(1)

庄当甜

2020-3-13 08:51:22
试一下 右击工程,选择Options->Linker,在Config标签页下找到Linker configuration file,勾选Override default,选择安装的TI蓝牙协议栈工程例程里common文件夹下的ti_51ew_cc2540b.xcl,ok,
举报

更多回帖

发帖
×
20
完善资料,
赚取积分