Go Down

Topic: Bootloader aufspielen (Read 1 time) previous topic - next topic

Jomelo

Sep 02, 2010, 09:53 am Last Edit: Sep 02, 2010, 10:13 am by Jomelo Reason: 1
Hi zusammen,

ich bin gerade dabei den Sanguino Bootloader auf eine Atmega644p aufzuspielen.

Dauert das immer so ewig lange ?

Ich arbeite direkt in der Konsole mit avrdude.
Code: [Select]

avrdude -p atmega644p -c avr910 -P com8 -U flash:w:"...Hexfile...":i -U flash:v:"...Hexfile...":i -y

Den Aufruf habe ich in einem Tutorial gefunden und angepasst.

Er ist gerade bei 20%. Bis dahin hat er schon 220 Sekunden gebraucht.

Mir scheint es so, dass er immer erst rechnet und dann das Paket überträgt, da die Dioden vom Programme alle 20 Sekunden ganz kurz aufleuchten.

Geht das bei euch schneller ?


EDIT
Was heist die Meldung:
Code: [Select]

avrdude: verification error, first mismatch at byte 0xf800  0x0c != 0xff
avrdude: verification error; content mismatch

avrdude: safemode: Fuses OK


Versteh ich das richtig, dass das schreiben des Bootloaders fehlgeschlagen ist weil beim Kontrollieren irgendwas nicht stimmt ?

Wie kann man das verhindern und wodran kann das liegen ?  
while(!success){try++;}

Jomelo

Hier nochmal ein Bild des Aufbaues.
Grün sind Brücken von oben.
Rot sind Leiterbahnen von unten.
Das ganze habe ich auf einer Lochraster Platine aufgebaut da erstmal alles ein Experiment ist.

http://nilsfeld.de/r/arduino/images/layout_v1.jpg

Auslesen kann ich den Atmega644p
while(!success){try++;}

Jomelo

Im Make File des Bootloaders steht noch folgendes

Code: [Select]

# Makefile for ATmegaBOOT
# E.Lins, 18.7.2005
# $Id$


# program name should not be changed...
PROGRAM    = ATmegaBOOT_644P

# enter the target CPU frequency
AVR_FREQ   = 16000000L

MCU_TARGET = atmega644p
LDSECTION  = --section-start=.text=0xF800


Haben die  0xF800 was mit meinem Problem zu tun ?
while(!success){try++;}

Jomelo

Hat sich alles erledigt,

brennen kann man den Sanguino erfolgreich mit folgendem aufruf:
Code: [Select]

avrdude -p m644p -c avrisp2 -P usb -B 8 -F -u -U flash:w:"PATH_TO_HEXFILE":i


Und aufpassen sollte man noch bei dem Schaltplan der auf der Sanguino Seite steht  ( http://sanguino.cc/hardware ).
Da ist bei der USBtoTTL Schnittstelle ein kleiner Fehler   Tx und Rx sind vertauscht zum FTDI Programmierer.
while(!success){try++;}

mpeuser

#4
Sep 02, 2010, 08:37 pm Last Edit: Sep 02, 2010, 08:37 pm by mpeuser Reason: 1
Herzlichen Glückwunsch! Tolles Board! Läuft der ENC? Mit welcher Software?

Um 9 Uhr ist natürlich eine schlechte Zeit zum Fragen stellen - da müssen Manche meist "richtig" was tun....

Du hast ja alles alleine rausgekriegt - Ja, man sollte schon wissen, was für eine Programmer man hat. (Als Software kann man da übrigens statt AVRdude auch BASCPM oder myAVR_ProgTool verwenden,  ich finde letzteres etwas intuitiver.)

Die Anleitungen bei Sanguino sind aber wirklich gut.

Die Beschriftungen und das Pinlayout sind nun leider bei jedem USB/TTL Wandler anders... Ich habe hier 5 verschiedene   ;D

Jomelo

#5
Sep 02, 2010, 11:30 pm Last Edit: Sep 02, 2010, 11:31 pm by Jomelo Reason: 1
Also ich versuch die Software vom Etherschild umzuschreiben.

Ich komm nur noch nicht ganz mit den Eingängen klar.

Man definiert in der Software 4 I/O Pins der Enc28j60 braucht aber 5.

Sprich bei denen wird der "int0" eingang (pin4) am enc28j60 irgendwo in der Software gesetzt.

Bei mir ist es aber so das der zweite UART auf int0 liegt und ich somit  int2 für den Enc28j60 vorgesehen habe.

Da bin ich gerade noch am kämpfen das ich das irgendwie hin bekomme.

Hast du das schon mal selber gebaut ?
while(!success){try++;}

Jomelo

Mir stellt sich da schon mal die Frage was das hier bedeutet ?

Code: [Select]

#define waitspi() while(!(SPSR&(1<<SPIF)))


Also  SPSR  und SPIF  habe ich in der  iom64.h  im arduino ordner gefunden.

Aber auf welches Register greift der da zu ? Hat das was mit dem Int eingang vom Enc28j60 zu tun ?
while(!success){try++;}

Jomelo

#7
Sep 03, 2010, 03:16 pm Last Edit: Sep 03, 2010, 03:18 pm by Jomelo Reason: 1
So, habe ihn nun am laufen,  er antwortet auf die Ping anfragen.

Es müssen nur die 4 Pins  (CS/SS, SCK, MISO, MOSI) definiert werden.

Die Software ist hier zu finden.

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1206024602
while(!success){try++;}

Go Up