Hello, Guest the thread was called2.1k times and contains 33 replays

last post from Kongo-Otto at the

Neue SD2IEC-Firmware über Arduino ISP mit der Arduino IDE flashen

  • Hallo,


    ich habe ein SD2IEC (LarsP Lochraster Layout) mit einem Atmega 644P und der Firmware 0.10.3. mit 6-poliger ISP-Schnittstelle zum Programmieren. Hierfür habe ich einen Arduino Uno mit einem AVR ISP Programmier-Shield darauf. Als Firmware habe ich aus der IDE den Sktech Arduino as ISP draufgespielt. Nun möchte ich die neueste SD2IEC-Firmware 1.0.0 auf den Atmega644P spielen. Auf der SD2IEC-Seite gibt es die Binärdatei meiner Version "...larsp-m644p.bin". Die kann ich aber mit der Arduino IDE nicht flashen (.ino Dateien benötigt). Also dachte ich mir, ich nehme einfach die source-Datei und kompiliere diese mit der Arduino IDE, aber die Source sind ja Seitenweise Dateien config.h, main.c usw. und ich vermute, dass man in diesen Dateien erst einstellen muss, welches SD2IEC Layout man verwendet etc., also für mich viel zu kompliziert. Also langer Rede kurzer Sinn:


    Gibt es eine Möglichkeit, die Firmware mit dem Arduino ISP Prgrammer über die Arduino IDE hochzuladen ? Falls das nicht über die Arduino IDE geht, mit welchem Programm könnte ich dann den Arduino ISP zum Hochladen verwenden ?


    Grüße,
    Ralf

  • ich habe ein SD2IEC (LarsP Lochraster Layout) mit einem Atmega 644P und der Firmware 0.10.3.

    Gibt es eine Möglichkeit, die Firmware mit dem Arduino ISP Prgrammer über die Arduino IDE hochzuladen ?

    Ja, aber warum sollte man? Kein Bootloader drauf?


    Ansonsten einfach die Binarys nehmen.
    https://sd2iec.de/nightlies/


    Uffbasse: Fuses richtig setzen. ;)

  • Was für ein Slang.


    Du hast ein SD2IEC als LarsP mit 644p herumliegen und möchtest die aktuelle Firmware da drauf bekommen. Mangels Bootloader willst du das händisch machen. Brachte 0.10.3 schon einen Bootloader mit?
    Du hast kein AVR Programmiergerät sondern nur ein Arduino mit einen passenden Shield darauf der eben da ISP sprechen kann.
    Dein Problem ist jetzt nicht das Binary der Firmware an sich sondern dein Arduino/ISP Gebastel das nicht weis wie es ein *.bin in den AVR Stein bekommt.

  • Hallo,


    ich habe keine Ahnung, ob die V0.10.3 einen Bootloader hat. Ich hatte das SD2IEC vor langer Zeit aufgebaut und da ist eine 6-polige ISP-Schnittstelle drauf. Mit welchem Programm kann ich denn die Bin-Datei auf den Atmega bringen ? Kann ich überhaupt mit dem Arduino ISP Programmer bin-Dateien flashen ?
    Bei dem Programmer Shield handelt es sich um folgendes Ebay Angebot: 143018588347


    Grüße,
    Ralf

  • Ich sag mal "avrdude" und ein paar Drähte an einem seriellen oder parallelen PC-Anschluss

  • Die Anleitung hatte ich per E-Mail bekommen, sie ist ca. 1.6 MB groß, also leider zu groß um sie hier hochzuladen. Darin wird neben dem Zusammenlöten des Bausatzes das Flashen der arduino isp programmer firmware in den uno (habe ich schon gemacht) und dann das flashen einer firmware in einen Atmega (entweder im Textool-Sockel oder über ISP-Kabel angeschlossen) beschrieben. Es wird aber nur das Flashen mit der arduino ide beschrieben und die benötigt eine "xxx.ino" Datei, also einen mit der ide kompilierten Quellcode. Allerdings wird in der Anleitung auch eine Software "AVR Burn-O-Mat" beschrieben, ich muss mal schauen, ob ich evtl. damit weiter komme.


    Grüße,
    Ralf

  • So ich habe mir jetzt mal winavr und die zugehörige GUI Burn-o-mat installiert. Der Arduino wird als Programmer unterstützt. Allerdings ergibt sich schon mein nächstes Anfängerproblem: Der burn-o-mat akzeptiert nur hex-files. Die sd2iec-Firmware gibt es aber nur als bin-file. Kann man das bin irgendwie nach hex wandeln ? Oder kann ich einen Bootloader flashen, sodass dann die firmware von der SD-Karte installiert wird ?


    Grüße,
    Ralf

  • Oder kann ich einen Bootloader flashen, sodass dann die firmware von der SD-Karte installiert wird ?

    Ja, einfach den Newboot (newboot-0.4.1-larsp-m644p.hex) drauf machen, denn den gibt es als Hex-File und dann die Bin via SD-Karte flashen (der Bootloader sucht sich die passende aus, somit kannst Du alle Bin-Files erstmal ins Root der SD-Karte packen)


    Die Fuse-Bits musst Du noch für den Bootloader anpassen:
    Low-Byte = EF
    High-Byte = 92 <--
    Extended-Byte = FD

  • Hmm der AVR Burn-o-mat gibt mir beim Auslesen der Fuses immer folgende Fehlermeldung:


    avrdude.exe: stk500_getsync(): not in sync: resp=0x00


    Also kommt irgendwie keine Synchronisation zustande. Im Burn-o-mat gibt es ja noch die Oszillator/clock options. Beim Atmega ist ein 8 Mhz Quartz. In der Brennsoftware ist ein Haken bei "divide system clock by 8". Außerdem kann bei den Quartz - Optionen zwischen slow und fast rising power und brown out detection enable gewählt werden. Was muss ich da einstellen, damit die Synchronisation klappt ?


    Grüße,
    Ralf

  • Ich sag mal "avrdude"

    ich klinke mich da kurz ein.....
    ja welches avrdude? wenn ich das in google eingebe dann finde ich lauter verschiedene... http://download.savannah.gnu.org/releases/avrdude/
    welche soll man nehmen?

  • welche soll man nehmen?

    Ich würde es mal mit dem neuesten probieren: avrdude-6.3-mingw32.zip
    (Ich gehe davon aus, es soll für Windows sein.)

  • Ich habe jetzt mal das neueste avrdude im winavr-Paket installiert. Jetzt sieht das Ergebnis (read fuses) so aus:


    C:\WinAVR\bin\avrdude.exe -C C:\WinAVR\bin\avrdude.conf -p m644 -P com3 -c arduino -F -U efuse:r:C:\Users\Ralf\AppData\Local\Temp\efuse6345695288732946414.hex:r -U hfuse:r:C:\Users\Ralf\AppData\Local\Temp\hfuse3761821493344372790.hex:r -U lfuse:r:C:\Users\Ralf\AppData\Local\Temp\lfuse3445168919804042448.hex:r
    avrdude.exe: stk500_recv(): programmer is not responding
    avrdude.exe: stk500_getsync() attempt 1 of 10: not in sync: resp=0x0f
    avrdude.exe: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe0
    avrdude.exe: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0
    avrdude.exe: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0
    avrdude.exe: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
    avrdude.exe: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe0
    avrdude.exe: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe0
    avrdude.exe: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0
    avrdude.exe: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
    avrdude.exe: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0



    avrdude.exe done. Thank you.


    Sieht so aus, als ob kein Kontakt mit dem Programmer besteht. Offenbar wird ja trotz Auswählen von "arduino" als Programmer der stk500 gewählt !?


    Grüße,
    Ralf

  • Gibt's im Configfile denn einen entsprechenden Eintrag für den Arduino?

  • Ja, dort kann ich "arduino (Arduino)" auswählen. Ich habe auch mal "avrisp (Atmel AVR ISP)" probiert. Offenbar kann ich irgendeinen Programmer auswählen, es kommt bei der Fehlermeldung immer "stk500 ....". Ich habe allerdings bisher nichts anderes gemacht, als "read fuses" probiert.
    Ansonsten habe ich alle Verbindungen vom arduino zum shield, das ISP-Kabel vom Shield zur Buchse auf der LarsP Lochrasterplatine und von der Buchse zum Atmega 644p geprüft. Alle Verbindungen SCK, MISO, MOSI, RESET, GND und 5V stimmen. Auf dem Shield sind noch ein paar Dioden: Eine pulsierende Diode "Heartbeat", eine rote LED "Error" und eine gründe LED "Programming". Nach dem Initialisieren pulsiert die Heartbeat LED. Wenn ich die Fuses lesen will, leuchtet die Heartbeat dauerhaft und die Error LED geht an.


    Grüße,
    Ralf

  • Du hast Windows? In welchem Ordner liegt avrdude? Liegt das Configfile ebenfalls in diesem Ordner?


    [EDIT]


    Wer lesen kann ist klar im Vorteil ... :rolleyes:
    Wo liegt das Configfile? Evtl. gibst du es mal mit "-C <pfad>" an?


    [/EDIT]

  • Das Configfile liegt in: C:\WinAVR\bin\avrdude.conf


    Der Burn-o-mat hat ja zum lesen der Fuses folgende Kommandozeile erzeugt:


    C:\WinAVR\bin\avrdude.exe -C C:\WinAVR\bin\avrdude.conf -p m644 -P com3 -c arduino -F -U efuse:r:C:\Users\Ralf\AppData\Local\Temp\efuse6345695288732946414.hex:r -U hfuse:r:C:\Users\Ralf\AppData\Local\Temp\hfuse3761821493344372790.hex:r -U lfuse:r:C:\Users\Ralf\AppData\Local\Temp\lfuse3445168919804042448.hex:r


    Dort taucht der korrekte Pfad nach dem .... avrdude.exe -C auf.


    Grüße,
    Ralf