gcc string relocation

Petrik Gergely spee at freemail.hu
Thu Apr 22 16:53:01 CEST 2004


On Thu, 22 Apr 2004 ide.ne.irj at freemail.hu wrote:

> > figyelmen kivul hagyja, ha nincs bekapcsolva az
> > optimalizacio (es a fuggvenyeket szepen berakta a flash
> > elejere, amit aztan a ketyere onprogramozas kozben torolt,
> > es ertheto modon elszallt).
>
> A bootloadert is C-ben irod? Nem semmi...
ez igy enyhe tulzas. :) ugyanis a program erdemi resze az uj
avr-gcc-kkel szallitott boot.h-beli inline asm makrok
hivogatasabol all. de a ciklusok C-ben vannak, meg a
valtozodeklaraciok is.

> > a library fuggvenyek kapcsan asszem egyetertek, de a tobbi
> > fv relokalasa megy C kiterjesztesekkel. a gcc-ben
> > __attribute__ (section((...))) izebigyoval (nem tudom minek
>
> Na ilyet meg nem lattam...
eleg misztikus dolgok ezek, szabvany C konyvbol ilyesmit nem
lehet megtanulni, mert azokban sztem nincs benne. lamer
kodgeneratoros windoz programozok ilyet almukban se latnak
(amiota windozt programozok, egyszer se lattam ilyesmit ;),
akik meg asm-ben nyomulnak, azok nincsenek raszorulva,
ugyebar. :)

> > ami azt illeti, a bootloader eleg primitiv egy program (bar
>
> Az attol fugg... Nekem a bootloader IRDA-n varja a sajat protokollal
> erkezo adatokat, azokat DES/3DES-sel kikodolja, kitomoriti (ez azota
> sincs kesz, egyelore nem tomorit), beprogramozza, kozben a grafikus LCD-re
> irja hogy mi tortenik. Nem igazan primitiv...
na, az enyem nem igazan ez a kategoria. arra jo, hogy
programot lehet feltolteni vele. meg checksumos vedelem is
van minden atkuldott lap vegen :), de semmi extra. az
agyonoptimalizalastol is megkimeltem magam, meg szepnek se
nevezheto. de az enyem! :)

> Majd megcsinalom hogy repkedjenek a bajtok, mint amikor az intezo masol :))
epp tegnap volt egy mokas meresem az egyetemen. EIB instabus
epuletautomatizalasi berendezeseket kellett "felprogramozni".
na, ott is folytak a bajtok egy csovon keresztul a
keszulekek fele, amikor feltoltodott a program, meg utana
visszafele folytak antigravitacios iranyban, amikor toroltuk
a vegen a feltoltott proggikat. :)

> > volt vegul. sima programkodnal mikor van jelentosege annak,
> > hogy hova kerul a flashben?
>
> Pl ha adatokat is akarsz a flashben tarolni, vagy a fuggvenyek cimet
> atadni, es nem akarsz a RAMPD/RAMPZ regiszterekkel bohockodni, illetve
> szeretned ha a fordito sem tenne ezt. (lassu, zabalja a regisztereket,
> memoriat stb...)
vilagos.

> > ne mar. ilyen egzotikus dolgokat kitalalni... :)
>
> Lehet hogy egzotikus, de megoldja a printf problemat...
> Mert ha csak ugy siman beirod, akkor az init kod atmasolja a RAM-ba
> a sztringeket, es a printf onnan veszi elo oket.
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?

> A 4k baromi hamar elfogy ha igy csinalod.
> Ezert talaltak ki a valtozo parameterhosszusagu makrot.
> Igy mar a printf is lehet makro, es makrobol meg lehet csinalni, hogy
> a formatum sztringet flashbol vegye.
> Mar irtam, a megapeg-ben konkretan megcsinaltak.
> Sajna IAR-ben nem lehet ilyet.
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 // :)

de nem biztos, hogy ennyire egyszeru a dolog. sot,
biztosan nem, mert akkor Nektek is eszetekbe jutott volna.
de en igy csinalnam, ha lenne pl egy fonokom, aki az
asztalra verne, es tegnapra rendelne egy a flashbol
printf-elo programot. :)

> > valszeg muxik nagyobb vackokon is), es hozza egy primitiv
> > linuxos programozo "sw"-em is. ahogy neztem gugliban, nem
> > sok ilyen akad. amibol en dolgoztam, az is halal bugos volt
> > eredetileg. most mar persze tokeletes... :)
>
> Az atmel oldalon van ilyen appnote... Sot, DES bootloader is...
avr-gcc-s? mert en nem arra vagyok halal buszke, hogy
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).

--
G






More information about the Elektro mailing list