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.

TMS320F2812: Compiler upgrade library confusion

Part Number: TMS320F2812
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

I'm porting a very old TMS320F2812 project from CCS 2 to CCS 10, and I ran into a snag. The product consists of two separate application images which interface through fixed location jump tables.

The smaller image is a POST and bootloader, linked with rts2800_ml.lib and Flash2812_API_V100.lib, originally, then the V210 replacement.

The larger image is the application that performs motion, sensor, and device control. It linked with rts2800_ml.lib and IQmath.lib.

I initially linked the images built in CCS 10 with the original libraries from 2003 and 2005, and almost everything worked OK. The one discrepency I noticed was that calls to standard library function sprintf() using the %s conversion specifier did not work. The string for the %s did not appear, nor did any other parameters after it.

Eventually I found that if I used the rst2800_ml.lib that came with CCS 10, or the equivalent libc.a, the missing output reappeared. That was an easy enough solution, although it baffled me for a while.

But now I have another concern. There are no newer versions of the 2812 flash api or IQmath libraries. We have to use the original versions from 2003 and 2005, there is no alternative. What, if any compatibility issues are we likely to run into there?

So far, the flash api library works flawlessly when linked into the CCS 10 build. I've erased and reprogrammed the on chip flash dozens of times without an error. We're never going to use it differently, so I'm not worried about that.

But what about the IQmath library? The current version of ControlSuite had 32 IQmath.h C headers, and three different libraries. And none of them support the 2812.

I don't actually understand the root cause of the sprintf() problem. Looking at two different versions of SPRU514, a preliminary with no version letter from August 2001 and a slightly newer SPRU514U from August 2020, the descriptions of the calling conventions, even on variadic argument functions, look the same. Yet obviously they are not.

So I need to know if I can rely on version 1.4b of the IQmath library from June 2002.  Or at least what I should watch out for.