🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.sieci.bezprzewodowe
1 messages
1 total messages Started by Profesor Thu, 21 Jun 2012 06:57
AVR gcc .bss .heap
#19036
Author: Profesor
Date: Thu, 21 Jun 2012 06:57
54 lines
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