system: Codewarrior 4.6
processor: 9s12c32
This will actually be a two part question. First, what is the correct way to define a table in code. I have it defined as:
const unsigned int Table1[8] = {0,1,2,3,4,5,6,7};
The compiler will place it in flash or ROM depending upon how I use the table in the program.
For example:
void SomeFunction()
{
unsigned int i;
i=Table1[0]
}
Places the table at address 0 in RAM but, ....
void SomeFunction()
{
const unsigned int * i;
i=Table1;
}
Places the table at address 0xC043. Is there a better way to define the table such that it will always wind up in code space? I tried using #pragma CODE_SEG but the compiler just ignored it. Any help is appreciated.
Second question: What compiler directive or technique can be used to word align the table?
The align directive (#pragma align 2) doesn't work. Doing a test compile then poking a byte in if needed is not an option. Fixing the table at a defined address is not an option either, although I would like to know how to do that. Basically the table should be relocatable, always the same size and always begin on an even word. Thanks, hope you can help.