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.

CC2652RB: Linking errors in using CMSIS 5.8.0 with CCS 10.0.0

Part Number: CC2652RB

Hello, 

I have been working on using CMSIS 5.8.0 DSP library with CCS 10.0.0. I included the DSP folder in the project and also added it to the path. I have used the simple link SDK for creating a project. After compiling, these are the build errors I have got. Can anyone please help me in solving errors and post a step-by-step method to import the files from the CMSIS library into CCS?

  

  • Hi Daniel,

    thanks for the link. the path issues are resolved. But, when I tried to implement the example program in CCS, I have few linking errors which I'm not exactly aware of. The example code is  in my location/cmsis/DSP/examples/arm/arm_fft_bin_example.

    below is the code and errors pic attached. Can you help me with this?

    /* ----------------------------------------------------------------------
    * Copyright (C) 2010-2012 ARM Limited. All rights reserved.
    *
    * $Date: 17. January 2013
    * $Revision: V1.4.0
    *
    * Project: CMSIS DSP Library
    * Title: arm_fft_bin_example_f32.c
    *
    * Description: Example code demonstrating calculation of Max energy bin of
    * frequency domain of input signal.
    *
    * Target Processor: Cortex-M4/Cortex-M3
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
    * are met:
    * - Redistributions of source code must retain the above copyright
    * notice, this list of conditions and the following disclaimer.
    * - Redistributions in binary form must reproduce the above copyright
    * notice, this list of conditions and the following disclaimer in
    * the documentation and/or other materials provided with the
    * distribution.
    * - Neither the name of ARM LIMITED nor the names of its contributors
    * may be used to endorse or promote products derived from this
    * software without specific prior written permission.
    *
    * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
    * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
    * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
    * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
    * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
    * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    * POSSIBILITY OF SUCH DAMAGE.
    * -------------------------------------------------------------------- */

    /**
    * @ingroup groupExamples
    */

    /**
    * @defgroup FrequencyBin Frequency Bin Example
    *
    * \par Description
    * \par
    * Demonstrates the calculation of the maximum energy bin in the frequency
    * domain of the input signal with the use of Complex FFT, Complex
    * Magnitude, and Maximum functions.
    *
    * \par Algorithm:
    * \par
    * The input test signal contains a 10 kHz signal with uniformly distributed white noise.
    * Calculating the FFT of the input signal will give us the maximum energy of the
    * bin corresponding to the input frequency of 10 kHz.
    *
    * \par Block Diagram:
    * \image html FFTBin.gif "Block Diagram"
    * \par
    * The figure below shows the time domain signal of 10 kHz signal with
    * uniformly distributed white noise, and the next figure shows the input
    * in the frequency domain. The bin with maximum energy corresponds to 10 kHz signal.
    * \par
    * \image html FFTBinInput.gif "Input signal in Time domain"
    * \image html FFTBinOutput.gif "Input signal in Frequency domain"
    *
    * \par Variables Description:
    * \par
    * \li \c testInput_f32_10khz points to the input data
    * \li \c testOutput points to the output data
    * \li \c fftSize length of FFT
    * \li \c ifftFlag flag for the selection of CFFT/CIFFT
    * \li \c doBitReverse Flag for selection of normal order or bit reversed order
    * \li \c refIndex reference index value at which maximum energy of bin ocuurs
    * \li \c testIndex calculated index value at which maximum energy of bin ocuurs
    *
    * \par CMSIS DSP Software Library Functions Used:
    * \par
    * - arm_cfft_f32()
    * - arm_cmplx_mag_f32()
    * - arm_max_f32()
    *
    * <b> Refer </b>
    * \link arm_fft_bin_example_f32.c \endlink
    *
    */


    /** \example arm_fft_bin_example_f32.c
    */


    #include "arm_math.h"
    #include "arm_const_structs.h"

    #if defined(SEMIHOSTING)
    #include <stdio.h>
    #endif

    #define TEST_LENGTH_SAMPLES 2048

    /* -------------------------------------------------------------------
    * External Input and Output buffer Declarations for FFT Bin Example
    * ------------------------------------------------------------------- */
    extern float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES];
    static float32_t testOutput[TEST_LENGTH_SAMPLES/2];

    /* ------------------------------------------------------------------
    * Global variables for FFT Bin Example
    * ------------------------------------------------------------------- */
    uint32_t fftSize = 1024;
    uint32_t ifftFlag = 0;
    uint32_t doBitReverse = 1;
    arm_cfft_instance_f32 varInstCfftF32;

    /* Reference index at which max energy of bin ocuurs */
    uint32_t refIndex = 213, testIndex = 0;

    /* ----------------------------------------------------------------------
    * Max magnitude FFT Bin test
    * ------------------------------------------------------------------- */

    int32_t main(void)
    {

    arm_status status;
    float32_t maxValue;

    status = ARM_MATH_SUCCESS;

    status=arm_cfft_init_f32(&varInstCfftF32,fftSize);

    /* Process the data through the CFFT/CIFFT module */
    arm_cfft_f32(&varInstCfftF32, testInput_f32_10khz, ifftFlag, doBitReverse);

    /* Process the data through the Complex Magnitude Module for
    calculating the magnitude at each bin */
    arm_cmplx_mag_f32(testInput_f32_10khz, testOutput, fftSize);

    /* Calculates maxValue and returns corresponding BIN value */
    arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);

    status = (testIndex != refIndex) ? ARM_MATH_TEST_FAILURE : ARM_MATH_SUCCESS;

    if (status != ARM_MATH_SUCCESS)
    {
    #if defined (SEMIHOSTING)
    printf("FAILURE\n");
    #else
    while (1); /* main function does not return */
    #endif
    }
    else
    {
    #if defined (SEMIHOSTING)
    printf("SUCCESS\n");
    #else
    while (1); /* main function does not return */
    #endif
    }
    }

    /** \endlink */

  • Praneeth,

    Did you look at the linked resources at the bottom of the post I linked to? They mention the need to add a pre defined symbol to your project:

    Can you try adding the appropriate predefine and see if that works?

    Regards,

    Daniel

  • Hi Daniel, 

    Thanks for that. it worked!! I have one more issue with working on one function in CMSIS-DSP (arm_fast_rfft_f16()). As of now, I'm using cmsis 5.7 version lib file. When I tried using that function there were a few errors showing about __fp16 and _Float16 data types which are not defined. I have also searched the whole CMSIS 5.7.0 and 5.8.0 for the related files but I couldn't find any. Can you help in resolving this issue?

    Here is one screenshot of the errors and warnings.

     

  • Which compiler are you using? The error is in the CMSIS library at /CMSIS_5-5.8.0/CMSIS/DSP/Include/arm_math_types_f16.h

    */
    #if !(__ARM_FEATURE_MVE & 2)
      #if !defined(DISABLEFLOAT16)
        #if defined(__ARM_FP16_FORMAT_IEEE) || defined(__ARM_FP16_FORMAT_ALTERNATIVE)
          typedef __fp16 float16_t;
          #define ARM_FLOAT16_SUPPORTED
        #endif
      #endif
    #else
      /* When Vector float16, this flag is always defined and can't be disabled */
      #define ARM_FLOAT16_SUPPORTED
    #endif

    The error is that __fp16 is undefined, which could be related to the compiler you are using.

  • Hi,

    I'm using the compiler version is TI v20.2.0.LTS. Which one will be supporting the __fp16 datatypes?

  • Praneeth,

    The original post I linked to (https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1032595/faq-cc2642r-fft-on-cc13x2-cc26x2-devices) has been slightly updated with a library. Can you try that and see if you issue is resolved?

    -Daniel

  • Yeah, 

    The link which you have shared is showing the same thread with the same library file we used earlier, it is using CMSIS 5.7 version. It is not having arm_fast_rfft_f16() in the library file which I needed to use.

    The current version CMSIS 5.8.0 is having all the source codes and header files. It is not having a library file. Any idea how to implement the current version in CCS and use f16() functions?