mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT32AP7000 - USB Controller


Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

ich möchte mir eigentlich nur einmal ein wenig Luft verschaffen. Es ist 
mir doch tatsächlich gelungen, dem AP7000 zwei Bulk-Endpoints (1x OUT, 
1x IN) zu verpassen und eine bidirektionale Kommunikation zwischen dem 
µC und einem Linux-Rechner mit libusb aufzubauen.

Das Ganze hat mich zwei Tage gekostet. Ich frage mich, ob das so 
kompliziert sein muss. Erst bekommt man von Atmel Header-Files mit 
eingebauten Fehlern und sucht sich dumm und dämlich, nachdem man die 
Ergebnisse aus dem ICE nicht nachvollziehen kann und dann kommt die 
Sammlung von Status-Bits dazu, deren genauen Sinn man wahrscheinlich 
erst nach dem Auswendiglernen der 650-seitigen USB 2.0 Dokumentation 
kennt und es bitter bestraft wird, wenn man an bestimmten Stellen 
vergisst, irgendein Bit zurückzusetzen. Mit knapp über 300 Zeilen ist 
mein Quelltext recht kompakt geworden, da die meiste Zeit für 
Trial-And-Error draufging und ich zumindest in der Anfangsphase mit zwei 
Rechnern arbeiten musste, da anscheinend der JTAGICE sehr empfindlich 
reagiert, wenn an denselben USB-Port ein Gerät hängt, dass die 
Kommunikation ein wenig stört. Vielleicht war es auch der Linux-Kernel 
selbst. Auf jeden Fall bliebt der ICE ständig hängen.

So, das ist genug Luft. Auf zu neuen Taten.

Gruß,

Florian

PS: Bei Interesse kann ich den entspr. Quelltext-Teil gerne hier posten.

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der AVR32 ist meiner Meinung nach zu neu, um damit wirklich gut arbeite 
zu können. Das war mit den SAM7 schon so furchtbar, ich lass erstmal die 
Finger davon und bau auf den SAM9 :-)

Wenn ich das richtig verstanden hab, läuft auf dem AP7000 kein Linux, 
oder?

Bei solchen Kalibern würde ich selbst wirklich nur noch ungerne an der 
Peripherie rumspielen ... Sowas lässt man doch Linux machen ;-)

Mfg
Thomas Pototschnig

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, alles höchstpersönlich eingetippt, sogar Startup-Routinen. 
Außerdem auch auf sämtliche Standard-Libs verzichtet.

Unter Linux müsste auch jemand Treiber für die Peripherie basteln ;-))

Für meine Zwecke ist im Linux-Kernel zuviel Overhead eingebaut, um alle 
Eventualitäten abzudecken. Ich habe vor, das Board als User-Interface 
für einen selbstgebauten Logic-Analyzer zu misbrauchen und da brauche 
ich nur das Nötigste und vermutlich noch Einiges an 'Dampf', um 
Protokolle vernünftig zu dekodieren.

Bin mal gespannt, wie es denn demnächst mit dem LCD-Controller aussieht.

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Unter Linux müsste auch jemand Treiber für die Peripherie basteln ;-))

Dachte, dass es da schon ein fertiges Linux von Atmel gibt ...

> Für meine Zwecke ist im Linux-Kernel zuviel Overhead eingebaut, um alle
> Eventualitäten abzudecken. Ich habe vor, das Board als User-Interface
> für einen selbstgebauten Logic-Analyzer zu misbrauchen und da brauche
> ich nur das Nötigste und vermutlich noch Einiges an 'Dampf', um
> Protokolle vernünftig zu dekodieren.
>
> Bin mal gespannt, wie es denn demnächst mit dem LCD-Controller aussieht.

Have fun :-)

Mfg
Thomas Pototschnig

Autor: MNR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Thomas

Da dachtest du richtig. Ich habe hier ein NGW100, und da ist alles 
drauf, was man gemeinhin so braucht (außer USB Host).
Siehe 
http://www.avrfreaks.net/wiki/index.php/Documentat...

Gruß, Matthias

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@MNR:

USB Host kann der AP7000 an sich nicht. Dafür bräuchte man dann externe 
Peripherie.

