0,0 → 1,99 |
Resetkommando für FlightCtrl oder BL-Ctrl - Software |
|
SendOutData('R', 0, NULL, 0); |
|
Daten sind entsprechend codiert und mit CRC |
|
|
############################################# |
|
|
dann mit Bootloader verbinden: |
|
SEND_CHAR(27); // ESC |
Delay(20); // ms - etwas warten |
SEND_CHAR(0xAA); |
Delay(80); // ms - etwas warten |
|
Bootloader antwortet mit "MKBL", wenn erfolgreich verbunden |
|
|
---- AVR-Signature abfragen |
SEND_CHAR('t'); // get signature |
|
Antwort: |
RxBuffer[0] = 0x74 ; RxBuffer[1] = 0x00 = MEGA644 |
RxBuffer[0] = 0x76 ; RxBuffer[1] = 0x00 = MEGA8 |
|
|
---- Device setzen |
SEND_CHAR('T'); |
SEND_CHAR(devicetyp); // set devicetyp = 0x74 oder 0x76 |
|
Antwort: |
RxBuffer[0] = 0x0D // OKAY |
|
|
---- Version abfragen (BootBlock) |
SEND_CHAR('V'); |
|
Antwort: |
RxBuffer[0] = Hauptversion; RxBuffer[1] = Nebenversion |
|
---- Puffergrösse ermitteln |
SEND_CHAR('b'); |
|
Antwort: |
RxBuffer[0] = 'Y' |
(unsigned int) SendBufferSize = RxBuffer[1]* 0x100 + RxBuffer[2]; |
|
|
---- Flash löschen |
SEND_CHAR('e'); |
|
Antwort: |
RxBuffer[0] = 0x0D // OKAY |
|
---- Adresse setzen |
cmd[0] = 'A'; |
cmd[1] = 0x00; |
cmd[2] = 0x00; |
SEND_BYTES(cmd, 3); |
|
Antwort: |
RxBuffer[0] = 0x0D // OKAY |
|
---- Block übertragen (Grösse wurde zuvor ermittelt) |
cmd[0] = 'B'; |
cmd[1] = (SendBufferSize >> 8) & 0xFF; |
cmd[2] = SendBufferSize & 0xFF; |
cmd[3] = 'F'; |
SEND_BYTES(cmd, 4); |
SEND_BYTES(data, SendBufferSize); |
|
Antwort: |
RxBuffer[0] = 0x0D // OKAY |
|
## Anmerkung ## |
Der letzte Block ist meistens kleiner als die Blockgrösse. |
Hier ist dann cmd[1] & cmd[2] entsprechend zu verkleinern ! |
|
---- Lesen (für Kontrolle) |
zu Beginn auf Adresse auf 0x00 setzen (siehe oben) |
|
cmd[0] = 'g'; |
cmd[1] = (SendBufferSize >> 8) & 0xFF; |
cmd[2] = SendBufferSize & 0xFF; |
cmd[3] = 'F'; |
SEND_BYTES(cmd, 4); |
|
Antwort: |
1 Block Daten, Länge entsprechend cmd[1] & cmd[2] |
|
---- Exit Bootloader |
SEND_CHAR('E'); |
|
|
|
|
|