gcc string relocation

ide.ne.irj at freemail.hu ide.ne.irj at freemail.hu
Thu Apr 22 18:31:40 CEST 2004


Thus spake Petrik Gergely:

> eleg misztikus dolgok ezek, szabvany C konyvbol ilyesmit nem
> lehet megtanulni, mert azokban sztem nincs benne. lamer

Biztos hogy nincs :) Bar a K&R konyvet meg nem lattam, azt azota is
hozza egy haverom. A programozzunk C nyelven-ben nincs benne.

> (amiota windozt programozok, egyszer se lattam ilyesmit ;),
> akik meg asm-ben nyomulnak, azok nincsenek raszorulva,
> ugyebar. :)

:)))

> epp tegnap volt egy mokas meresem az egyetemen. EIB instabus
> epuletautomatizalasi berendezeseket kellett "felprogramozni".

Oops, ilyen is van? Mifele busz az?

> na, most hogy ujra leirod, ertem a problemat. a multkori
> thread idejen abszolut nem voltam kepben a temaval
> kapcsolatban, de most mar latom, nem is akkora hulyeseg...
> de miert nem jo pl inline fuggvenyt irni makro helyett?

Persze hogy nem hulyeseg, de nem en irtam, hanem Arnold :))
Most viszont egy masik projectben, ami majdnem teljesen C-ben
keszul, en is belefutottam a problemaba. Printf-et ugyan csak a
debug uzenetek kiirasahoz hasznalok, de ha minden debug be van
kapcsolva, mar nem fer bele a 4k-ba. Persze ki lehetne kuszobolni,
de annyira nem erdekel... Ez a valtozo parameterhosszusagu
prepocesszor makro jo lett volna, sajna az IAR nem tamogatja,
ugyhogy ennyi, igy marad, tul nagy turast nem er meg nekem.

> gcc-ben vannak olyan fuggvenyek, amik flashbol dolgoznak.
> printf_P, meg hasonlo nevekkel. semmi akadalya, hogy a
> preprocesszor korlatozott kepessegeit egy az alabbinak
> megfelelo sorral tegyuk probara:
> 
> #define printf printf_P // :)

Nem ez a gond. Azt sem irhatod be, hogy printf_P("hello world");
Ugyanis a sztring konstanst a flashbol atteszi a memoriaba minden
korulmenyek kozott. Ez tehat hibat fog jelezni, nem egyezik a tipus,
az egyik char *, a masik _flash char * vagy ilyesmi.
Tehat a problema az, hogy a sztring konstans tarolasi osztalyat nem
tudod definialni a fuggvenyhivasban. Ha egy valtozoba beteszed elotte,
akkor termeszetesen nem problema.
De lehet hogy a gcc-ben megy.
Idezetek a megapeg-bol:
(lib/printf_P.h)

extern void _printf_P (char const *fmt0, ...);

#define printf(format, args)  _printf_P(PSTR(format) , ## args)

Mi az a PSTR? Nem vilagos, de ez lenne a _tuti_ megoldas.
A PSTR-t az IAR nem ismeri, de eleg valoszinu, hogy letezik megoldas.
Mert kulonben nem csinaltak volna meg azt a tonna includot, meg a
flashes fuggvenyeket sem, ha amugy sem lehet normalisan hasznalni.

>> Az atmel oldalon van ilyen appnote... Sot, DES bootloader is...
> avr-gcc-s? mert en nem arra vagyok halal buszke, hogy

Nem tudom, nem neztem. Illetve a DES-est leszedtem, az legalabb
reszben, amit lattam belole, C.

> bootloaderem van, hanem arra, hogy full gcc-s. az asm-es
> appnote megvan, de nem akarom foltenni az avrstudiot. sem
> pedig avr asm-et tanulni. alapveto szempont volt, hogy gnu
> cuccokkal lehessen fejleszteni, mert az ilyenolyan IDE-kkel
> az utobbi honapokban meggyult a bajom, es elegem van
> beloluk (nem avr kapcsan, de akkor is).

A Studio-t jo hogy nem raktad fel, az nem valo semmire, hulladek.
De az IAR pl nagyon jo, es az asm only resze ingyenes is.

> --
> G

-- 
Valenta Ferenc <vf at elte.hu>   Visit me at http://ludens.elte.h u/~vf/
"A kulturalt ember nem szemetel. A tobbieknek meg tilos!"


____________________________________________________________________
Miert fizetsz az internetert? Korlatlan, ingyenes internet hozzaferes a FreeStarttol.
Probald ki most! http://www.freestart.hu




More information about the Elektro mailing list