Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
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