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. ;)