PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6Loader für .Net oder CLR Schreiben



LiGERWooD
14.08.2009, 12:07
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.

LiGERWooD
14.08.2009, 14:16
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.

SlyD
14.08.2009, 17:13
Hi,

ich denke folgende Debug Ausgabe könnte Dir helfen:




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

LiGERWooD
15.08.2009, 00:00
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?

SlyD
15.08.2009, 12:31
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

-schumi-
08.05.2010, 19:50
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++

Fabian E.
07.06.2010, 22:37
So, hier ist also der entsprechende Thread.
Was bedeuten bei den Bytes die "]", "[", "|" und ":"?
Beispielsweise:

<<]: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.

-schumi-
07.06.2010, 22:59
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)

radbruch
07.06.2010, 23:01
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. ;)

Fabian E.
08.06.2010, 07:06
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?

Mc Delta
08.06.2010, 09:05
Klar ein eigenes Terminalprogramm ist doch immer ein Anreiz. Es sollte Texte senden können aber auch in der Lage sein Hex-Dateien zu senden.

SlyD
08.06.2010, 12:16
Hallo,

ich glaube mic meinte das mit dem internen Köter nicht ganz Ernst.
Der kläfft nur und beisst nicht ;)



Der Rest ist grob richtig soweit ich das sehe.
Man sollte noch beachten das hier die tatsächlichen Werte die in den Speicher geschrieben werden sollen übertragen werden - NICHT die ASCII Zeichen aus der Hex Datei. Die muss man also vorher parsen!
(Warum das? --> schnellere Übertragung!)

Die CRC16 Routine ist die CRC-CCITT Variante.


Der letzte 256 Byte Block muss mit 0xFF aufgefüllt werden, es müssen immer 256 Byte am Stück übertragen werden!
Der Rest vom Speicher muss allerdings *nicht* gelöscht werden.

MfG,
SlyD

-schumi-
08.06.2010, 14:55
Hab ein gutes Tutorial dazu gefunden:
http://www.mikrocontroller.net/articles/CRC

RP6BASE_LEDs.hex:


