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.
我使用的是 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 之类的特殊指令集吗?
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