Hallo, ich möchte auf einem Eingebetteten System mit einem lpc23xx (ARM7) mit 64Kb Ram ein System realisieren, dass CAN-, LIN-, Analog- und Digitale Signale auf eine Compact Flash Speicherkarte abspeichert. Wenn die Aufzeichnung beendet ist, soll man die aufgezeichneten Daten von der Speicherkarte über TCP (100 MBit/s) an einen Rechner (Windows, Linux, ...) übertragen. Während der Übertragung der Daten, wird kein weiterer Code ausgeführt. Die Compact-Flash Speicherkarte soll mit Kapazitäten von 8 oder gar 16 GB verwendet werden. Ich gehe davon aus, dass die sequentielle Lesegeschwindigkeit der CF_Speicherkarte höher ist, als die Übertragungsgeschwindigkeit von Ethernet 100 MBit/s. Nun habe ich mir überlegt, ob ich die Dauer der Übertragung verkürzen könnte, wenn ich die Daten vor der Übertragung komprimieren würde. Bei meinen Überlegungen bin ich zu dem Schluss gekommen, dass der Algothytmus folgende Eigenschaften haben sollte: - Die Komprimierung muss schnell und einfach sein. - Die Dekomprimierung darf aufwendig sein. - Die Komprimierung muss verlustfrei sein. Könnt ihr mir einen geeignetes Verfahren empfehlen ? Macht eine Komprimierung überhaupt Sinn, oder ist die CPU hierfür zu langsamm ? Gruß Tikonteroga
Tikonteroga schrieb: > Ich gehe davon aus, dass die sequentielle Lesegeschwindigkeit der > CF_Speicherkarte höher ist, als die Übertragungsgeschwindigkeit von > Ethernet 100 MBit/s. Herzlichen Glückwunsch wenn du es schaffen solltest, mit echten Daten, ganz egal woher du sie hast und sei es frei erfunden, mit einem ARM7 ein 100Mbps Ethernet mit TCP ohne Komprimierung zu saturieren. Hast nämlich nur so um die 7 Takte pro Byte zur Verfügung. Zur Orientierung: Ein 300MHz ARM9 NAS bläst bei gutem Wetter und FTP um die 20MB/s von Platte auf's Gigabit-Ethernet raus. Und es ist nicht die Platte, die begrenzt.
Leider ist die Komprimierung eigentlich immer aufwendiger als die Dekomprimierung ;) Ob Komprimierung Sinn macht haengt ja von den Daten ab :) Dazu muesstest Du also auch noch was sagen. Zumindest etwas aehnlich einem Run-length encoding macht aber denke ich bei einem Logging oft Sinn.
Sehr schnell, auch beim Komprimieren, und einfach implementierbar: http://en.wikipedia.org/wiki/LZRW
Hmm ja, da hat der A.K. Recht. Gerade wenn Du auch noch FAT oder aehnlich implementieren willst...?
>ich möchte auf einem Eingebetteten System mit einem lpc23xx (ARM7) mit >64Kb Ram ein System realisieren, dass CAN-, LIN-, Analog- und Digitale >Signale auf eine Compact Flash Speicherkarte abspeichert. Dann mach dir mal Gedanken zum Thema Wear Levelling. Sporadische Pausen von 300-500ms beim schreiben sind zu erwarten. Kannst du die puffern?
Warum nicht einfch die CF Karte aus dem Board ziehen und in den PC stecken. Schneller kannst du die Daten nimmer übertragen ;-) 16G in 10s.
holger schrieb: > Dann mach dir mal Gedanken zum Thema Wear Levelling. Macht das nicht die CF-Karte schon selbst?
@ 900ss D. (900ss) >> Dann mach dir mal Gedanken zum Thema Wear Levelling. >Macht das nicht die CF-Karte schon selbst? Sicher, aber eben deshalb gibt es ab und an Pausen, in denen die Karte keine Daten mehr annimmt und man warten muss. MfG Falk
Von hoher Schreibrate war noch nicht die Rede. Die ist bislang offen.
Falk Brunner schrieb: > Sicher, aber eben deshalb gibt es ab und an Pausen, in denen die Karte > keine Daten mehr annimmt und man warten muss. Ah, OK. Danke wieder was gelernt :-)
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.