:100000000C944B010C9489020C94A9020C94C0032B
:100010000C945E030C9468010C9468010C946801C4
:100020000C9468010C9468010C9480050C94680190
:100030000C9468010C94C40B0C9468010C94680136
:100040000C9468010C9468010C9468010C9468018C
:100050000C9468014C6574277320676F21203A293E
:100060000A0048656C6C6F20576F726C6421204DDC
:1000700079206E616D6520697320526F626279210B
:100080000A00202020205C5F2D5F2D5F2D5F2D5FFB
:100090002D5F2D5F2D5F2D5F2D5F2F0A0A00202021
:1000A000205C7C205250362020524F424F54205327
:1000B000595354454D207C2F0A000A0A2020205F06
:1000C0005F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F40
:1000D0005F5F5F5F5F5F0A0054686520526F626F09
:1000E00074206E6565647320746F2062652072658C
:1000F000736574746564206E6F772E0A0A00596FF9
:1001000075206E65656420746F20636865636B207D
:100110004D6F746F7220617373656D626C79202806
:100120006F7220796F757220736F66747761726574
:10013000292E0A0A000A0A28732E207461736B5F45
:100140006D6F746F72436F6E74726F6C28292066C6
:10015000756E6374696F6E20696E205250364C69FB
:100160006221290A000A0A232323204D4F544F52AB
:10017000204F56455243555252454E542023232377
:100180000A00596F75206E65656420746F2063687E
:1001900065636B20456E636F6465722F4D6F746F7E
:1001A0007220617373656D626C7920286F7220799B
:1001B0006F757220736F667477617265292E0A0AF3
:1001C00000210A0A28732E207461736B5F6D6F74AF
:1001D0006F72436F6E74726F6C28292066756E6340
:1001E00074696F6E20696E205250364C6962212905
:1001F0000A005249474854004C454654004166663F
:100200006563746564206368616E6E656C3A000AAC
:1002100023232320454E434F44455220284F52204C
:100220004D4F544F5229204D414C46554E43544951
:100230004F4E21202323230A00232323232320415D
:100240004C4C204F5045524154494F4E532053542B
:100250004F5050454420544F2050524556454E541F
:1002600020414E592044414D41474521202323231D
:1002700023230A000A0A232323232320454D455222
:1002800047454E43592053485554444F574E202319
:10029000232323230A0011241FBECFE5D8E0DEBFAD
:1002A000CDBF10E0A0E6B0E0E0EAFAE102C00590C0
:1002B0000D92AA36B107D9F711E0AAE6B0E001C065
:1002C0001D92AF30B107E1F70E946A010C944E0D08
:1002D0000C9400001F930E9468078AEB90E00E9434
:1002E000AB0B8EE990E00E94AB0B82E890E00E949D
:1002F000AB0B82E690E00E94AB0B84E590E00E949D
:10030000AB0B8FE30E94D60188EE93E00E944E076C
:1003100080E00E94D60184EF91E00E944E0711E038
:10032000812F0E94D601110F113208F011E084E6EE
:1003300090E00E944E07F4CF80919A00843010F034
:1003400010929A00089584E080939A00089587B3EC
:100350008C7787BB88B38C7788BB8091850083FFBF
:1003600002C0BF9AC79A84FF02C0B99AC19A85FF9A
:1003700002C0B89AC09A84B38F7884BB85B38F7853
:1003800085BB94B320918500822F82958077982B2E
:1003900094BB95B3892B85BB80919A00882319F46F
:1003A000822F211181E080939A0008958093850027
:1003B0000E94A7010895C098B898000096B3809154
:1003C000850085FF02C0B89AC09A892F8170089570
:1003D000AE98A698000093B38091850082FF02C07A
:1003E000A69AAE9A892F8074089508959093680014
:1003F0008093670008951F938091D2008333C8F0E3
:100400000E94DB01182F0E94E801982F809186003E
:10041000811721F48091E300891749F01093860039
:100420009093E300E0916700F091680009951092C5
:10043000D2001F910895369B03C020E030E009C030
:10044000806487B986ED86B93699FECF349A24B197
:1004500035B1C9010895806487B986ED86B90895DC
:10046000369956C020917B00233039F1243028F48E
:10047000213099F02230C8F408C0253089F12530A8
:1004800020F1263009F041C033C084B195B190937A
:10049000E7008093E60086E41FC084B195B1909395
:1004A000EC008093EB0085E417C084B195B1909384
:1004B000DD008093DC0083E40FC084B195B190939C
:1004C000A6008093A50082E407C084B195B1909303
:1004D000CC008093CB0080E487B986ED86B915C047
:1004E00084B195B19093DA008093D90081E4F4CF80
:1004F00084B195B19093A4008093A30087E487B959
:1005000086ED86B910927B0008952F5F20937B00C3
:1005100008951F920F920FB60F9211248F939F93FD
:100520008091E1009091E20001969093E200809327
:10053000E1008091D7009091D80001969093D80067
:100540008093D7009F918F910F900FBE0F901F90B7
:1005500018951F920F920FB60F9211248F939F93AD
:100560008091D3009091D40001969093D400809311
:10057000D3008091AD009091AE0001969093AE00B3
:100580008093AD009F918F910F900FBE0F901F90A1
:100590001895089590936600809365000895893CAE
:1005A00008F088EC80938B0010928C00693C08F076
:1005B00068EC6093890010928A000895282F809338
:1005C0006E0010926A008150823018F481E08093AE
:1005D0006A00213021F080E090E0233011F481E0C6
:1005E00090E080936B00089590E080918400837088
:1005F00009F491E0892F089510928C0010928B00DD
:1006000010928A0010928900109296001092950024
:100610001092D1001092D000809184008C7F809342
:1006200084008093E500E0916500F09166000995F3
:100630000895633D08F062ED6093AB001092AC004A
:10064000833D08F082ED80939B0010929C000895FA
:1006500080936C0060936D0080936A0060936B00E0
:10066000882311F0AA9A01C0AA98662311F0AB9AC8
:100670000895AB980895982F03C089B7806889BF03
:10068000809190008823C9F7892F90E08F73907034
:1006900026E0880F991F2A95E1F7262F30E02F7367
:1006A0003070822B932B90639093B0008093AF00B7
:1006B00080918F00806480938F0008951F920F9225
:1006C0000FB60F9211242F938F939F938091600008
:1006D0008230B0F520917A002223C1F02C3338F417
:1006E0008091C9009091CA0096FF07C008C0809110
:1006F000C9009091CA0096FF02C0979803C082B3C8
:10070000805882BB215020937A0032C080919000A3
:100710008823A1F097988091C9009091CA00880F12
:10072000991F9093CA008093C90088E780937A004C
:10073000809190008150809390001AC0979818C0C3
:1007400080919400882391F080918F0080FD05C0F6
:1007500088B390E4892788BB03C085B3805885BBE4
:100760008091940081508093940002C0C69AAF9A01
:100770009F918F912F910F900FBE0F901F90189502
:100780001F920F920FB60F9211248F9380916000E9
:10079000833011F0863069F480918F0084FD09C0A8
:1007A00085FF07C0B29905C08091E4008F5F8093F8
:1007B000E40086B380918F008D7F80938F008F91AE
:1007C0000F900FBE0F901F901895089590936200A0
:1007D000809361000895089590936400809363006E
:1007E00008958091A7009091A800029708F43BC15A
:1007F00090918F0094FD16C180916000823009F4C1
:1008000067C0833030F4882371F0813009F010C163
:1008100011C0853009F4ACC0863009F4C1C0833002
:1008200009F006C16DC089B78F7789BF9798C69ABE
:10083000AF9AFEC080919000882341F596FF14C0C6
:100840008091AF009091B0009093CA008093C9004E
:100850008EE08093900080918F008F7B80938F003B
:1008600089B7806889BF06C089B78F7789BF979895
:10087000C69AAF9A809179008F5F809379008150FA
:10088000843138F082E08093600003C089B78068CB
:1008900089BF80918F0083FFCBC0E0916100F09110
:1008A00062008091E8009091E90009958091E8004C
:1008B0009091E90090939800809397001092E9003E
:1008C0001092E80080918F00877F80938F00B0C0E6
:1008D00089B78F7789BF9798C69AAF9A109294007C
:1008E0001092E400109278001092770080918F00AF
:1008F0008E7F806280938F0083E08093790075C043
:1009000080919400882381F4809179008F5F809397
:1009100079008150833040F089B7806889BF88E2D0
:1009200080939400109279008091C500882321F073
:100930008091E400823020F48091E400863038F029
:100940001092E40081E08093C50085E04EC0809164
:1009500077009091780001969093780080937700CB
:1009600001970E9708F464C01092C50085E04FC04F
:1009700089B78F7789BF9798C69AAF9A10929400DB
:100980001092E400109278001092770080918F000E
:10099000816280938F0083E08093790086E025C098
:1009A00080919400882381F4809179008F5F8093F7
:1009B00079008150833040F089B7806889BF88E230
:1009C00080939400109279008091CE00882321F0CA
:1009D0008091E400823020F48091E400863040F081
:1009E0001092E40081E08093CE008093600020C0EC
:1009F0008091770090917800019690937800809391
:100A0000770001970E97A0F01092CE0081E08093BE
:100A1000600089B78F7789BF9798C69AAF9A10926E
:100A2000940006C01092780010927700109279001E
:100A30002091C50080917600821731F49091750065
:100A40008091CE00981759F0209376008091CE00C7
:100A500080937500E0916300F09164000995109215
:100A6000A8001092A70008951092600089B78F77B0
:100A700089BF9798C69AAF9A1092CE001092C5007F
:100A8000089589B78F7789BF9798C69AAF9A1092C1
:100A9000CE001092C50081E08093600008958E988A
:100AA0009698BB98C398C698AF9808958E9A969AD0
:100AB000BB98C39808958E989698BB9AC39A089548
:100AC0008E9A969ABB9AC39A0895C49A80919A0076
:100AD000843018F483E080939A000895C49880913C
:100AE0009A00843060F4882331F420E030E0809173
:100AF0008500882311F021E030E020939A000895CA
:100B00001F920F920FB60F9211242F933F934F9382
:100B10005F936F937F938F939F93AF93BF938091D6
:100B200082009091830001969093830080938200CD
:100B30008091DB008F5F8093DB008091DE008F5F10
:100B40008093DE0081508A3008F447C18091B30061
:100B500080FF09C08091B4009091B50001969093F8
:100B6000B5008093B4008091B30081FF09C08091EB
:100B7000B6009091B70001969093B7008093B600AD
:100B80008091B30082FF09C08091B8009091B900B4
:100B900001969093B9008093B8008091B30083FFD1
:100BA00009C08091BA009091BB0001969093BB0060
:100BB0008093BA008091B30084FF09C08091BC008B
:100BC0009091BD0001969093BD008093BC008091F0
:100BD000B30085FF09C08091BE009091BF000196CF
:100BE0009093BF008093BE008091B30086FF09C040
:100BF0008091C0009091C10001969093C1008093B4
:100C0000C0008091B30087FF09C08091C20090911D
:100C1000C30001969093C3008093C2008091CF00DF
:100C20008F5F8093CF008150893CE8F08091AD00C8
:100C30009091AE009093E0008093DF008091D70008
:100C40009091D80090939E0080939D001092AE00EA
:100C50001092AD001092D8001092D70081E08093DE
:100C600099001092CF0040919A00433008F052C092
:100C7000423081F580918500882301F580917300D1
:100C8000909174009C012F5F3F4F3093740020932C
:100C9000730068EC70E00E94D40C892BD9F5215ABE
:100CA0003F4028F0B998C19810929A0029C087B3A4
:100CB000842787BB88B3842788BB2CC084FD02C0EF
:100CC000B998C198109274001092730081E08093DB
:100CD0009A0020C080917300909174002EE2813EB2
:100CE000920798F0413049F410929A008091850063
:100CF00084FD06C0B998C19803C082E080939A0031
:100D0000109274001092730005C0019690937400C5
:100D1000809373008091A7009091A800039748F4F6
:100D20008091A7009091A80001969093A8008093CD
:100D3000A7008091C700873318F48F5F8093C700A6
:100D40008091D200843328F48091D2008F5F809309
:100D5000D2008091CD008F5F8093CD008150833091
:100D6000D0F18091C800482F50E02091AB00309125
:100D7000AC004217530759F04217530714F48F5F22
:100D800001C081508093C8008091C8008ABD8091C5
:100D9000EA00482F50E020919B0030919C004217C0
:100DA000530759F04217530714F48F5F01C0815065
:100DB0008093EA008091EA0088BD8091EA00882350
:100DC00021F48091C800882319F082EA8FBD01C008
:100DD0001FBC1092CD001092DE0080918F0083FD29
:100DE00046C020916F0030917000409171004F5FBC
:100DF00040937100463190F036FD09C035FF07C0C1
:100E00003093E9002093E800886080938F00809100
:100E10008F008F7E80938F0020E030E090917200F1
:100E200086B3892782FF1FC0909590937200473048
:100E300040F480918F008F7E80938F0020E030E01F
:100E400005C02115310511F04F3068F080918F00F9
:100E5000806180938F0036FD02C0220F331F92FF06
:100E60002160109271003093700020936F00BF9149
:100E7000AF919F918F917F916F915F914F913F9132
:100E80002F910F900FBE0F901F901895982F1092D2
:100E9000DB008091DB008917E0F308959C0108C016
:100EA0001092DB008091DB008A30E0F3215030406B
:100EB00021153105A9F7089502C000000197009798
:100EC000E1F70895D49ADC9A0895DC98D4980895AF
:100ED0001BBA18BA15BA81E082BB1ABA88E587BB7B
:100EE0008CE884BB82EF81BBF894C598BD9A87B328
:100EF00097980E944F0510BC8CE089B91BB886E812
:100F000080BD88E98AB917B886E186B910BE85E048
:100F100085BF80EE8BBF14BE8AE083BF83E68CBFA3
:100F200082EA8FBD81E18EBD82ED90E097BD86BDE6
:100F30001ABC18BC80E060E00E94280389E085BDEF
:100F40008EE683BD82E089BF80918F0081608093AF
:100F50008F0081E080936000789408951F93182F8C
:100F6000F89497980E944F0510929C0010929B0055
:100F70001092AC001092AB00109296001092950067
:100F80001092D1001092D0001092EA001092C80086
:100F90001ABC18BC1FBC0E946E0584E792E00E9438
:100FA000AB0B89E392E00E94AB0B812F8150823022
:100FB000C0F48FE092E00E94AB0B8DEF91E00E94B5
:100FC000AB0B113019F488EF91E002C082EF91E091
:100FD0000E94AB0B81EC91E00E94AB0B82E891E0A8
:100FE0000CC0133061F485E691E00E94AB0B85E301
:100FF00091E00E94AB0B8EEF90E00E94AB0B88ED6E
:1010000090E00E94AB0B16E3109385000E94A701AD
:101010002AE008C0000001973FEF8F3F9307D1F708
:10102000215019F080E090E8F6CF109285000E94E0
:10103000A7012AE005C000000197E9F7215021F33C
:1010400080E090E0F9CF8091C700823308F47CC043
:101050001092C7008091C400882309F041C080919C
:10106000EB009091EC008350934038F48091DC00C9
:101070009091DD0083509340F0F08091C6008F5F27
:101080008093C6008AE08093C40010929C00109266
:101090009B001092AC001092AB0010929600109240
:1010A00095001092D1001092D0008091840084604D
:1010B000809384000895809184008B7F80938400C6
:1010C00080919100853628F01092C6001092910010
:1010D00007C08091C600833018F083E00E94AE07FD
:1010E0008091EB009091EC008639910598F4809105
:1010F0009D0090919E00892B69F480918B009091C6
:101100008C00892B39F08091EA00873918F081E052
:101110000E94AE078091DC009091DD008639910538
:1011200098F48091DF009091E000892B69F4809120
:10113000890090918A00892B39F08091C800873905
:1011400018F082E00E94AE0780919900882309F48C
:10115000C3C18091C400882309F0B9C18091C60041
:10116000882331F0809191008F5F8093910002C0BD
:10117000109291004091840041FF38C02091E1001D
:101180003091E200809187009091880028173907FC
:1011900080F010928C0010928B00109296001092AA
:1011A000950010929C0010929B004D7F409384000C
:1011B0001DC02091E1003091E20080919F0090914C
:1011C000A0002817390790F080918B0090918C0037
:1011D0009695879590938C0080938B00469730F47A
:1011E00086E190E090938C0080938B004091840086
:1011F00040FF38C02091D3003091D4008091A900E5
:101200009091AA002817390780F010928A00109256
:1012100089001092D1001092D0001092AC00109270
:10122000AB004E7F409384001DC02091D3003091CD
:10123000D4008091D5009091D6002817390790F0FE
:101240008091890090918A009695879590938A0065
:1012500080938900469730F486E190E090938A006D
:101260008093890040916A0080916C00481739F49E
:1012700090916B0080916D00981709F479C02091CE
:101280008B0030918C002115310531F4809189005B
:1012900090918A00892B61F130938E0020938D000C
:1012A0008091890090918A009093A2008093A10080
:1012B00010928C0010928B0010928A00109289007C
:1012C000809195009091960062E070E00E94E80C99
:1012D00070939600609395008091D0009091D1001A
:1012E00062E070E00E94E80C7093D1006093D0003F
:1012F0008091DF009091E0004A97D0F480919D00AA
:1013000090919E004A97A0F480918B0090918C0060
:10131000892B71F48091890090918A00892B41F486
:101320001092AC001092AB0010929C0010929B00A7
:101330008FB58823E9F4842F60916B000E94280305
:1013400080918D0090918E0090938C0080938B0003
:101350008091A1009091A20090938A0080938900CF
:1013600010929600109295001092D1001092D00029
:1013700040918B0050918C0080919D0090919E0037
:101380009A01281B390BC9012091950030919600D4
:10139000820F931F9093960080939500855A9140F9
:1013A00034F084EA91E090939600809395008091C8
:1013B0009500909196008C559E4F34F48CE59EEFED
:1013C000909396008093950080919D0090919E004F
:1013D000892B31F4452B21F4109296001092950040
:1013E000809195009091960062E070E00E94E80C78
:1013F00070939C0060939B00633D710534F082ED17
:1014000090E090939C0080939B0080919B00909132
:101410009C0097FF04C010929C0010929B0040918A
:10142000890050918A008091DF009091E0009A013C
:10143000281B390BC9012091D0003091D100820FB7
:10144000931F9093D1008093D000855A914034F03F
:1014500084EA91E09093D1008093D0008091D000F5
:101460009091D1008C559E4F34F48CE59EEF909373
:10147000D1008093D0008091DF009091E000892B13
:1014800031F4452B21F41092D1001092D0008091BC
:10149000D0009091D10062E070E00E94E80C70935F
:1014A000AC006093AB00633D710534F082ED90E0D9
:1014B0009093AC008093AB008091AB009091AC0016
:1014C00097FF08C01092AC001092AB0003C081508F
:1014D0008093C40010929900909184008091E5005F
:1014E000891739F09093E500E0916500F09166006E
:1014F000099508950E9430020E94F1030E94FB01A9
:101500000E9423080895FF920F931F93CF93DF93B8
:10151000182F062FF22E8091840083608093840020
:1015200060E070E0CB01BA0120EB32E040E050E037
:101530000E94B50C24E630E040E050E00E94FB0C35
:10154000E901C901845690409093D6008093D5005C
:101550009093A00080939F003093AA002093A9004D
:10156000309388002093870028323105B0F484E15D
:1015700090E09093AA008093A900909388008093B4
:1015800087008AE090E09093D6008093D5009093F6
:10159000A00080939F00C8E2D0E0193C18F018EC3E
:1015A00088EC01C0812F80938B0010928C001093E7
:1015B000890010928A00802F0E94DE021092E200C1
:1015C0001092E1001092D4001092D300D093B20098
:1015D000C093B100D0939300C09392008091840097
:1015E0008093E500E0916500F09166000995FF2089
:1015F00019F406C00E947A0A809184008370D1F7A2
:10160000DF91CF911F910F91FF9008951F93CF937A
:10161000DF93382FEA01122F80918400836080933A
:1016200084001092D6001092D5001092A000109263
:101630009F00373180F086EF9FEF831B9109880F61
:10164000991F840F951F9093D6008093D500909397
:10165000A00080939F00CE0102979093AA008093F0
:10166000A9009093880080938700C832D105B8F410
:1016700084E190E09093AA008093A9009093880061
:10168000809387008AE090E09093D6008093D50005
:101690009093A00080939F00C8E2D0E004C021E0B6
:1016A000C039D20798F4393288F0CE0196958795E3
:1016B000969587959E01281B390B3093D600209371
:1016C000D5003093A00020939F0038E21092E200F2
:1016D0001092E1001092D4001092D300393C18F01F
:1016E00038EC88EC01C0832F80938B0010928C0023
:1016F0003093890010928A00862F0E94DE02D093D8
:10170000B200C093B100D0939300C0939200809137
:1017100084008093E500E0916500F09166000995F2
:10172000112319F406C00E947A0A80918400837004
:10173000D1F7DF91CF911F9108955D9BFECF8CB9BA
:101740000895FC0104C05D9BFECF31968CB9808169
:101750008823C9F7089503C05D9BFECF2CB9FC0117
:10176000019624912223C1F70895FC01E40FF11D95
:1017700005C05D9BFECF31968CB961508081882376
:1017800011F06623B1F708951F920F920FB60F92D2
:1017900011242F938F939F93EF93FF9320917F00BA
:1017A00080917E00922F981B9032A8F480917D004A
:1017B000E82FF0E09CB1E251FF4F90838F5F809360
:1017C0007D002F5F20937F00813210F010927D000A
:1017D0001092ED0006C08CB18093810081E080936F
:1017E000ED00FF91EF919F918F912F910F900FBE80
:1017F0000F901F9018951092ED0090917E008091AF
:101800007F00891711F4E0E013C09F5F90937E0082
:1018100080917C00813210F010927C0080917C00DD
:10182000E82FF0E0E251FF4FE0818F5F80937C0072
:101830008E2F0895AC011092ED0020E016C09F5F3E
:1018400090937E0080917C00E82FF0E0E251FF4F02
:101850009081FA01E20FF11D90838F5F80937C00ED
:10186000813210F010927C002F5F90917E00809169
:101870007F00891B861718F7822F089580917F00BB
:1018800090917E00891B089557988CB180938000B9
:1018900010927C0010927D0010927E0010927F00CA
:1018A0001092ED00579A08950F931F93DF93CF93F3
:1018B000CDB7DEB761970FB6F894DEBF0FBECDBFD0
:1018C000462F8E010F5F1F4FB80150E00E941D0D83
:1018D000C8010E94A10B61960FB6F894DEBF0FBE3F
:1018E000CDBFCF91DF911F910F910895FF920F937C
:1018F0001F93DF93CF93CDB7DEB761970FB6F89400
:10190000DEBF0FBECDBF262FF42E8E010F5F1F4FFF
:10191000B801422F50E00E941D0DF80101900020F7
:10192000E9F73197E01BF10B4F2D4E1B141664F4B1
:1019300080E341505D9BFECF8CB94423D1F7CE01AB
:1019400001960E94A10B05C04195C8016F2D0E9410
:10195000B50B61960FB6F894DEBF0FBECDBFCF9129
:10196000DF911F910F91FF900895629FD001739FA7
:10197000F001829FE00DF11D649FE00DF11D929F2B
:10198000F00D839FF00D749FF00D659FF00D99276A
:10199000729FB00DE11DF91F639FB00DE11DF91F8E
:1019A000BD01CF0111240895AA1BBB1B51E107C043
:1019B000AA1FBB1FA617B70710F0A61BB70B881FDF
:1019C000991F5A95A9F780959095BC01CD0108956E
:1019D00097FB092E07260AD077FD04D0E5DF06D055
:1019E00000201AF4709561957F4F0895F6F7909551
:1019F00081959F4F0895A1E21A2EAA1BBB1BFD01E2
:101A00000DC0AA1FBB1FEE1FFF1FA217B307E407DD
:101A1000F50720F0A21BB30BE40BF50B661F771F35
:101A2000881F991F1A9469F7609570958095909515
:101A30009B01AC01BD01CF010895FB019F01E8941A
:101A40004230C4F04532B4F44A3029F497FB1EF416
:101A5000909581959F4F642F77270E94D40C805DCD
:101A60008A330CF0895D8193CB010097A1F716F4BE
:101A70005DE251931082C9010C943E0DDC01FC0122
:101A8000672F71917723E1F7329704C07C916D93B2
:101A900070836291AE17BF07C8F30895F894FFCF23
:0A1AA00001E503EB03C902F50100A4
:00000001FF


