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

Wierd problem in modifying the bootloader code

Hi,

I am using Phytec LPC3250 board for my design and I have a very important problem that I have been spending time on for days.

I want to modify my bootloader_NOR code so that I can send my application code image from the serial port.

However, when I define a global variable and use this variable in a function it gets wierd values. My code can be simplified as below:

#include "LPC318x.H"

int  m = 0;

void MyFunction(int value)    // do nothing function
{
}

int main(void)
{
  for(;;)
  {
    m++;                        // <- Breakpoint
    MyFunction(m);
  }
}

When I debug the code, I see "m = 0xE0000420" at the breakpoint where I expect to see 0x00.

This ruins all my intention and I cannot proceed to modify the code.

I think the data in the RAM region is corrupted but I dont know why and I have no sensible solution for this.

Thanks for your helps in advance.

Parents
  • What I suggest you do is single step through the startup code, watching the memory location of the variable becoming corrupt and see where that corruption occurs.

    In the standard startup code, it jumps to main with the sequence:

                    LDR     R0, =__main
                    BX      R0
    

    Select the dis-assembly window and single step there. Then I would expect you to enter the scatter load code.

    It's a while since I modified my bootstrap, but I seem to remember that doing this brought me to the conclusion that the stack was originally only just sufficient for the unmodified bootstrap code. My first small additions took it over the edge.

Reply
  • What I suggest you do is single step through the startup code, watching the memory location of the variable becoming corrupt and see where that corruption occurs.

    In the standard startup code, it jumps to main with the sequence:

                    LDR     R0, =__main
                    BX      R0
    

    Select the dis-assembly window and single step there. Then I would expect you to enter the scatter load code.

    It's a while since I modified my bootstrap, but I seem to remember that doing this brought me to the conclusion that the stack was originally only just sufficient for the unmodified bootstrap code. My first small additions took it over the edge.

Children
No data