Frage zu avrdude

Jun 25, 2010 20 Replies

Hallo, ich stehe zur Zeit auf dem Schlauch. Ich möchte bzw. soll (unter Windows) einen selbstgebauten Bootloader in einen ATMega2561 schreiben und zu diesem Zweck AVRDUDE benutzen. Der Bootloader ist 448 Byte lang und soll ab (Wort-)Adresse 0x1FF00 im Flashrom stehen. Trotz mehrfachen Lesens der AVRDUDE-Anleitung finde ich keine Möglichkeit, einen Offset einzugeben. Wenn ich statt der Binärdatei eine Intel-Hex-Datei mit enthaltener Adresse erzeuge, wird der Bootloader zwar auf die korrekte Adresse geschrieben, allerdings werden _alle_ Bytes vorher noch auf 0xFF programmiert (was sie ja schon sind), obwohl das nicht nötig wäre. Die ganze Programmiererei dauert inclusive Verify etwa 225 Sekunden, was also effektiv 2,17 Byte pro Sekunde ergibt - suboptimal.



Habe ich etwas übersehen, gibt es bei AVRDUDE noch irgendwelche Parameter, wie zum Beispiel "ignoriere Bytes mit Inhalt 0xFF" oder "benutze einen Offset von 0x1FF00 Worten (oder 0x3FE00 Byte)"? In der Dokumentation konnte ich nichts darüber finden.



Unschön ist übrigens auch, daß die Ausgaben von AVRDUDE nicht an stdout sondern anscheinend an stderr gehen, ein Aufruf ohne Parameter erzeugt zwar einen Text im Terminalfenster, der aber leider nicht zurückscrollbar ist (hab ich jedenfalls nicht gefunden, bin nicht so der Windows-Spezi). Mache ich da was falsch? Gibt es unter Windows eigentlich die Möglichkeit, stderr in eine Datei umzulenken?



Die Kommandozeile lautet übrigens avrdude -p m2561 -c stk200 -e -E noreset -U flash:w:bm2561_0.hex:i



Hat jemand einen Tip für mich?


MfG Andreas

Andreas Graebe schrieb:

foobar 2> datei.txt

Christian

Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x6DA025CA

Danke für den Tip, tut es hier aber leider nicht. Text rauscht durchs Fenster, 0-Byte-Datei entsteht.

Früher(tm) bei Turbo-C unter Dos gab es spezielle Printf-Versionen, die unmittelbar in den Bildspeicher geschrieben haben, dafür konnte man dann aber auch Farbattribute und Bildschirmpositionen setzen, wimre.

Eventuell wird so ein Mechanismus ja bei AVRDUDE benutzt.

MfG Andreas

Andreas Graebe schrieb:

Was für ein Programmer?

Normalerweise werden pages, die komplett aus 0xff bestehen, übersprungen.

Allerdings gibt die derzeitige Architektur von AVRDUDE da nicht viel mehr her, da alle Eingabedaten intern erstmal in ein flaches Speicherabbild gepresst werden, und die Information, welcher Teil der Daten dabei wirklich aus den Dateien kam, ist an dieser Stelle vergessen.

Irgendwie ist das reichlich suboptimal. Allerdings gebe ich zu, dass ich im Wesentlichen via JTAG programmiere, da sind die Zeiten selbst in so einem Fall noch moderat (der JTAG-Takt beim Programmieren kann unabhängig vom CPU-Takt gewählt werden bzw. die CPU braucht gar keinen Takt zu haben).

Das ist Absicht. stdout ist prinzipiell den Programmierdaten selbst vorbehalten, daher gehen alle Statusmeldungen nach stderr. Auf diese Weise ist es möglich, sowas wie

... -U lfuse:r:-:h | filterprogram

zu machen.

Wenn die Ausgabeumlenkung 2> datei.txt bei dir nicht funktioniert, dann musst du wohl noch mit MS-DOS (ggf. mit "grafischem Betriebssystemaufsatz") und seinem command.com arbeiten. Seit cmd.exe funktionieren normale Unix-Dateiumlenkungen auch in Windows.

Ah, OK, damit erübrigt sich die obige Frage. Diese alten Bitbang- Programmieradapter werden wohl zunehmend weniger gepflegt, da kaum noch jemand Interesse an sowas hat. Ja, kann gut sein, dass dieser Uralt-Code die 0xff noch nicht überspringt. Patches are welcome (bitte in einen patch tracker auf savannah.nongnu.org eintüten).

