25.12.2013 Aufrufe

Gecko3 - CCC Event Weblog

Gecko3 - CCC Event Weblog

Gecko3 - CCC Event Weblog

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

6.5. Stand-alone Betrieb<br />

6.5. Stand-alone Betrieb<br />

Die Firmware muss im EEPROM gespeichert werden, damit eine stand-alone Betrieb möglich<br />

ist. Beim Aufstarten kontrolliert der Mikrokontroller über I 2 C, ob eine bootfähige Firmware<br />

im EEPROM vorhanden ist [Cyp06]. Bootfähig heisst der C-Code wird nicht im Intel Hex-<br />

Format gespeichert sondern im Binary Format. Dazu muss noch eine definierte Kopf- und<br />

Fusszeile eingefügt werden. Um das Erstellen dieser Datei braucht sich der Programmierer<br />

nicht zu kümmern. Bei jeder Kompilation im µVision2 wird die kleine Cypress Software<br />

hex2bix.exe aufgerufen, welche die Hex-Datei umwandelt und als .iic Datei abspeichert.<br />

Dieser Vorgang ist im Angang C beschrieben.<br />

6.5.1. EEPROM beschreiben<br />

Mit dem entsprechenden Vendor Request startet man die Funktion zum Beschreiben des<br />

EEPROMs. Zuerst wird die Speicheradresse, von wo aus das EEPROM beschrieben werden<br />

soll, auf 0 gesetzt. Danach verweilt die Firmware solange in der Funktion bis der EP2 keine<br />

Daten mehr erhält. Es wird wieder die Anzahl Byte im FIFO Buffer eingelesen und im EP2<br />

Zähler gespeichert. Wenn dessen Inhalt grösser als 64 Byte ist, begrenzen wir die Schleife,<br />

die den EP2 Inhalt in das Array speichert, auf 64 Durchläufe. Dies ist die maximal mögliche<br />

Datenmenge, die man mit einem sogenannten Page Write Befehl des EEPROMs übertragen<br />

darf [Mic]. Das Zwischenspeichern in einem Array ist nötig um mit der I 2 C Schreibefunktion<br />

von Cypress arbeiten zu können. Die abgespeicherten 64 Byte werden jetzt von der gesamt<br />

Anzahl Byte im EP2 Zähler abgezählt. Danach senden wir den Arrayinhalt über den I 2 C und<br />

berechnen die neue Speicheradresse, von welcher aus beim nächsten Durchlauf der Sequenz<br />

das EEPROM beschrieben werden soll. Wir haben beim ersten Durchlauf die Daten in die<br />

Speicheradressen 0 bis 63 geschrieben, folglich wird die nächste Adresse 64 sein. Dieser<br />

Vorgang wiederholt die Firmware solange bis der Wert im EP2 Zähler kleiner als 65 Byte<br />

ist. Die Anzahl Durchläufe der Speicherschleife wird nun auf den EP2 Zählerwert gesetzt,<br />

da sowieso höchstens noch 64 Byte, also die maximal erlaubte Datenmenge, im FIFO Buffer<br />

vorhanden sind. Wir speichern noch einmal den EP2 Inhalt in das Array und speichern ihn<br />

im EEPROM. Danach ist der Schreibevorgang aber noch nicht abgeschlossen sondern erst<br />

der FIFO Buffer übertragen. Der EP2 wird wieder geladen und ist nun für neue Daten vom<br />

Host bereit. Ist die Datei vollständig im EEPROM gespeichert, erhält der EZ-USB FX2<br />

vom Host einen entsprechenden Vendor Request als Bestätigung. Dieser setzt gleichzeitig<br />

die Variabeln der Funktion auf ihre Initialwerte.<br />

Project Report 23

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!