mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FX2LP: C2-Start mit RENUM=0


Autor: Frank Hans (gowi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe einen Cypress FX2LP. Die Firmware habe ich in einem externem 
EEPROM gespeichert. Beim Starten wird dann ja automatisch das RENUM-Bit 
auf 1 gesetzt und die Firmware muss sich dann um die USB Requests 
kümmern.

Das Technical Reference Manual sagt im Abschnitt 3.6:

"The Default USB Device is established at power-on to set up a USB 
device capable of downloading firmware into the EZ-USB’s RAM. Another 
useful feature of the Default USB Device is that EZ-USB code can be 
written to support the already-configured generic USB device.
Before bringing the CPU out of reset, the EZ-USB automatically enables 
certain endpoints and reports them to the host via descriptors. By 
utilizing the Default USB Device (i.e., by keeping RENUM=0), the 
firmware can, with very little code, perform meaningful USB transfers 
that use these pre-configured endpoints. This accelerates the USB 
learning curve."

Genau dies möchte ich machen. Aber wie kann ich das RENUM-Bit auf 0 
halten? Es wird doch automatisch auf 1 gesetzt??

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu willst du das machen? Wenn du die Firmware im externen EEPROM hast, 
wozu brauchst du dann die Default-Firmware noch? Irgendwie versteh ich 
den Sinn dahinter nicht. Wenn überhaupt, dann geht das über die 
Spezial-Bits am Anfang des EEPROM Files. Da wo auch das C2 drin 
ist....schau mal in der Doku. Es gibt da ja auch das Bit für Umschalten 
auf 400kHz I2C Speed...dort müsste es dann irgendwo dabei sein.

Autor: Frank Hans (gowi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Sinn ist, die Funktionen des "generic USB Device" zu nutzen, ohne 
eigene USB-spezielle Funktionen in der Firmware zu implementieren (wie 
es der Ausschnitt aus der Doku sagt).

Du meinst das Configuration Byte? Da scheint es keine entsprechende 
Option zu geben.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um die Option zu nutzen, reicht es aus, einen C0 Load mit den 16 Byte 
für VID/PID usw zu machen. Dann übernimmt die Standard-Config.
hab eben nochma im TRM geschaut, da ist wirklich nur DISCON und 400KHz 
drin im Config-Word. Einen C2 Load machst du doch nur, wenn du die 
Firmware aus dem EEPROM laden willst. Du brauchst einen C0 Load.

Autor: Frank Hans (gowi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will ja meine Firmware aus dem EEPROM laden - daher muss es ein 
C2-Start sein. Allerdings soll (wie einem C0-Start) das Generic USB 
Device genutzt werden. Das heißt, die FX2LP-Hardware kümmert sich um 
alle USB-Anfragen, meine Firmware wird aber aus dem EEPROM gelesen.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öhm, ja das erscheint mir zwar recht sinnbefreit, aber da kann ich dir 
leider nicht helfen. Ich bediene die EP aus der Firmware des EEPROMs, 
das ist minimaler Aufwand, weil es ja massig Beispiele gibt, und daher 
hab ich den MischMasch nocht nicht probiert. Außer in diesem Satz findet 
sich auch nirgendwo in der Doku, dass das klappen soll. Du willst also 
eine FW reinladen, die nix mit dem USB macht, sondern irgendwelche 
anderen Funktionen? Das Problem dürfte sein, dass der FX2 bei einem C2 
Load die interne Firmware gar nicht benutzt, also der Load muss ja auch 
abgeschlossen sein, bevor der Host die Kommunikation startet (daher auch 
die 400kHz bei C2 Load). Also kommt man gar nicht dazu, da das Default 
Zeugs zu nutzen.

Autor: Frank Hans (gowi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab jetzt rausgefunden, wie es funktioniert:
USBCS &= ~bmRENUM;
EZUSB_Discon(FALSE);

Die erste Zeile setzt das RENUM-Bit auf 0 und mit der zweiten wird eine 
ReEnumeration durchgeführt.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, dann enumeriert der zuerst mit den Daten aus der Firmware und 
dann nochmal mit den Standard-Daten? Hmm..naja, wenn´s klappt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.