cheers, J"org .-.-. --... ...-- -.. . DL8DTL http://www.sax.de/~joerg/ NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-)

Glaube ich nicht. Mit "2>" wird allerdings nur der Fehlerkanal umgeleitet. Wenn du es einfach ohne 2 ausprobierst, also

foobar > test.txt

dann wird die Standardausgabe umgeleitet. Um beides umzuleiten, was dann genau dem entspricht, was du im DOS-Fenster siehst (wenn keine der speziellen Consolen-Ausgaberoutinen verwendet wurden), könntest du sowas schreiben:

foobar > test.txt 2>&1

Das geht übrigens auch unter Linux so (zumindest mit der Bash). Eins der wenigen Dinge, wo die beiden Systeme sich nicht unterscheiden.

Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de

Geht wie gesagt hier nicht. Kann natürlich daran liegen, daß mein Uralt- PC zur Softwareentwicklung noch unter DOS läuft, und zur Not mal kurzfristig mit Windows 98 gestartet werden kann.

Ansonsten arbeite ich unter Linux, dort ist das mit der Umleitung kein Problem. Hier muß ich leider unter Windows, ist ne Auftragsarbeit. Und mein Linux-Rechner hat keinen Parallelport. :-(

MfG Andreas

Andreas Graebe schrieb:

[avrdude]

Es gibt doch günstige USP-Programmer, die von avrdude unterstützt werden.

In solchen Fällen habe ich die aufgezwungene Windows-Software in einer virtuellen Maschine betrieben und die Arbeit im Host-Linux gemacht.

Aber mein PC hat auch eine parallele Schnittstelle. (Wo bekommt man denn welche ohne?)

Wenn ich mich richtig erinnere, hatte ich mal das gleiche Problem. Ob ich das mit avrdude gelöst hatte, weiß ich nicht mehr...

Falk

Ja, aber $KUNDE will unbedingt den Parallelportprogrammer nutzen - nichts zu machen. Privat nutze ich einen mySmartUSB light, 15 Euro teuer und mit Gehäuse, läuft mit den meisten CPUs.

Der von denen verwendete Compiler läuft sogar unter wine.

Die meisten neuen PCs haben keine mehr. Natürlich kann man eine entsprechende Karte nachrüsten, aber in meinem Fall handelt es sich um ein Netbook.

Ich habe noch einen selbstgestrickten Programmer, mit dem es läuft. Ist allerdings "made in Eile" und nicht weitergabetauglich ;-)

MfG Andreas

Andreas Graebe schrieb:

Ach so. Ich hatte angenommen, Du müßtest nur Code abliefern. Aber wenn's bezahlt wird...

...

Einen kompletten PC habe ich noch nie gekauft. Und das letzte MB, das ich eingebaut habe, hatte noch 1xRS232/1xLPT.

Da ist wenig Platz und die letzte echte LPT-Karte, die ich gesehen habe, war für PCMCIA.

...

Falk

*Andreas Graebe* wrote on Fri, 10-06-25 22:51:

Mit 4DOS (jetzt offiziell Freeware) >&> (drei Zeichen).

*Andreas Graebe* wrote on Sat, 10-06-26 00:40:

Besorg Dir 4DOS.

Den Code haben sie bekommen, nun gibt es das Problem, daß der Bootloader bereits bei der Fertigung der Leiterplatte auf den Controller gebrannt werden soll. Die Karte wird für verschiedene Geräte verwendet, von denen jedes eine serielle Schnittstelle hat. Die Software soll erst nach erfolgter Fertigung mittels Bootloader eingespielt werden. Bei der Fertigung wird der Parallelport-Programmer verwendet, das soll (leider) auch so bleiben.

Es sieht wohl so aus, daß ich mein selbstgebautes Programmiertool so umbauen muß, daß es "veröffentlichbar" ist. Egal - es ist Wochenende, und Fußball interessiert mich nicht :-)

MfG Andreas

Andreas Graebe schrieb:

Bliebe nur ein Umsetzer von USB nach Parallel, was um die 15 Euro. Ansonsten hast du leider Recht. Ich habe mir eben die Mainboards bei KM Elektronik angesehen, weder seriell noch parallel, aber bis zu acht Lautsprecher, falls du zufällig ein altes Kino als Wohnzimmer nutzt.

