Thread View: pl.comp.sieci.bezprzewodowe
1 messages
1 total messages
Started by Profesor
Thu, 21 Jun 2012 06:57
AVR gcc .bss .heap
Author: Profesor
Date: Thu, 21 Jun 2012 06:57
Date: Thu, 21 Jun 2012 06:57
54 lines
2147 bytes
2147 bytes
Czy jakieś nieświadome użycie, zadeklarowanie zmiennej lokalnej np. float w funkcji może prowadzić do używania obszaru poniżej stosu i powyżej .bss czyli heap? Z pliku .map niewiele widać. .bss kończy się 0x733 stos na 0x800 podglądany stack pointer schodzni najniżej do 0x795 Czyli pomiędzy 0x733 a 0x795 jest teoretycznie heap ale wzmianki o tym w pliku map nie ma. No ale stos mi nachodzi czasem na zmienne. Jak zmniejszę bufor[512] o kilkadziesiąt to się uspokaja. Co można zrobić ? Skąd wiadomo czy heap jest używany? I co się dzieje w tym obszarze? Z wyliczeń jest miejsce. Wstawiam pułapki w różne miejsca kodu i czytam ile wynosi aktualnie SP i nie ma siły, nie spotykają się. A jednak się kwasi. .bss .... .... 0x008005f3 RXVAL 0x008005f5 V_TEST 0x008005f7 PROVIDE (__bss_end, .) 0x00006d76 __data_load_start = LOADADDR (.data) 0x00006d76 __data_load_end = (__data_load_start + SIZEOF (.data)) .noinit 0x008005f7 0x13d 0x008005f7 PROVIDE (__noinit_start, .) *(.noinit*) .noinit 0x008005f7 0x13d main.o 0x008005f7 my_bufer 0x00800733 my_noinit 0x00800734 PROVIDE (__noinit_end, .) 0x00800734 _end = . 0x00800734 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) 0x00810000 __eeprom_end = .
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads