Gast
#484289
Hallo,
ich lese ca. 3000 Bytes über SPI in ein Array ein und sende diese erst
dann über den UART an den PC. Als Controller kommt ein Mega128 zum
Einsatz. Die Firmware funktioniert soweit.
Meine main sieht so aus:
void main (void)
{
uint8_t byArr[3000];
uint16_t wCnt=0;
USART1_Init( 25 );
Init_Slave();
USART1_Transmit('C');
while(wCnt<3000)
byArr[wCnt++]=Slave_Receive();
byArr[2999]='Z';
wCnt=0;
while(wCnt<3000)
USART1_Transmit(byArr[wCnt++]);
while(1);
}
Frage: Wenn ich nun mit avr-size -C --mcu=atmega128 <filename>.elf den
RAM Verbrauch anzeigen lassen möchte, dann bekomme ich unter 'Program´
440bytes und unter 'Data' 0bytes angezeigt.
Setze ich 'static' vor das 3000 byte Array, dann stimmt die Anzeige mit
3000bytes bei 'Data'.
Warum ist das so? Wo steckt der Compiler denn die 3000 Byte für das
Array hin, wenn ich 'static' weglasse? Sie müssen doch irgendwo alle
zwischengespeichert und damit auch von avr-size erfasst werden, oder?
Danke für Support.