Nehmen wir doch mal die 1. Zeile:
":100000000C944B010C9489020C94A9020C94C0032B"

Das kann man ja jetzt auseinanderziehen:
":" <- neues Paket?
"100000000" <- Irgendeine fortlaufende Adresse (welche?)
"C944B010C9489020C94A9020C94C0032B" <- 33 Zeichen je 8 Bit, aber 256/8=32 ?!?

Dann ganz am Ende:
":0A1AA00001E503EB03C902F50100A4"
":00000001FF"
Was bedeuten die beiden Zeilen?

Und was ist mit dem Generator-Polynom? Ist das das Teil in der letzten Zeile? (wobei das doch 16 Bit (CRC16), also 2 Zeichen a 8 Bit sein müssten)

radbruch
08.06.2010, 14:55
Hallo

Am Ende jedes Blockes wird die Checksumme zum RP6 gesendet:

Write 256b @0 ; CRC16: 0xDDAA
>>170| >>221| >>170| <<B:66|
^ 0xAA ^ 0xDD

Write 256b @256 ; CRC16: 0x195D
>>93| >>25| >>170| <<B:66|
^ 0x5D ^ 0x19

Write 256b @512 ; CRC16: 0xE915
>>21| >>233| >>170| <<B:66| ^ 0xAA ^ 0xDD
^ 0x15 ^ 0xE9