Dieses PC-Gerümpel wird immer verrückter, und ich höre heute schon die Computerhändler mal wieder vom Fortschritt der Technik und vom schnellen Rechner als solchen wimmern, der es leider notwendig macht, daß du deinen funktionierenden Rechner vom letzten Jahr am besten noch während der Garantiezeit dem Recyclinghof anvertraust, denn du willst ja einen schnellen Rechner haben, das weiß der Kistenschieber schon für dich.

Holger

Alzheimer ist ganz toll. Man lernt ständig neue Leute kennen.

Am Fri, 25 Jun 2010 19:38:52 +0000 schrieb Andreas Graebe:

Das Terminal-Icon oben links anklicken, "Eigenschaften" klicken, Reiter "Layout" auswählen, Werte für "Fensterpuffergrösse" (insbesondere Höhe) einstellen. Dann sollte man zurückscrollen können.

Das wäre eigentlich, WIMRE, mit 2>datei, wie schon anderweitig geschrieben.

HTH Martin

Möööööp, funktioniert nicht. Das sind USB-Drucker-Adapter, keine USB- Parallelport-Adapter. Was anderes als IEEE1284 sprechen die nicht.

Gruß Henning

henning paul home: http://home.arcor.de/henning.paul PM: henningpaul@gmx.de , ICQ: 111044613

Klingt interessant. Werde ich mir mal besorgen und ansehen. Die Frage ist allerdings, ob AVRDUDE unter Dos läuft. Ich befürchte, daß nicht. Ich kann auf Windows verzichten, aber ich muß es für einen Auftrag verwenden.

Wenn ich etwas in Assembler programmiere, kann ich das unter purem Dos hervorragend machen. Das geht sogar auf meinem Uralt-Laptop mit 32MB Ram.

Windows habe ich nie gemocht, war höchstens Mittel zum Zweck.

Danke für den Tip.

MfG Andreas

Hallo Andreas,

Wenn der $KUNDE bedeutet, dass dieser etwas von Betreibswirtschaft versteht, dann wird das Problem schnell vom Tisch sein, wenn Du ihm vorrechnest, was der unnötige Aufwand rund um diesen Parallelportprogrammer kostet...

Marte

Schön wärs. Die verwenden eine gekaufte Entwicklungsumgebung, die nur unter Windows (und zum Glück unter wine) übersetzt, der erzeugte Code ist m.E. grottig, miese Optimierung. Der unter dieser Oberfläche integrierte Programmer arbeitet mit dem Parallelportprogrammer zusammen, ob es mit anderen Programmern funktioniert, kann ich nicht sagen. Aussage derer Entwickler ist, daß es mit USB-Programmern Schwierigkeiten gab, also bleibt man beim bewährten. Ein Wechsel des Compilers kommt aber nicht in Betracht, da dieser seit Jahren für etliche Projekte benutzt wird, und man wohl nicht zweigleisig fahren will.

Der unnötige Aufwand kostet die übrigens nichts, ich bekomme eine Pauschale. Vom Betrag her eher uninteressant, mehr so eine Aufwandsentschädigung, das Finanzamt will ja auch leben. Ich mache das eher nicht des Geldes wegen, sonder weil mir Entwicklung Spaß macht (ja, ich bin pervers) und ich diesbezüglich bei meinem Hauptjob unterfordert bin.

Den AVRDUDE hatte ich nur eingebracht, weil es Probleme gab, den von mir in Assembler geschriebenen Bootloader mittels der Oberfläche des Entwicklungspaketes ins Flashrom zu bekommen. War nur als Alternative gedacht, fällt aber aus Laufzeitgründen flach. Muß ich halt mein selbstgestricktes Tool nehmen, damit läuft es ja.

Vielen Dank an Alle, die mir Ratschläge gegeben haben, hier und per PM.

MfG Andreas
*Andreas Graebe* wrote on Sun, 10-06-27 01:01:

Bei mir ist das auch der Untersatz für Win98SE. Du sprachst doch von Batch und Kommandozeile, oder?

Das muss nicht sein. Neuer Programmer, Mitarbeiter muessen geschult werden, Software nicht mehr kompatibel, muss durch den vollen ECO Release, neue SOPs muessen geschrieben werden. Es wuerde ein Rattenschwanz an Folgekosten entstehen. Es hat schon seinen Grund warum sich z.B. der ISA Bus in der Fertigung hartnaeckig haelt. Und man kann ja auch problemlos neue Rechner mit ISA und Parallelport bekommen.

Wer fuer Industriekunden entwickelt oder Software schreibt muss so einen Legacy-Rechner haben. Teuer sind sie wirklich nicht.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required