This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我试图在我的项目中使用 C2000Ware 5.0中的 rts2800_fpu32_fast_complement.lib 来加速 logf ()计算、但得到的消息是"error:正在创建没有 SECTIONS 规范的输出段"FPUmathTables"。
很遗憾、我在 FPUmathTables 中找不到任何280049 cmd 文件。
有针对28001x、28002x、28003x 的 cmd 文件。
我的问题是:
280049是否在 ROM 中具有用于 logf()的 FPUmathTables?
如果是:它们位于何处?
如果否:我必须将它们添加到闪存中、然后可能还要复制到 RAM? 它在哪里描述?
是否有任何可用作参考的链接器命令文件?
提前感谢、
斯蒂芬
Stephan、您好!
它在哪里描述?
是否有任何可用作参考的链接器命令文件?
[/报价]您可以参阅位于 C2000Ware_5_00_00_00\libraries\math\FPUfastRTS\c28\examples 中的 FPUfastRTS 示例。 我已经对此进行了测试、只要您在命令链接器文件中适当调整存储器部分的名称、就没有错误。
[/quote]280049是否在 ROM 中具有用于 logf()的 FPUmathTables?
如果是:它们位于何处?
[/报价]我会将此问题转交给引导 ROM 专家。
此致、
阿米尔·奥马尔
尊敬的 Omer Amir:
我已经研究了示例、迁移存储器部分应该很容易。
我不理解的是 ROMTABLES 的定义位置。
我将等待引导 ROM 专家。
此致、
斯蒂芬
是否有关于 ROMTABLES 定义位置的更新?
仍然没有可用的引导 ROM 专家???
Stephan、您好!
很抱歉我的答复出现延迟。
好的、下面是几个问题:
1. 您可以尝试将其添加到 SECTIONS{}下的 CMD 文件中:"FPUmathTables:> FLASH_BANK0_SEC4"?
2.当我尝试在没有 CMD 编辑的情况下进行构建时,我仍然可以在映射文件中看到表。 您能检查您的映射文件吗?
3. logf()是 math.h 库的一部分,将按照链接器 CMD 文件放置在您的标准代码空间中。 您是否在寻找除此内容以外的其他内容?
-Kedar
你好、Kedar、
让我尝试解释一下:
我们在时间关键型环境中使用 logf(),因此我们不想使用 rts2800_fpu32.lib 中的默认 logf(),它需要大约420个周期。
这就是使用 rts2800_fpu32_fast_补充.lib 的原因、该方法只需51个周期。
我们是通过专用的 makefile (GNU make)而不是 CCS 进行构建的。
关于您的问题:
1. 使用 rts2800_fpu32_fast_补充.lib 并将 FPUmathTables 添加到 cmd 文件(闪存)时、建立此项目。
我们得到了类似
.text 0 00082c20 00006c2a
000880d0 00000038 rts2800_fpu32_fast_补充 .lib:log_f32.obj (.text)
FPUmathTables
* 0 0008becc 0000018e
0008becc 000000d0 rts2800_fpu32_FAST_补充.lib:Logtable_F32.obj (FPUmathTables)
0008bf9c 000000be :expectable_F32.obj (FPUmathTables)
一切正常、但它需要72个周期、而不是预期的51个周期。
2. 当使用 rts2800_fpu32_fast_补充.lib 而不向 cmd 文件添加 FPUmathTables 时、我们得到
错误:在没有 SECTIONS 规范的情况下创建输出段"FPUmathTables"、
不会生成输出文件。
3. 当使用 rts2800_fpu32.lib 中的默认 logf()时,得到的结果类似于
000854bc 0000012a rts2800_fpu32.lib :e_logf.obj (.text)
且执行时间为420个周期。
对于许多其他控制器、我找到具有
内存
{
第0页:
FPUBLES :origin = 0x3FD860、length = 0x0006A0
...
}
部分
{
FPUmathTables : load = FPUTABLES , page = 0
...
}
那么、我的问题是28004x 是否也在 ROM 中具有 FPUTABLES、如果是、在哪里。
此致、
斯蒂芬
我在此处找到一个示例:
\\C2000Ware_5_00_00_00\libraries\math\FPUfastRTS\c28\examples\log_f32
您能看到这是否对您有用吗? 它来自 C2KWare。
-Kedar
嗯、我看到适用于以下项目的 cmd 文件:
f280013x
f280015x
f2838x
f28003x
f28002x
但 f28004x 没有...
你好、Stephan。
我会向内部团队核实这一点。 但要解除阻止、您只需 在所选 CMD 文件的 MEMORY{}和 SECTIONS{}下添加相应的行、然后在链接器选项中链接 FPUfastRTS 库。
-Kedar
你好、Kedar、
这是我已经完成的操作、它可以使用闪存中的 FPUmathTables (花费比预期更多的周期)。
请回答剩余问题
"280049是否在 ROM 中具有用于 logf()的 FPUmathTables? 如果是:它们位于何处?"、
我将等待您的内部团队检查结果。
此致、
斯蒂芬
你好、Kedar、
您是否最终让内部团队检查结果?
-Stephan
Stephan、您好!
很抱歉耽误你的时间。 logf()不是 BootROM 的一部分。 BootROM 包含与此处库使用的数学库相关的表: C2000Ware_5_00_00_00\libraries\boot_rom\f28004x\revB\rom_symbol_libs\rom_api
-Kedar