Hintergrund der Hundegeschichte: Ein durch fehlerhaften Flashinhalt abgestürzter AVR könnte den Watchdog einschalten indem er irgendwie das entsprechende Bit im Kontrollregister setzt. Das würde möglicherweise die Ausführung des Bootladers stören oder gar verhindern. Blöderweise steht das aber nur im Datenblatt des Tiny13 (Seite 37/38):
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=336549#336549

Abhilfe würde das möglichst frühe Ausschalten des WDT bringen, darauf weist Atmel sogar in einem anderen Zusammenhang hin:

Watchdog Timer

If the Watchdog Timer is not needed in the application, this module should be turned off.
If the Watchdog Timer is enabled, it will be enabled in all sleep modes, and hence,
always consume power. In the deeper sleep modes, this will contribute significantly to
the total current consumption. Refer to “Watchdog Timer” on page 41 for details on how
to configure the Watchdog Timer.(Aus Mega32-Datenblatt Seite 35)

Allerdings bringt das reichlich wenig, wenn es vorne im Anwenderprogramm eingebaut wird und der Block mit dem entsprechenden Startcode nicht richtig gespeichert wurde. Das Ausschalten sollte eigentlich schon im Bootlader geschehen.

Gruß

mic

-schumi-
08.06.2010, 15:55
Noch was: Wie komme ich an so eine Debug-Ausgabe (dann könnte ich die Ausgabe und die Hex vergleichen)

