[elektro] stack, struct copy

Fuzesi Arnold arnold.fuzesi.lista at gmail.com
Thu Apr 29 11:08:11 CEST 2010



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.



More information about the Elektro mailing list