[elektro] stack, struct copy

hg12345 hg12345 at freemail.hu
Thu Apr 29 11:46:32 CEST 2010


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]



More information about the Elektro mailing list