Fabian E.
08.06.2010, 18:14
Vor jedem Block Daten sendet der Loader folgendes:


>> 170|
>> 128|
>> 0|
>> 1|
Wobei die 1 dort eine fortlaufende Zahl von 0 an ist.
Das Ende eines jeden Blocks wird durch ein
<<170 vom Loader signalisiert.

Das Ende eines (erfolgreichen) Blocks quittiert der RP6 mit folgendem:


<<B:66|
<<]:93|
<<[:91|

Danach kommt wieder die oben genannt Startsequenz.
Nach dem Übertragen wird die alte UART-Geschwindigkeit mit
>> 0| wieder hergestellt.

Solange ich das Übertragene nicht starte, kann doch auch gar nichts passieren oder? Vollkommen egal, welchen Mist ich übertragen habe?

Ich werde jetzt mal anfangen etwas rumzubasteln um erste Ergebnisse zu erzielen.
Hat schon jemand raus, wie man die CRC16-Checksumme berechnet?
Im Internet gibts dazu irgendwie verschiedene Möglichkeiten, keine Ahnung ob die das gleiche Ergebniss liefern.

radbruch
08.06.2010, 19:04
Hallo

Solange das Programm nicht gestartet wurde sollte keine Gefahr bestehen.

Die vier Bytes am Anfang eines Blocks könnte auch die absolute Adresse im Speicher bedeuten.

Oder: 170dez ist 0xAA oder 0b10101010. Da ich den AVRs einiges zutraue könnte das möglicherweise dem USART ermöglichen die Bitlänge zu messen. Laut Datenblatt (S. 167) ist der Frequenzfehler mit einem 8MHz-Takt bei 500kbps genau 0%. Echt erstaunlich :)

