Keil Bug

Hello
Look at this code if i replace 1024 in array with more than 2048 compiler work fine but micro hang !!
program work fine with 1024 or less.
i use at91sam7x256 this have 64KB Ram.
if i replace char with int then more than 256 have the same problem.

#include <at91sam7x256.h>

int main (void){

char buf[1024]="Hello World";

*AT91C_PMC_PCER = (1<<AT91C_ID_PIOB);
*AT91C_PIOB_PER = (1 << 0) | (1 << 1);
*AT91C_PIOB_OER = (1 << 0) | (1 << 1);
*AT91C_PIOB_SODR = (1 << 1);
*AT91C_PIOB_CODR = (1 << 0);

return 0;

}

Parents
  • How well do you know C?

    You have a local variable inside main(). This is called an auto variable, and it is stored on the stack. It doesn't matter how large RAM your processor has - a more interesting question is how large stack _you_ have configured.

    Now, would you please tell us one more time why you think this is a Keil bug?

    Another thing - also related to my original question: What do you think happen when main() ends? Do you think your processor will get back to a graphical desktop? Or to a command line prompt? What is the most important differences between writing a program for an embedded target, and writing a program for a PC?

Reply
  • How well do you know C?

    You have a local variable inside main(). This is called an auto variable, and it is stored on the stack. It doesn't matter how large RAM your processor has - a more interesting question is how large stack _you_ have configured.

    Now, would you please tell us one more time why you think this is a Keil bug?

    Another thing - also related to my original question: What do you think happen when main() ends? Do you think your processor will get back to a graphical desktop? Or to a command line prompt? What is the most important differences between writing a program for an embedded target, and writing a program for a PC?

Children
More questions in this forum