Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 60 → Rev 61

/mkset/Info_BootBlock_update.txt
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');