Gruß

mic

Fabian E.
08.06.2010, 19:23
Hier mal die komplette Übertragung des ersten Blockes an Daten:

>> 73| //73 senden

<<g:103|
Upload in progress...
>> 75| //Generelles Startsignal fürs Flashen?
<<[:91| //Quittierung

>> 170| //Start-Signal
>> 128| //
>> 0| //
>> 0| //fortlaufende Nummer

>>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| //Checksumme
>>221| //Checksumme

>> 170| //End-Signal
<<B:66| //Quittierung
<<]:93| //Quittierung
<<[:91| //Quittierung

Dazu nun ein paar Fragen.
Was bedeutet die erste "73" die gesendet wird?
Was die "103", die zurück kommt?
Danach wird eine "75" gesendet, die mit einer "91" quittiert wird. Dann geht das normale Sendemuster los.
Welche Bedeutung haben diese Zahlen?

An eine absoulte Adresse im Sinne einer Adresse glaube ich nicht, da es sich ja um Blöcke von 256 Byte handelt, also wäre pro Block eins weiter irgendwie Quatsch oder?
Vielleicht rechnet der Bootloader das dann noch um oder so.
Ich denke, da muss man sich aber keine Gedanken drum machen.
Einfach ausrechnen wie viele Blöcke es sind und gut ist.

radbruch
08.06.2010, 19:34
Welche Bedeutung haben diese Zahlen?Das kann wohl nur der beantworten der das Protokol oder den Quellcode kennt. Es sind vermutlich Steuercodes für die verschiedenen Bootlader-Funktionen oder Statusbitmuster des Loaders und des RP6.


...irgendwie Quatsch oder?Danke:) Wenn Byte 3 und 4 die LSB/MSB der Adresse wären, würde jeder 256er-Block das MSB um eins erhöhen. Ich weis aber auch nichts genaues und rate nur ;)

