ULP Advisor > Rule 6.2 Recommend using MSPMATHLIB library for devices with 32-bit hardware multiplier

Typical message

"ULP Rule 6.2 Detected use of a device with available 32-bit hardware multiplier and not also using MSPMATHLIB library (libmath.a). Recommend using MSPMATHLIB library (libmath.a) for improved performance."

ULPAdvisorBanner.PNG

ULP Advisor - Rule Table

ULP 1.1 Ensure LPM usage
ULP 2.1 Leverage timer module for delay loops
ULP 3.1 Use ISRs instead of flag polling
ULP 4.1 Terminate unused GPIOs
ULP 5.1 Avoid processing-intensive operations: modulo, divide.
ULP 5.2 Avoid processing-intensive operations: floating point
ULP 5.3 Avoid processing-intensive operations: (s)printf()
ULP 6.1 Avoid multiplication on devices without hardware multiplier
ULP 6.2 Use MATHLIB for complex math operations
ULP 6.3 Use Low Energy Accelerator (LEA) software library
ULP 7.1 Use local instead of global variables where possible
ULP 8.1 Use 'static' & 'const' modifiers for local variables
ULP 9.1 Use pass by reference for large variables
ULP 10.1 Minimize function calls from within ISRs
ULP 11.1 Use lower bits for loop program control flow
ULP 11.2 Use lower bits for port bit-banging
ULP 12.1 Use DMA for large memcpy() calls
ULP 12.1b Use DMA for potentially large memcpy() calls
ULP 12.2 Use DMA for repetitive transfer
ULP 13.1 Count down in loops
ULP 14.1 Use unsigned variables for indexing
ULP 15.1 Use bit-masks instead of bit-fields

Let us know what you think! Feedback, suggestions & comments
are welcome @ ULPAdvisorFeedback@list.ti.com

What it means

MSPMATHLIB is a library that implements highly efficient versions of certain commonly used math.h functions. An application using these functions can improve performance by simply linking with this library. Here is a list of functions implemented in this library: sinf, cosf, tanf, asinf, acosf, atanf, atan2f, sqrtf, logf, expf, fmodf, and reciprocalf.

Risks, Severity

In an application not using MSPMATHLIB, usage of the above functions might consume up to 26x more cycles which results in more power and energy consumption.

Why it is happening

The project is configured for an MSP430 device that does not have a hardware multiplier module and the code contains at least one or more math operations listed above.

Remedy

MSPMATHIB is included in CCS. Simply link with MSPMATHLIB.

Screen shot for MSP430F5xx/6xx/FRxx family of devices. Add libmath.a before other libraries. Add “"${CCS_BASE_ROOT}/msp430/lib/5xx_6xx_FRxx" to library search path.Ulp6.2 3.jpg



Screen shot for MSP430F4xx family of devices. Add libmath.a before other libraries. Add “"${CCS_BASE_ROOT}/msp430/lib/4xx" to library search path.
Ulp6.2 2.jpg


Code Example

No changes to code required.

More Resources

Take a look at https://www.ti.com/tool/mspmathlib for more details.

Want to squeeze a few more nanoAmps out of your application? Leverage the e2e (Engineer-to-Engineer) online community to get all of your ULP questions answered! Or, if you are an Ultra-Low Power pro, give back to the community with your expertise.

Go to MSP430's e2e online forum! 

If you are posting on the forums in relation to this rule, try using the tag "ULP_6.2"

E2e.jpg For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article Compiler/diagnostic messages/MSP430/10422 here.