We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi
In a C++ application I have to place the vtable of a class (UARTDriver.cpp) into RAM.
I can of course do that by placing all RO-content of UARTDriver.o into RAM:
LR_IROM1 0x08000000 0x00008000 { ; load region size_region ER_IROM1 0x08000000 0x00008000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00002000 { ; RW data UARTDriver.o (.constdata__ZTV10UartDriver) .ANY(RAMCODE) .ANY (+RW +ZI) } }
But this places all methods into RAM as well which is undesirable!
By looking at the map-file, I can see that the mangled name for my vtable is .constdata__ZTV10UartDriver.
vtable for UartDriver 0x20000554 Data 112 uartdriver.o(.constdata__ZTV10UartDriver)
Putting this into the scatter-file, my vtable gets places into RAM as desired.
But this solution is not really nice since it depends on the name-mangling of the compiler.
How can I qualify the vtable of UARTDriver in the scatter-file so it gets placed into RAM?