- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Maximale Größe .hex file

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    Anzeige

    LiFePo4 Akku selber bauen - Video
    die variante mit define ist sicher umständlicher, aber speichersparender, weil dadurch der verwaltungsaufwand einer gnazen funktion weggfällt.

    und darum gehts ja wohl.
    ...

  2. #12
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.066
    ist aber eigentlich doch eher unwirtschaftlich, weil dann vor dem compilieren nur jedes 5ZEILEN durch \n\n\n\n\n ersetzt wird (was ausserdem unter win2000 nicht funktioniert, es müsste mit \n\r\n\r\n\r\n\r\n\r ersetzt werden). es wird also jedes mal die ganze große funktion gespeichert, mit den 10 bytes im serwrite (und dem serwrite selbst usw.). bei der funktion hingegen wird nur 1x eine schleife gespeichert.

    ich vermute, im endeffekt wird das bei +- null rauskommen... allerdings ist eine funktion dann flexibler. DEFINEs werden vor dem kompilieren ersetzt, und dann jedes mal gespeichert. funktionen müssen nur einmal gespeichert werden.

    aber an so kleinen dingen hängts nicht. der größte teil kann denk ich mal rausgeholt werden, wenn die asuro.c angepasst wird und alle nicht benötigten funktionen rausgenommen werden.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    bei der standard lib giebts gar nicht soviee funktionen die man nicht brauchen könnte.
    so viel wird da nicht weggfallen
    ...

  4. #14
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Dir ist ja klar, daß du ein Großteil des Flash mit Strings vollhaust, gleiches gilt für den SRAM. Du hast hier eine kleinen ATmega8 vor dir, kein PC mit 1GB Hauptspeicher und nem virtuellen Speicher von oo.

    Den Platz, den das Programm belegt, kannst du mit avr-size anzeigen lassen. Wie das geht erzählt dir

    avr-size --help

    Allein die main() hat riesiges Sparpotential!

    Die Multiplikationen mit 0,75 machen nicht das, was du willst!!!
    https://www.roboternetz.de/wissen/in...._in_Konstante
    Eine Multiplikation mit 0.75 wirst du auch nicht wollen, weil das dem ATmega8 erst recht den Boden raushaut. Also: Multipliziere mit 3 und teile dann durch 4 (gcc ist übrigens gescheit genug, um /4 durch einen Shift zu ersetzen).

    Die beste Oprimierungsstufe für AVR ist -Os

    Falls das RAM voll mit den Strings ist, dann legt die ins Flash und schreibt euch ne Funktion, die die Strings aus dem Flash ausgibt (merke: konstante Strings im RAM belegen Platz um RAM *und* im Flash).
    https://www.roboternetz.de/wissen/in...ings_ins_Flash

    Die Länge zu übergeben braucht bei jedem Aufruf nochmal 4 Bytes unnötig... und und und...
    Disclaimer: none. Sue me.

  5. #15
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.066
    hmmm... wie siehts aus mit dem eeprom? könnte man da nicht auch ncoh etwas zwischen lagern (mit einer art vorbereitungs programm), so allgemeine werte oder die auszugebenden strings oder ähnliches? das ist immerhin ein halbes kb...
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test