eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAVR gcc .bss .heap i stos › AVR gcc .bss .heap i stos
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!.POSTED!not-for-mail
    From: "Profesor" <p...@f...bus>
    Newsgroups: pl.misc.elektronika
    Subject: AVR gcc .bss .heap i stos
    Date: Thu, 21 Jun 2012 08:59:42 +0200
    Organization: ATMAN - ATM S.A.
    Lines: 55
    Message-ID: <jrugou$75s$1@node2.news.atman.pl>
    NNTP-Posting-Host: ip-91-232-50-130.air-net.gda.pl
    Mime-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="utf-8"; reply-type=original
    Content-Transfer-Encoding: 8bit
    X-Trace: node2.news.atman.pl 1340261982 7356 91.232.50.130 (21 Jun 2012 06:59:42 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Thu, 21 Jun 2012 06:59:42 +0000 (UTC)
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:633194
    [ ukryj nagłówki ]

    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 = .

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: