[elektro] külső eeprom struc
zulu
zulu at gmail.hu
Thu Oct 6 17:56:21 CEST 2016
2016-10-06 16:03 keltezéssel, Arnold Füzesi írta:
> Ezt kezzel kell megoldanod ugy gondolom.
>
> Amugy is jobb nem hasznalni eeprom strukturat, mert a stack-ben dolgozik vele ahogy tapasztalom, es bitang szivasokat tud okozni egy stack overrun.
Csináltam ilyet, ami - visszaolvasva az adatokat más programmal - hibátlanul működik:
struc foo {
unsigned char var1;
unsigned char var2;
unsigned int var3;
.
.
}
void ee_rw( void )
{
struct foo *config;
void *pnt = config->var2;
.
.
i2c_write( ( unsigned int ) pnt >> 8 );
i2c_write( ( unsigned int ) pnt & 0xff );
i2c_write(...
.
.
pnt = ( char * ) pnt + 1;
}
Azt hiszem itt nem jön létre semmi fizikai allokálás, csak a pointer, de ez is a célom. Az írás/olvasás az i2c-vel megy, tehát
semmi nem megy a ram-ba.
> Hirtelen nincs jobb otletem. Meglepne ha gcc tudna uj memoria tipust szabadon, de nem kizart persze.
> Vagy megnezed mega128-nal pl mikent eri el a kulso ram-ot, es azt mutod at.
> Vagy startup kodba lehet erdemes benezni, es abban atmuteni az eeprom reszt, sztem ott lesz. De az asm buveszkedes lesz az a gyanum.
SECTION definíció kell linkernek, de nekem valamiért nem ment, a linker hibát üzent. A default: .data, .bss, .eeprom, .text és pár
user által használható, de azok bss-n belül vannak. Jobban nem mélyedtem el benne.
-zulu
More information about the Elektro
mailing list