AVR GCC, umiestnenie premennej na zadanu adresu
Pavel_t
pavel_t@centrum.cz
Sobota Srpen 16 13:02:38 CEST 2008
> Jedine co chcem dosiahnut je to, ze ked pouzivam premenne v EEPROM,
> napriklad
> char str_prog[] PROGMEM = "Retazec vo FLASH";
> tak aby v pripade zmeny retazca alebo pridani dalsich compiler
> neprepisal to urcene miesto. Viem ze zapisat alebo citat mozem lubovolnu
> adresu, ale to compileru nezabrani na tu adresu nieco umiestnit a to je
> prave to co chcem osetrit.
GCC znam jen velmi povrchne, ale u kompileru a linkeru pro Zilog mohu
nastavit adresni prostory a mohu v nich delat i urcite mezery do kterych
potom neni umistovan program nebo data. Tim zamezim aby zde bylo neco
alokovano a pristupuji k tomu pres pointery treba tak jak uz napsal
Jakub Ladman:
> #define KEYB_REG ( *((volatile unsigned int *) 0x1104) )
>
> a = KEYB_REG;
Ma to ale tu nevyhodu, ze program musi pri 1. startu tuto pamet vyplnit
cili mate tam ten retezec nakonec 2x. To by slo treba obejit tak ze
retezce pridate az do vysledneho hex souboru ktery budete ve vyrobe palit.
Nektere kompilery/linkery maji moznost definovat urcite pamatove
segmenty a jejich absolutni adresy, zkuste jestli toto nema AVR GCC
(jestli jsem pochopil co napsal Wek tak bohuzel nema) a tyto retezce
definovat v tomto segmentu misto v PROGMEM.
Pak pokud si dobre vzpominam tak snad Keil C51 mel u promenych moznost
napsat _at adresa.
Pavel
Další informace o konferenci Hw-list