- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 32

Thema: Durch inline kleinerer Code?

  1. #21
    Benutzer Stammmitglied
    Registriert seit
    05.04.2005
    Beiträge
    66
    Anzeige

    Praxistest und DIY Projekte
    Hast du schonmal versucht C++-Code zu kompilieren oder vermutest du nur, dass C++ größeren Code erzeugt?

    Zitat Zitat von pebisoft
    winavrc ist ein ganz normales standart c , da gibt es kein wenn und aber.
    Nichts anderes habe ich vorhin behauptet. WinAVR beinhaltet jedoch neben dem Standard-C-Compiler auch noch einen C++-Compiler (der allerdings nicht standardkonform ist).


    btw, "Standard" (nichts für Ungut).

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260
    Hu. Kann mir den jemand diese Fragen noch beantworten...

    a) Woher weiß ich, wie groß das Progrämmchen für den Bot im Speicher sein wird? (Genau so groß wie auf meiner Festplatte?)
    b) Vielleicht ein kleiner Hinweis wie ich ne hex hinbekomm...

  3. #23
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260
    Hio. Ich hab jetzt bissel rumgespielt und endlich ne hex-Datei bekommen. Nur ist die irgendwie (im Vergleich zur bin-Datei) riesig?! Ganze 4,6KB für 'n paar Zeilen Code. (Bevor die Frage kommt:Code Stammt von www.qfix.de und dient zum Testen des Crash-Bobby. Dort ISO-Datei runterladen, dann brennen oder als virtuelles Laufwerk einrichten und man hat den Code. Ist aus dem Ordner bobbyTest (/software/bobbyTest).). Ich erzeuge die hex dann so...

    Ich hab die BAT-Datei (die auch im Ordner bobbyTest ist) ein bisschen modifiziert und zwar so:

    @echo off
    set TARGET=Shadowstriker
    set CONTROLLER=atmega32
    set INCLUDE=../include

    <nul (set/p z=Clean... )
    if exist %TARGET%.bin del %TARGET%.bin
    echo OK

    <nul (set/p z=Build... )
    avr-g++ -c -o %TARGET%.o -g -O2 -Wall -I%INCLUDE% -mmcu=%CONTROLLER% %TARGET%.cpp
    avr-g++ -g -Wall -O2 -mmcu=%CONTROLLER% -o %TARGET%.elf %TARGET%.o
    avr-objcopy -j .text -j .data -O binary %TARGET%.elf %TARGET%.bin
    echo OK

    :End


    Das kommt also alles in ne BAT-Datei rein und wird mit der Console (cmd.exe) ausgeführt. Danach findet man nen haufen Dateien in dem Ordner aus welchem die BAT-Datei aufgerufen wurde, wenn alles geklappt hat. Und dann ruf ich mein Makefile auf. Das erzeugt dann die Hex... Und die ist (im Vergleich zur produzierten BIN-Datei die man ja auch auf den Bobby laden kann) extrem groß. Was mach ich falsch??


    Grüße
    Lutz
    Angehängte Dateien Angehängte Dateien

  4. #24
    Neuer Benutzer Öfters hier
    Registriert seit
    30.05.2005
    Ort
    Stolberg
    Alter
    44
    Beiträge
    6
    Die Antowrt hatte ich bereits gegeben, aber offensichtlich war die "Elite" hier davon überzeugt, daß ein "Anhaltspunkt" alles notwendige aussagt... Na was solls...
    [..] Signature failed to load!

  5. #25
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260
    Hio. Also ich hab jetzt nochmal ne HEX erstellt und das avr-size (ich hoffe das ist das besagt Script, oder der Aufruf davon) aufgerufen und folgendes Ergebnis erhalten:
    ...
    hex 689 ....
    ...
    (Mehr siehe Bild im Anhang. Drüber sieht man auch noch das Ergebnis des make-Aufrufs). Heißt das jetzt die HEX-Datei ist 689 Bytes, Bits (ne Einheit wäre schön ), oder was?

    Grüße
    Lutz
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken avr-size.jpg  

  6. #26
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Die Programmgröße ist "hexadezimal" 689
    dezimal sind das 1688 Bytes. Im Konsolenfenster siehst du's ja
    Als Hex-File braucht er dafür 4780 Bytes (properties)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #27
    Neuer Benutzer Öfters hier
    Registriert seit
    30.05.2005
    Ort
    Stolberg
    Alter
    44
    Beiträge
    6
    Code:
    AVR Memory Usage:
    -----------------
    Device: attiny26
    
    Program:    2636 bytes (128.7% Full)
    (.text + .data + .bootloader)
    
    Data:          0 bytes (0.0% Full)
    (.data + .bss + .noinit)
    ...das mein ich!

    Mit aktuellem Makefile auch ohne rebuild mit "make sizeafter" auf den Bildschirm zu zaubern
    [..] Signature failed to load!

  8. #28
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223
    a) Woher weiß ich, wie groß das Progrämmchen für den Bot im Speicher sein wird? (Genau so groß wie auf meiner Festplatte?)
    also bei meiner Linux-Toolchain gibts ein »avr-size«. Dürfte unter Windows auch so heißen (ok, avr-size.exe

    b) Vielleicht ein kleiner Hinweis wie ich ne hex hinbekomm...
    wenn mich mein Gedächtnis nicht gerade trügt ging das mit mfile resp. dem Makefile. Hab grad kein winavr-Projekt da, sonst könnte ich kurz nachgucken ...

    Argl! Übersehen dass da noch / schon Antworten waren ... na ja, still for the record.

  9. #29
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260
    Hio. Also mir ist das jetzt nicht so klar...

    1.Wenn ich in der Console “make sizeafter” eingebe kommt zwar ein Output, aber der sieht ganz anders aus, als der von OldBug . Siehe dazu Bild make_sizeafter.jpg. Was mach ich den Falsch?? (Warum zeigt die Console immer nur Blablabla.elf an? Ich will doch aber Blablabla.hex. Ich bin an jeglichem Versuch gescheitert make sizeafter die HEX zu übergeben)...
    2.Nach dem Output von a.jpg müsst das Programm ja dann (9326 / 1048 ) ca. 8,9 kB Speicher fressen!? Kann das sein??
    3.Ich glaub ich mach da ja selber irgendwo nen Fehler. Ich ruf ja immer die BAT-Datei vor dem make auf. Die erzeugt mir dann Dateien, die von make benötigt werden. Erst dann ruf ich die Makedatei auf. Ist das vielleicht falsch?? Schauht euch doch bitte die beiden Dateien nochma an (ein paar Postings höher in Dateien.zip)...
    4.Einfach so zum Test bin ich mal in den WinAVR\examples\demo-Ordner gegangen. Hab dann in der Console make aufgerufen. Es gab dann auch schön ne HEX-Datei. Beim Versuch make sizeafter aufzurufen gab's folgende Meldung: „make: *** No rule to make target 'sizeafter'. Stop“. Liegt das vielleicht daran, dass das Makefile sich ziemlich vom meinem (ich hab das Standardmakefile vom MFile verwendet und bissel modifiziert) unterscheidet??

    Wenn ihr ganz nett sein wollt und einem verzeifeltem Schüler helfen wollt, dann schreibt mir doch einfach ne Liste, wo alles drin steht, was ich wie wo und wann tun soll. Danke! Ambesten wäre natürlich Beispielcode und dann könnt ma nen kleines Tut machen und das im Forum posten und niemand wird die Frage mehr stellen ...

    Grüße
    Lutz
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken alle_kommandos.jpg   make_sizeafter.jpg  

  10. #30
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260
    Weiß den niemand bescheid?

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

12V Akku bauen