[elektro] stack, struct copy
Lajos Rancz
lajos.rancz at gmail.com
Thu Apr 29 11:50:34 CEST 2010
Helló!
Na ezzel mekkorát szívtam 8051 Keil alatt: amikor függvény pointereket adtam
át és azokat hívtam. Nyilván nem vette észre, hogy egymást hívják (és emiatt
ugyanoda tette a lokális változóikat), két napomba került :o
Üdv,
Lajos
2010/4/29 hg12345 <hg12345 at freemail.hu>
> Ha ilyen komplikált, de létező fizikai címe van a rendszernek, akkor egy
> ügyes cast-tal becsapható a rendszer és már másolható...
>
> ((char*)&AKARMI)[i] = ((char*)&VALAMI)[i]
>
> char helyet lehet void is !
>
> ha tudod a hosszt akkor egy for ciklussal átmásolható.
>
> A linkerben nem tudsz megadni olyan területet amit sok program használhat
> (természetesen a nem egy időben futók) és a local változókat erre a
> területre definiálod... igy a local változok nem a stack-t terhelik. Overlay
> néven szokták nevezni......
>
> Pl.: PIC-nél ilyen tárolási osztályt is meghatároztak
> (static,local,overlay).....
>
>
>
>
> On 2010. 04. 28. 15:50, hg12345 wrote:
> > Hi!
> >
> > Kifelejtetted milyen fordító és milyen kontroller.
>
> Ez igaz. De alapvetően mind1...a logika volt fura elegge, es meg most sem
> ertem
> miert jobb igy... igyis ugyis byte-onkent olvassa az eepromot es tolti fel
> a ram
> struct-ot.
> (IAR + AVR amugy)
>
> > Az EEPROM kezelés teljesen implementáció függő elképzelhető amit írsz.
> > Elvileg kozvetlenúl nem turja beolvasni, akkor meg átmenetileg valhol
> tárolni kell.
> >
> > Próbáltad pointerrel?
> > *cfg=*ee_cfg;
>
> Ez értelmetlen, nem? cfg nem pointer hanem egy valtozo.
>
> > vagy sring copy függvénnyel?
>
> String copy nem tudja mivel az eeprom valtozo mas kategorias pointer mint
> egy
> sima valtozo az strcpy meg const char* -ot var a pointereknek.
>
> FLASH-bol van strcpy_P erre. De eepromra nincs.
>
> Ezt fapadosan kezzel tudnam megirni egy strcpy_EE fuggveny formajaban.
> De olyan kenyelmes ez a struktura ertekadasosdi. :)
>
> Most kitoltam vele, kihelyeztem egy külön függvénybe a kritikus reszeket,
> igy
> csak addig foglalja a stack-en a helyet amig tenyleg zajlik a masolas.
> Korabban
> printf stb volt meghívva mellette egy fuggvenyben ami szinten zabalja a
> stack-et...igy stack owerflow volt pikkpakk.
>
> Egyelőre itt elmegy. De mashol ahol nem lesz ennyi RAM ott nem fog menni.
>
> -
>
> mas: stack overflow-ra nincs ugye a mini kontrollerek joreszeben semmi
> tamogatas.
> Vannak technikak watermark stb ami a stack kihasznaltsagot jelzi.
> Puritan modon a stack vegere teszek egy footprint-et,(HEAP utana van a
> stack-nek, az elejere toltom be a footprintet), ha tulirt detektalni tudom.
> De kihasznaltsagot ez nem mutat.
>
> Watermark kicsit kinlodosabb lenne, de lehet raszanom magam.
>
> Ti hogy csinaljatok?
>
> Fura h semmilyen tamogatas nincs a fordito reszerol erre.
>
> A.
>
> -----------------------------------------
> elektro[-flame|-etc]
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list