- Labornetzteil AliExpress         
Ergebnis 1 bis 7 von 7

Thema: Größe eines Programmes unter MPLAB ermitteln

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    29.05.2006
    Beiträge
    40

    Größe eines Programmes unter MPLAB ermitteln

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo zusammen,

    gibt es eine Möglichkeit die Grösse eines PIC Programmes unter MPLAB 7.4 mit dem C18 Compiler herauszufinden?
    Der Hintergrund ist, dass wenn ich mein geschriebenes Programm kompiliere, er mit der Fehlermeldung

    Error - section '.code_log.o' can not fit the section. Section '.code_log.o' length=0x000004fa

    abbricht.
    Stelle ich dagegen im Compiler alle Optimierungen an, dann kompiliert er es anstandslos. Die Frage ist, wieviel Speicherplatz habe ich noch nach dem Kompilieren zur Verfügung? Ich muss noch einige Routinen zusätzlich einbauen...
    Falls der Platz nicht reicht, gibt es eine Möglichkeit, den Programmspeicher des PIC18F452 zu erweitern? Oder welchen "größeren" PIC könnte ich nehmen?

    Viele Grüße
    SteffenJ

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    10.03.2005
    Ort
    Mannheim
    Alter
    39
    Beiträge
    32
    Wenn der Compiler durchläuft, dann findest du unter View -> Memory Usage Gauge eine Anzeige.

    Meines wissens zeigt dir der Compiler auch so etwas in dieser Art (im Output Fenster in der Registerkarte Build) an:
    Code:
    Memory Usage Map:
    
    Program ROM   $0000 - $0006  $0007 (     7) words
    Program ROM   $0773 - $07FF  $008D (   141) words
                                 $0094 (   148) words total Program ROM 
    
    Bank 0 RAM    $0020 - $0025  $0006 (     6) bytes
    Bank 0 RAM    $0070 - $0070  $0001 (     1) bytes
                                 $0007 (     7) bytes total Bank 0 RAM  
    
    
    Program statistics:
    
    Total ROM used      148 words (3.6%)
    Total RAM used        7 bytes (2.7%)
    Tut er leider auch nur nach dem erfolgreichen compilieren.

    desweiteren gibts auch noch die möglichkeit map-Files generieren zu lassen: Project -> Build options -> Project -> Linker -> Generate Map files

    Zu deinem Problem:

    Hast du irgendwo (z.B. im Linkerscriptfile falls vorhanden) eine Section angelegt, in der der Code hin soll??? Bzw. ist dein "code_log" das einzige File?


    Gruß
    Stefan

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    29.05.2006
    Beiträge
    40
    Hallo Stefan,

    vielen Dank für Deine Antwort.

    Hab jetzt gleich mal die von Dir angesprochenen Dinge nachgeschaut:

    Memory Usage Map: wird nicht im Build Fenster angezeigt, nur ob Fehler aufgetreten sind oder nicht

    View->Memory Usage Gauge: funktioniert, so hab ich wenigstens einen groben Überblick über den Speicherverbrauch

    Map Files: funktioniert, muss mich da nur erstmal reinpfriemeln, was das alles bedeutet. Wenn bei mir der oben genannte Fehler auftrat, wurde das Mapfile ja nur bis zum Fehler geschrieben.
    Die Größe im Mapfile wird mit
    27349 out of 33048 program addresses used, program memory utilization is 82%
    angegeben. Nach der Optimierung durch den Compiler. Das heisst ja dann, dass ich mich mit der Programmierung beeilen muss, bis diese Optimierung in der Testversion abgeschalten wird...

    >Hast du irgendwo (z.B. im Linkerscriptfile falls vorhanden) eine Section >angelegt, in der der Code hin soll??? Bzw. ist dein "code_log" das einzige >File?

    Als Linkerscript nehme ich das 18f452.lkr von MPLAB. Da steht nichts von Code oder Data drin.
    Ansonsten weiss ich jetzt nicht, was Du damit meinst, aber ich hab mal meine pragmas abgeschrieben. Das sind doch die einzelnen Code-Sektionen, oder?

    #pragma code highVector=0x08
    #pragma interrupt TimerISR
    #pragma code
    #pragma config

    Grüsse
    Steffen

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    10.03.2005
    Ort
    Mannheim
    Alter
    39
    Beiträge
    32
    Als Linkerscript nehme ich das 18f452.lkr von MPLAB. Da steht nichts von Code oder Data drin.
    Ansonsten weiss ich jetzt nicht, was Du damit meinst, aber ich hab mal meine pragmas abgeschrieben. Das sind doch die einzelnen Code-Sektionen, oder?

    #pragma code highVector=0x08
    #pragma interrupt TimerISR
    #pragma code
    #pragma config
    jap das sind die, die ich meine....kontrollier da mal alle, ob da nicht irgendeine Sektion zu groß wird. Steht glaub ich im MAP-File wie groß die einzelnen Sektionen sind....ansonsten kann ich dir weiter auch nicht helfen. Ich hab zwar glaub ich schonmal ne Program memory utilization > 82% gehabt....ober noch nicht solche Probleme.
    Liegt vielleicht auch daran, das ich eigentlich immer sehr "viele" einzelne Dateien habe.
    Versuch doch einfach mal ein teil deiner code_log.c aus zu lagern z.B. code_log1.c und code_log2.c o.ä.

    Gruß
    Stefan

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    29.05.2006
    Beiträge
    40
    Hallo,

    Habe jetzt ins Map-File geschaut und sehe auch die Größe der einzelnen Sektionen. Nur weiss ich nicht, wie mir das helfen soll, eine bestimmte Sektion kleiner zu machen. Vielleicht ist der Code auch einfach so groß, da ich sehr viele trigonometrische Funktionen drin habe.
    Aber noch eine andere Frage:
    Welches wäre denn der nächstgrößere pinkompatible PIC zum 18F452? Ich brauche nur mehr Programmspeicher, Datenspeicher ist erst zu ca. 30% ausgelastet.

    Viele Grüsse
    SteffenJ

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    10.03.2005
    Ort
    Mannheim
    Alter
    39
    Beiträge
    32
    ich kann dir jetzt direkt keine controller vorschlagen, da ich auch erst nachschaun müsste....

    Aber geh einfach mal auf die Seite von Microchip (PIC18 Product-page) schau da mal nach. Der PIC, der mehr Speicher hat und den es auch in deiner Gehäuseform gibt, der "müsste" auch PIN-Kompatibel sein.

    Gruß
    Stefan

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    29.05.2006
    Beiträge
    40
    Vielen Dank für Deine Auskunft. Werd mich dann mal genauer unter den 3 Milliarden PICs umschauen, damit ich den richtigen erwische.

    Grüsse
    Steffen

Berechtigungen

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

Labornetzteil AliExpress