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.

Hardware floating point lib with tms320f28069

Dear TI's Experts,

I'm developing an application with f28069 device. 

I'm try to enable FPU32 (fpu32 instead of softlib) in compiler option and use run time support lib (except IQ math) rts2800_fpu32.lib

I got linker error like this:

"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<fd_to
i.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<fd_to
l.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<fs_ad
d.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<fs_cm
p.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<fs_mp
y.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<fs_ne
g.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<fs_to
fd.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<i_div
.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<i_tof
d.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<l_tof
d.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<ll_di
v.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<ltoa.
obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<memcc
py.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<s_fre
xp.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<s_sca
lbn.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<strcp
y.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<fd_ad
d.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
error #16008-D: file
"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<s_cop
ysign.obj>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C2700" specified in a previous file or on the command line
warning #10247-D: creating output section "DLOG2" without a SECTIONS

Please let me know how I could solve this issue?

I don't want  to use IQ math because it looks too complex to me and I don't have enough time to investigate how to use it.

Regards,

Fitz

  • Truong Nguyen Xuan78 said:
    "C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib<fd_to
    i.obj>" specifies ISA revision "C2800", which is not compatible with ISA
    revision "C2700" specified in a previous file or on the command line
    error #16008-D: file

    This indicates you your project is linking in rts2800_ml.lib, and the project is likely not built with -v28 option.

    Please ensure that the project's compiler option is set to -v28 (under Processor Options).

    Also ensure that the rts2800_fpu32.lib gets linked in. This can be done in a couple of ways:
    - If the .lib is explicitly specified under the Linker options, make sure it is rts2800_fpu32.lib
    - set the "Runtime support library" under General options to <automatic>. This will automatically pick the appropriate library based on the compile options.

    Also please see this wiki section that explains a similar error and should provide a bit more context on the error.

  • Hi

    Thank you for your message.

    I've already changed but it seem no effect.

    Is it compiler issue?

    Regards,

    Fitz

  • Hi AartiG (80029) ,

    This is my linker option and the reported error during linking:

    "C:/ti/ccsv6/tools/compiler/ti-cgt-c2000_16.6.0.STS/bin/cl2000" -v28 --float_support=fpu32 --opt_for_speed=0 --advice:performance=all --define=MOT_22_POLES --define=USE_IQ_MATH --define=BYPASS_WIFI --define=LINEAR_QEP --define=ENABLE_LOG --define=SPI_IRQ_MODE --define=FAST_QEP_ACCESS -g --diag_warning=225 --diag_wrap=off --display_error_number -z -m"Mofoc2016.map" --heap_size=0x8000 --stack_size=0x400 --warn_sections -i"C:/ti/ccsv6/tools/compiler/ti-cgt-c2000_16.6.0.STS/lib" -i"C:/ti/ccsv6/tools/compiler/ti-cgt-c2000_16.6.0.STS/include" --priority --diag_wrap=off --display_error_number --xml_link_info="Mofoc2016_linkInfo.xml" --rom_model -o "Mofoc2016.out" "./midlewares/mot_ctrl/source/filter.obj" "./midlewares/mot_ctrl/source/linear_qep.obj" "./midlewares/mot_ctrl/source/mot_config.obj" "./midlewares/mot_ctrl/source/mot_ctrl.obj" "./midlewares/mot_ctrl/source/pid.obj" "./midlewares/mot_ctrl/source/spi_qep.obj" "./midlewares/mem_mnt/mem_ctrl/mem_ctrl.obj" "./midlewares/mem_mnt/flash/flash.obj" "./midlewares/mem_mnt/eeprom/source/eeprom.obj" "./midlewares/mem_mnt/crc/crc.obj" "./midlewares/log_srv/source/log.obj" "./midlewares/com_srv/source/com_srv.obj" "./midlewares/com_srv/source/com_srv_can.obj" "./midlewares/com_srv/source/com_srv_common.obj" "./midlewares/com_srv/source/com_srv_wifi.obj" "./kernel/system/source/mot_mac.obj" "./kernel/system/source/system.obj" "./kernel/libs/gui/src/Commros_user.obj" "./kernel/libs/graph/src/Graph_Data.obj" "./kernel/drivers/ti/startup/F2806x_CodeStartBranch.obj" "./kernel/drivers/ti/source/F2806x_GlobalVariableDefs.obj" "./kernel/drivers/ti/common/source/F2806x_DefaultIsr.obj" "./kernel/drivers/ti/common/source/F2806x_OscComp.obj" "./kernel/drivers/ti/common/source/F2806x_PieCtrl.obj" "./kernel/drivers/ti/common/source/F2806x_PieVect.obj" "./kernel/drivers/ti/common/source/F2806x_SysCtrl.obj" "./kernel/drivers/ti/asm/F2806x_usDelay.obj" "./kernel/drivers/swapper/timer/source/timer.obj" "./kernel/drivers/swapper/spi/source/spi.obj" "./kernel/drivers/swapper/sci/source/sci.obj" "./kernel/drivers/swapper/qep/source/qep.obj" "./kernel/drivers/swapper/pwm/source/pwm.obj" "./kernel/drivers/swapper/pie/source/pie.obj" "./kernel/drivers/swapper/i2c/source/i2c.obj" "./kernel/drivers/swapper/hspwm/source/hspwm.obj" "./kernel/drivers/swapper/gpio/source/gpio.obj" "./kernel/drivers/swapper/flash/source/flash.obj" "./kernel/drivers/swapper/comp/source/comp.obj" "./kernel/drivers/swapper/can/source/can.obj" "./kernel/drivers/swapper/adc/source/adc.obj" "./kernel/config/hal.obj" "./kernel/FreeRTOS/port/os.obj" "./kernel/FreeRTOS/port/port.obj" "./kernel/FreeRTOS/core/source/croutine.obj" "./kernel/FreeRTOS/core/source/event_groups.obj" "./kernel/FreeRTOS/core/source/list.obj" "./kernel/FreeRTOS/core/source/queue.obj" "./kernel/FreeRTOS/core/source/tasks.obj" "./kernel/FreeRTOS/core/source/timers.obj" "./kernel/FreeRTOS/MemMang/heap_5.obj" "./framework/src/data_logger.obj" "./framework/src/fw_task.obj" "./framework/src/led.obj" "./framework/src/mailbox.obj" "./framework/src/mem_ctrl.obj" "./framework/src/message.obj" "./framework/src/mot_controller.obj" "./framework/src/msg_proc.obj" "./framework/src/pt_ctrl.obj" "./framework/src/semaphore.obj" "./framework/src/storage.obj" "./framework/src/sys_ctrl.obj" "./apps/cine_bldc/source/cine_bldc.obj" "../F28069_Mofoc.cmd" "../F2806x_Headers_nonBIOS.cmd" "R:/01_dev/kernel/libs/runtime/rts2800_fpu32.lib" "R:/01_dev/kernel/libs/runtime/rts2800_ml.lib" "R:/01_dev/kernel/libs/iqmath/IQmath_fpu32.lib" "R:/01_dev/kernel/libs/gui/lib/commros_28xx_c_full.lib" "R:/01_dev/kernel/libs/bootloader/2806x_BootROM_API_TABLE_Symbols.lib" "R:/01_dev/kernel/libs/bldc/lib/C28x_InstaSPIN_BLDC_Lib.lib" -l"R:\01_dev\kernel\libs\runtime\rts2800_fpu32.lib" -l"C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_16.6.0.STS\lib\rts2800_ml.lib" -l"R:\01_dev\kernel\libs\bldc\lib\C28x_InstaSPIN_BLDC_Lib.lib" -l"R:\01_dev\kernel\libs\gui\lib\commros_28xx_c_full.lib" -l"R:\01_dev\kernel\libs\iqmath\IQmath_fpu32.lib" -l"R:/01_dev/kernel/libs/runtime/rts2800_fpu32.lib" -v28 --float_support=fpu32
    <Linking>
    warning: illegal COFF version specified; version 2 assumed
    error #16008-D: file "R:/01_dev/kernel/libs/gui/lib/commros_28xx_c_full.lib<commros.obj>" specifies ISA revision "C2800", which is not compatible with ISA revision "C28FPU32" specified in a previous file or on the command line
    error #16008-D: file "R:/01_dev/kernel/libs/runtime/rts2800_fpu32.lib<ll_aox.obj>" specifies ISA revision "C28FPU32", which is not compatible with ISA revision "C2700" specified in a previous file or on the command line
    error #16008-D: file "R:/01_dev/kernel/libs/gui/lib/commros_28xx_c_full.lib<ByteProtocol.obj>" specifies ISA revision "C2800", which is not compatible with ISA revision "C2700" specified in a previous file or on the command line
    error #16008-D: file "R:/01_dev/kernel/libs/gui/lib/commros_28xx_c_full.lib<Datalogger.obj>" specifies ISA revision "C2800", which is not compatible with ISA revision "C2700" specified in a previous file or on the command line
    error #16008-D: file "R:/01_dev/kernel/libs/runtime/rts2800_fpu32.lib<ll_cmp.obj>" specifies ISA revision "C28FPU32", which is not compatible with ISA revision "C2700" specified in a previous file or on the command line
    warning #16002-D: build attribute vendor section TI missing in "R:/01_dev/kernel/libs/iqmath/IQmath_fpu32.lib<IQ14div.obj>": compatibility cannot be determined
    error #16008-D: file "R:/01_dev/kernel/libs/iqmath/IQmath_fpu32.lib<IQ14div.obj>" specifies ISA revision "C28FPU32", which is not compatible with ISA revision "C2700" specified in a previous file or on the command line

    Regards,

    Fitz

  • Truong Nguyen Xuan78 said:
    error #16008-D: file "R:/01_dev/kernel/libs/gui/lib/commros_28xx_c_full.lib<commros.obj>" specifies ISA revision "C2800", which is not compatible with ISA revision "C28FPU32" specified in a previous file or on the command line

    This message means that commros_28xx_c_full.lib was built with only the -v28 option and not --float_support=fpu32, so it is not compatible with other files which are compiled with both options.

    Most of the other messages refer to similar incompatibilities. Basically all the object files (.obj) and libraries (.lib) passed to the linker must be built with the same options. In your case, it looks like there is a mix of files/libraries with ISA revision C2700 , C2800  and C28FPU32. 

    ISA revision C2700 means it was built without -v28 option, C2800 means it was built with -v28 but without --float_support=fpu32 option, and C28FPU32 means it was built with both options. You need to ensure that all the object files and libraries are compiled with the same set of options before getting passed to the linker. If the goal is to use fpu32, then you would need to rebuild commros_28xx_c_full.lib with that option. If not, then you would need to remove the fpu32 option from the project and use non-fpu32 versions of the IQmath and rts libs.

    Hope this helps!

  • Hi ,

    Thank you so much for your clear clarification.
    I'm trying as your suggestion.
    I will let you know when I have result.

    Regards,
    Fitz
  • I also wanted to add that one way you can check what the ISA revision is for a library/object file is to run ofd2000 on the file. This is an executable file that you can find in \ccsv6\tools\compiler\c2000_15.12.2.LTS\bin within the CCS install directory. 

    You can run it in a command prompt like:
    ofd2000 -g commros_28xx_c_full.lib > commros_28xx_c_full.ofd

    Then inspect the .ofd file and at the top of the file there should be some information about this (I believe it will be listed as CPU generation).

  • Hi ,

    Very nice. It's working now.
    Thank you for your support.

    Regards,
    Fitz