Hallo Zusammen, kurze Frage hat jemand erfahrung wie schnell man es schafft ein .bin File über die RS232 schnitstelle im ATMEGA32 zu flashen? Status ist: Atmega mit Testsoftware ausgestattet (Bootloader) Nun würde ich gerne versuchen die richtige Software per RS232 zu senden. Gelingt mir auch nur dauert es ca. 15sec. ein File mit 20Kb zu senden... Hat da jemand Erfahrung wie schnell man es denn theoretisch schaffen könnte? VG Manni
Manni schrieb: > Hat da jemand Erfahrung wie schnell man es denn theoretisch schaffen > könnte? Das hängt u.a. davon ab, wie für DEINEN Bootloader die Daten aus dem Bin-File für die Übertragung kodiert werden (Intel Hex Format?), wie die Übertragungsrate auf DEINER RS232-Schnittstelle eingestellt ist und ob die Übertragung durch Händshake zwischendurch pausiert. Der Rest ist Einmaleins
Hallo, danke fuer deine Antwort. Kodiert wird per Intel Hex Format. Hast du denn Erfahrungen wie schnell man 20kb uebertragen kann? Mir gehts eg. drumm ob wir bei der Seriellen uebertragung bleiben oder ob es besserer bzw. einfachere Methoden gibt. VG
> ein File mit 20Kb Wenn das File 20 kByte hat, dann werden 200000 bits übertragen, bei z.B. 115200 Baud dauert das knapp 2 s. Hat hingegen der Code 20 kByte, wird man mit einem Faktor von etwas über 2 multiplizieren müssen. > Einmaleins!
PS:
> ... Händshake ...
wäre nur bei schlechtem Bootloader nötig - der ATmega32 hat eine
Pagesize von 64 Worten.
Das Intel-Hexformat beinhaltet außer den reinen Datenbytes in einer Zeile noch Startcode, Byteanzahl, Adresse, Datentyp und Prüfsumme. Diese zusätzlichen Informationen werden, wie die Hexdaten selbst, im Asciiformat übertragen. Das heißt: für eine typische Datenzeile die aus 32 zu sendenden Bytes besteht sieht das wie folgt aus: - 32 Bytes als AsciiHex = 64 Bytes - Zusatzinformationen = 10 Bytes Bedeutet: für die Übertragung von 32 Datenbytes werden 74 Asciibytes gesendet. Vernachlässigt man bei dieser Betrachtung das Senden von Segmentierungsinformation und das einmalige Senden von EOF ein Multiplikationsfaktor von 2,31 per zu sendendem Datenbyte. Bei einer RS232 Übertragung werden beim Protokoll 8N1 10 Datenbits per Byte gesendet (8 Datenbits + Startbit + Stopbit). D.h.: 20 kByte = 20*1024 Bytes = 20480 zu übertragende Datenbytes. Im Hexformat zu sendende Bits: 20480 * 2,31 * 10 (Bits per Byte) = 473088 Datenbits Das macht bei einer Baudrate von 115200 470388 / 115200 = 4,1 Sekunden ! Wenn es (wie hier) um das Flashen eines Chips geht, ist die Frage nach dem Brennalgorithmus von Bedeutung und wie mit den Daten "umgegangen" wird. Bspw. kann nach einem Empfang eines Datenpakets dieses geflasht werden, deren Speicherzellen geprüft und hieraus eine Checksumme berechnet werden, die an den Host zurückgeschickt wird. Stimmt diese mit dem überein, wird mit dem nächsten Datenpaket fortgefahren. Dieses benötigt ebenfalls Zeit (wahlscheinlich mehr, als das reine übertragen der Datenbytes). Die Frage nach der Flashdauer richtet sich demnach nicht nur nach der Übertragungsart, sondern auch nach dem Brennalgorithmus (bspw. darin, ob der Bootloader die komplette Pagesize beim Flashen verwendet oder nicht). Eine Aussage hier kann also nur nur derart getroffen werden, dass das Upöoad MINDESTENS 4,1 Sekunden beträgt. ---------------------------------------------------------------- Btw.: 15 Sekunden für 20 kByte mit seriell finde ich sooooo schlecht nicht (auch wenn es vllt. etwas nervig ist) zu
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.