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

scater file problems

Hi
I am using uvision to develop code for LPC1768. my code is not small but I am sure I have lots of unused SRAM and I have assigned enough heap and stack

But I have a problem. Some of my variables get values other than what they should have. For example a variable that I set it 1 in timer interrupt (and define it volatile when declaring it), is having 0 value when is referred to in code, etc

When these problems happen, I define the variable in a specific address, like this

unsigned char Flash_write_values[512] __attribute__((at(RAM_BaseAddress + 0x5000)));
unsigned char Flash_Data[512] __attribute__((at(RAM_BaseAddress + 0x5200)));
volatile unsigned char  SMS_QueueActive __attribute__((at(RAM_BaseAddress + 0x5A04)));

Now that my code is getting bigger, this problem is occurring more frequently.
Maybe I should define all my variables in specific addresses. What is your opinion?

I started studying linker manuals to learn how to create scatter files, but it seems the manuals are too large and not enough simple to work/start with

How do you suggest me to proceed?
Thanks in advance

Parents
  • But I have a problem. Some of my variables get values other than what they should have. For example a variable that I set it 1 in timer interrupt (and define it volatile when declaring it), is having 0 value when is referred to in code, etc

    When these problems happen, I define the variable in a specific address, like this
    That reaction makes no sense whatsoever. Even if it does help sometimes, that's by coincidence, not by design.

    You have to find out what actually happens with your code. The position of a variable in memory has no real significance for that. Did you really qualify both the definition and all declarations of those variables volatile?

Reply
  • But I have a problem. Some of my variables get values other than what they should have. For example a variable that I set it 1 in timer interrupt (and define it volatile when declaring it), is having 0 value when is referred to in code, etc

    When these problems happen, I define the variable in a specific address, like this
    That reaction makes no sense whatsoever. Even if it does help sometimes, that's by coincidence, not by design.

    You have to find out what actually happens with your code. The position of a variable in memory has no real significance for that. Did you really qualify both the definition and all declarations of those variables volatile?

Children
No data