## c't-Projekte - Mailinglisten

[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

### Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle

Absender: Benjamin Benz
Datum: Fr, 09.03.2007 12:43:04
In-reply-to: <45F135B9.5030203@xxxxxx>
References: <BCF016D5ED5AC34FBB655D109519ABCF083EBE@xxxxxxxxxxxxxxxxxxxx> <45ED3B46.4030400@xxxxxx> <45EF385C.3080609@xxxxxx> <A2ED0A68-A8F1-438A-B1E3-18033ED489E3@xxxxxxxxxxxxxxx> <45F135B9.5030203@xxxxxx>

    Hallo,
    > herr benz schrieb bezüglich eeprom@pc:
    >
    >   Was meinen denn die anderen auf dieser Liste dazu?
    >   Die Optionen sehen IMHO so aus:
    >   1. manuelle Speicherzuteilung ==> code läuft auf PC und MCU identisch
    >   2. automatische Speicherzuteilung per avr-gcc ==> Code läuft nicht
    >      sinnvoll auf PC
    >   3. evtl. kann man mit ein paar geschickten Makros die Speicherzuteilung
    >      auf dem PC nachstellen?
    >
    >   Nach den von Ihnen genannten Pros würde ich (wenn jemand weiß wie) für
    >   Version 3 oder sonst 1 plädieren.
    >
    > ich würde auch lieber version 3 haben, aber mir ist noch nichts besseres
    > eingefallen. meine bescheidene meinung dazu ist, da es ja auf eine
    > emulation der avr-gcc fkt rausläuft, das man dann durchaus erst einmal
    > eine version 1 implementieren kann. da sich an parameter und
    > rückgabenwerte der fkt ja nichts ändern darf (der name ja eh nicht),
    > kann man später, wenn jemand etwas besseres schafft, das ohne probleme
    > übernehmen.
    > wichtig ist mir persönlich nur, das muss ja nicht für alle so sein ;-) ,
    > das das eeprom auf dem pc, wenns denn bei einer datei bleibt, im aufbau
    > (selben adressen der variablen)zum bot identisch ist und möglichst als
    > bin datei vorliegt. dann kann ich es weiter auf den bot übernehmen und
    > via versa.

    So, ich hab mal ein wenig Recherche betrieben, um die ganze Diskussion
    hier auf solidere Füsse zu stellen. Hier die Ist-Analyse.

    Der avr-gcc packt Variablen die so deklariert werden:

    uint8 __attribute__ ((section (".eeprom"))) err15=1;

    in eine eigene "Section" (siehe auch:
    http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Variable-Attributes.html und
    http://www.ohse.de/uwe/articles/gcc-attributes.html#func-section und
    http://geek.vtnet.ca/doc/initcall/section.html)

    Diese Section wird in einem Post-Build-Prozess mit folgenden Kommandos
    nachbearbeitet:

    > avr-objcopy -O ihex -R .eeprom ct-Bot.elf ct-Bot.hex

    löscht die Section (und damit die Initilaisierungswerte) aus dem
    .hex-File, damit sie nicht mit ins Flash kommt

    > avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load"
    --change-section-lma .eeprom=0 -O ihex ct-Bot.elf ct-Bot.eep

    Erzeugt eine .eep-Datei, die nur die Initialisierungswerte für die
    EEPROM-Variablen enthält und biegt die Startadresse der Section auf 0 um.

    Grundlegend sehe ich kein Problem, das auf dem PC genauso zumachen. Die
    Sections sind nämlich IMHO keine Spezialität des avr-gcc. Es bliieben
    zwei Punkte zu klären:

    1. wie extrahiert man auf dem PC die Section aus dem .elf/.exe in eine
    eigene Datei
    2. Wie bastelt man die Funktion der avr-libc so nach, dass sie die
    richtigen Adressen im File anspringt. Das kann aber nicht schwer sein,
    da der Src offen liegt.

    Soweit mal meine Analyse.

    MfG Benjamin Benz

    --
    Benjamin Benz
    Heise Zeitschriften Verlag
    Redaktion c't
    eMail: bbe@xxxxxxxx
    WWW  : http://www.heise.de

    Heise Zeitschriften Verlag GmbH & Co. KG
    Registergericht: Amtsgericht Hannover HRA 26709

    Persönlich haftende Gesellschafterin:
    Heise Zeitschriften Verlag Geschäftsführung GmbH
    Registergericht: Amtsgericht Hannover, HRB 60405
    Geschäftsführer: Ansgar Heise, Steven P. Steinkraus, Dr. Alfons Schräder

- Antworten:
  - Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle
    - From: Benjamin Benz
  - Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle
    - From: Timo Sandmann

- Referenzen:
  - [ct-bot] Kaibrierung
    - From: Carsten Giesen
  - [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle
    - From: Achim Pankalla
  - Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle
    - From: Achim Pankalla
  - Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle
    - From: Timo Sandmann
  - Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle
    - From: Achim Pankalla

- Voriger (Datum): Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle, Timo Sandmann
- Nächster (Datum): Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle, Benjamin Benz
- Voriger (Thread): [ct-bot] Kalibrierung der Distanzsensren mittels EEPROM-Tabelle, Achim Pankalla
- Nächster (Thread): Re: [ct-bot] Re: Kalibrierung der Distanzsensren mittels EEPROM-Tabelle, Benjamin Benz
- Indizes:
  - Datum
  - Thread