Hallo! Ich möchte von AVR Prog aus dem AVRStudio auf linux wechseln und da gibt es ja avrdude. Welchen befehl muss ich nutzen, bzw. wo finde ich den wenn ich genauso wie beim AVR Prog einen Atmega32 Prozessor programmieren will. Gibt es beim avrdude eigentlich auch die möglichtkeit z.B. Fusebits und/oder z.B. die Ports des Prozessors als Ausgänge zu definieren? pmb µatthias
Matthias W. wrote: > Welchen befehl muss ich nutzen, bzw. wo finde ich den wenn ich > genauso wie beim AVR Prog einen Atmega32 Prozessor programmieren > will. In der man page bzw. in der info-Page, je nachdem, was du davon installiert hast. Die info-Page lässt sich auch als PS oder PDF generieren, oder aber halt für das info(1)-Kommando. Nach dem zu urteilen, was du über deine Umgebung geschrieben hast, sieht das Kommando ungefähr so aus:
1 | avrdude -p m32 -c avr910 -P /dev/ttyS0 -U yourimage.hex |
/dev/ttyS0 wäre dabei die erste serielle Schnittstelle. Da du von avrprog.exe schriebst, gehe ich davon aus, dass dein Programmiergerät zum AVR910-Protokoll kompatibel ist. Den Namen des Prozessors kann man auch "atmega32" ausschreiben, aber "m32" genügt. Die genannte Option
1 | -U yourimage.hex |
ist dabei die Kurzform für
1 | -U flash:w:yourimage.hex:i |
-U: "update memory" flash: welchen Speicherbereich yourimage.hex: Name der Quelldatei i: es handelt sich um eine Intel-Hex-Datei > Gibt es beim avrdude eigentlich auch die möglichtkeit z.B. Fusebits Ja, natürlich. Die werden aber generell als Zahl (z. B. hexadezimal) angegeben dort. Eine Möglichkeit ist, die Fuses (und auch andere Teile des Speichers, z. B. einzelne EEPROM-Zellen) im sogenannten Terminalmodus interaktiv zu lesen und zu schreiben. Dafür nimmst du statt der -U-Option die Option -t. Da man die Fuses oft nur ein einziges Mal programmieren muss, genügt dieser interaktive Modus sehr oft. Wenn du die Fuses aus der Kommandozeile gleich mit schreiben willst, dann geht das auch mit -U, aber diesmal nur in der Langform. Nehmen wir mal an, du willst deinen ATmega32 auf folgendes einstellen: . On-chip debugging abgeschaltet . JTAG und ISP aktiv . EEPROM wird bei chip erase nicht gelöscht . Resetvektor zeigt auf Applikation . brown-out nicht aktiviert . externer Quarz mit 14,... MHz . Startup-Zeit 16348 Taktzyklen zuzüglich 4,1 ms nach Reset dann ergeben sich laut Datenblatt die high fuse zu 0x81 und die low fuse zu 0xef. Jede Fuse belegt einen eigenen (1 Byte langen) Speicherbereich, die beiden -U-Optionen dafür wären:
1 | -U hfuse:w:0x81:m -U lfuse:w:0xef:m |
Die Namen der Speicherbereiche lassen sich auf den kleinsten
eindeutigen Wert abkürzen, also "hf" und "lf" genügen. Das
,,Datei''format m am Ende besagt, dass der Dateinamen gar keine Datei
benennt, sondern in numerischer Form den zu programmierenden Wert (in
üblicher C-Notation) beinhaltet.
> und/oder z.B. die Ports des Prozessors als Ausgänge zu definieren?
Das wiederum geht nur aus der Applikation selbst, nicht via Fuse und
damit nicht direkt vom Programmer aus.
dankeschön =) sehr detailiert thumbup Werde es ausprobieren sobald ich wieder an meine Hardware komme und berichten. 3 Tage. gruß µatthias
okay. ausprobiert: [root@progchip blinkyled]# avrdude -p m32 -c avr910 -P /dev/ttyS0 -U prog.hex avrdude: avr910_recv(): programmer is not responding [root@progchip blinkyled]# avrdude -p m32 -c avr910 -P /dev/ttyS1 -U prog.hex avrdude: avr910_recv(): programmer is not responding jemand vielleicht eine idee? pmb µatthias debugging: [root@progchip blinkyled]# avrdude -p m32 -c avr910 -P /dev/ttyS0 -U prog.hex -vvvv avrdude: Version 5.3.1, compiled on Mar 2 2007 at 11:28:00 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ System wide configuration file is "/etc/avrdude/avrdude.conf" User configuration file is "/root/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : /dev/ttyS0 Using Programmer : avr910 AVR Part : ATMEGA32 Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PA0 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polle d Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBac k ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- -------- - eeprom 4 10 64 0 no 1024 4 0 9000 9000 0xff 0xf f Block Poll Page Polle d Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBac k ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- -------- - flash 33 6 64 0 yes 32768 128 256 4500 4500 0xff 0xf f Block Poll Page Polle d Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBac k ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- -------- - lfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x0 0 Block Poll Page Polle d Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBac k ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- -------- - hfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x0 0 Block Poll Page Polle d Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBac k ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- -------- - lock 0 0 0 0 no 1 0 0 2000 2000 0x00 0x0 0 Block Poll Page Polle d Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBac k ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- -------- - signature 0 0 0 0 no 3 0 0 0 0 0x00 0x0 0 Block Poll Page Polle d Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBac k ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- -------- - calibration 0 0 0 0 no 4 0 0 0 0 0x00 0x0 0 Programmer Type : avr910 Description : Atmel Low Cost Serial Programmer avrdude: Send: S [53] avrdude: ser_recv(): programmer is not responding avrdude: avr910_recv(): programmer is not responding
warum denn nicht? ~~ gelöst der richtige Befehlssatz lautet: avrdude -p m32 -c avr911 -P /dev/ttyS0 -U flash:w:prog.hex -b 115200
http://janhbade.ja.funpic.de/ hab mal ne GUI für avrdude gebastelt, läuft auch unter linux da Java...
AVR911, dann ist das irgendein neuerer Programmer. Ist der immer oder standardmäßig auf 115200 Bd eingestellt, oder ist das irgendwie eine Compile-Option der Firmware? Wenn das der Default ist, könnte man es auch generell in der avrdude.conf ändern. Die 19200 sind sicher vom AVR910 übernommen worden bzw. entsprechen dem Butterfly-Bootloader (dessen Benutzung gleich ist dem AVR911).
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.