This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to initialize an array at absolute location in code memory

Hi,

I've to modify a code previously written in Tasking compiler and at many places I find code like

_rom USIGN08 TempTable[CAL_TEMPERATURES] _at(0xf35c)=
{ 0x0F,0x28,0x51,0x7A,0x8F };

Here the TempTable array is to be located at code address 0xf35c and also to be initialized.

As per Keil compiler book, variables can be located at absolute location using _at_ but can not be initialized.

Is there a way to do this?

Thanks,

Rajesh

Parents Reply Children
  • The original code was not written by me and as the only person in team to worked on 8051(4-5 years ago), I volunteered to make some quick enhancement and got PK51 assuming Keil compiler can do anything. Did not know that code was done using Tasking compiler.

    Yes, the tables shouldn't have been located at fixed address,not sure why it was done like that. Now I'll try to make it absolute address independent or go through the hassle of locating them using liker. I was just looking for some quick solution.

    Also noticed that Keil IDE doesn't generate make file(Tasking compiler does) :(
    After using GNU Tools I'm used to Makefiles now.

  • "After using GNU Tools I'm used to Makefiles now."

    ALL of the Keil tools can be called from the command line; therefore, you can use a makefile instead of the uVision build if that's what you prefer.
    You could invoke it from the Tools menu, if you want...