Hello, Guest the thread was called1.4k times and contains 15 replays

last post from DerSchatten at the

newboot v0.1 (noch ein Bootloader)

  • Hi!


    Wie schon vor sehr langer Zeit angedroht habe ich den Bootloader mal komplett neu geschrieben. Jetzt kann das Ding FAT16 und FAT32 (sowie auf allem ausser uIEC/SD auch FAT12) mit MMC, SD und SDHC-Karten, die zur Zeit sogar ein wenig zuverlässiger initialisiert werden als in sd2iec selbst (wird natürlich dahin zurückfliessen). Natürlich ist dieser neue Bootloader kompatibel mit den bisherigen .bin-Dateien, verhält sich auch hinsichtlich der Versionsnummern und der Testversionskennung genauso und interessiert sich genauso wie der alte Bootloader nicht für Dateinamen. Im Vergleich zum alten Bootloader ist der neue allerdings langsamer beim Starten des Hauptprogramms, wenn noch potentielle Update-Dateien (d.h. Dateien mit passender Grösse) auf der Karte liegen.


    Als zusätzliches Usability-Feature wird jetzt nicht nur einfach die rote LED eingeschaltet während der Bootloader läuft, sondern sie blinkt sogar zwei Sekunden lang, wenn im Flash des AVRs keine gültige Applikation gefunden wurde. Danach wird einfach wieder nach einem Update gesucht bis endweder die Applikation gültig ist und gestartet werden kann oder jemand den Strom abschaltet. Die grüne LED leuchtet bei Kartenzugriffen und flackert hektisch beim Flashen.


    Quellcode hier, Hexfiles für die üblichen Hardwarevarianten hier. Für zwanghafte Selbstcompilierer ist es evtl. interessant, dass newboot mit der gleichen config-Datei compiliert werden kann wie sd2iec um einen für die gleiche Hardware passenden Bootloader zu bauen.

  • Also bei mir läufts durch.
    Allerdings kommt dann das hier:


  • ...was mache ich falsch?


    Gute Frage, lösch doch bitte mal die Verzeichnisse .dep und obj-m644p-larsp und compilier mal mit "make CONFIG=config-larsp V=1". Wenn der Fehler dann immer noch auftritt würde mich interessieren, ob in obj-m644p-larsp/autoconf.h irgendwas drinsteht.


    Code
    1. D:\Downloads\Boot>make CONFIG=config-larsp
    2. (...) HOSTCC crcgen-new.c
    3. process_begin: CreateProcess(NULL, gcc -Wall -Werror -o crcgen-new -O crcgen-new
    4. .c, ...) failed.
    5. make (e=2): Das System kann die angegebene Datei nicht finden.
    6. make: *** [crcgen-new] Error 2


    Du hast keinen gcc für das Hostsystem installiert, deswegen kann crcgen-new nicht gebaut werden. Der Bootloader ist an dem Punkt aber schon vollständig compilert.

  • Gute Frage, lösch doch bitte mal die Verzeichnisse .dep und obj-m644p-larsp und compilier mal mit "make CONFIG=config-larsp V=1". Wenn der Fehler dann immer noch auftritt würde mich interessieren, ob in obj-m644p-larsp/autoconf.h irgendwas drinsteht.


    Fehler gefunden und behoben.


    Ich hatte in conf2.awk das Erzeugen der Zeitangabe auskommentiert, weil das OSX-awk kein strftime kennt. Dabei war mir der Backslash am Ende der Zeile entgangen, der dafür sorgte, dass ich gleich die nächsten beiden Zeilen mit auskommentierte. Jetzt läuft's durch - vielen Dank für den neuen Bootloader! :-)

  • Ich hatte in conf2.awk das Erzeugen der Zeitangabe auskommentiert, weil das OSX-awk kein strftime kennt. Dabei war mir der Backslash am Ende der Zeile entgangen, der dafür sorgte, dass ich gleich die nächsten beiden Zeilen mit auskommentierte.


    Du könntest alternativ im Makefile gawk eintragen, das sollte strftime kennen. Ursprünglich war das auch mal so, aber FreeBSD-Nutzer mögen das nicht so.


    Wahrscheinlich ersetze ich den awk-Kram mal gelegentlich durch ein Perl-Script, da sind weniger Versionsprobleme zu erwarten und die Konfiguration kann etwas flexibler werden.

  • Ich habe jetzt auch den aktuellen Bootloader auf eine LarsP Platine aufgespielt und wollte anschließend die selbstkompilierte 644-larsp flashen.
    Beim Anstecken der Platine leuchten zuerst beide LEDs. Dann blinkt die rote. Dann leuchten wieder beide LED's usw....


    Wenn ich dann die Karte mit der sd2iec.bin einlege blinkt die rote led etwa 7 mal und die grüne anschließend 1 mal.
    Dieser Vorgang wiederholt sich dann unendlich oft.


    Stimmt da etwas mit dem Bootloader nicht oder mit der Software?

  • Beim Anstecken der Platine leuchten zuerst beide LEDs.


    Kartenzugriff


    Quote

    Dann blinkt die rote.


    Kein Update gefunden und keine gültige Firmware im Flash


    Quote

    Dann leuchten wieder beide LED's usw....


    Nächste Runde: Wieder Kartenzugriff


    Quote

    Wenn ich dann die Karte mit der sd2iec.bin einlege


    Warum erst jetzt?


    Quote

    blinkt die rote led etwa 7 mal und die grüne anschließend 1 mal.


    Wieder keine gültige Firmware im Flash gefunden


    Quote

    Dieser Vorgang wiederholt sich dann unendlich oft.


    Erst ab dem hier erfolgenden Aufleuchten der grünen LED kann davon ausgegangen werden, dass die Karte den Anfang der Initialisierungssequenz überhaupt mitbekommt.


    Quote

    Stimmt da etwas mit dem Bootloader nicht oder mit der Software?


    Woher stammt die sd2iec.bin und wie gross ist sie?

  • Kompiliert aus der aktuellen Source von hier: http://sd2iec.de/cgi-bin/gitweb.cgi?p=sd2iec.git;a=summary
    Der Vorgang wurde auch ohne Fehler abgeschlossen:



    Die .bin ist anschließend 62.666 Bytes groß.

  • Die .bin ist anschließend 62.666 Bytes groß.


    Und damit zu gross für einen ATmega644, bei dem das Binary vom Bootloader nur akzeptiert wird wenn es exakt 61440 Byte hat.

  • Wo liegt dann der Fehler?
    Muß etwas an der CONFIG geändert werden?


    Allerdings habe ich die gleiche bin auch mit einem ATMEGA128 versucht. Ging ebenfalls nicht.
    Ich vermute mal das nicht korrekt kompiliert wurde.


    Nachtrag:
    Habe jetzt mal die LCD-Unterstützung deaktiviert. Die kompilierte Datei ist danach exakt 61.440 Bytes groß.
    Allerdings ändert das leider nichts an dem Problem. Die ganze Sache blinkt weiterhin wild vor sich hin.

  • Wo liegt dann der Fehler?
    Muß etwas an der CONFIG geändert werden?


    Was weiss ich woran du gedreht hast, bei mir ist das Compilat des aktuellen master-Branches deutlich kleiner und noch im Grössenlimit. Unterschiedliche Compilerversionen liefern zwar typischerweise unterschiedlich grosse Binaries, aber so gross sollte der Unterschied eigentlich nicht sein.


    Quote

    Allerdings ändert das leider nichts an dem Problem. Die ganze Sache blinkt weiterhin wild vor sich hin.


    Mich würden mal die letzten 8 Byte der .bin-Datei interessieren, die auf der Karte liegt. Dummerweise fällt mir gerade kein Weg ein um die mit Windows-Bordmitteln auszulesen.


    Ausserdem wäre es wichtig zu wissen, ob der Inhalt von http://www.sd2iec.de/sd2iec-0.10.1-binaries.zip vom Bootloader von der betroffenen Karte oder einer anderen akzeptiert wird.

  • Ok, mit den vorkompilierten Dateien funktioniert das flashen problemlos.
    Tja, hat jetzt wohl wenig Sinn der Sache nachzugehen, will dich damit auch nicht unnötig belasten.


    Drann geschraubt hab ich nichts. Das originale Archiv genommen und unter Windows kompiliert.


    Das einzige was mir noch dazu einfällt wäre, dass ich noch die "alten" crcgen-new.c und crcgen-new.exe von hier dazu verwendet habe.
    Vielleicht liegt da ja das Problem.


    Sind die fertigen .bin mit oder ohne LCD-Support kompiliert?

  • Das einzige was mir noch dazu einfällt wäre, dass ich noch die "alten" crcgen-new.c und crcgen-new.exe von hier dazu verwendet habe.


    Die im Bootloader-Archiv sollten nahezu identisch sein und zumindest die gleichen Tags an der Datei erzeugen


    Quote

    Sind die fertigen .bin mit oder ohne LCD-Support kompiliert?


    In der 0.10.x mit

  • hm, sind sie nicht. Zumindest nicht von der Dateigröße her.
    1786 Bytes zu 3500 Bytes


    Das Compilat hat dennoch 62666 Bytes mit LCD-Support.
    Egal.


    Ich hängs mal an, falls dus dir trotzdem ansehen möchtest.