<div dir="ltr">2008/8/16 Jan Waclawek <span dir="ltr"><<a href="mailto:konfera@efton.sk">konfera@efton.sk</a>></span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><br>
> Jedine co chcem dosiahnut je to, ze ked pouzivam premenne v EEPROM,<br>
> napriklad<br>
> char str_prog[] PROGMEM = "Retazec vo FLASH";</div></blockquote><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><br>
</div>Tak v EEPROM alebo vo FLASH? ;-)<br>
<div class="Ih2E3d"><br>
> tak aby v pripade zmeny retazca alebo pridani dalsich compiler<br>
> neprepisal to urcene miesto. Viem ze zapisat alebo citat mozem lubovolnu<br>
> adresu, ale to compileru nezabrani na tu adresu nieco umiestnit a to je<br>
> prave to co chcem osetrit.<br>
<br>
</div>Linker postupuje zdola nahor, takze bud tu premennu (alebo miesto pre nu) deklarujete ako prve (a mate len jeden zdrojak alebo sa linkuje ako prvy); alebo si ho jednoducho "rucne" umiestnite na vrch FLASH alebo EEPROM.<br>
<br>
PS. GCC MA pamatove segmenty ale nema pamatove triedy, t.j. napr. k premennej a ktora je inde ako v RAM sa neda pristupit jednoducho ako napr. b = a, ale len cez "zaobalovacie" funkcie napr. b = eeprom_read_byte(&a).</blockquote>
<div><br>Ještě doplním dokumentaci k segmentům:<br><br>• <a href="http://www.nongnu.org/avr-libc/user-manual/mem_sections.html">http://www.nongnu.org/avr-libc/user-manual/mem_sections.html</a><br><br>Jinak co se týče EEPROM, tak sice je možné ze zdrojáků přímo (elegantně) generovat proměnné v EEPROM, ale zas tak často se to nedělá a hlavně se to neděje automaticky, alébrž je to nutné ručně nastavit v Makefile při generování objektů. Takže rozhodně se není třeba bát, že by zrovna v případě EEPROM tam kompilátor něco hodil automaticky...<br>
<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
wek<br>
<div><div></div><br></div></blockquote></div></div>