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

error 65:

My background is primarily Windows development and I know very little about embedded development so I hope someone can explain what is causing my problem.

I am using the Keil compiler in uVision3 and am trying to simulate an NXP LPC2468.

My program is very basic :P ...

int main()
{
        return 0;
}

But when the simulator starts I receive this in the output window:

*** error 65: access violation at 0xA0033000 : no 'read' permission

This happens in LPC2400.s at the LDR instruction on line 1308...

  LDR     R4, =NORMAL_CMD           ; Write NORMAL Command
  STR     R4, [R0, #EMC_DYN_CTRL_OFS]

I could map this region using the instruction's here
http://www.keil.com/support/docs/814.htm

but, shouldn't the code work anyway straight out of the box?

Parents
  • int main()
    {
            return 0;
    }
    

    Ok, think about this: If this was a Windows program, what happens at the "return 0;" line? The program returns to ... Windows.

    Now, on a microcontroller, there is no Windows to return to. Generally, there is no operating system for main() to return to. The processor "returns "to "somewhere" in the address space and happily starts executing whatever "instructions" it finds there. These are completely undefined and will, of course, lead to undefined behavior.

Reply
  • int main()
    {
            return 0;
    }
    

    Ok, think about this: If this was a Windows program, what happens at the "return 0;" line? The program returns to ... Windows.

    Now, on a microcontroller, there is no Windows to return to. Generally, there is no operating system for main() to return to. The processor "returns "to "somewhere" in the address space and happily starts executing whatever "instructions" it finds there. These are completely undefined and will, of course, lead to undefined behavior.

Children