Part Number: MSP430FG4618
Tool/software: Code Composer Studio
I've been looking at migrating my build definitions from an explicit HW multiplier option (-mhwmult=16bit etc), to the more generic -mhwmult=auto option. This leaves one less thing to remember when I change processors (or at least that's the theory!).
The specific code I've been playing with generates a static library, with the final executables linking against this. Initially both the project that builds the library, and the project that uses this and builds the executable, were using the auto option for the hardware multiplier. This immediately generates issues with undefined __mulhi2 symbols during the link (interestingly nothing in the code is explicitly using the hardware multiplier, but maybe one of the libraries is - the error refers back to a timer interrupt ISR within the static library code). The only way I've found round this is to explicitly set the hardware multiplier to 16bit in the project that builds the executable (this is for a 4618). Leaving the hardware multiplier at auto in the project that builds the library doesn't seem to cause any problems.
I'd like something like nm to have a poke around inside my static library, as the __mulhi2 reference is coming from some logic inside that, but haven't found one that works on Windows yet. However, it appears that the compiler stage is generating the reference to __mulhi2 correctly, but the linker stage is failing to include the correct library to resolve this, unless the multiplier is explicitly set to 16bit.
Are there any issues using the auto option, or am I missing something?
Thanks and regards
Andrew