Other Parts Discussed in Thread: MSP430WARE
Created a test which fills 256 floats with normal multiplication/divisions and then another 256 array with IQ20 using corresponding IqmathLib operations, with:
- -mlarge
- -mcode-region=either
- -mdata-region=none
- C:\ti\msp430ware_3_80_14_01\iqmathlib\libraries\CCS\MPY32\5xx_6xx\IQmathLib_CCS_MPY32_5xx_6xx_CPUX_large_code_large_data.lib
First 2 (-mlarge and -mcode-region=either) are a must as we need both low-FRAM and the HIFRAM. The last is unfortunate (_large_data.lib) but only this seems to compile with GCC and given memory requirements (see).
The floats and math fillings are surrounded by Debug LED and traced on oscilloscope:
And the results are not promising at all:
- 2.17s with normal float operations:
- And only 1.79s with IqmathLib operations:
Also when trying to convert the IqmathLib results to float (using _IQ20toF) in order to compare with real floats the code doesn’t work anymore and even the debug session gets stuck immediately after flashing:
As noticed above, seems that a limit? is at 247, where the project still works and can be debugged too, while with 248 or above, not anymore. The map difference between 247/248 builds doesn’t reveal anything special to break so badly the code:
The test project is attached.
Help or suggestions are greatly appreciated, thank you!
Daniel