Hallo, ich habe eine GUI programmiert die von meinem Controller Daten entgegen nimmt. Die Geschwindigkeit ist jedoch ernüchternd. mein Protokoll sieht so aus: µC ->Datenpaket-> PC µC <-Bestätigung<- PC also µC codiert die Daten für das Paket, schickt sie, der PC empfängt sie, nimmt das Paket auseinander, dekodiert die Daten, schreibt sie in einen Puffer und schickt dann die Bestätigung, Controller empfängt diese und fängt dann an die nächsten Daten zu codieren...usw meine Datenpakete sehen so aus: |Startbyte|Typebyte|Anzahlbyte| ---Datenbytes---|Stopbyte| = max 64Byte (von mir festgelegt) meine Bestätigungen sind so: |Startbyte|Typebyte|Anzahlbyte (=0)|Stopbyte| = 4Byte jedes Datenpaket oder Bestätigung löst ein Event auf der Gegenseite aus wodurch eine Statemaschine angeschmissen wird Es wurden 1000 Pakete je 64Byte übertragen. Betrachtet wurde nur die Daten (60Byte pro Paket) nicht der Overhead, also 1000*60Byte = 60000Byte Ich habe vollgende Messungen gemacht: µC MHZ | Baudrate | Dauer (Sek) | Theorie (Sek) | Byte/Sekunde | 3,68 9600 95 50 631 3,68 19200 65 25 923 3,68 230400 37,7 2 1590 3,68 460800 37,7 1 1590 12 250000 24,5 2 2449 12 500000 23,4 1 2564 16 500000 22 1 2727 16 1000000 22 0.5 2727 16 2000000 22 0.25 2727 Also alles vieeeel zu langsam Ich hab schon ein paar Ideen woran es liegt, aber was sagt ihr dazu?
Ja. 1. Es scheint delays zu geben. Der controller kann die naechsten bytes doch bereits codieren waehrend die alten noch am senden sind, waehrend auf eine bestaetigung gewartet wird. 2. Der PC ist auch eher lahm. Miss da mal den delay zwischen den packeten. Auch der PC kann sich vorbereiten, sodass dessen delay minimiert wird. 3. Erhoeh die Blockgroesse. dann gibt es fuer ein festes Volumen weniger packete, weniger delays. 4. Man koennte mit ausstehenden Quittierungen arbeiten. Dafuer wuerde man mehrere Buffer benoetigen, sowie numerierte Packete. Dann kann der controller bereits das naechste packet senden, befor er die quittierung hat. Ich hab mal eine Simulation diesbezueglich geschrieben. Hab sie aber grad nicht praesent.
Da es mit dem MC-Takt korreliert, ist wohl die Verarbeitung auf dem MC der Flaschenhals. Peter
A...aha Soooo. schrieb: > 2. Der PC ist auch eher lahm. Miss da mal den delay zwischen den > packeten. > Auch der PC kann sich vorbereiten, sodass dessen delay minimiert wird. hm das verstehe ich nicht ganz, kannst du das genauer erklären? als erstes werde ich: A...aha Soooo. schrieb: > 1. Es scheint delays zu geben. Der controller kann die naechsten bytes > doch bereits codieren waehrend die alten noch am senden sind, waehrend > auf eine bestaetigung gewartet wird. umsetzen, scheint am wenigsten aufwand zu sein als 2. die Paketgröße erhöhen, scheint auch nicht soo viel aufwand zu sein bin mal gespannt was das schon bringt
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.