-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: RP6Loader für .Net oder CLR Schreiben

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.07.2008
    Beiträge
    11

    RP6Loader für .Net oder CLR Schreiben

    Anzeige

    Hi,

    nicht nur, dass der derzeitige RP6Loader sich nicht mit Übergabeparametern, um ihn etwa Silent zu starten, ansprechen läst sondern das er auch noch in Java ist, also nur mit einer Virtuellen Java Maschine läuft,

    hat mich dazu veranlast, einen neuen freien RP6 UART Loader zu Schreiben.

    Diesen möchte ich in Visual C++ schreiben.

    Entscheide ich mich für eine WinGUI ist es mit .NET,
    entscheide ich mich für eine Konsolenanwendung (WinGUI bräuchte man ja bei Silent ja eh nicht) ist es mit CLR. Oder aber jedoch eine Konsolenanwendung in reinem Win32 ohne CLR (Unterschied liegt im Nativen und Management Code).

    Alles an sich gar kein Problem, bleibt nur die Frage welches Protokoll verwendet das UART Modul? Da brauche ich eure Hilfe! Gibt es eine Dokumentation über UART oder gar eine Bibliothek (Lib) für C.
    Könnte ja auch sein, dass einfach per COM Protokoll einfache Strings bzw. chars an das UART gesendet werden, die Zeichenketten Rohdaten und Befehle übermitteln, und je nach Anfrage (Befehl) eine chars zurückkommt.

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    01.07.2008
    Beiträge
    11

    COM ist Klar

    Eine meiner Fragen hat sich schon mit einem blick in den Geräte-Manager erledigt. Es wird ein COM Port Emuliert, was mit den Treibern, die auf den Realen USB Port zeigen, hintelegt ist.

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    33
    Beiträge
    1.514
    Hi,

    ich denke folgende Debug Ausgabe könnte Dir helfen:

    Code:
    PARSING: IHEX, File:D:\RP6\RP6Examples_20080915\RP6BASE_EXAMPLES\Example_01_LEDs\RP6Base_LEDs.hex
    PARSING DONE! CRC16 is 0x0B57
    Baudrate is set to: 38400
    Uploading new program to target device; Range: 0 - 1b38
     (##RTS:true##)  (##RTS:false##)  
     <<
    :10| 
     <<[:91| 
     <<R:82| 
     <<P:80| 
     <<6:54| 
     <<B:66| 
     <<O:79| 
     <<O:79| 
     <<T:84| 
     <<]:93| 
     <<
    :10| 
    Bootloader active "[RP6BOOT]"
    Connected to target!
     >>72|  
     <<R:82| 
     <<P:80| 
     <<6:54| 
     <<::58| 
     <<:1| 
     <<:1| 
     <<:4| 
     <<:5| 
     <<:0| 
    Target ID received:
    RP6: Board ID 1, Firmware Version 1.4, Board Rev.: 5
    ["RP6 Robot Base", 1, MEGA32, 0, 30720, true]
    Board Memory: 0 to 30720 
    RP6 Mainboard, reading Battery voltage...
     >>149|  
     <<î:238| 
     <<:2| 
    Setup High Speed...
     >>53|  
     <<F:70| 
    Speed ACK!
    Change baudrate of USB0 | RP6 USB Interface | ARQYS5FL from 38400 to 500000 OK!
     >>170|  >>170|  >>170|  >>170|  >>170|  >>153|  
     <<ª:170| 
     <<V:86| 
    Got Speed change OK!
     >>72|  
     <<R:82| 
     <<P:80| 
     <<6:54| 
     <<::58| 
     <<:1| 
     <<:1| 
     <<:4| 
     <<:5| 
     <<:0| 
    Link test - Target ID received again:
    RP6: Board ID 1, Firmware Version 1.4, Board Rev.: 5
    Setup OK!
     >>73|  
     <<g:103| 
    Upload in progress...
     >>75|  <<[:91| 
     >>170|  >>128|  >>0|  >>0|  >>12|  >>148|  >>75|  >>1|  >>12|  >>148|  >>137|  >>2|  >>12|  >>148|  >>169|  >>2|  >>12|  >>148|  >>192|  >>3|  >>12|  >>148|  >>94|  >>3|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>128|  >>5|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>246|  >>11|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>104|  >>1|  >>12|  >>148|  >>104|  >>1|  >>76|  >>101|  >>116|  >>39|  >>115|  >>32|  >>103|  >>111|  >>33|  >>32|  >>58|  >>41|  >>10|  >>0|  >>72|  >>101|  >>108|  >>108|  >>111|  >>32|  >>87|  >>111|  >>114|  >>108|  >>100|  >>33|  >>32|  >>77|  >>121|  >>32|  >>110|  >>97|  >>109|  >>101|  >>32|  >>105|  >>115|  >>32|  >>82|  >>111|  >>98|  >>98|  >>121|  >>33|  >>10|  >>0|  >>32|  >>32|  >>32|  >>32|  >>92|  >>95|  >>45|  >>95|  >>45|  >>95|  >>45|  >>95|  >>45|  >>95|  >>45|  >>95|  >>45|  >>95|  >>45|  >>95|  >>45|  >>95|  >>45|  >>95|  >>47|  >>10|  >>10|  >>0|  >>32|  >>32|  >>32|  >>92|  >>124|  >>32|  >>82|  >>80|  >>54|  >>32|  >>32|  >>82|  >>79|  >>66|  >>79|  >>84|  >>32|  >>83|  >>89|  >>83|  >>84|  >>69|  >>77|  >>32|  >>124|  >>47|  >>10|  >>0|  >>10|  >>10|  >>32|  >>32|  >>32|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>95|  >>10|  >>0|  >>84|  >>104|  >>101|  >>32|  >>82|  >>111|  >>98|  >>111|  >>116|  >>32|  >>110|  >>101|  >>101|  >>100|  >>115|  >>32|  >>116|  >>111|  >>32|  >>98|  >>101|  >>32|  >>114|  >>101|  >>115|  >>101|  >>116|  >>116|  >>101|  >>100|  >>32|  >>110|  >>111|  >>119|  >>46|  >>10|  >>10|  >>0|  >>89|  >>111| Write 256b @0 ; CRC16: 0xDDAA
     >>170|  >>221|  >>170|  <<B:66| 
     <<]:93| 
     <<[:91| 
     >>170|  >>128|  >>0|  >>1|  >>117|  >>32|  >>110|  >>101|  >>101|  >>100|  >>32|  >>116|  >>111|  >>32|  >>99|  >>104|  >>101|  >>99|  >>107|  >>32|  >>77|  >>111|  >>116|  >>111|  >>114|  >>32|  >>97|  >>115|  >>115|  >>101|  >>109|  >>98|  >>108|  >>121|  >>32|  >>40|  >>111|  >>114|  >>32|  >>121|  >>111|  >>117|  >>114|  >>32|  >>115|  >>111|  >>102|  >>116|  >>119|  >>97|  >>114|  >>101|  >>41|  >>46|  >>10|  >>10|  >>0|  >>10|  >>10|  >>40|  >>115|  >>46|  >>32|  >>116|  >>97|  >>115|  >>107|  >>95|  >>109|  >>111|  >>116|  >>111|  >>114|  >>67|  >>111|  >>110|  >>116|  >>114|  >>111|  >>108|  >>40|  >>41|  >>32|  >>102|  >>117|  >>110|  >>99|  >>116|  >>105|  >>111|  >>110|  >>32|  >>105|  >>110|  >>32|  >>82|  >>80|  >>54|  >>76|  >>105|  >>98|  >>33|  >>41|  >>10|  >>0|  >>10|  >>10|  >>35|  >>35|  >>35|  >>32|  >>77|  >>79|  >>84|  >>79|  >>82|  >>32|  >>79|  >>86|  >>69|  >>82|  >>67|  >>85|  >>82|  >>82|  >>69|  >>78|  >>84|  >>32|  >>35|  >>35|  >>35|  >>10|  >>0|  >>89|  >>111|  >>117|  >>32|  >>110|  >>101|  >>101|  >>100|  >>32|  >>116|  >>111|  >>32|  >>99|  >>104|  >>101|  >>99|  >>107|  >>32|  >>69|  >>110|  >>99|  >>111|  >>100|  >>101|  >>114|  >>47|  >>77|  >>111|  >>116|  >>111|  >>114|  >>32|  >>97|  >>115|  >>115|  >>101|  >>109|  >>98|  >>108|  >>121|  >>32|  >>40|  >>111|  >>114|  >>32|  >>121|  >>111|  >>117|  >>114|  >>32|  >>115|  >>111|  >>102|  >>116|  >>119|  >>97|  >>114|  >>101|  >>41|  >>46|  >>10|  >>10|  >>0|  >>33|  >>10|  >>10|  >>40|  >>115|  >>46|  >>32|  >>116|  >>97|  >>115|  >>107|  >>95|  >>109|  >>111|  >>116|  >>111|  >>114|  >>67|  >>111|  >>110|  >>116|  >>114|  >>111|  >>108|  >>40|  >>41|  >>32|  >>102|  >>117|  >>110|  >>99|  >>116|  >>105|  >>111|  >>110|  >>32|  >>105|  >>110|  >>32|  >>82|  >>80|  >>54|  >>76|  >>105|  >>98|  >>33|  >>41|  >>10|  >>0|  >>82|  >>73|  >>71|  >>72|  >>84|  >>0|  >>76|  >>69|  >>70|  >>84|  >>0|  >>65|  >>102|  >>102| Write 256b @256 ; CRC16: 0x195D
     >>93|  >>25|  >>170|  <<B:66| 
     <<]:93| 
     <<[:91| 
     >>170|  >>128|  >>0|  >>2|  >>101|  >>99|  >>116|  >>101|  >>100|  >>32|  >>99|  >>104|  >>97|  >>110|  >>110|  >>101|  >>108|  >>58|  >>0|  >>10|  >>35|  >>35|  >>35|  >>32|  >>69|  >>78|  >>67|  >>79|  >>68|  >>69|  >>82|  >>32|  >>40|  >>79|  >>82|  >>32|  >>77|  >>79|  >>84|  >>79|  >>82|  >>41|  >>32|  >>77|  >>65|  >>76|  >>70|  >>85|  >>78|  >>67|  >>84|  >>73|  >>79|  >>78|  >>33|  >>32|  >>35|  >>35|  >>35|  >>10|  >>0|  >>35|  >>35|  >>35|  >>35|  >>35|  >>32|  >>65|  >>76|  >>76|  >>32|  >>79|  >>80|  >>69|  >>82|  >>65|  >>84|  >>73|  >>79|  >>78|  >>83|  >>32|  >>83|  >>84|  >>79|  >>80|  >>80|  >>69|  >>68|  >>32|  >>84|  >>79|  >>32|  >>80|  >>82|  >>69|  >>86|  >>69|  >>78|  >>84|  >>32|  >>65|  >>78|  >>89|  >>32|  >>68|  >>65|  >>77|  >>65|  >>71|  >>69|  >>33|  >>32|  >>35|  >>35|  >>35|  >>35|  >>35|  >>10|  >>0|  >>10|  >>10|  >>35|  >>35|  >>35|  >>35|  >>35|  >>32|  >>69|  >>77|  >>69|  >>82|  >>71|  >>69|  >>78|  >>67|  >>89|  >>32|  >>83|  >>72|  >>85|  >>84|  >>68|  >>79|  >>87|  >>78|  >>32|  >>35|  >>35|  >>35|  >>35|  >>35|  >>10|  >>0|  >>17|  >>36|  >>31|  >>190|  >>207|  >>229|  >>216|  >>224|  >>222|  >>191|  >>205|  >>191|  >>16|  >>224|  >>160|  >>230|  >>176|  >>224|  >>238|  >>226|  >>251|  >>225|  >>2|  >>192|  >>5|  >>144|  >>13|  >>146|  >>170|  >>54|  >>177|  >>7|  >>217|  >>247|  >>17|  >>224|  >>170|  >>230|  >>176|  >>224|  >>1|  >>192|  >>29|  >>146|  >>175|  >>48|  >>177|  >>7|  >>225|  >>247|  >>14|  >>148|  >>106|  >>1|  >>12|  >>148|  >>149|  >>13|  >>12|  >>148|  >>0|  >>0|  >>31|  >>147|  >>14|  >>148|  >>104|  >>7|  >>138|  >>235|  >>144|  >>224|  >>14|  >>148|  >>221|  >>11|  >>142|  >>233|  >>144|  >>224|  >>14|  >>148|  >>221|  >>11|  >>130|  >>232|  >>144|  >>224|  >>14|  >>148|  >>221|  >>11|  >>130|  >>230|  >>144|  >>224|  >>14|  >>148|  >>221|  >>11|  >>132|  >>229|  >>144|  >>224|  >>14|  >>148| Write 256b @512 ; CRC16: 0xE915
     >>21|  >>233|  >>170|  <<B:66| 
     <<]:93| 
     <<[:91| 
    
    
    ... ... ...
    
     <<B:66| 
     <<]:93| 
     <<[:91| 
     >>170|  >>128|  >>0|  >>26|  >>196|  >>240|  >>69|  >>50|  >>180|  >>244|  >>74|  >>48|  >>41|  >>244|  >>151|  >>251|  >>30|  >>244|  >>144|  >>149|  >>129|  >>149|  >>159|  >>79|  >>100|  >>47|  >>119|  >>39|  >>14|  >>148|  >>76|  >>13|  >>128|  >>93|  >>138|  >>51|  >>12|  >>240|  >>137|  >>93|  >>129|  >>147|  >>203|  >>1|  >>0|  >>151|  >>161|  >>247|  >>22|  >>244|  >>93|  >>226|  >>81|  >>147|  >>16|  >>130|  >>201|  >>1|  >>12|  >>148|  >>29|  >>13|  >>220|  >>1|  >>252|  >>1|  >>103|  >>47|  >>113|  >>145|  >>119|  >>35|  >>225|  >>247|  >>50|  >>151|  >>4|  >>192|  >>124|  >>145|  >>109|  >>147|  >>112|  >>131|  >>98|  >>145|  >>174|  >>23|  >>191|  >>7|  >>200|  >>243|  >>8|  >>149|  >>98|  >>159|  >>208|  >>1|  >>115|  >>159|  >>240|  >>1|  >>130|  >>159|  >>224|  >>13|  >>241|  >>29|  >>100|  >>159|  >>224|  >>13|  >>241|  >>29|  >>146|  >>159|  >>240|  >>13|  >>131|  >>159|  >>240|  >>13|  >>116|  >>159|  >>240|  >>13|  >>101|  >>159|  >>240|  >>13|  >>153|  >>39|  >>114|  >>159|  >>176|  >>13|  >>225|  >>29|  >>249|  >>31|  >>99|  >>159|  >>176|  >>13|  >>225|  >>29|  >>249|  >>31|  >>189|  >>1|  >>207|  >>1|  >>17|  >>36|  >>8|  >>149|  >>170|  >>27|  >>187|  >>27|  >>81|  >>225|  >>7|  >>192|  >>170|  >>31|  >>187|  >>31|  >>166|  >>23|  >>183|  >>7|  >>16|  >>240|  >>166|  >>27|  >>183|  >>11|  >>136|  >>31|  >>153|  >>31|  >>90|  >>149|  >>169|  >>247|  >>128|  >>149|  >>144|  >>149|  >>188|  >>1|  >>205|  >>1|  >>8|  >>149|  >>151|  >>251|  >>9|  >>46|  >>7|  >>38|  >>10|  >>208|  >>119|  >>253|  >>4|  >>208|  >>229|  >>223|  >>6|  >>208|  >>0|  >>32|  >>26|  >>244|  >>112|  >>149|  >>97|  >>149|  >>127|  >>79|  >>8|  >>149|  >>246|  >>247|  >>144|  >>149|  >>129|  >>149|  >>159|  >>79|  >>8|  >>149|  >>161|  >>226|  >>26|  >>46|  >>170|  >>27|  >>187|  >>27|  >>253|  >>1|  >>13|  >>192|  >>170|  >>31|  >>187|  >>31|  >>238|  >>31|  >>255|  >>31|  >>162|  >>23|  >>179|  >>7|  >>228|  >>7| Write 256b @6656 ; CRC16: 0x925E
     >>94|  >>146|  >>170|  <<B:66| 
     <<]:93| 
     <<[:91| 
     >>170|  >>128|  >>0|  >>27|  >>245|  >>7|  >>32|  >>240|  >>162|  >>27|  >>179|  >>11|  >>228|  >>11|  >>245|  >>11|  >>102|  >>31|  >>119|  >>31|  >>136|  >>31|  >>153|  >>31|  >>26|  >>148|  >>105|  >>247|  >>96|  >>149|  >>112|  >>149|  >>128|  >>149|  >>144|  >>149|  >>155|  >>1|  >>172|  >>1|  >>189|  >>1|  >>207|  >>1|  >>8|  >>149|  >>248|  >>148|  >>255|  >>207|  >>1|  >>229|  >>3|  >>235|  >>3|  >>201|  >>2|  >>245|  >>1|  >>0|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255|  >>255| Write 256b @6912 ; CRC16: 0x8A55
     >>85|  >>138|  >>170|  <<B:66| 
     <<]:93| 
     <<[:91| 
    Change baudrate of USB0 | RP6 USB Interface | ARQYS5FL from 500000 to 38400 OK!
     >>0| 
     Task completed successfully! Time needed: 1219ms
     <<
    :10| 
     <<[:91| 
     <<R:82| 
     <<E:69| 
     <<A:65| 
     <<D:68| 
     <<Y:89| 
     <<]:93| 
     <<
    :10|


    MfG,
    SlyD

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    01.07.2008
    Beiträge
    11
    Baudrate von 38400?

    Beim Treiber vom Virtuellen COM Port ist aber eine Baudrate von 9600 eingestellt.

    Ich habe mich bis jetzt für eine WinForm mit .Net 2.0 und in cli entschieden, was aber genasuo mit Übergaparametern aufgerufen werden kann.

    Somit nutze ich dann gliech das serialPort^ Objekt aus der Toolbox (.Net).

    RTS steht für Request To Send?
    Da steht einmal true und false, was zählt dann nun, das letztere?

    Und mit dem char[8] "[RP6BOOT]" wird noch nicht connectet mit dem UART sondern nur der Text für das Terminal ausgegeben?

    Ist in dem Debug alles in ein Byte Dezimal?

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    33
    Beiträge
    1.514
    Die Baudrate konfiguriert man dynamisch.
    Beim RP6Loader wird diese anfangs auf 38400 gestellt für die konfiguration und dann während des Uploads auf 500000 erhöht um die geschwindigkeit zu steigern. Dann wird wieder auf 38400 gewechselt für die normale Textausgabe auf der Konsole.
    Sieht man auch im obigen log wann und wie das gemacht wird.


    Der RTS Output ist an RESET vom RP6 angeschlossen um in den Bootload Modus zu schalten und das Programm im RP6 zu stoppen.
    true - false heisst einmal kurz umschalten mit paar millisekunden pause.
    => Reset auslösen.
    (Der RTS Pin ist invertiert)

    An [RP6BOOT] kannst Du erkennen das der Bootloader jetzt auf Kommandos wartet - das tut er nur für eine kurze Zeit und wechselt dann in den Wartemodus!

    > Ist in dem Debug alles in ein Byte Dezimal?

    Ja und >> steht für gesendete und << für empfangene Bytes.

    MfG,
    SlyD

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

    Ich weis dass der Thread schon ziemlich alt ist, aber ich wollte nicht extra einen neuen machen wenn es schon um das selbe geht.

    Ich bin gerade dabei, die make-liste im Programmers Notepad zu erweitern.

    Eine Programm, das mir make_all.bat, make_clean.bat und das makefile kopiert, ist schon fast fertig.
    Das besondere dabei ist, das sich das Programm den C-Code durchliest und merkt ob der Code für das Main-Board oder das M32-Board geschrieben ist (#INCLUDE "blabla.h"). Danach wählt es aus, welche make-dateien kopiert werden sollen, man kann also für die unterschiedlichen Boards unterschiedliche Dateien nehmen. Ausserdem setzt es "TARGET = " automatisch. Nur wenn man den I2C-Bus benutzt muss man die Lib dafür noch manuell einbinden, aber das sollte bald behoben sein
    (Sobald auch mein Problem in dem 2 Tool behoben ist und beides funktioniert stelle ich natürlich einen Download bereit)

    Allerdings bräuchte ich noch etwas hilfe zu einem anderen Tool:

    Ich möchte, dass ich mit irgend einem Shortcut im PN die HEX in den Roboter laden kann. Inzwischen Bin ich so weit, dass ich ein Terminal geschrieben hab, ähnlich Hterm. (Nur um bischen mit der connection zu spielen)
    Jetzt mache ich ein weiteres Prog, das mir das ganze Vollautomatisch hochlädt. Wie die Datei heisst und wo sie ist weis es ja, wenn ich Pfad und Name der C-Sourcedatei als Command übergebe (.c durch .hex ersetzen)
    Inzwischen Bin ich so weit:
    1. Reset
    2. Erkennen ob was angeschlossen ist
    3. Erkennen was angeschlossen ist anhand der Controller-ID
    4. Falls das Base-Board angeschlossen ist, wird die Akkuspannung ausgelesen

    So. Als nächstes muss die Baudrate eröht werden, die Datei hochgeladen und die Baudrate wieder runtergesetzt werden.
    Das mit der Baudrate erhöhen sollte kein Problem sein.

    Allerdings währe ich dankbar, wenn mir noch jemand erklären könnte, wie das mit dem Hex-hochladen genau funktioniert.
    sprich:
    - welche Bytes muss ich senden um den Vorgang einzuleiten
    - muss ich einfach das Hex-file Byte für Byte übertragen?
    - was soll das "Write 256b @0 ; CRC16: 0xDDAA "? (ähnliches ist ja mehrmals vorhanden)
    - woher weis der controller wann die Datei zu ende ist?
    - muss ich den restlichen freien Speicher mit irgendwas überschreiben (fast ganz am ende der Debug Ausgabe kommt noch ein haufen 255) oder passt das hexfile genau hinein?

    MFG
    -schumi-

    ps:
    Was kann eigentlich passieren wenn die hex nicht ordnungsgemäß übertragen wird? Der Bootloader müsste ja noch da sein, aber kann das Programm den Atmega dann zerstören?
    übrigens: ich programmiere in FreeBASIC, weil ich da mindestens 10 mal so fitt/schnell bin wie in C++

  7. #7
    RN-Premium User Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    522
    So, hier ist also der entsprechende Thread.
    Was bedeuten bei den Bytes die "]", "[", "|" und ":"?
    Beispielsweise:
    Code:
    <<]:93|
     <<[:91|
    Weiterhin wären auch die Fragen aus dem Post vor meinem sehr interessant und eine Antwort darauf wäre super
    Vor allem eine: Kann ich mit wildem Senden von Bytes was kaputt machen?
    Kann der Orginal-Loader das wieder richten?

    EDIT: Das mit den Zeichen hat sich erledigt, sind natürlich die passenden ASCII-Zeichen zu den Bytes.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    24
    Beiträge
    449
    Ich glaub, das kann ich dir Beantworten:
    Vor dem ":" steht der Buchstabe für den entsprechenden ASCII-Code der hinter dem ":" steht. Wenn da keiner steht soll anscheinend ein Integer Wert gesendet/empfangen werden.
    Die "[" und "]" sind quasi Buchstaben wie A oder B (und stehen desshalb vor dem ":"), kann man gut bei "[RP6BOOT]" sehen, die werden im RP6Loader nämlich hingeschrieben
    Und bei "|" gehe ich mal davon aus, dass das "Ende der Bytenummer" heißt
    (wobei es evtl. so besser währe: statt "14" "014", statt "0" "000" usw. schreiben, dann währe auch klar wo ein Byte aufhört)

    "wildem Senden von Bytes" - Ich glaub da gewinnst du eher im Lotto
    Wenn du aber versuchst das Hex-file raufzuladen (wie das geht ist ja (leider nur) grob dargestellt) und du es falsch hochlädst, was dann passiert währe interessant (er speichert es ja dann)
    Und wenn doch bitte jemand erklären könnte wie das genau mit dem Hochladen funzt... *fleh*
    (Das Risiko das der Atmega zum Raucher wird ist ja nicht gering)

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.785
    Blog-Einträge
    8
    Hallo

    Sehr gut. Nach einem Reset über RTS sendet der RP6 seine Meldung: [RP6BOOT] zwischen zwei \n (ascii 0x10):

    (##RTS:true##) (##RTS:false##)
    <<
    :10|
    <<[:91|
    <<R:82|
    <<P:80|
    <<6:54|
    <<B:66|
    <<O:79|
    <<O:79|
    <<T:84|
    <<]:93|
    <<
    :10|
    << steht für "vom RP6"
    >> steht für "vom Loader"

    Weiter geht es mit >>72 vom Loader, der RP6 antwortet mit seiner Versionsnummer, dann >>149 vom Loader, RP6 antwortet mit dem Batteriestatus, dann Umschaltung auf Highspeed-Baudrate, nochmals Firmwareabfrage und dann

    >>73|
    <<g:103|
    Upload in progress...
    >>75| <<[:91|
    >>170| >>128| >>0| >>0| >>12| >>148| >>75| >>1| >>12| >>148| >>137| >>2| ....

    sendet der Loader den ersten Block des Hexfiles mit CRC16-Checksumme, der RP6 speichert und quittiert (mit 66?) und der Loader sendet den nächsten Block

    >>89| >>111| Write 256b @0 ; CRC16: 0xDDAA
    >>170| >>221| >>170| <<B:66|
    <<]:93|
    <<[:91|
    >>170| >>128| >>0| >>1| >>117| >>32| >>110| >>101| >>101| >>100| >>32| ....

    Nach dem letzten Block wird die Baudrate wieder auf 38400 gesetzt und der RP6 sendet ein Ready:

    >>255| >>255| >>255| >>255| >>255| Write 256b @6912 ; CRC16: 0x8A55
    >>85| >>138| >>170| <<B:66|
    <<]:93|
    <<[:91|
    Change baudrate of USB0 | RP6 USB Interface | ARQYS5FL from 500000 to 38400 OK!
    >>0|
    Task completed successfully! Time needed: 1219ms
    <<
    :10|
    <<[:91|
    <<R:82|
    <<E:69|
    <<A:65|
    <<D:68|
    <<Y:89|
    <<]:93|
    <<
    :10|

    Der Rest dürfte nicht mehr sehr schwer sein...

    Dem Bootlader im Mega32 kann dabei nichts passieren. Er sitzt im geschützen Flashbereich und kopiert die Daten lediglich von der Schnittstelle in den Flashspeicher.

    Gruß

    mic

    P.S.: Wenn das Hexfile nicht an die richtige Stelle im Flash geschrieben wird oder sonst etwas schiefgeht, könnte der RP6 beschädigt werden! Und zwar nicht durch das Flashen selbst, das könnte man jederzeit wiederholen, sondern durch fehlerhafte Initialisierung und/oder Programmabsturz. Es könnten dadurch irgendwelche Ports gefährlich geschaltet werden oder im wirklich schlimmsten Falle der interne Watchdog aktiviert werden. ;)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #10
    RN-Premium User Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    522
    Was bedeutet denn das mit dem internen Watchdog?
    So wie ich das verstanden habe prüft aber doch der RP6 eh gegen,ob das alles so stimmt was er bekommt oder?
    Nun wäre noch eine Liste mit den möglichen Antworten des RP6 und deren Bedeutung interessant.
    Hat noch wer Interesse, das ganze in C# umzusetzen?

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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