Go Down

Topic: "Falschen" Prozessor nutzen (Read 3 times) previous topic - next topic

Realizer

Dies kann ich bestätigen ;) Habe mal auch einen Atmega 8 genommen und ihn auf den Arduino gesteckt. Dann ein Blink-Programm mit AtmelStudio geschrieben und über ISP in den Arduino gespielt.

Es gibt dort kein Bootloader. Das Blinkprogramm beginnt sehr zeitnah mit der Abarbeitung des Programmes. Ich bin derzeit sowieso ziemlich hin und hergerissen. Benutze ich Arduino IDE mit dem Bootloader, dann kann ich ohne ISP fast an jedem PC Programme uploaden. Wenn ich einen ISP besitze kann ich die volle Speichermenge des Atmel Controllers ausnutzen.

Nun habe ich doch direkt mal noch eine Frage ;): Wenn ich ein Programm in der Arduino IDE schreibe, dann das Hexfile mittels Atmelstudio in einen Controller schreibe, funktioniert das Programm dann auch ? Oder sind einige Funktionen vom Bootloader abhängig ?

Inwiefern hat der Bootloader mit dem Code zu tun ?
Eine Kuh macht muuhh.
Viele Kuehe machen Muehe

sth77

Der Bootloader hat keinen Einfluss auf den Code, er raubt nur dessen Platz. :D
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Udo Klein

Theoretisch könnte man aus dem Code auf den Bootloader zugreifen um den Flash Speicher als erweitertes EEPRom zu nutzen. Praktisch scheitet es aber daran, daß man ja nicht weiß welcher Bootloader da ist. Soll heissen: theoretisch könnte man den Bootloader auch ausnutzen. Gesehen habe ich sowas aber noch kein einziges Mal.

Jemand der sowas tut weiß genau wie der BL aussehen muß. Alle anderen profitieren eher davon keinen zu haben ;)
Check out my experiments http://blog.blinkenlight.net

Realizer

#8
Oct 12, 2012, 11:46 pm Last Edit: Oct 12, 2012, 11:48 pm by Realizer Reason: 1
Danke Euch allen :) Diese Information ist recht wichtig, wie ich glaube.

Somit kann ich den ordinären Arduino als "Platine" nutzen, weil dort der 6-polige ISP Stecker drauf ist. Dann habe ich noch einen Quartz und eine Steckleiste die es mir ermöglicht, Breadboard schnell und einfach zu integrieren.

Die Lösung, einen Atmega168 zum Programmieren des Attiny`s, (Arduino als ISP), funktioniert nicht wegen Ermangelung des Speichers. Uno kaufen war nicht angesagt. Daher einen Programmer her, der das kann. Ich bereue diese Entscheidung nicht im Geringsten. Nun könnte man meinen, ich komme von dem Arduino weg. Nein ! Die Systeme sind in Kombination eher noch interessanter und durch den FTDI Chip am Diecimila eine Nummer zum lernen und entwickeln. Ich kaufe mir halt nicht jedes Jahr einen neuen Arduino, zumal die neue Generation einen Prozessor hat, der fest eingelötet ist ;)
Eine Kuh macht muuhh.
Viele Kuehe machen Muehe

Late_night

Vielen Dank auch von mir bei Allen, die etwas zur Klärung der Sachlage beigetragen haben. Daß ein Programm, daß ich in der Arduino-IDE geschrieben habe, auch ohne das Vorhandensein eines Bootloaders läuft, war mir nicht so wirklich klar.

Mit dieser Erkenntnis ausgestattet, würde nun sehr gerne meinen USBasp ständig am Arduino angeschlossen lassen und mein Programm immer mit seiner Hilfe "brennen und sofort starten". Aber die Entwickler der Arduino-IDE werfen mir da ein paar Steine in den Weg.  =(

Wenn ich die Funktion "Upload mit Programmer" aufrufe, dann bekomme ich grundsätzlich eine Messagebox mit dem folgenden Text:
Quote from: Arduino IDE

The connection to the Board failed. This tool can try to fix the issue by disabling and re-enabling the related device.

Auch ein Klicken auf den Button "Fix" führt zu keinem Erfolg.

Wenn ich dagegen meinen ISP-Brenner (wie erwähnt, ein USBasp, was ich natürlich auch im Menü der Arduino-IDE angegeben habe) von einem anderen Programm aus starte (wie z.B. Khazama AVR Programmer oder eXtreme Burner AVR), dann funktioniert er ganz prima und schreibt mir nach Herzenslust HEX-Files in den ATMega. Es liegt also wohl nicht an der Hardware.

Nun könnte ich ja auch einfach auf das Brennen aus der Arduino-IDE heraus verzichten und mein HEX-File mit Hilfe eines dieser Programme "zu Fuss" brennen. Aber dazu muss ich es erst einmal finden.

Eine Suche nach der Stelle, an der ich suchen soll, führte mich zu der folgenden Information:
Quote from: Arduino Cookbook

The compiler produces a number of object files (files with an extension of .o that will be combined by the link tool). These files are stored in /tmp on Mac and Linux.
On Windows, they are in the applet directory (a folder below the Arduino install directory).

The object files are then linked together to make a hex file to upload to the board. Avrdude, a utility for transferring files to the Arduino controller, is used to upload to
the board.

Auf meinen PC mit Windows XP bezogen ist das schlichtweg falsch. Ich habe zwar ein "applet"-directory gefunden, aber das ist leer ...

Nach längerem Suchen wurde ich dann im Verzeichnis "C:\Dokumente und Einstellungen\<Windows-Nutzer-Name>\Lokale Einstellungen\Temp\" fündig. Hier legt die IDE bei jedem Compiliervorgang ein Verzeichnis mit dem Namen "build<irgendeineZahl>.tmp" an. Wenn ich dort suche, finde ich mit viel Glück alle HEX-Dateien meiner bisherigen Versuche, und auch noch viele weitere Dateien, die mir die Festplatte zumüllen. In welchem Unterverzeichnis ich allerdings suchen soll, muß ich mühsam selbst herausfinden.

Einmal habe ich mir jetzt die Mühe gemacht, die richtige HEX-Datei anhand des Erstellungsdatums herauszusuchen und mit dem externen Brennprogramm auf meinen ATMEGA zu laden. Schau an, es funktioniert!  :smiley-yell:   Und zwar ohne diese durch den Bootloader hervorgerufene ärgerliche 10-Sekunden-Verzögerung nach dem Drücken des Reset-Knopfes. Mein Programm startet sofort, wie ich es haben will. Ganz prima.

Richtig glücklich wäre ich jetzt, wenn mir noch jemand sagt, wie ich

- entweder die Fehlermeldung der IDE wegbekomme, damit die den USBasp richtig erkennt und ich mein Programm mit ihm aus der IDE heraus brennen kann,

- oder aber die IDE dazu veranlassen kann, daß es die HEX-Datei (und wenn möglich, noch mehr "interessante" Dateien, wie z.B. die EEP- und die ELF-Datei) dorthin schreibt, wo auch mein Programm (also die INO-Datei) steht. Dort würden diese Dateien nämlich m.E. eigentlich hingehören ...

Wenn beide Probleme gelöst werden, habe ich auch nichts dagegen.  :)

Hat jemand Ideen?

Gruß

Late_night

Go Up