Part Number:TMS320F28375S
尊敬的工程师您好:
我再使用fpu32的时候遇到了一个问题,我发现在系统启动之前,也就是在main函数中的BIOS_start函数启动之前,不能进行正常的除法运算,除法运算不执行,得到的结果是0。但是bios启动之后,又可以正常工作。是什么原因呢,配置如下,谢谢
应用的库是cla1_math_library_fpu32.libs 因为CLA需要函数


Intmain()
{
// Step 0. Copy Key Code from Flash into RAM
memcpy((uint16_t *)&RamfuncsRunStart, (uint16_t *) &RamfuncsLoadStart, (unsignedlong) &RamfuncsLoadSize);
// Copy over code from FLASH to RAM
memcpy(&Cla1funcsRunStart, &Cla1funcsLoadStart, (Uint32)&Cla1funcsLoadSize);
memcpy(&Cla1mathTablesRunStart, &Cla1mathTablesLoadStart, (Uint32)&Cla1mathTablesLoadSize);
//例如有些事中就没有使用,那么就应该把他禁止
//这个函数里面还增添了将SPI SCI McBSP的时钟输入提高到200MHz
PeripheralsClocksInit();
CLA_configClaMemory();
CLA_initCpu1Cla1();
GpioInit();
DELAY_US(100000);
AllPeripheralsInit(); //把所有的外设初始化
DELAY_US(100000);
DYNRegisterInit(); //把寄存器都读取出来这里面有浮点数除法,计算不正确
BIOS_start(); /* does not return */
return(0);
}
VoidSystemInitTaskFxn(UArg a0, UArg a1)
{
DYNRegisterInitCalc(); //这里也有浮点除法,但是可以计算正确
PlayMusic(0,2); //播放开机声音
}
Lydia:
您好,已经收到了您的案例,调查需要些时间,感谢您的耐心等待。
,
Alice:
您好,你能否确认在禁用CLA时,fpu32的行为是否仍然存在。这将帮助我们确定问题是出在CLA还是FPU上。
,
yongtao ma59:
谢谢您的回复,我还有个现象,就是有时候除法是正确的,有时候就不正确了,有时候我将fpu的strict改为relaxed就又正确了,有时候编译之后又不正确了,将relaxed改为strict又正确率,如果再编译又有可能不正确了,好神奇啊,谢谢
,
yongtao ma59:
是的,您的定位应该是准确的,因为之前我没有使用CLA里的函数,那时候还是正常的,自从我使用了cla函数,例如claexp等等,就不正常了。那应该怎么弄呢,谢谢
,
yongtao ma59:
我刚才试着不在CLA里面使用CLAMath函数,还是不行,谢谢
TI中文支持网

