W5100 a buffer

Josef Štengl ok1ced na nagano.cz
Pondělí Říjen 13 23:16:04 CEST 2014


K přetečení/velikosti stacku.

Pokud je aplikace statická, tak stačí na začátku zapsat jeden známý pattern do stacku, a pak si přečíst změny - je malá 
pravděpodobnost, že se přepíší stejnými daty; přijdete na to kdy nebo až vám přeteče stack a máte restartovat :-). 
Velikost pak záleží na komplexnosti kódu a možnosti nasimulovat spotřebu stacku. Pro dynamický systém je třeba toto 
zajistit minimálně při vytváření a rušení stacku.

V debug módu to jde také, pokud debugger umožňuje dát breakpoint na zápis na určitou adresu či rozsah adres.

To, že části kódu fungují ale dohromady ne, může mít více příčin. Dle mých skromných zkušeností je malý  stack až na 
třetím místě za nevhodně (chybná struktura) napsaným zdrojákem a ignorování pravidel jazyka + optimalizace.
Následuje deklarace proměnných v H.


ced


Dne 13.10.2014 v 19:33 Michal Grunt napsal(a):
> Zas tolik v tom zběhlý nejsem... Když jsem část kódu zakomentoval tak to fungovalo (kód, který se převážně stará o
> stringy - kontrola web formulářových vstupů atd.). Přitom bylo skoro jedno jestli jsem zakomentoval první část tohoto kódu
> nebo druhou, nebo pár řádků uprostřed. Původně jsem měl k SPI připojen jak W5100 tak i LCD (N5510) a když kód trochu
> nabobtnal tak to začalo blbnout. Ale odděleně nebo mixovaně do určité části běžely v pohodě. Nevím, ale strávil jsem s tím
> dost času a bez výsledku. Z toho jsem usoudil :-), že to bude nedostatkem paměti. Ničím jiným to prověřit nemohu (ani
> debug nepomůže). Takže jsem LCD od SPI odpojil a rutiny pro obsluhu LCD vyhodil (později pak zkusím I2C OLED, třeba se
> SPI/SPI nějak ovlivňuje). Nepoužívám DMA, nebo IRQ pro W5100 (je to jednoduchá aplikace).
>
> --------------------------------------------------------------------------------------------------------------------------
> *Od:* Hw-list [hw-list-bounces na list.hw.cz] za uživatele František Burian [BuFran na seznam.cz]
> *Odesláno:* 13. října 2014 17:22
> *Komu:* HW-news
> *Předmět:* RE: W5100 a buffer
>
> Dobrý den,
>
>    Zajímalo by mě jak jste zjistil že to bylo pamětí ? (Tedy jak jste zjistil kolik stacku potřebujete a kolik už je málo
> ...) S tímto problémem se potýkám pořád ale uspokojivé řešení jsem nenašel (kromě statické analýzy kódu).
>
> S pozdravem,
>
>    F. Burian
>
> ---------- Původní zpráva ----------
> Od: Michal Grunt <michal.grunt na vynet.cz>
> Komu: HW-news <hw-list na list.hw.cz>
> Datum: 13. 10. 2014 16:26:09
> Předmět: RE: W5100 a buffer
>
>
>     Už je to vyřešeno. STM32F030F4P6 docházela paměť :-)
>
>     *From:*Hw-list [mailto:hw-list-bounces na list.hw.cz] *On Behalf Of *Michal Grunt
>     *Sent:* Friday, October 10, 2014 10:04 AM
>     *To:* HW-news (hw-list na list.hw.cz)
>     *Subject:* W5100 a buffer
>
>     Zdravím, mám jednoduchou aplikaci s Wiznet W5100. Skoro vše je v pohodě až na jednu drobnost. Mám jednoduchý web
>     server (stránka včetně hlavičky se vejde do 1000 znaků) a občas se stane, že se mi nenačte celá http hlavička (jenom
>     část) a tudíž se pak nenačte i stránka (resp. button ve formuláři – posílání metodou POST - na který kliknu protože
>     v hlavičce pak chybí to zásadní – obsah hlavičky se načte se tak z 90% a konec schází).
>
>     Mám to uděláno nějak takto:
>
>     http://www.seanet.com/~karllunt/w5100_library.html
>
>     case W5100_SKT_SR_ESTABLISHED: // if socket connection is established...
>     rsize = ReceivedSize(mysocket); // find out how many bytes
>     if (rsize > 0)
>     {
>     if (Receive(mysocket, buf, rsize) != W5100_OK) break; // if we had problems, all done
>
>     Když si po tomto řádku nechám vypsat „buf“ tak část hlavičky schází (konec s informací o POST). Většinou se toto stává
>     pokud do browseru zadám adresu, hlavní stránka se načte a „rychle“ kliknu na button ne formuláři (rychlost znamená že
>     kliknu hned jak se stránka načte). Když po načtení stránky počkám tak dvě vteřiny tak je vše v pořádku a hlavička se
>     načte celá. Nesetkal se s tím někdo?
>
>     MG
>
>     _______________________________________________
>     HW-list mailing list - sponsored by www.HW.cz
>     Hw-list na list.hw.cz
>     http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>


Další informace o konferenci Hw-list