Das Verfahren für die CRC16-Prüfsumme könnte beim GCC dokumentiert sein. Schlieslich erzeugt ja der Kompiler die Hex-Dateien. http://www.google.de/search?q=CRC16+CRC-CCITT+avr+hex

-schumi-
10.06.2010, 21:10
So. Nach dem ich mich noch mal ausführlich mit crc beschäftigt hab, hab ich festgestellt, dass die Frage nach den Generator-Polynom Unsinn war. Das ist ja für CCITT festgelegt.
Hab mir mal selbst ein Beispiel gemacht. Könnte das bitte mal jemand überprüfen, der sich damit auskennt? Danke!


CRC16 CCITT:
Beispiel:

Polynom: x^4 + x^1 + x^0 -> 4. Grades -> 10011
Daten: 1100101011001

An die Daten 4 Nuller anhängen:
1100101011001 -> 11001010110010000

Die Daten mit XOR durch das Generator Polynom teilen:
11001010110010000
10011
-----
010100
10011
-----
0011110
10011
-----
011011
10011
-----
010001
10011
-----
00010001
10011
-----
00010000
10011
-----
000110


Rest an die Daten angängen:
11001010110010000 -> 11001010110010110

Fertige Daten durch Generator Polynom teilen:
11001010110010110
10011
-----
010100
10011
-----
0011110
10011
-----
011011
10011
-----
010001
10011
-----
00010001
10011
-----
00010011
10011
-----
000000 <- Rest=0, also fehlerfreie Übertragung

