bin mit meinem stm32f103c8 inzwischen relativ weit gekommen. Elm chans
fat läuft. Ziel soll - u.a. - ein komfortabler MP3+Radio-Player sein.
Jetzt stellt sich die Frage nach dem Speichermedium - sd-Karte oder
usb-Stick.
USB-Stick wäre besser, weil er eben universal an jedem PC beschrieben
und gelesen werden kann. Geht mit sd zwar im Prinzip auch, meine
Leseadapter fallen aber immer nach kurzem Gebrauch aus. Also lieber USB.
Elm Chan ist für sd Standard, der relativ sicher funktioniert. Gibt es
vergleichbares für den Anschluss von USB-Sticks an arms?
Kann jemand eine brauchbare Bibliothek für die MP3-Dateiverwaltung
empfehlen, die einfach implementiert werden kann?
W.S. schrieb:> Dir ist klar, daß hier jemand was zum Zusammenklicken sucht, gelle?
Klar, aber ein USB-Host zum Zusammenklicken existiert wohl kaum für
einen Controller, der keine USB-Host-Hardware hat.
Der OP könnte auch z.B. auf einen STM32F4 umsteigen welcher einen
USB-Host hat. Oder z.B. das STM32F7 Discovery verwenden, welches sowohl
einen SD-Slot (mit SD bus => schnell), einen USB-OTG (also auch
Host-fähigen) USB-Anschluss, und ein großes Display hat. Ist aber ggf.
etwas unhandlich als MP3-Player.
Dr. Sommer schrieb:> Der OP könnte auch z.B. ...
Klar, er könnte auch was Anderes machen.
Ich sehe hier immer wieder Leute jammernd aufschlagen, die sich große
Projekte vorgenommen haben, ohne auch nur im Geringsten die Basics zu
verstehen.
Wenn man denen dann sagt, sie mögen sich doch bittesehr erstmal
einarbeiten, z.B. durch Lesen und Verstehen, dann wird man böse
angegiftet.
Gilt übrigens auch für dich. Ich hatte damals versucht, aus nem
Ramschteil ein billiges und benutzbares Evalboard zu machen, das sogar
noch ne nette Peripherie hat. Entsinnst du dich an deine 'Beiträge'
dazu? Ja? Nun, seitdem hat ST die Szene erfolgreich mit Boards
zugeschüttet und man sollte meinen daß dies zu mehr Können unter den
Leuten geführt hätte, aber die Jammerbeiträge hier sind geblieben. Und
jetzt sucht jemand an seinem Dreirad nen USB-Host, ohne zu wissen, daß
es sowas überhaupt gibt. Klasse!
Ich kann mich noch an einen Cheffe-Spruch erinnern, den ich zu
Windows98-Zeiten mir anhören mußte: "Was kann denn an diesem USB so
schwer sein? Sind doch nur zwei Leitungen!"
Genau!
W.S.
Was solls,
http://www.ebay.de/itm/272501793801 soeben gekauft - damit müsste es
dann gehen.
Der unterschied Host/Device scheint nicht ganz einfach zu sein. Trotzdem
die Frage, was kann man mit dem USB-Device-Controller des f103c8 denn
dann anfangen?
W.S. schrieb:> Dir ist klar, daß hier jemand was zum Zusammenklicken sucht, gelle?
Ingenieurstätigkeit ist im Prinzip Arbeitsvermeidung. Ich klicke
zusammen, wenn mir das Ergebnis ausreichend erscheint. Ich programmiere
selber, wenn das schneller geht oder wenn ich gewünschte Ergebnisse
sonst nicht erreichen kann.
Zumindest bei einer Fat-library ist die Lebenszeit zu kurz um die selber
zu schreiben.
grundschüler schrieb:> Trotzdem die Frage, was kann man mit dem USB-Device-Controller des> f103c8 denn dann anfangen?
Ein USB-Device (Gerät) bauen, das an einen USB-Host (z.B. Deinem PC)
angeschlossen werden kann.
grundschüler schrieb:> Elm Chan ist für sd Standard, der relativ sicher funktioniert. Gibt es> vergleichbares für den Anschluss von USB-Sticks an arms?
Nein, da es auf den jeweiligen USB Host angepasst sein müsste. Und
USBSticks >32 GB haben kein FAT32, was den Anschluss an einen µC
behindert. NTFS will man nich auf einem µC implementieren.
SD Karten sind um Größenordnungen einfacher zu bedienen...
W.S. schrieb:> Wenn man denen dann sagt, sie mögen sich doch bittesehr erstmal> einarbeiten, z.B. durch Lesen und Verstehen, dann wird man böse> angegiftet.
Wer hat dich böse angegiftet?
W.S. schrieb:> Ich sehe hier immer wieder Leute jammernd aufschlagen, die sich große> Projekte vorgenommen haben, ohne auch nur im Geringsten die Basics zu> verstehen.
Ja schön. Behalte deine üblichen Anfeindungen deswegen doch einfach für
dich.
W.S. schrieb:> Gilt übrigens auch für dich.
Vielleicht hast du ja den Sinn eines Forums nicht verstanden.
W.S. schrieb:> Entsinnst du dich an deine 'Beiträge'> dazu?
Klar, nur du hast ja anscheinend nix draus gelernt...
W.S. schrieb:> aber die Jammerbeiträge hier sind geblieben.
Niemand hat hier gejammert. Nur du fängst direkt wieder mit Stänkern an.
grundschüler schrieb:> Der unterschied Host/Device scheint nicht ganz einfach zu sein. Trotzdem> die Frage, was kann man mit dem USB-Device-Controller des f103c8 denn> dann anfangen?
Deine eigenen USB-Geräte bauen, also z.B. dass der STM32F103 selbst als
USB-Stick oder -Maus oder -Tastatur usw. erkannt wird.
grundschüler schrieb:> Zumindest bei einer Fat-library ist die Lebenszeit zu kurz um die selber> zu schreiben.
Och, ist eigentlich ganz interessant.
Es ist natürlich unverschämt solche Fragen zu stellen, den Unterschied
zwischen USB Host und Device bekommt man doch schon in die Wiege gelegt!
Und wie man das nackig in Assembler programmiert nachdem man das
Datenblatt überflogen hat noch dazu.
Es geht mir im Prinzip um so eine Art USB-Stick-Wechsler. Das ganze
funktioniert derzeit ganz gut mit Einzel-Mp3-Modulen. Was fehlt ist eine
komfortable Dateiverwaltung sowie die Anzeige von MP3-Informationen. Der
Zugriff auf die Module wird nicht möglich sein.
Gibt es evtl. fertige Module, die den Zugriff auf USB-Sticks
ermöglichen? Ich verwende nur 8GB-Sticks weil ich bei größeren viele
Ausfälle hatte.
Was noch möglich wäre, statt USB-Sticks gleich eine Festplatte zu
nehmen. Da wäre dann wohl ein M3/M4 eher ungeeignet?
Jim M. schrieb:> Und USBSticks >32 GB haben kein FAT32, was den Anschluss an einen µC> behindert.
Das sieht, wenn man es pedantisch sieht, bei SD-Karten exakt genauso
aus.
Bei SD-Karten (genauer: SDXC-Karten) ist in der Spezifikation das
Dateisystem exFAT vorgeschrieben, bei USB-Sticks hingegen hindert einen
nur das windows-eigene Formatierungsprogramm, mehr als 32 GB mit FAT32
zu nutzen. Da gibt es keine Spezifikation, die irgendetwas anderes
vorschreibt.
Sofern man sie mit einem anderen Programm (oder unter einem anderen
Betriebssystem) formatiert, können USB-Sticks oder auch USB-Festplatten
noch jenseits der 2-TB-Größe mit FAT32 verwendet werden.
Sieht interessant aus, aber so nennt man glaube ich auch Frauen die
nicht so hübsch sind... Also für Komfort würde ich mir die nächsthöhere
Liga mit Cortex-A und sowas wie NanoPi ansehen. Aber wenn du deinen F103
weiterverwenden willst müsste das mit dem MAX gehen.
grundschüler schrieb:> Wenns dafür Software gäbe, wäre der ideal.
dafür gibt es Linux Images und z.B. mplayer. 'Schwierig' ist es
vielleicht nur wenn es mplayer nicht für diese Plattform fertig
kompiliert gibt, ansonsten ist das eine Sache von wenigen Minuten.
Jedenfalls nach meinen Erfahrungen mit einem RaspberryPi.
Hallo,
ich habe diesen thread mal wieder aufgemacht, weil er dem am nächsten
kommt, was ich suche...
Für einen Kunden soll in ein bestehendes System (STM32F4xx auf FreeRTOS
Basis) an das USB OTG Interface ein USB stick (ausschliesslich)
angeschlossen werden.
Ich habe mal mit den Cube libaries experimentiert. Es sieht so aus, als
ob die unter dem typischen ST Beispielcode Problem leiden (also nur ganz
genau das Minimum implementieren, mit dem das Beispiel läuft, von
Randbedingungen oder Dauerstabilitätstest brauchen wir da gar nicht erst
anfangen zu reden).
Hat Jemand 1. Hand (positive oder negative) Erfahrungen mit Anderen
Libraries oder Middlewaresuiten - ausdrücklich und gerne auch
kommerzielle Produkte? Ggf. wende ich mich auch gerne per PM an Leute,
die das nicht öffentlich diskutieren möchten.
Schönen Dank!
Matthias S. schrieb:> Uwe B. hat erfolgreich Libraries für STM32F4 erstellt, die> funktionieren:> http://mikrocontroller.bplaced.net/wordpress/?page_id=6
Schönen Dank für den Tipp. Ich habe es mir mal angesehen. Allerdings ist
der Code ein Super Beispiel dafür, warum man in Anwendungen, die
wirklich ins Feld gehen sollen, besser auf professionell entwickelte
Produkte zurückgreifen sollte...
Nach dem Zusammenstellen der Codebasis und Erstellen und Downloaden
eines lauffähigen Images (ging sogar relativ flott, und Probleme dabei
sind nicht dem Uwe anzulasten!) passierte... nichts. Kein IRQ, keine
Zustandsänderung... die Anwendung läuft zwar (also kein Fault,
Breakpoint o.ä.), aber es passiert halt absolut nichts.
Gut, so ist das Leben, und es ist ja unser Job, mit so etwas fertig zu
werden. Also Breakpoint auf UB_USB_MSC_HOST_Init(), Durchsteppen...
und schon da ist ein Riesenproblem. Es gibt keinerlei Fehlerbehandlung;
die Init Funktion ruft nacheinander die relevanten
Modulinitialisierungen auf... aber es wird kein einziger Test gemacht.
Selbst bei Funktionen, die formal einen Statusreturn zurückgeben (das
aber meistens noch nicht mal tun, also es wird ein lokale Variable auf
ok gesetzt, nicht mehr angerührt und einfach so wieder zurückgegeben)
wird dieser nicht abgeprüft. Weder beim Durchsteppen noch (schlimmer)
später im Feld gibt es also irgendeine Chance, Fehler herauszufinden, zu
melden oder zu recovern, geschweige denn einen Hinweis darauf zu finden,
wo es klemmt. Kardinalfehler!
Aber gut, wie gesagt, es ist nett vom Uwe, seinen Code zur Verfügung zu
stellen, und von Nichts darf man auch Nichts erwarten. Wir evaluieren
z.Zt. kommerzielle Produkte, da darf man auch Fragen stellen und
kompetente Antworten erwarten und entlohnt wenigstens geleistete Arbeit.
Hat vielleicht sonst Jemand Erfahrungen mit (wie gesagt gerne auch
kommerziellen) Alternativen?
Danke schön!
Adapter schrieb:> und schon da ist ein Riesenproblem.
Die Programm-Module von Uwe können sehr hilfreich bei der Entwicklung
eigener Software sein, denn sie weisen einem den richtigen Weg, wie
man eine bestimmte Aufgabenstellung lösen könnte. Auch ich habe von Uwes
bereitgestellten Sources viel lernen können.
Ich sehe Uwes Software aber nicht als "ready-to-use". Er selbst schreibt
auch irgendwo auf seiner Seite, dass man den Optimizer ausschalten
müsse, sonst könnten einige seiner Programm-Module nicht richtig
funktionieren. Damit schiebt er bestimmte Probleme mit der Software auf
einen augenscheinlich defekten gcc-Optimizer.
Das ist aber nicht richtig, denn in Wirklichkeit ist die Software
einfach nur lax programmiert. Es hapert nicht nur an einer fehlenden
Fehlerbehandlung, die Du angesprochen hast. Uwe vergisst auch oft,
Variablen als volatile zu definieren, wenn sie in ISRs benutzt werden.
Dann ist es kein Wunder, dass mit eingeschaltetem Optimizer das Programm
nicht mehr funktioniert. Als ich ihn mal darauf angesprochen habe, dass
hier und dort das Wörtchen volatile fehlen würde, kam die Antwort: "Mag
sein" (oder so ähnlich). Meiner Erinnerung nach hat er den von mir
angesprochenen Bug im Programm auch nicht danach gefixt, denn: es läuft
ja!
Uwe scheint nicht sehr daran interessiert zu sein, möglichst fehlerfreie
Software bereitzustellen, sondern eher Software, die (mit viel Glück)
gerade so läuft. Dass es viel sinnvoller ist, den Optimizer immer
einzuschalten, um eigene Fehler im Programm zu finden, scheint er nicht
zu verstehen.
Mein Fazit:
Man kann sich gern die Methoden zur Aufgabenlösung abschauen, dafür ist
seine Programmbibliothek sehr wertvoll und dafür bin ich Uwe auch
dankbar. Aber ich würde keine einzige Zeile von ihm einfach übernehmen.
Hier ist selbermachen angesagt.
> Hat vielleicht sonst Jemand Erfahrungen mit (wie gesagt gerne> auch kommerziellen) Alternativen?
Ich weiß nicht, was Du überhaupt willst. Software-Module
zusammenkopieren, ohne sie verstehen zu wollen oder doch eigene Software
zu entwickeln? Wenn letzteres, würde ich da an Eurer Stelle auch alles
von A-Z allein entwickeln. Nichts ist frustrierender, als sich mit einem
Bug in einer Fremdsoftware herumschlagen zu müssen.
Frank M. schrieb:> Adapter schrieb:>> und schon da ist ein Riesenproblem.>>>> Hat vielleicht sonst Jemand Erfahrungen mit (wie gesagt gerne>> auch kommerziellen) Alternativen?>> Ich weiß nicht, was Du überhaupt willst. Software-Module> zusammenkopieren, ohne sie verstehen zu wollen oder doch eigene Software> zu entwickeln? Wenn letzteres, würde ich da an Eurer Stelle auch alles> von A-Z allein entwickeln. Nichts ist frustrierender, als sich mit einem> Bug in einer Fremdsoftware herumschlagen zu müssen.
...tja, die Frage kannst Du Dir vermutlich selber beantworten:
Der KUNDE will etwas funktionierendes, und zwar möglichst schnell und
möglichst kostengünstig*. Er braucht dazu eine Gesamtlösung, d.h. sowohl
die zugrunde liegende Kommunikationsinfrastruktur als auch die
Anwendungssoftware oben drüber. Die zweitere MUSS logischerweise
anwendungsspezifisch entwickelt werden; das Erstere muss "nur irgendwie
tun," ich könnte also selber die Ärmel aufkrempeln oder auf einer
beliebigen Skala von 1-x die Anpassungsarbeit zwischen mir und dem
Supplier teilen.
ICH als der Umsetzende bin da logischerweise etwas in der Zwickmühle;
als in der Technik (auch low level) bewanderter Entwickler will auf der
einen Seite möglichst viel darüber verstehen und damit möglichst guten
Gewissens zu meiner Lösung stehen können, kann aber auf der Anderen
Seite eine Von Null Entwicklung auch nicht rechtfertigen (weil dann noch
die Kinderkrankheiten raus müssen, gerade bei USB jedes Device etwas
Anders reagiert etc pp). In sofern halte ich die Lösung, die "untere
Schicht" von Jemand einzukaufen, der da bereits Erfahrung hat, für den
besten Weg. Ich rechne dabei einen gewissen Grad von Eigenarbeit ein -
das ist mir auch wichtig und macht Spass, den unterliegenden
Protokollstack besser zu durchschauen.
Ich mache die Entwicklung von Kommunikationssystemen jetzt schon sehr
sehr lange und habe praktisch jede Kombination schon durchgemacht, z.B.
TCP/IP stacks selber adaptiert und debuggt, Middleware von
Drittherstellern durch die Kinderkrankheiten durchgetract und mitdebuggt
oder versucht, ein PD File System zum Laufen zu kriegen. Die Zeiten, wo
man jedes einzelne Byte seiner Firmware selber kennt, sind aber leider
vorbei. Bei manchen Komponenten muss man sich halt darauf verlassen
können, dass sie es tun (ist in Embedded noch nicht so wie bei Android,
wo man praktisch nur noch gegen black boxen schafft). Spätestens beim
Thema Sicherheit ist z.B. bei Netzwerkstacks die Grenze dessen, was in
Eigenarbeit sinnvoll machbar ist, schnell erreicht.
Davon abgesehen bricht der Markt für Firmen ständig und brutal weg, die
versuchen, mit Spezialwissen im Middlewarebereich Geld zu machen. Ich
finde das nicht gut und denke, dass es im Interesse von stabilen und
guten Gesamtsystemen und -architekturen sein sollte, Firmen in Lohn und
Brot zu halten, die die Falltüren und Stolpersteine schon kennen und
umgehen können, in die ich sonst bei einer Eigenentwicklung treten
würde.
* Bevor hier ideologische Diskussionen losgehen: Ich habe damit kein
Problem und versuche diese Anforderung auch so gut wie möglich
umzusetzen. Der Kunde ist auch aboslut ok in der Richtung, dass er
versteht, dass es P&P eigentlich nicht gibt und ist bereit zu bezahlen,
was nötig ist, um ein feldtaugliches System verkaufen zu können. Ist
halt ein gegenseitiges Vertrauensverhältnis zwischen uns.