Hello all, I have one project in microvision keil2. It is of 89v51rd2 and sst89e516rd2 controller. I am compiling code in keil2, somehow I am finding short of memory while compiling the code as my variable usage exceeds the capacity. So I declared memory model of large i.e variable in XDATA under target option.
I am able to compile the code successfully, but some of my data are code, idata. so I have query whether my variables assigned as code, idata will perform properly even if memory model is XDATA.
Thanks and regards
So for example if the data is "const", the compiler can decide to associate a storage attribute to place the variable in the code space. not using Keil right now (doing Renesas with IAR) I can't check, but I recall that Keil does not (always?) put 'const' in the code memory. use the 'code' keyword to guarantee that such 'variables' (variables that can't vary eh?) goes in code memory
The important thing here is "can decide to".
"code" will force data into that specific memory space, while "const" or "static const" can be used as a hint to the compiler that since the data may not be modified it has the option to consider not copying the data into RAM.
the option to consider not copying the data into RAM but when you are short of memory you want to force that decision and thus use 'code'