Das Problem mit dem Linux, das da drauf ist, ist erstens, dass der 
AP7000 doch ein wenig langsamer getaktet wird, als er könnte (auch wenn 
Atmel bis jetzt kein Maximum angegeben hat, wird doch zumindest auf 150 
MHz verwiesen) und dass die SDRAM- und Flash-Timings doch relativ 
vorsichtig gewählt wurden. Ansonsten natürlich der viel Overhead durch 
den Kernel.

Autor: MNR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das mit dem Host finde ich auch bescheiden. Mein Foxboard ist da 
schon besser...

Benutzt du das AVR32 Studio? FreeRTOS oder alles selber programmiert?

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> USB Host kann der AP7000 an sich nicht. Dafür bräuchte man dann externe
> Peripherie.

Das nervt ja am Allermeisten am AP7000 ... Wieso hat der denn keinen 
USB-Host??? :-)

War ein weiterer Grund mir lieber ein SAM9260-Board zuzulegen ...

Vielleicht ist das Langsamertakten ein ähnlicher Grund wie das Takten 
der SAM7 auf 48MHz, damit die das USB sauber hinkriegen ...

Mfg
Thomas Pototschnig

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR32 Studio unter Linux und alles selbst programmiert. Bis auf Flash 
(seriell + parallel), SDRAM, USART1 und USB blinkt im Moment nur eine 
LED mit 1 Hz. Wenn ich endlich den passenden Steckverbinder hätte, wäre 
ein TFT dran, das ich irgendwann mal bei eBay geschossen habe.

Autor: MNR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, jetzt sag auch noch, du hast das Board selbst zusamengelötet ;-)

Wenn du kannst/darfst, wäre ich mal am Code interessiert...

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne, das ist auch das NGW100. Ich muss den Code gerade mal ein wenig 
aufräumen, dann poste ich den gleich.

Autor: Florian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier der Quelltext...

Autor: Florian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
... und der Mini-Linux-Test der USB-Übertragung.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Acho, ich sollte noch erwähnen, dass einige Atmel-Header-Files zu ändern 
sind:

Siehe
http://www.avrfreaks.net/index.php?name=PNphpBB2&f...
http://www.avrfreaks.net/index.php?name=PNphpBB2&f...

Autor: MNR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, sehr gut, danke! Probiere ich mal aus!

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läuft dein Code auch auf den UC3? Weil die sind ja flash-basiert und da 
läuft eh kein Linux drauf. Da könnte man deinen USB-Code dann gut 
gebrauchen.

Mfg
Thomas Pototschnig

edit
Aber ein EBI haben sie, also eigentlich doch Linux möglich. Aber 
interessant ists doch für Systeme, die nicht unbedingt Linux brauchen. 
Die AP7 gibts ja überhaupt nicht mit Flash ...

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem UV3 hatte ich bis jetzt nichts zu tun. Daher kann ich nicht 
sagen, ob der die gleiche Peripherie hat bzw. diese identisch 
angesprochen wird. Der Code selbst setzt erst einmal einen 20 MHz-Quarz 
voraus und taktet die CPU dann über den PLL auf 150 MHz, EBI wird auf 75 
MHz getaktet (soll laut einem anderen Forum das Maximum sein).

Der AP7000 bootet von Adresse A000 0000, was nicht verbiegbar auf 0000 
0000 gemapt ist, das bedeutet EBI CS0 @ 16 bit. Da liegt beim NGW100 ein 
AT49BV642D.

Auf jeden Fall können sich noch nicht allzu viele Menschen mit dem Thema 
der direkten Programmierung des AP7000 auseinandergesetzt haben, sonst 
wäre die Geschichte mit den kaputten Header-Files schon früher 
aufgefallen.

Autor: Benedikt Sauter (Firma: embedded projects GmbH) (flopper)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Flo,

hast du zufällig ein Makefile oder so noch da?

Gruss Bene

Autor: S. K. (selim42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Flo,

es ist ne weile her aber ich hätte da noch ein paar Fragen bezüglich 
deinem Projekt.

Wenn du diese Zeilen liest würde ich mich freuen wenn du mir ant. gerne 
auch an meine Mail-Addy: tilki1983@hotmail.de


danke.


LG

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.