Hallo Besucher, der Thread wurde 6,7k mal aufgerufen und enthält 9 Antworten

letzter Beitrag von Shadowolf am

MMC2IEC v0.9 mit Bootloader

  • Am 10.7. schon habe ich Lars eine Mail wegen dem Bootloader geschickt,
    er scheint allerdings verreist zu sein oder so...


    Wie auch immer, da ich die Software für meine neue Hardware ohnehin noch überprüfen wollte habe ich die 0.8 von Lars gerade mal neu auf meine Hardware gepatcht und den Bootloader-Support in den Griff bekommen.


    :prof:
    Edit: Wichtig, die Software funktioniert *nicht* mit der Hardware von Lars!
    :prof:



    Das angehängte Archiv enthält zwei Verzeichnisse:


    mmc2iec_08_09_diff


    Da sind die Dateien drin die ich gegenüber der 0.8 von Lars verändert habe.
    Die "mmc2iec.aps" ist die AVR-Studio Projekt-Datei und diese enthält jetzt eine wichtige Änderung für den Bootloader.
    Einfach meine Dateien über die 0.8 von Lars kopieren und mit "make" compilieren funktioniert nicht da dafür das makefile von Lars auch geändert werden müsste.


    bootloader


    Da ist alles drin was den Bootloader ausmacht:
    - der komplette von mir nur leicht eingestellte Source-Code wie er auch auf MikroController.net zu finden ist ("HolgerBootloader2").
    - der Bootloader in binär-Form zum flashen in den Mega32 ("bootloader-bin").
    - das Programm hex2bin aus den Tiefen des Internets um eben aus der .hex eine .bin zu machen
    - das Programm crcgen aus dem Bootloader-Projekt mit welchem in der .bin eine Checksumme eingetragen wird
    - MMC2IEC09.hex und MMC2IEC09.bin fertig für *meine* Hardware


    Die Vorgehensweise ist so, dass lediglich der Bootloader mit einem Programmier-Tool in den Mega32 gebrannt wird.
    Dabei wird mit BOOTRST=0 der Boot-Vektor aktiviert und mit BOOTSZ=01 wird der 1024 Worte grosse Boot-Sektor bei Adresse $3C00 ausgewählt.
    Ansonsten gilt wie vorher auch, dass nur der Takt auf 8MHz interner Oscillator gestellt wird mit CKSEL=0100 und SUT=10.
    Die restlichen Fuses kann man mit meiner Hardware ignorieren.


    Gestestet habe ich sowohl den Bootloader als auch die MMC2IEC09 gerade erfolgreich mit der ersten Platinen-Version die ich hergestellt habe (1.3) als auch mit der aktuellen Version 1.6.


    Von den 1.4 und 1.5 habe ich alle rausgegeben.
    Mit diesen Versionen muss die Software aber auch funktionieren.
    -> bitte mal Feedback geben!


    Fehlt eigentlich nur noch eine .bat die erst hex2bin und dann crcgen aufruft.

  • Das Feedback hier haut mich ja glatt um. :roll:


    Wie auch immer. :hammer: :hammer: :hammer:


    Der Bootloader war nicht ganz sauber, in der "main.c" hatte ich vergessen noch etwas ausprobier-gefrickel rauszunehmen.


    Dann ist in diesem Archiv ein anderes hex2bin von Holger Klabunde enthalten.
    Mit diesem wird nicht belegter Platz im .bin mit 0xff gefüllt, das andere Tool hat unnötigerweise mit 0x00 gefüllt.


    Zur Konvertierung habe ich noch eine kleine .bat geschrieben: convert_mmc2iec.bat



    Und schliesslich hängt noch die Datei "mmc2iec_dragon_autoset.bat" an mit der per Doppelclick vom Desktop der Mega32 erst gelöscht wird, dann der Bootloader aufgespielt wird und schliesslich noch die Fuses korrekt gesetzt werden.


    Für die STK200 Adapter die mit PonyProg benutzt werden geht das bestimmt auch irgendwie - nur habe ich auch wenig Lust mir zum Rumspielen so ein Ding zu bauen.
    Zum Programmieren käme dann AVRDude zum Einsatz.



    Insgesamt scheint mir der Bootloader noch ein wenig zickig zu sein und benötigt schon mal ein paar Resets um richtig anzulaufen.
    Andererseits ist mir heute aber auch aufgefallen das eines meiner Adapter-Kabel wohl eine Macke hat...

  • Zitat

    Originally posted by Shadowolf
    Der Bootloader war nicht ganz sauber, in der "main.c" hatte ich vergessen noch etwas ausprobier-gefrickel rauszunehmen.


    Leider kommt mir diese Idee etwas zu spät für die erste Lieferung... Aber ich muss meinen DTV auch nochmal aufschrauben. ;-)


    Der angehängte Bootloader ist geringfügig modifiziert: Wenn die Programmversion im Flash oder die auf der Karte die Versionsnummer 0 hat wird auf jeden Fall ein Update ausgeführt.


    Sinn dahinter: Man kann problemlos Testversionen unters Volk streuen ohne sich Sorgen über die schon verwendeten internen Versionsnummern machen zu müssen. Die mit 0 markierten Testversionen werden auf jeden Fall geflasht und eine mit einer normalen Nummer markierte reguläre Version kann die immer ersetzen.


    Wenn jemand mit einem alten Bootloader so eine Testversion auf seine Karte kopiert ist das auch kein Problem, 0 ist garantiert älter als die Version im Flash und wird daher nicht aufgespielt.

  • Sodele,


    ich habe gestern endlich ein 1.6er aufgebaut, und wollte den Bootloader aufspielen (Unseen Version). Der tat aber erstmal gar nichts. Nach diversen Versuchen mit Fuse Einstellungen und dem Shadowolf Bootloader ohne Erfolg, hab ich einfach die Firmware direkt aufgespielt -> läuft.


    Also kein Hardwarefehler. Aber woran lags? Der Bootloader mag meine Karten nicht! Ich hatte das mit einer 32MB SanDisk RS-MMC und einer 2GB Toshiba SD Card probiert, die übrigens von der MMC2IEC Firmware problemlos akzeptiert werden. Erfolg hatte ich erst mit der 256MB SD Card aus meinem TomTom!


    Inzwischen ist also der Unseen Bootloader auf dem Gerät und funktioniert :)


    So als Tipp, falls noch andere Leute Probleme haben mit dem Bootloader ...


    Ach ja, in Ponyprog hab ich die Fuses wie folgt gesetzt, in Anlehnung an Antabakas Grundsettings: