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.

CC3200MOD "No Coprocessor Usage Fault" triggering

Other Parts Discussed in Thread: CC3200MOD, CC3200SDK, CC3200, TI-CGT

Hello,

Can anybody help me out on this?

CC3200mod LaunchXL, CCS 6.1.2.00015 (Free version),

ARM Compiler flags:
-mv7M4 --code_state=16 --abi=eabi -me --include_path="C:/TI/ccsv6/tools/compiler/ti-cgt-arm_5.2.5/include" --include_path="C:/ti/CC3200SDK_1.1.0/cc3200-sdk/example/common" --include_path="C:/ti/CC3200SDK_1.1.0/cc3200-sdk/driverlib/" --include_path="C:/ti/CC3200SDK_1.1.0/cc3200-sdk/inc/" -g --define=ccs --define=cc3200 --diag_warning=225 --diag_wrap=off --printf_support=full

ARM Linker flags:
-mv7M4 --code_state=16 --abi=eabi -me -g --define=ccs --define=cc3200 --diag_warning=225 --diag_wrap=off --printf_support=full -z -m"BedSense.map" --heap_size=0x800 --stack_size=0x800 -i"C:/TI/ccsv6/tools/compiler/ti-cgt-arm_5.2.5/lib" -i"C:/TI/ccsv6/tools/compiler/ti-cgt-arm_5.2.5/include" --reread_libs --warn_sections --diag_wrap=off --xml_link_info="BedSense_linkInfo.xml" --rom_model


Code snippet1:
            float myFloat = 21.1f;
            Report("Temp:  %g\r\n", myFloat);



Report() calls _printfi() which calls _pproc_fgea().
In _pproc_fgea() ==> "No Coprocessor Usage Fault" is triggered.
Same thing happens when trying to print a double.

Code snippet2:
            float myFloatA = 2.2f;
            float myFloatB = 1.1f;
            float myFloatC = myFloatA/myFloatB;
"No Coprocessor Usage Fault" is triggered when I execute the division.


Why it it trying to use a coprocessor that does not exist?
How can I tell the compiler to use software implementation of floating point operations.

Thanks in advance.

  • Moving to CCS forum

    Regards,
    Gigi Joseph.
  • Hi,

    CC3200 devices do not have floating-point extensions (Cortex M4 instead of M4F).

    In this case, you can pass fpalib as the floating-point support, as shown in SDK example below:

    Hope this helps,

    Rafael

  • Thanks for the reply, unfortunately that is where the problem is.

    Using the --float_support=fpalib flag causes the linker to request that the library be built (since the set of precompiled lib files does not include the non FP copressor version), however the "License Free" version of CCS 6 does not allow rebuilding the library.

    See console output listing below.


    Checking the directory with the precompiled library files ( C:\TI\ccsv6\tools\compiler\ti-cgt-arm_5.2.5\lib) I see:
     rtsv7A8_T_le_n_v3_eabi.lib
     rtsv7M3_T_le_eabi.lib
     rtsv7M3_T_le_xo_eabi.lib
     rtsv7M4_T_le_v4SPD16_eabi.lib
     rtsv7M4_T_le_v4SPD16_xo_eabi.lib
     rtsv7R4_T_be_eabi.lib
     rtsv7R4_T_be_v3D16_eabi.lib
     rtsv7R4_T_le_v3D16_eabi.lib

     Strange that the rtsv7R4_T_be_eabi.lib is present since I thought that the Cortex M4 in the CC3200 was configured for little endian.


     The linker checks that directory, sees that rtsv7M4_T_le_eabi.lib is not present and then tries to trigger an auto build of the library.
     
    Where could I download a prebuilt rtsv7M4_T_le_eabi.lib?
     
    ================================ CONSOLE OUTPUT START ===================================================
    <Linking>
    warning: automatic library build: using library "C:\TI\ccsv6\tools\compiler\ti-cgt-arm_5.2.5\lib\rtsv7M4_T_le_eabi.lib" for the first time, so it must be built.  This may take a few minutes.
          0 [main] sh 20192 open_stackdumpfile: Dumping stack trace to sh.exe.stackdump
    C:/Users/JOHNSH~1/AppData/Local/Temp/make1956-1.sh: line 1: 20192 Segmentation fault      (core dumped) c:/ti/ccsv6/tools/compiler/ti-cgt~1.5/bin/armar -qa c:/users/johnsh~1/appdata/local/temp/tiea0f~1/rtsv7m4_t_le_eabi.lib *.obj
    gmake.exe[1]: *** [library] Error 139
    >> ERROR: mklib: gmake error during rtsv7M4_T_le_eabi.lib build
    warning: automatic RTS selection:  resolving index library "libc.a" to "rtsv7M4_T_le_eabi.lib", but "rtsv7M4_T_le_eabi.lib" was not found
    warning: entry-point symbol "_c_int00" undefined

     undefined   first referenced
      symbol         in file      
     ---------   ----------------
     __STACK_END ./startup_ccs.obj

    error: unresolved symbols remain
    warning: no suitable entry-point found; setting to 0
    error: errors encountered during linking; "TestSense.out" not built
    ================================ CONSOLE OUTPUT END   ===================================================

  • Just updated compiler from version 5.2.5 to 5.2.7 and with the --float_support=fpalib flag I can compile and link successfully. Code execution no longer triggers "No Coprocessor Usage Fault" exception.

    I see that the version 5.2.7 does include the "rtsv7M4_T_le_eabi.lib" file.

    Thanks for your comment about fpalib.

    Best regards