Part Number: TMS320F28388D
Hi all,
we are using ARM C++ compiler TI Clang v3.2.0.LTS for the CM core on a TMS28388D.
While doing flash firmware updates, I ran into problems because everything needed for the update procedure must not be located in the flash sectors that have been erased. For most cases this was easy - just define all required functions as ramfunction, i.e. assign to section ".TI.ramfunc" .
But now I ran into a problem with a class containing virtual methods. The method implementations could successfully be defined as ramfunction, but it turned out that the virtual method table is still located in flash, having 0xFFFFFFFF as method pointers after flash erase and causing a crash on a call.
I tried to put "__attribute__((section(...)))" into the class definition, hoping that it would apply to the class as a whole, including the VMT. But that didn't work (compiler error "only applies to functions, global variables, Objective-C methods, and Objective-C properties").
How can I move the VMT to RAM or assign it to a specific RAM section? From the map file it looks as if the tables are located in the .rodata section. I'm not sure if it is wise to move the whole section to RAM, as apparently it also contains other constants (which preferably(?) should be placed close to the using function - if I'm not mistaken there may be a 4k delta addressing limit).
regards
Chris