Einen guten Morgen wünsche ich!
Ich möchte ein kleines C++ Programm im Hinblick auf
Auslesegeschwindigkeit eines EEPROM optimieren.
Zum Stand der Dinge: Ich habe ein EEPROM, welches ich mit einer Datei
beschreiben und anschließend den Schreibvorgang verifizieren möchte. Ein
kleines Programm, was mir diese Wünsche erfüllt, habe ich bereits inkl.
Sourcecode. Dieses setzt auf einer API für den verwendeten
Programmieradapter auf, benötigt für den Schreib- und
Lese-/Prüfungsvorgang jeweils etwa 5 Sekunden.
Vom Hersteller des Adapters existiert eine Software, mit der ich
vergleichbare write-Zeiten erziele, was aber beim Lesen/Verifizieren
SEHR viel schneller ist (etwa 1 Sekunde). Da das Programm nur aus ner
.exe und einigen .dll's besteht, habe ich darin leider keinen Einblick,
gehe aber davon aus, dass dieses natürlich auch die selbe API benutzt.
Somit ist mein Ansatzpunkt für Optimierung der oben erwähnte
Sourcecode..
Kurzum: Das Auslesen des EEPROM dauert 4 Sekunden länger und möchte ich
so gut es geht beschleunigen. Hat jemand von euch generelle Tipps, was
in dem Aufbau der Flaschenhals sein kann? Worauf sollte ich achten, was
prüfen? Wenn jemand sich die Mühe machen möchte, kann ich auch den
relevanten Code zeigen, allerdings möchte ich vorab eher eine Art
Brainstorming. :)
Das Equipment / der Aufbau ist stets der selbe, es muss also, wie
gesagt, das eigene Prog (speziell die Read-Funktionalität) sein.
Prog-Adapter + API Doku:
http://www.totalphase.com/download/pdf/aardvark-v4.00.pdf
EEPROM:
http://www.st.com/stonline/products/literature/ds/6757.pdf
Besten Danke und viele Grüße
Steffen
Ich habe die zwei Dokumente kurz überflogen und habe drei Fragen dazu:
1. Welcher von den EEPROMs ist es denn?
2. Welche I2C Frequenz nutzt Du (100 oder 400KHz)
Beim Schreiben macht das nicht viel aus, da der Schreibvorgang von der
Zeit her dominierend ist.
3. Liest Du jedes Byte einzeln oder fortlaufend?
Gruß Jörg
Hi Jörg,
zu 1.: Sorry, dass ich das vergessen habe zu erwähnen: der M24256 ist´s
zu 2.: 400kHz mit beiden Programmen, wobei das auch bei beiden
Programmen runter gesetzt werden kann.
zu 3.: da bin ich gerade dran, ich meld mich, wenn ich die Antwort habe
:) Ziel sollte ja sein: Möglichst viel auf einmal, nicht wahr?
Gruß
Steffen
Nachtrag: Ich habe gerade deine Aussage überprüft.
Bei dem Tool des Adapterherstellers nimmt die Änderung auf 100kHz
tatsächlich nur spürbaren Einfluss auf den Lesevorgang, nicht aber auf
den Schreibvorgang. Wie kommt das? Ein paar erklärende Worte dazu wären
super. :)
Mit dem verbesserungswürden Tool allerdings ist beim lesen und schreiben
eine Verlangsamung spürbar. Vielleicht hilft das?!
Gruß
Steffen
Steffen A. wrote:
> Bei dem Tool des Adapterherstellers nimmt die Änderung auf 100kHz> tatsächlich nur spürbaren Einfluss auf den Lesevorgang, nicht aber auf> den Schreibvorgang. Wie kommt das? Ein paar erklärende Worte dazu wären> super. :)
Weil beim Schreiben die Kommunikation den kleineren Teil der Zeit in
Anspruch nimmt. Der Löwenanteil entfällt auf das tatsächliche Schreiben
der Daten innerhalb des EEPROMs. Und diese Zeit ist unabhängig von der
Kommunikationsgeschwindigkeit.
@Stefan: Verstehe, danke. :)
Ich habe den Read-Ablauf zusammen gestellt. Wenn euch nochwas fehlen
sollte, bitte bescheit geben.
Über einen Konsolenbefehl teilt man dem Programm mit, dass man lesen
möchte (case OP_READ), dann bekommt man die gewünschten
Speicherabschnitte nach und nach auf dem Bildschirm geworfen (je 16bit).
Hmm.. Warum kann man seine Beiträge nicht editieren?! :(
Es sollte oben "jeweils 16 BYTE" heißen, nicht bit.. Ich habe mal einen
Ausschnitt der Ausgabe angehängt.
>Hmm.. Warum kann man seine Beiträge nicht editieren?! :(
Kann man (siehe Bild). Geht jedoch nur, wenn du dich registrierst und
nicht als GAST drin bist.