- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 29

Thema: [Gemeinschaftsprojekt] Opensource RP6Loader

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523

    [Gemeinschaftsprojekt] Opensource RP6Loader

    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen,
    wie hier ja in letzter Zeit schon rege diskutiert wurde, geht es darum, einen freien und quelloffenen RP6Loader zu schreiben.

    Kurz zu meiner Person: Ich bin 18 Jahre alt und programmiere seit ungefähr 5 Jahren.
    Erfahrungsmäßig traue ich mir das auf jeden Fall zu und Suche jetzt eigentlich nur noch ein paar Leute,
    die ebenso Spaß daran hätten am Loader mitzuarbeiten.

    Der derzeitige Loader von SlyD ist in Java geschrieben und leider nicht Opensource.
    Das liegt daran, das man verhindern möchte, dass der Code in Raubkopien des RP6 verwendet wird.

    Allerdings gefällt mir der Loader nicht wirklich gut.
    Er tut zwar seinen Dienst, allerdings gibt es doch einige Verbesserungen und Kritikpunkte.
    • Alt: Der Loader ist schon relativ alt und wird, so wie ich das sehe, auch nicht weiter gepflegt.
      Ich hatte am Anfang schon Probleme ihn auf Win 7 zum Laufen zu bringen
    • Langsam: Der Loader ist leider was das Starten und Verbinden betrifft echt langsam. Eine schnellere Variante wäre schön!
    • Unflexibel: Manchmal könnte man auch etwas komplexere Kommandozeilen-Parameter wie -Silent gebrauchen.
      Dort könnte der Loader alles von alleine machen.
    • (Hässlich): Naja, über das Design kann man sich jetzt streiten, mir persönlich gefällt es jedenfalls nicht.
      Ein klares Design, den Microsoft-Richtlinien entsprechend wäre mir lieber.

    Aufgrund dieser Dinge habe ich beschlossen, einen eigenen modernen Loader zu schreiben.

    Es gibt bei diesem Projekt ein paar Teilbereiche:
    • Die Programmierung selbst: Eigentlich hier der einfachste Teil. Es muss eine GUI erstellt und alles benutzerfreundlich dargestellt werden.
    • Nachforschungen und Recherchen: Da wir leider den Code des alten Loaders nicht haben,
      muss das Protokoll, nach dem Loader und RP6 arbeiten, ersteinmal herausgefunden werden.
      Dazu hat uns SlyD eine Debug-Ausgabe eines Verbindungslogs gegeben.
      Anhand dessen kann man sehen, was der Loader sendet und was er vom RP6 empfängt.
      Hier liegt der Hauptteil der Arbeit. Es gilt nicht nur herauszufinden, was der RP6 wann sendet, sondern auch warum er dies tut.

    Der Loader sollte allerdings nicht so viele Features haben wie der echte.
    Die Displays könnten ruhig wegfallen, da man diese nunmal nicht so oft braucht.
    Prinzipiell könnte man die aber auch einbauen. Sollte aber von der Priorität eher weiter hinten liegen.

    Im Moment würde die Arbeit halt darin liegen, herauszufinden, wie das Protokoll funktioniert.
    Danach kann man sich Gedanken darüber machen, wie das Programm mal aussehen soll.

    Zum Programm selbst: Ich würde es gerne in C# schreiben, weil das einfach meine Lieblingssprache ist.
    Allerdings geht es bei diesem Projekt primär erst einmal darum das ganze zu verstehen.
    Wenn später jemand einen Loader in einer anderen Sprache schreiben will, warum nicht?

    Gerade weil es sich hier um so ein komplexes Thema handelt, können auch Leute mitmachen, die vom Programmieren nicht so viel Ahnung haben.
    Sie könnten dann durchaus auch nur das Protokoll analysieren.

    Falls sich hier wirklich Leute finden, die helfen wollen, wäre es auch keine große Sache sich Webspace zu besorgen und ein kleines Forum zu eröffnen oder so.
    Wie der Datenaustausch aber wirklich abläuft kann man auch später noch klären.
    Sei es per Forum oder Skype oder ICQ oder so, vollkommen egal.

    An Anforderungen gibt es eigentlich nicht soo viel was man mitbringen sollte.
    Neben Teamgeist und auch der Fähigkeit im Team zu arbeiten,
    sollte man vielleicht schon etwas länger mit dem RP6 zu tun haben und
    auch etwas Ahnung vom PC und vom Programmieren haben.

    Wenn also wer Lust hat ein kleines Team zu gründen kann er sich ja einfach mal hier melden.

    Als Anhang noch eine etwas aufgearbeitete Fassung des genannten Debug-Logs.
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    30
    Beiträge
    449
    Hallo

    Ich hätte durchaus Lust an dem Projekt teilzunehmen. Leider wird es mir nicht möglich sein so ein Team zu gründen, da ich kurz vor meiner Abschlussprüfung zu mittleren Reife stehe.

    Aber ich hab schon mal angefangen
    Also, das ist der Code von meinem Programm, dass die Controller-ID im HighSpeed-Modus ausliest. Da es aber jeder verstehen soll hab ich mal nur den Ablauf selbst zusammengeschrieben:
    Code:
    Reset, in dem man RTS für ca. 1-2ms setzt
    
    ComPort im ASCII-Modus öffnen (Low-Speed):
            - 38400 Baud
            - keine Parität
            - 8 Datenbits
            - 1 Stopbit
            - RTS so setzen, dass RP6 nicht
              resettet
    
    
    Warten, bis der RP6 ein "[RP6BOOT]" gesendet hat
    
    Die Erkennungs-ID auslesen:
            - Ein ASCII-Zeichen mit dem Wert 072 senden
            - Warten, bis der RP6 9 Zeichen gesendet hat
            - Base-Board:     082; 080; 054; 058; 001; 001; 004; 005; 000
            - M32-Board:      082; 080; 054; 058; 002; 001; 004; 003: 000
    
    Falls Base-Board angeschlossen: Akkuspannung auslesen:
            - Ein ASCII-Zeichen Wert 149 senden
            - Wartet bis RP6 2 Zeichen gesendet hat
            - Spannung = (ASCII-WERT1+256*ASCII-WERT2)/100
    
    Highspeed setzen:
            - Ein ASCII-Zeichen Wert 53 senden
            - Warten, bis RP6 ein ASCII-Zeichen Wert 70 sendet
            - Comport im ASCII-Modus öffnen (High-Speed):
                      - 500000 Baud
                      - keine Parität
                      - 8 Datenbits
                      - 1 Stopbit
                      - RTS so setzen, dass RP6 nicht
                        resettet
    
    Prüfen, ob RP6 reagiert:
            - Zeichenfolge senden:
              170; 170; 170; 170; 170; 153
            - Warten, bis RP6 170 und 086 sendet
    
    Wieder die Erkennungs-ID auslesen:
            - Ein ASCII-Zeichen mit dem Wert 072 senden
            - Warten, bis der RP6 9 Zeichen gesendet hat
            - Base-Board:     082; 080; 054; 058; 001; 001; 004; 005; 000
            - M32-Board:      082; 080; 054; 058; 002; 001; 004; 003: 000
    
    
    [[ HIER SOLL DER UPLOAD ERFOLGEN ]]
    
    
    ComPort im ASCII-Modus öffnen (Low-Speed):
            - 38400 Baud
            - keine Parität
            - 8 Datenbits
            - 1 Stopbit
            - RTS so setzen, dass RP6 nicht
              resettet
    
    Warten, bis der RP6 ein "[READY]" sendet
    Das ganze ist so auch aus der DEBUG-Ausgabe zu entnehmen, aber ich bin der Meinung, dass es so viel übersichtlicher ist.

    Viel Spaß damit!
    MfG
    -schumi-

    [EDIT] NACHTRAG!!

    Mir ist auch noch was eingefallen was wir impletieren könnten. (Easy zu realieren und sehr praktisch):
    Die *.Hex liegt ja normalerweise im selben ordner wie der Code als *.c
    Man könnte ja jetzt den Code Zeile für Zeile einlesen und dann checken ob entweder ein
    #include "RP6RobotBaseLib.h"
    oder ein
    #include "RP6ControlLib.h"
    enthalten ist. Und da der RP6/M32 beim Verbinden auch seine ID preisgibt könnte man dann kontrollieren, ob der Code auch für dieses Board geschrieben ist. Das verhindert dann das Laden von Code in den falschen Controller, was beim starten des Programms zu beschädigungen führen könnte...

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    30.12.2009
    Ort
    Koblenz
    Alter
    45
    Beiträge
    78
    Auch wenn ich abends nur 1-2 Stunden Zeit habe, bin ich gerne dabei. So muss ich wenigstens noch C# lernen. Aber das sollte nicht so das Problem sein. Funktionales und OO-Programmieren sind mir geläufig. Und kennt man eine Sprache kennt man alle.

    Gruß Magelan
    Ich habe bereits bis Unendlich gezählt. Zweimal, und zurück

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.03.2010
    Beiträge
    205
    Ich bin auch dabei!
    Ich habe schon Erfahrung in Visual-Basic und Visual C# sowie in C++.
    Wir könnten ja mal Skype oder ICQ Kontakte austauschen.
    Nichts existiert durch sich allein!
    Bild hier  

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Hey, na das klingt doch super Abends 1-2 Stunden sind doch vollkommen ausreichend,
    ich hab ja auch nicht mehr Zeit

    Vielen Dank auch an Schumi =)

    Also ich habe meinen Code jetzt soweit, dass er die verbindung herstellt, den Speed wechselt und den RP6 aufs Flashen vorbereitet.
    Zum Schluss schließt er die Verbindung wieder.
    Jetzt fehlt nur noch der Teil mit dem eigentlichen Flashen.

    Ich würde sagen, dass ich den Code schonmal auf Sourceforge stelle, dann kann man mit allen Mann daran arbeiten und Einsicht darin nehmen.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    30.12.2009
    Ort
    Koblenz
    Alter
    45
    Beiträge
    78
    Mit welcher Umgebung arbeitest Du denn? Vielleicht macht es dann sinn, die ganzen Projektdateien mit anzubieten.

    P.S. Bis jetzt habe ich auf der Sourceforge.Net noch nichts gefunden
    Ich habe bereits bis Unendlich gezählt. Zweimal, und zurück

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    So, ich habe das ganze dann mal schnell auf Sourceforge geladen.
    Hier gehts zur Seite.

    Außerdem habe ich dort ein Forum erstellt, welches bald freigeschaltet werden sollte.
    Da kann man sich dann weiter unterhalten

    Der Code, der dort hochgeladen ist, kann genau das was ich eben gesagt habe.
    Es fehlt jetzt der Teil, bei dem die Daten geladen werden,
    die Checksummen berechnet werden und das ganze an
    den RP6 gesendet wird.

    EDIT: Ich persönlich arbeite mit Visual Studio 2008 Pro, aber der Verwendung von VS 2008 Express sollte auch nichts im Wege stehen.
    2010 verwende ich nicht, da ich dort einen dummen Bug habe, den ich nicht wegbekomme.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    30.12.2009
    Ort
    Koblenz
    Alter
    45
    Beiträge
    78
    OK, dann mal schauen in wie weit es abwärtskompatibel ist. Ich habe vom Studium noch die Version 2005.

    P.S. Ich habe noch nie mit Sourceforge gearbeitet. Wie komme ich an die Dateien. Obwohl ich einen Acc habe, finde ich da nichts
    Ich habe bereits bis Unendlich gezählt. Zweimal, und zurück

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Die Solution-Datei ist nicht kompatibel. Wenn du allerdings eine neue LEERE Solution erstellst und dann meine Projekte hinzufügst müsste es klappen.

    Also du kannst wenn bei dem Projekt bist einmal auf "Code" und dann "SVN Browse" gehen.
    Dort kannst du dir bei dem Punkt "Download GNU Tarball" alles runterladen.

    Außerdem könntest du das SVN auch richtig verwenden.
    SVN ist ja eine Codeverwaltung. Wenn du das willst,
    sollten wir uns aber mal zusammen hinsetzen, dann kann ich dir das erklären.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    So, ich habe hier dann mal ein kleines Forum eingerichtet, bei dem ihr euch anmelden könnt.
    Dort können wir dann in aller Ruhe weiterreden! =)

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen