Hallo, ich habe gerade ein kleines Projekt, welches ich mit einem Arduino nano Nachbau aufgebaut habe. Sobald die Größe des Projektes einen Speicherbedarf von ca 10000 byte überschreitet, funktioniert das Programm auf dem µC nicht mehr. Ich habe die Vermutung, dass hier ein anderer Bootloader verwendet wurde, und daher nicht ausreichend Platz im Flash vorhanden ist. Eigentlich sollte der Bootloader ca 2kByte belegen und ca 30 kbyte frei sein. Hat jemand bereits die gleiche Erfahrung gemacht? MfG Pindrei
Hallo Pindrei, wo ist dein Programm, wo sehen wir die Fusebits ? Hast Du mal den Flashspeicher per ISP programmiert ?
Hallo, was sagt Dein Ram-Verbrauch? Bootloader mit 20kB bauen nichtmal die Chinesen, warum sollten sie auch, die Boorloader sind ja fertig da. Bisher weder mit Nano noch NodeMCU oder ProMini in mehreren Layoutvarianten irgendwelche Probleme. Gruß aus Berlin Michael
Michael U. schrieb: > Bootloader mit 20kB bauen nichtmal die Chinesen, Naja, es bedeutet ja nicht das der Bootloader 20kbyte groß ist, nur das das Programm an dieser Speicherstelle beginnt Karl M. schrieb: > Hast Du mal den Flashspeicher per ISP programmiert ? Mit dem ISP Programmer werde ich es als nächstes versuchen, ich wollte nur wissen, ob jemand das gleiche Problem bereits hatte.
Die Bootloader Section Size kann auf dem Mega328 nur 4k gross sein. Maximal 2k für den Mega88 und Mega168. Hat der Nano vielleicht einen Mega168 statt einem Mega328?
Michael U., abgesehen davon, sind die Bereich des Bootloades im Flashspeicher des Atmega festgelegt. Siehe Fusebits: BOOTSZ1 und BOOTSZ0 und Table 24-7. Boot Size Configuration
Rudolph R. schrieb: > Hat der Nano vielleicht einen Mega168 statt einem Mega328? mmh, laut IC Beschriftung nicht.....
Pindrei P. schrieb: > Sobald die Größe des Projektes einen Speicherbedarf von ca 10000 byte > überschreitet, funktioniert das Programm auf dem µC nicht mehr. Meine Glaskugel sagt: Klarer Fall! Der Fehler steckt in der zusätzlichen Funktionalität. Anders: Das Problem sitzt vor dem Monitor.
Hallo, @ Karl M.: Danke fürs nachschauen, ich war zu faul dazu, die Anpielung mit den 20k war nur aus 32k Flash und seinen 10k Programm. Ich vermute eher auf zu hohe Ram-Auslastung, aber dazu müßte er sich äußern. "Funktioniert nicht mehr" ist mir zu vieldeutig. Gruß aus Berlin Michael
Hallo, ich kann nur vermuten, daß Du die ArduinoIDE benutztm Du bist mit Infos ja sehr sparsam. Die zeigt zumindest bei mir den verbleibenden Ram für dynamische Variablen nach dem Compilieren an. Irgendwo gab es auch ein paar Zeilen Programm, daß man einfügen konnte, um sich die Belegung im Programm zur Laufzeit über die serielle mitteilen zu lassen, finde ich gerade nicht. Zeig doch Dein Programm (als Detaianhang) wenn es kein großes Geheimnis ist. Problem sind oft viele lokale Texte, die irgendwo ausgegeben werden und besser ins Flash sollten. PS: meine Glaskugel-Software läuft nicht auf dem ProMini... ;-) Gruß aus Berlin Michael
Hallo, im Anhang befindet sich das Arduino Projekt. In der Setup und Loop Funktion befinden sich Funktionsaufrufe, die auskommentiert sind, sobald ich eine weiter Funktion aufrufe und sie damit mit kompiliert wird, Funktioniert das Programm nicht mehr und der Controller resetet durchgehend. Den Speicherbedarf ermittelt man dḿit: avr-size -x -A foo.elf Jedoch habe ich noch nicht herausgefunden, wo die IDE die Dateien ablegt.
Hab die .elf gefunden pindrei@ThinkPad-X1:~$ avr-size -x -A /tmp/build8054757072674598525.tmp/Luftsensor.cpp.elf /tmp/build8054757072674598525.tmp/Luftsensor.cpp.elf : section size addr .data 0x264 0x800100 .text 0x1e28 0x0 .bss 0xc7 0x800364 .stab 0xa554 0x0 .stabstr 0xd3c0 0x0 .comment 0x11 0x0 Total 0x19a78 pindrei@ThinkPad-X1:~$
bzw. pindrei@ThinkPad-X1:~$ avr-size --mcu=atmega328p -C /tmp/build8054757072674598525.tmp/Luftsensor.cpp.elf AVR Memory Usage ---------------- Device: atmega328p Program: 8332 bytes (25.4% Full) (.text + .data + .bootloader) Data: 811 bytes (39.6% Full) (.data + .bss + .noinit)
> fatal error: DHT.h: No such file or directory > compilation terminated. Und ja, bei den Arrays tippe ich auch auf Ram Mangel.
OK, der Datenspeicherbedarf ist ein wenig zu groß.....
1 | pindrei@ThinkPad-X1:~$ avr-size --mcu=atmega328p -C /tmp/build8054757072674598525.tmp/Luftsensor.cpp.elf |
2 | AVR Memory Usage |
3 | ---------------- |
4 | Device: atmega328p |
5 | |
6 | Program: 10034 bytes (30.6% Full) |
7 | (.text + .data + .bootloader) |
8 | |
9 | Data: 2341 bytes (114.3% Full) |
10 | (.data + .bss + .noinit) |
Dann werde ich das Programm einmal anpassen, kann ich bei der Tollen IDE die Speichergrößen-Ausgabe nach dem Compilieren anhängen?
Pindrei P. schrieb: > Dann werde ich das Programm einmal anpassen, kann ich bei der Tollen IDE > die Speichergrößen-Ausgabe nach dem Compilieren anhängen? Die 1.6.5 macht das automatisch. Stopfe die Arrays ins Flash.
Ulrich F. schrieb: > Stopfe die Arrays ins Flash. Ja ich glaube das ist eine sinnvolle Lösung. Ich verwende die Arduino IDE 1.05. Danke für eure Hilfe. Wenigstens hat es am Speicher gelegen und ich stehe nicht ganz so dämlich da. Hab halt nur an der falschen Stelle gesucht.... :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.