Topic

FAQ
Login Register
mesh sdk中的浮点运算和指数对数运算
Jul 15, 2023 13:10

/

A

/A

telink support team:

目前使用的是mesh sdk,芯片是tlsr8253,目前是遇到使用浮点运算和指数运算的问题。

在工程中有看到libsoft-fp.a库,这个库是否就是用来实现浮点运算的呢(因为没有硬件浮点单元)?

另外,我调用了pow()进行指数运算,编译的时候提示 “undefined reference to `pow ”,但是根据代码的运行结果(可以生成.bin文件)和我手动计算的结果,两者是一致的,这说明pow()是起作用了的,为什么这里会报编译错误呢?  这个pow()是在哪个头文件里,又是在哪里实现的?  

如果没有库包含pow(),Telink是否有自己的针对telink芯片(比如tlsr8253)的pow()函数的实现呢? 因为如果自己去实现这个pow()的话就太困难了啊。


3 replies
TL_Soyo Jul 17, 2023 13:38
0
/A

你好,

  目前是软件浮点实现的浮点运算,目前没有pow实现,可以参考开源的pow实现自己的功能。

youngbo830 [Author] Jul 20, 2023 20:57
0
/A

你好,

我在测试pow这个功能的时候,我使用了telink_b85m_driver_sdk,我在初始后做了一个小小的对pow()函数使用的测试,如下图。我在BDT中查看test_r这个变量,然后我用电脑的计算器手动计算,手动计算的结果跟这里的test_r变量的结果是一样的。我跟换pow()的参数,然后手动计算和test_r的值都是一样。 这说明pow()在这个测试中起作用了的啊。

在telink ide的安装目录C:\TelinkSDK\opt\tc32\lib\gcc\tc32-elf\4.5.1-tc32-1.3\include下,tgmath.h中有pow()函数。在C:\TelinkSDK\opt\tc32\tc32-elf\include目录下,有math.h,其中也有pow. C:\TelinkSDK\opt\tc32\tc32-elf\lib目录下的这几个libc.a, libg.a, libm.a分别是什么库呢?


但是我在我自己的工程中使用这个pow(),编译时始终报错说找不到pow.


请问下这是是怎么回事呢?

youngbo830 [Author] Jul 21, 2023 13:55
0
/A

Telink,

有人帮看下这个问题吗?