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.

MSP430FR50431: Could not resolve index library

Part Number: MSP430FR50431

Hi guys,

I am trying to implement USS library provided by the texas instruments. I already had existing project, so I inserted required files into it. I copied following files from USS LIB to my project: 

  • IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib
  • QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib
  • USS_SW_CCS_large_code_small_data.lib
  • IQmathLIb.a
  • QmathLIb.a
  • USS_SW_CCS.a

Code and data should match, since in project preferences I have:

However I am getting following errors/warnings

  • #10099-D program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment fails for section ".leaRAM" size 0xf40. 
    • Lea has under 4k
  • Cannot find file "book".
  • #10204-D could not resolve index library "USS_SW_CCS.a" to a compatible library
  • #10206-D resolving index library "IQmathLib.a" to "IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib", but cannot link in "IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib" as it is not a valid archive file.
  • #10206-D resolving index library "QmathLib.a" to "QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib", but cannot link in "QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib" as it is not a valid archive file.
  • #10247-D creating output section ".ram_thrill" without a SECTIONS specification

The only combination of code and data size that works is large code, large data. But the memory problem with .leaRAM remains. 

How exactly is the USS library planned to be used? Is it okay to have more than USS code on the MSP430 MCU? At the moment I am using driverlib, custom I2C and UART code. Is this the reason I can not fit into the memory?

Thank you in advance

  • Hello Jan,

    It is really recommended to start from the default USSLib projects for evaluation, and then utilize the optimized libraries once you know which algorithm you want to use, then start your project with the optimized libraries. Most likely you grabbed the default library that has more code to it than you need for an end application. see the USS Li  User Guide for more information:

    https://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/USSSWLib/USSSWLibWater/latest/exports/USSLib_02_40_00_00/docs/LibUsersGuide/markdown/OptimLib.html

  • Hi Jace,

    thank you for quick reply. If I use optimized libraries - I chose Lobe - I get following errors:

    #10008-D cannot find file "book"	IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib
    #10008-D cannot find file "book"	QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<USS_computeAbsTOF_lobe.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<USS_computeDeltaTOF_estimate.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<USS_computeVolumeFlowRate_water.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<USS_cosInterpolation.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<USS_filter.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<USS_init.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<USS_lea.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<USS_math.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<USS_run.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<USS_support_lea.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<USS_updateADCParams.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<ussSwLibAlgorithms.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    #16019-D file "USS_SW_CCS_large_code_small_data.lib<ussSwLibCommonAlgorithms.obj>" specifies large data memory model, which is not compatible with small data memory model specified in a previous file or on the command line
    
    unresolved symbol _IQ12rmpy, first referenced in USS_SW_CCS_large_code_small_data.lib<USS_computeDeltaTOF_estimate.obj>
    unresolved symbol _IQ15rsmpy, first referenced in USS_SW_CCS_large_code_small_data.lib<USS_computeAbsTOF_lobe.obj>
    unresolved symbol _IQ16toF, first referenced in USS_SW_CCS_large_code_small_data.lib<ussSwLibAlgorithms.obj>
    unresolved symbol _IQ19rsmpy, first referenced in USS_SW_CCS_large_code_small_data.lib<USS_computeAbsTOF_lobe.obj>
    unresolved symbol _IQ21mpy, first referenced in USS_SW_CCS_large_code_small_data.lib<USS_computeVolumeFlowRate_water.obj>
    unresolved symbol _IQ21toF, first referenced in USS_SW_CCS_large_code_small_data.lib<ussSwLibAlgorithms.obj>
    unresolved symbol _IQ27toF, first referenced in USS_SW_CCS_large_code_small_data.lib<ussSwLibAlgorithms.obj>
    unresolved symbol _IQ30mpy, first referenced in USS_SW_CCS_large_code_small_data.lib<USS_computeDeltaTOF_estimate.obj>
    unresolved symbol _IQ30rsmpy, first referenced in USS_SW_CCS_large_code_small_data.lib<USS_computeAbsTOF_lobe.obj>
    unresolved symbol _IQ30toF, first referenced in USS_SW_CCS_large_code_small_data.lib<ussSwLibAlgorithms.obj>
    unresolved symbol _Q12rmpy, first referenced in USS_SW_CCS_large_code_small_data.lib<USS_computeDeltaTOF_estimate.obj>
    unresolved symbol _Q15div, first referenced in USS_SW_CCS_large_code_small_data.lib<USS_support_lea.obj>
    

    And warnings about the libraries:

    #10204-D could not resolve index library "USS_SW_CCS.a" to a compatible library
    #10206-D resolving index library "IQmathLib.a" to "IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib", but cannot link in "IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib" as it is not a valid archive file
    #10206-D resolving index library "QmathLib.a" to "QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib", but cannot link in "QmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_small_data.lib" as it is not a valid archive file

    Those all go away when I select large for both code and data. No other combination of size works. 

    What is the reason for other files, when they don't work with memory size written in the file name?

  • Hello Jan,

    Are these present when choosing the libraries with a new blank project, or when integrating with your current project? If its the latter, then most likely its a linker conflict between the library and project.

    What these settings are doing is just determining where in flash the code is put. Small keeps is below the16-bit vs 20-bit address boundary. Large allows the linker to place it above or below the boundary as the useable FRAM space is split. 

    The IQMath libraries are made for several devices, some of which don't support the large memory model due to small memory size. For the device you are using, there isn't really a reason to limit the code or data sections to small memory model. It will not give you smaller/more optimized memory footprint. Your optimization settings determine that. 

    If you wanted to section off memory for specific purposes, such as datalogging, then you should use the persistent pragma so the toolchain takes care of that placement//allocation for you. 

  • All errors go away, when I select large code and large data. I have no problem with setting that. However I was bit surprised that no other method worked. Why is that?

**Attention** This is a public forum