Kann mir bitte noch jemand sagen, welche Teile der Hex jweils so einen Datenstrang darstellen, der dann mit dieser Methode behandelt werden muss?

MfG
-schumi-

PS:
Ich hab schon eine Vorabversion des Upload-Programms geschrieben, die dann in HighSpeed ausliest, welches Board angeschlossen ist. Code gibts wenn die Upload-Funktion impletiert ist.

Fabian E.
20.06.2010, 16:27
Kurze Frage, in welcher Sprache schreibst du dein Programm?

Und noch einmal die Frage nach dieser DEBUG-Ausgabe, wie kommt man dadran?

Fabian E.
20.06.2010, 18:27
Ich habe hier (https://www.roboternetz.de/phpBB2/viewtopic.php?t=54886) übrigens mal ein neues Thema dazu aufgemacht.
Es ist ein Gemeinschaftsprojekt und wer mitmachen möchte kann sich da ja mal melden :)

-schumi-
21.06.2010, 13:34
Es ist ein Gemeinschaftsprojekt und wer mitmachen möchte kann sich da ja mal melden
Das muss ich natürlich mitvervolgen!

Mein Programm ist in FreeBASIC geschrieben. Das hat zu 90% die selbe Syntax wie das QBasic (bzw. QuickBasic), Unterschied:
Es ist für Windows gemacht, hat also ewig viele neue Befehle, wie zum Beispiel "SCREENRES" (erzeugt ein normales Windows-Fenster)
FreeBASIC ist ürigens auch für DOS und Linux verfügbar und auch kostenlos.
MfG
-schumi-

PS: bei Interesse: www.freebasic-portal.de