projekte:usbblaster:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
projekte:usbblaster:start [2015/02/15 14:06] – [Umbau der Leiterplatte] yc | projekte:usbblaster:start [2015/02/16 22:43] – [Umbau der Leiterplatte] yc | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
===== Vorgeschichte ===== | ===== Vorgeschichte ===== | ||
- | Damals, vor vielen Jahren, hat sich Sebastian DL3YC mit dem Selbstbau von Logic Analyzern beschäftigt. Das war die Zeit als Nachbau-Versuche vom Salea Logic begannen erfolgreich zu werden. Dadurch bestärkt und auch durch die berufliche Auseinandersetzung mit dem USB-Schaltkreis FX2 von Cypress, entstand der Wunsch nach einem FX2-basierten Logic Analyzer, der die hervorragende Software von Salea nutzen kann. Der Trick ist dabei, dass die Firmware zur Laufzeit auf das Gerät geladen wird und man nur dafür sorgen musste, dass der Schaltkreis sich mit der richtigen Produkt- und Hersteller-ID per USB meldet. Dazu schreibt man sie in einen I²C-EEPROM, | + | < |
Dies war alles im Jahre 2010, es entstanden selbst gebaute Leiterplatten von Sebastian und auch Winni DL2AWT(Datecode auf dem PCB: 5010, also KW50 2010). Vorallem die Leiterplatte von Winni hatte Potenzial, da man mit dieser auch einen schnellen AD-Wandler angebunden hat. Alle Leiterplatten hatten leider gemein, dass sie Probleme beim Enumerieren als Hi-Speed-Gerät haben. Dieses Problem zeigte sich auf sehr unterschiedliche und schlecht reproduzietrbare Weise. " | Dies war alles im Jahre 2010, es entstanden selbst gebaute Leiterplatten von Sebastian und auch Winni DL2AWT(Datecode auf dem PCB: 5010, also KW50 2010). Vorallem die Leiterplatte von Winni hatte Potenzial, da man mit dieser auch einen schnellen AD-Wandler angebunden hat. Alle Leiterplatten hatten leider gemein, dass sie Probleme beim Enumerieren als Hi-Speed-Gerät haben. Dieses Problem zeigte sich auf sehr unterschiedliche und schlecht reproduzietrbare Weise. " | ||
+ | </ | ||
Jetzt liegen also noch die Leiterplatten und vorallem auch die teuren USB-Schaltkreise rum. Um den leider fehlgeschlagenen Projekt noch einen Sinn zu geben, werden auf Grundlage dieser Leiterplatten USB-Blaster hergestellt. Dazu wird die Leiterplatte für eine übliche JTAG-Verbindung umgebaut. Als Software läuft auf der Zypresse eine freie Firmware, die den Altera USBBlaster nachbildet. | Jetzt liegen also noch die Leiterplatten und vorallem auch die teuren USB-Schaltkreise rum. Um den leider fehlgeschlagenen Projekt noch einen Sinn zu geben, werden auf Grundlage dieser Leiterplatten USB-Blaster hergestellt. Dazu wird die Leiterplatte für eine übliche JTAG-Verbindung umgebaut. Als Software läuft auf der Zypresse eine freie Firmware, die den Altera USBBlaster nachbildet. | ||
Zeile 27: | Zeile 28: | ||
* Nach Anstecken von USB wird ein neues Gerät mit VID = 0x04B4 und PID = 0x8613 erkannt | * Nach Anstecken von USB wird ein neues Gerät mit VID = 0x04B4 und PID = 0x8613 erkannt | ||
- D5, D7, D4, D8 | - D5, D7, D4, D8 | ||
- | ===== Software-Anpassung ===== | + | |
- | Die Software wurde hinsichtlich der Zuordnung MCU-Pin und JTAG-Pin angepasst: | + | - mit dünnen Lackdraht die Verbindungen zwischen |
- | ^ Pin ^ JTAG ^ Steckverbinder | + | |
- | | PB4 Out| TCLK | 1 | | + | |
- | | PB3 In | TDO | 3 | | + | |
- | | PB2 Out | TMS | 5 | | + | |
- | | PB0 Out | TDI | 9 | | + | |
- | | PC0 Out | JTAG_EN | - | | + | |
- | Die Firmware unterstützt nicht die Modi Active Serial und Passive Serial. | + | ^ Pin FX2 ^ Bezeichnung ^ JTAG-Steckverbinder |
+ | | PC.0() | TDI | xx | | ||
+ | | PC.1() | TDO | xx | | ||
+ | | PC.2() | TCK | xx | | ||
+ | | PC.3() | TMS | xx | | ||
===== EEPROM-Programmierung ===== | ===== EEPROM-Programmierung ===== | ||
- | Zuerst lädt man sich fx2fw aus meinem Github und kompiliert es: | + | Zuerst lädt man sich // |
- | < | + | |
- | # git clone https:// | + | |
- | # cd fx2fw-sdcc | + | |
- | # make | + | |
- | </ | + | |
Danach wird das Gerät angeschlossen und die Bus- und Gerätenummer ermittelt: | Danach wird das Gerät angeschlossen und die Bus- und Gerätenummer ermittelt: | ||
< | < | ||
Zeile 50: | Zeile 45: | ||
</ | </ | ||
In diesem Beispiel ist die Gerätenummer 006 und der Bus 004.\\ | In diesem Beispiel ist die Gerätenummer 006 und der Bus 004.\\ | ||
- | Mit diesen Angaben wird die kompilierte Firmware im Hex-Format auf das Gerät bespielt. Direkt danach enumeriert sich das Gerät als USBBlaster. | + | Mit diesen Angaben wird die kompilierte Firmware im Hex-Format auf das Gerät bespielt. Direkt danach enumeriert sich das Gerät |
< | < | ||
# fxload -I usbjtag.hex -D / | # fxload -I usbjtag.hex -D / | ||
Zeile 64: | Zeile 59: | ||
</ | </ | ||
Nun ist das Gerät bereit als USBBlaster zu fungieren\\ | Nun ist das Gerät bereit als USBBlaster zu fungieren\\ | ||
- | *Zu beachten:* Dieser Prozess muss bei jedem erneuten Einstecken des USBBlasters gemacht werden. Um die Firmware dauerhaft in das EEPROM zu schreiben, fehlt noch ein 2nd Stage Bootloader, *TODO*. | + | **Zu beachten:** Dieser Prozess muss bei jedem erneuten Einstecken des USBBlasters gemacht werden. Um die Firmware dauerhaft in das EEPROM zu schreiben, fehlt noch ein 2nd Stage Bootloader. |
===== Inbetriebnahme ===== | ===== Inbetriebnahme ===== |
projekte/usbblaster/start.txt · Zuletzt geändert: 2017/08/30 13:35 von yc