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.

[参考译文] TMS320F280049:要使用的 IQMath 库

Guru**** 2207170 points
Other Parts Discussed in Thread: LAUNCHXL-F280049C, LAUNCHXL-F280025C, TMS320F280025, TMS320F280049, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1103125/tms320f280049-iqmath-library-to-be-used

器件型号:TMS320F280049
主题中讨论的其他器件:LAUNCHXL-F280049CLAUNCHXL-F280025CTMS320F280025C2000WARE

我使用的是 LAUNCHXL-F280049C、如果我想保留 IQmath 函数、请告诉我需要使用哪个 IQmath 库文件和关联的.h 文件。 另外、请告诉我需要在.cmd 文件中进行的修改。

我已将 IQmath_eabi.lib 和 IQmathLib.h 与  LAUNCHXL-F280025C 板结合使用、并且它正常工作。

但我尝试了所有5种类型 的 IQmath_coff .lib、 IQmath_eabi.lib、 IQmath_fpu32.lib、 IQmath_fpu32_eabi.lib、但都不起作用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是  使用 IQmathLib.h 和 IQmath_eabi.lib 时的结果、  

    ------------------------

    警告#10373-D:库"../IQmath_eabi.lib"包含与 TI-COFF 输出文件不兼容的 ELF 目标文件。 确保您使用的是正确的库。
    警告#10373-D:库"../IQmath_eabi.lib"包含与 TI-COFF 输出文件不兼容的 ELF 目标文件。 确保您使用的是正确的库。
    警告#10247-D:在没有 SECTIONS 规范的情况下创建输出段"ramfuncs"

    未定义的首次引用
    符号
    ------ --------
    _IQ24cospu ./00_f28002x_converter.obj
    _IQ24div ./00_f28002x_model.obj
    __IQ24mpyI32int ./00_f28002x_converter.obj
    _IQ24sincu ./00_f28002x_converter.obj

    --------------------------

    和.cmd 文件如下所示:

    ----------------------------------

    存储器

    第0页:
    /* begin 用于"引导至 SARAM"引导加载程序模式*/

    开始:origin = 0x080000,length = 0x000002
    RAMM0:origin = 0x0000F6、length = 0x00030A

    RAMLS0:origin = 0x008000、length = 0x000800
    RAMLS3:origin = 0x009800,length = 0x000800
    RAMLS4:origin = 0x00A000,length = 0x000800
    复位:origin = 0x3FFFC0,length = 0x000002

    /*闪存扇区*/
    /*组0 */
    FLASH_BANK0_SEC0:origin = 0x080002、length = 0x000FFE //片上闪存*
    FLASH_BANK0_SEC1:origin = 0x081000、length = 0x001000 //片上闪存*
    FLASH_BANK0_sec2:origin = 0x082000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC3:origin = 0x083000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC4:origin = 0x084000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC5:origin = 0x085000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC6:origin = 0x086000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC7:origin = 0x087000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC8:origin = 0x088000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC9:origin = 0x089000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC10:origin = 0x08A000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC11:origin = 0x08B000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC12:origin = 0x08C000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC13:origin = 0x08D000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC14:origin = 0x08E000、length = 0x001000 //片上闪存*
    FLASH_BANK0_SEC15:origin = 0x08F000、length = 0x001000 //片上闪存*

    /*银行1 */
    FLASH_BANK1_SEC0:origin = 0x090000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC1:origin = 0x091000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC2:origin = 0x092000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC3:origin = 0x093000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC4:origin = 0x094000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC5:origin = 0x095000、length = 0x001000 //片上闪存*/
    FLASH_BANK1_SEC6:origin = 0x096000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC7:origin = 0x097000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC8:origin = 0x098000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC9:origin = 0x099000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC10:origin = 0x09A000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC11:origin = 0x09B000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC12:origin = 0x09C000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC13:origin = 0x09D000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC14:origin = 0x09E000、length = 0x001000 //片上闪存*
    FLASH_BANK1_SEC15:origin = 0x09F000、length = 0x000FF0 //片上闪存*

    // flash_Bank1_SEC15_RSVD:origin = 0x09FFF0,length = 0x000010 //保留并不用于根据勘误咨询“Memory:pretching Beyond valid Memory”(内存:超出有效内存的预取)*/的代码

    第1页:

    BOOT_RSVD:origin = 0x000002,length = 0x0000F1 // M0的一部分,引导 ROM 将此用于栈*/
    RAMM1:origin = 0x000400,length = 0x0003F8 //片上 RAM 块 M1 */
    // RAMM1_RSVD:origin = 0x0007F8,length = 0x000008 //根据勘误咨询“Memory:Prepetching Beyond valid Memory”(内存:超出有效内存的预取),保留并不用于代码*/

    RAMLS1:origin = 0x008800,length = 0x000800
    RAMLS2:origin = 0x009000,length = 0x000800
    RAMLS5:origin = 0x00A800,length = 0x000800
    RAMLS6:origin = 0x00B000、length = 0x000800
    RAMLS7:origin = 0x00B800,length = 0x000800

    RAMGS0:origin = 0x00C000、length = 0x002000
    RAMGS1:origin = 0x00E000、length = 0x002000
    RAMGS2:origin = 0x010000、length = 0x002000
    RAMGS3:origin = 0x012000,length = 0x001FF8
    // RAMGS3_RSVD:origin = 0x013FF8,length = 0x000008 //根据勘误咨询“Memory:Prepetching Beyond valid Memory”(内存:有效内存之外的预取)来保留代码且不用于代码*/

    CLA1_MSGRAMLOW:origin = 0x001480,length = 0x000080
    CLA1_MSGRAMHIGH:origin = 0x001500,length = 0x000080


    部分

    .cinit:> FLASH_BANK0_SEC1,PAGE = 0,ALIGN (4)
    .text:>> flash_BANK0_sec2 | flash_BANK0_SEC3| flash_BANK0_SEC4| flash_BANK0_SEC5,page = 0,align (4)
    codestart:> begin page = 0,align (4)

    .stack:>RAMM1 page = 1.
    .switch:> FLASH_BANK0_SEC1,PAGE = 0,ALIGN (4)

    #if defined (_TI_EABI)
    init_array:> flash_BANK0_SEC1,page = 0,align (4)
    .bss:> RAMLS5,page = 1.
    .bss:输出:> RAMLS5,PAGE = 1
    .bss:CIO:> RAMLS5,page = 1.
    .data :>RAMLS6,page = 1.
    .sysmem:> RAMLS6,PAGE = 1.
    .const:> FLASH_BANK0_SEC4、PAGE = 0、ALIGN (4)
    其他
    .pinit:> FLASH_BANK0_SEC1,PAGE = 0,ALIGN (4)
    .ebss:>> RAMLS5 | RAMLS6,PAGE = 1.
    .esysmem:>RAMLS6,PAGE = 1.
    .cio:> RAMLS5,page = 1.
    .econst:> FLASH_BANK0_SEC4、PAGE = 0、ALIGN (4)
    #endif

    RAMS0:>RAMGS0,PAGE = 1
    ramgs1:>RAMGS1,page = 1.
    .reset:> reset,page = 0,type = DSECT //未使用,*/

    dclfuncs:> FLASH_BANK0_SEC1,PAGE = 0,ALIGN (4)

    IQMath:> FLASH_BANK0_SEC6 | FLASH_BANK0_SEC7 | FLASH_BANK0_SEC8


    #if defined (_TI_EABI)
    /* CLA 特定部分*/
    Cla1Prog:load = flash_BANK0_SEC4,
    运行= RAMLS0、
    Load_start (Cla1ProgLoadStart)、
    RUN_START (Cla1ProgRunStart)、
    Load_size (Cla1ProgLoadSize)、
    PAGE = 0、ALIGN (4)
    其他
    /* CLA 特定部分*/
    Cla1Prog:load = flash_BANK0_SEC4,
    运行= RAMLS0、
    Load_start (_Cla1ProgLoadStart)、
    run_start (_Cla1ProgRunStart)、
    load_size (_Cla1ProgLoadSize)、
    PAGE = 0、ALIGN (4)
    #endif


    Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,page = 1.
    CpuToCla1MsgRAM:>CLA1_MSGRAMHIGH,PAGE = 1.

    #if defined (_TI_EABI)
    .TI.ramfunc:load = flash_BANK0_SEC1,
    运行= RAMLS4
    Load_start (RamfuncsLoadStart)、
    load_size (RamfuncsLoadSize)、
    Load_End (RamfuncsLoadEnd)、
    RUN_START (RamfuncsRunStart)、
    run_size (RamfuncsRunSize)、
    RUN_END (RamfuncsRunEnd)、
    PAGE = 0、ALIGN (4)
    其他
    .TI.ramfunc:load = flash_BANK0_SEC1,
    运行= RAMLS4
    load_start (_RamfuncsLoadStart)、
    load_size (_RamfuncsLoadSize)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    run_size (_RamfuncsRunSize)、
    run_end (_RamfuncsRunEnd)、
    PAGE = 0、ALIGN (4)
    #endif

    暂存区:>RAMLS1,页=1
    .bss_cla:> RAMLS1,page = 1.

    Cla1DataRam:> RAMLS2,page = 1.
    CLA_shared:> RAMLS1,page = 1.
    CLADataLS1:> RAMLS1,PAGE = 1

    #if defined (_TI_EABI)
    const_CLA:load = flash_BANK0_sec2、
    运行= RAMLS3、
    RUN_START (Cla1ConstRunStart)、
    Load_start (Cla1ConstLoadStart)、
    load_size (Cla1ConstLoadSize)、
    PAGE = 0、ALIGN (4)
    其他
    const_CLA:load = flash_BANK0_sec2、
    运行= RAMLS3、
    run_start (_Cla1ConstRunStart)、
    Load_start (_Cla1ConstLoadStart)、
    load_size (_Cla1ConstLoadSize)、
    PAGE = 0、ALIGN (4)
    #endif

    --------------------------------------

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您需要确保根据工程将工程目标文件格式设置为 COFF 或 EABI、并设置-fpu32启用选项。 您能确认吗?

    -Shantanu  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Shantanu、

    是的、当我添加 IQmath_fpu32_eabi.lib 并将设置从"automatic"更改为"rts2800_fpu32_eabi.lib"时、错误消失了。 但是、我会收到如下警告:

    Q1:“警告#10247-D:创建不带 SECTIONS 规范的输出段“IQmathTables”,但与   TMS320F280025 引导 ROM 相比,TMS320F280049引导 ROM 不包含_IQmathTable? 所以,我们不需要一个部分来完成这项工作!! 请指导我。 让我知道 _IQmathTable 中有哪些函数?

    问题2. 您能解释一下 需要 链接 IQMatH_eabi.lib、IQmath_fpu32_eabi.lib 中的哪一个、以及为什么需要链接任何文档吗?

    问题3. 请指导我在开发代码时包含什么"XXX.h"或"XXX.lib"文件,以便我可以使用 TMS320F280049中的 FPU 和 TMU?

    问题4. 我能否直接写入"a=b*c"、"a=b/c"、"a=cos (theta)"以获得由 FPU/TMU 完成的数学运算?

    问题5. 如何使用我在其中一个 TI 文档中看到的"a=cos (theta*2pi)"、"a=b/2pi 等? 它是_IQmath 之类的特殊指令集吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="62085" URL"~/support/microcontrollers/C2000-microcontrollers-group/C2000/f/C2000-microcontrollers-forume/1103125/tms320f280049-IQMath-library-to-be use/4087Tables#4087791]Q1:"警告#10247-D:创建输出段"math-library-library-to be used" 、但 不包含 TMS320IQ280049指令、而不包含 TMS320IQ0049指令。  所以,我们不需要一个部分来完成这项工作!! 请指导我。 让我知道 _IQmathTable 中有哪些函数?

    IQMath 库和表位于 ROM 中。 您可以通过添加引导 ROM 符号库表单来访问它们 /libraries/boot_rom

    [~ userid="62085" URL"μ C/support/microcontrollers/C2000-microcontrollers-group/CC2000/f/C2000-microcontrollers-forum/1103125/tms320f280049-IQMath-library-to-be use/4087791#4087791]Q2。 您能解释一下 需要 链接 IQMatH_eabi.lib、IQmath_fpu32_eabi.lib 以及为什么需要链接任何文档吗?

    根据您是否在项目设置中启用 fpu32、您可以选择其中一项。 请参阅 c2000ware 中 IQMath 库中的文档。

    [~ userid="62085" URL"μ C/support/microcontrollers/C2000-microcontrollers-group/CC2000/f/C2000-microcontrollers-forum/1103125/tms320f280049-IQMath-library-to-be use/4087791#4087791]Q3。 请指导我在开发代码时包含什么"XXX.h"或"XXX.lib"文件,以便我可以使用 TMS320F280049中的 FPU 和 TMU?

    您只需要在项目设置->构建->处理器选项中启用 fpu32和 tmu0。  

    [~ userid="62085" URL"μ C/support/microcontrollers/C2000-microcontrollers-group/CC2000/f/C2000-microcontrollers-forum/1103125/tms320f280049-IQMath-library-to-be use/4087791#4087791]Q4。 我能否直接写入"a=b*c"、"a=b/c"、"a=cos (theta)"以获得由 FPU/TMU 完成的数学运算?

    是的。 请参阅 FastRTS 库。

    [~ userid="62085" URL"μ C/support/microcontrollers/C2000-microcontrollers-group/CC2000/f/C2000-microcontrollers-forum/1103125/tms320f280049-IQMath-library-to -be use/4087791#4087791]Q5。 如何使用我在其中一个 TI 文档中看到的"a=cos (theta*2pi)"、"a=b/2pi 等? 它是不是像_IQmath 这样的特殊指令集?

    可以使用 FastRTS 库使用三角函数。

    -Shantanu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Q1:“警告#10247-D:创建不带 SECTIONS 规范的输出段“IQmathTables”,但与   TMS320F280025 引导 ROM 相比,TMS320F280049引导 ROM 不包含_IQmathTable? 所以,我们不需要一个部分来完成这项工作!! 请指导我。 让我知道 _IQmathTable 中有哪些函数?
    IQMath 库和表位于 ROM 中。 您可以通过添加引导 ROM 符号库表单来访问它们 /库/boot_ROM:

    >>我是否应该在 项目中添加" F28004xbootROM_Symbols_fpu32.lib"或"F28004xbootROM_Symbols.lib"? 或者什么?  我是否需要在.CMD 文件中添加一行? 您需要详细解释。

    问题2. 您能解释一下 需要 链接 IQMatH_eabi.lib、IQmath_fpu32_eabi.lib 中的哪一个、以及为什么需要链接任何文档吗?

    根据您是否在项目设置中启用 fpu32、您可以选择其中一项。 请参阅 c2000ware 中 IQMath 库中的文档。

    问题3. 请指导我在开发代码时包含什么"XXX.h"或"XXX.lib"文件,以便我可以使用 TMS320F280049中的 FPU 和 TMU?

    您只需要在项目设置->构建->处理器选项中启用 fpu32和 tmu0。  

    问题4. 我能否直接写入"a=b*c"、"a=b/c"、"a=cos (theta)"以获得由 FPU/TMU 完成的数学运算?

    是的。 请参阅 FastRTS 库。

    >>我是否应该在项目中添加"rts2800_fpu32_fast_fpu补 码.lib"或"rts2800_fpu32_fast_faddrf.coff .lib"或"rts2800_fpu64_fast_faddr.lib"或"rts2800_fpu64_fast_addr.lib"? 或者其他什么?
    我是否需要在.CMD 文件中添加一行? 您需要详细解释。

    问题5. 如何使用我在其中一个 TI 文档中看到的"a=cos (theta*2pi)"、"a=b/2pi 等? 它是_IQmath 之类的特殊指令集吗?

    可以使用 FastRTS 库使用三角函数。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Q1:“警告#10247-D:创建不带 SECTIONS 规范的输出段“IQmathTables”,但与   TMS320F280025 引导 ROM 相比,TMS320F280049引导 ROM 不包含_IQmathTable? 所以,我们不需要一个部分来完成这项工作!! 请指导我。 让我知道 _IQmathTable 中有哪些函数?
    IQMath 库和表位于 ROM 中。 您可以通过添加引导 ROM 符号库表单来访问它们 /库/boot_ROM:

    >>我是否应该在 项目中添加" F28004xbootROM_Symbols_fpu32.lib"或"F28004xbootROM_Symbols.lib"? 或者什么?  我是否需要在.CMD 文件中添加一行? 您需要详细解释。 TMS320F280049中的引导 ROM 中没有包含_IQmath 表的部分,而 TMS320F280025 中包含"IQTABLES:origin = 0x003F1402、length = 0x0000166D"中的_IQmath 表的部分?

    问题4. 我能否直接写入"a=b*c"、"a=b/c"、"a=cos (theta)"以获得由 FPU/TMU 完成的数学运算?

    是的。 请参阅 FastRTS 库。

    >>我是否应该在项目中添加"rts2800_fpu32_fast_fpu补 码.lib"或"rts2800_fpu32_fast_faddrf.coff .lib"或"rts2800_fpu64_fast_faddr.lib"或"rts2800_fpu64_fast_addr.lib"? 或者其他什么?
    我是否需要在.CMD 文件中添加一行? 您需要详细解释。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    正如我之前提到 的、如果您的项目是 eabi 格式、请添加 rts2800_fpu32_fast_faddr_coff .lib。 否则、请添加 rts2800_fpu32_fast_addration_eabi.lib。  
    F28004x 在 ROM 中具有 IQMath 表。 要使用 ROM 中的表、您需要使用 ROM 符号文件。 如果不想使用 ROM 中的表,可以包含 IQMath 库并在 cmd 文件中添加"IQMathTables:RAMLSx"和"IQMath:RAMLSx"。

    希望这能解答您的问题

    -Shantanu