Hallo, ich habe mehr oder weniger ein Problem, wobei mir vielleicht jemand mit mehr Erfahrung einfach weiterhelfen kann: Ich habe einen MSP430F5529, der kann direkt USB, und daran hängt über SPI eine SD-Karte. Es gibt genügend Beispielcode direkt auch von TI, damit habe ich schon ein MAssenspeicher über USB erstellt, funktioniert alles mehr oder weniger gut, aber das ist nicht mein Problem. Ich greife intern auf die SDKarte zu, weil ich eben Daten loggen möchte, das funktioniert. Extern über PC und USB möchte ich nun diese Daten am PC auslesen können, funktioniert auch noch. Was ich nicht zum funktionieren bringe: ICh erstelle "live" neue Dateien auf der SD-Karte, diese neuen Daten sind dann aber im Windows Explorer nicht sichtbar, dass heisst, der MAssenspeicher aus USB Sicht wird nicht aktualisiert, wenn ich die SD-Karte ziehe und wieder stecke, oder USB ziehen und wieder stecke, sind die aktuellen Daten korrekt auf der Karte lesbar. Ich hab schon gelesen, dass eventuell nur eine Funktion mit elm chan zur Verfügung steht, ich davon noch recht wenig Ahnung, vielleicht wisst ihr ja mehr oder habt sogar schon genau meinen Fall auch gehabt. Zur Not werde ich dem Code eben vorspielen nach jeder Dateimanipulation, dass die SD KArte gerade eingesteckt wurde, das würde ich aber gerne vermeiden,weil dann immer ein Windows Popup käme. Vielen Dank und viele Grüße.
Stefan S. schrieb: > ICh erstelle "live" neue Dateien auf der SD-Karte, diese neuen Daten > sind dann aber im Windows Explorer nicht sichtbar, dass heisst, der > MAssenspeicher aus USB Sicht wird nicht aktualisiert Wie sollte das auch funktionieren? Solange der Massenspeicher mit dem Wirt (dem PC) verbunden ist, steht er unter der Kontrolle des Wirts und darf clientseitig (d.h. vom µC aus) auch nicht verändert werden. Es ist nicht vorgesehen, daß zwei Seiten gleichzeitig im Dateisystem herumrühren. Du musst vor Schreibzugriffen Deines µCs das Ding USB-seitig abmelden und danach wieder anmelden.
@Stefan Schmitt (mexakin) >ICh erstelle "live" neue Dateien auf der SD-Karte, diese neuen Daten >sind dann aber im Windows Explorer nicht sichtbar, dass heisst, der >MAssenspeicher aus USB Sicht wird nicht aktualisiert, Das liegt dann aber an der USB-Seite, kaum an der SD-Karten Seite. > wenn ich die >SD-Karte ziehe und wieder stecke, oder USB ziehen und wieder stecke, >sind die aktuellen Daten korrekt auf der Karte lesbar. Da fehlt irgendwo ein Refresh oder Update, welche dem USB-Teil der Software sagt, dass die mal die Directories neu lesen soll. >Zur Not werde ich dem Code eben vorspielen nach jeder Dateimanipulation, >dass die SD KArte gerade eingesteckt wurde, das würde ich aber gerne >vermeiden,weil dann immer ein Windows Popup käme. Eben. Es geht sicher auch intelligenter. Suche nach Synch oder Update Funktionen im USB-Teil, nicht bei Elm Chan.
merci für die schnellen tips, bisher habe ich viel elm chan update-funktionen versucht wild im Code zu verstreuen :) Jetzt test ich dasselbe mal mit den USB refresh-Funktionen.
USB Mass storage kennt removable Medien. Damit kann man dem Host OS signalisieren, dass "keine Karte einelegt" ist. Das macht man dann immer nach Schreiboperationen für so min. 10 Sekunden, dann liesst der Host das Dateisystem neu ein. Achtung: Nicht jede USB mass storage Implementation hat dieses Feature eingebaut. Vorsicht: Wenn der Host auf dem Mass storage schreiben darf, dann darf der µC nicht mehr schreiben, sonst kracht es schnell.
:
Bearbeitet durch User
Ok ich hab mir jetzt was zusammengestrickt, was ehrlichgesagt unschön aber doch funktioniert. Ich hab mir aus verschiedenen Funktion zusammengestückelt, dass die SD-Karte quasi als neu gesteckt erkannt wird, ehrlichgesagt hätte ich das gerne anders, aber zumindest funktinoiert es mal prinzipiell. Ich kuck morgen nochmal ein wenig drüber, zur Not bleibt das halt so und muss wann anders erledigt werden, wenn mal mehr Luft ist. Trotzdem Danke für die Hilfe, der Tip mit Usb war schon hilfreich.
Ja das TI Forum sagt dasselbe, keine Möglichkeit vom Slave aus dem PC Host zu signalisieren dass er doch aktualisieren möchte, das ist bitter. Ich komme selber auch auf keinen grünen Zweig im USB Stack debug, wär hätte das erwartet :) Also wird es wohl beim nervigen popup nach jedem schreibzugriff bleiben, vorerst. Kennt jemand ein Produkt wo eiine SD Karte drin ist, die beschrieben wird und gleichzeitig vom PC ausgelesen wird und wo das was ich beschreibe funktioniert? Mein Smartphone kann ja theoretisch auch Dateien erstellen und wird gleichzeitig vom PC ausgelesen, vlt test ich mal später ob ich dort neu erstellte dateien am PC dargestellt bekomme ohne neu anzustöpseln, könnte ja ähnlich sein. #Update: Hab getestet an meinem Android, da weiss ich natürlich nicht was der USB controller alles kann udn als was er sich meldet, aber es sieht auch aus wie ein MSC, also Massenspeicher. Da kann ich eine txt Datei erstellen die sofort am PC erkannt wird ohne dass ich aktualisieren muss etc, was merkwürdig ist, wenn ich einfach Ordner erstellt habe auf dem Telefon, wurden diese nicht erkannt am PC, erst nach ziehen stecken vom USB.
:
Bearbeitet durch User
Stefan S. schrieb: > Kennt jemand ein Produkt wo eiine SD Karte drin ist, die beschrieben > wird und gleichzeitig vom PC ausgelesen wird und wo das was ich > beschreibe funktioniert? Als USB-Massenspeicher ist so etwas nicht möglich. Aber dafür gibt es das "Media Transfer Protocol" - das wird von einigen Digitalkameras und auch SmartPhones verwendet. https://de.wikipedia.org/wiki/Media_Transfer_Protocol
Rufus Τ. F. > Aber dafür gibt es das "Media Transfer Protocol" - das wird von einigen > Digitalkameras und auch SmartPhones verwendet. > > https://de.wikipedia.org/wiki/Media_Transfer_Protocol jap, dankeschön, wollte ich gerade schreiben, dass ich das herausgefunden habe. Man lernt eben nie aus. Und das MTP oder PTP auf nem kleinen MSP430 16bitter zu versuchen, hatte ich nie vor, soll aber auch nicht gehen, ich nehme an auf nem ARM würde das schon funktionieren, die Smartphones laufen ja auch auf ARM Technologie, aber das nur am Rande.
> Woher kommt diese Information? e2e Forum: meinte jemand dass das nicht gehen würde, hab ich so angenommen, aber jetzt wo dus erwähnst kann natürlich sein dass es geht, aber so auf anhibe finde ich nichts was ich innerhalb eines Arbeitstages implementieren könnte, bzw. ich finde gar keinen open source stack etc. update: es gibt wohl ien paar Firmen die das anbieten, ich hab mal angefragt ob es was fertiges kommerzielles gibt MTP USB stack für den MSP430, allerdings fangen zumindest bei hitex die prozessoren alle bei 32 bit an, also schon ne andere Klasse als mein kleiner Texas chip, aber mal sehen, vielleicht kommt ja was raus.
:
Bearbeitet durch User
Rufus Τ. F. schrieb: > Woher kommt diese Information? Von mir. Dabei habe ich "the product is supposed to be running in 2 weeks" berücksichtigt. Stefan S. schrieb: > ich finde gar keinen open source stack veraltet: https://wiki.merproject.org/wiki/Buteo/MTP nur Lesen: http://git.denx.de/?p=ptp-gadget.git;a=summary Beide laufen auf Linux, und benötigen die entsprechenden Dateisystem- und USB-Gadget-Frameworks. Und fallst du es schaffst, Windows 7 auf MSP430 zu portieren: https://msdn.microsoft.com/en-us/library/windows/hardware/Dn614016.aspx
:
Bearbeitet durch User
hab noch ne Stunde, also das sollte reichen um win7 laufen zu lassen, wirkt grad am einfachsten auf mich, das andere ist zu kompliziert :)
Nur zur Info, ich habe den TI stack soweit verändert bekommen, dass ich im Code erstellte Dateien im Windows Explorer angezeigt bekomme, OHNE dass ein popup kommt, einfach indem ich zu schnell arbeite, wenn ich länger verweile in meinem Code durch Schleifen, dann merkt der PC das, ansonsten merkt er es nicht hat aber neue Daten mitbekommen. Allerdings nur wenn man aktualisiert F5 oder eben einen neuen Explorer öffnet, jetzt versuche ich mal den Code soweit zusammenzuschrumpfen wie möglich, mal sehen was da noch drin ist.
Stefan S. schrieb: > Kennt jemand ein Produkt wo eiine SD Karte drin ist, die beschrieben > wird und gleichzeitig vom PC ausgelesen wird und wo das was ich > beschreibe funktioniert? So ein Produkt kann es nicht geben, denn die auf SD-Karten verwendeten Filesysteme sind nicht Multihost-fähig. Es darf immer nur eine Instanz die Kontrolle über die Strukturen des Dateisystems haben. Was allerdings möglich ist: Festzustellen, wann ein fremder Host einen konsistenten Zustand des Filesystems hergestellt hat. Und was auch möglich ist: Nicht das USB-Storage-Gerät als Ganzes "abzumelden", sondern nur das Medium auszuwerfen, bzw. einzulegen. Das beides zusammen führt (zumindest bei Windows als Fremdhost) zu einer Lösung, die sehr nahe dran ist, an dem, was dir vorschwebt. Man muß bei Windows eigentlich nur noch das sowieso sicherheitstechnisch äußerst bedenkliche Autorun/Autoplay abstellen, um nervdialogfrei zu bleiben. Aber klar: mindestens ca. 90% der Windows-User kommen dann nicht mehr an die Inhalte ihrer USB-Stick, Speicherkarten usw., weil beim Einlegen/Anstöpseln nix mehr von alleine aufpoppt...
Hallo, das "Media Transfer Protocol" passt problemlos in vier Kilobyte eines 8-Bit-Mikrocontrollers ATmega32U4. Da ist's aufgezeigt: http://www.tu-chemnitz.de/~heha/pg/Wild%20GIF12/#7.1 Dessen frei bleibender Flash-Speicher von 24 KByte wird als Speichermedium benutzt, welches hier simpel gestrickt ist und keine Verzeichnisse unterstützt: Der EEPROM dient als FAT, und die Clustergröße ist gleich der Flash-Sektorengröße des ATmega32U4 von 128 Byte. MTM sollte also locker in einen MSP430F5529 passen! Da der o.a. Quelltext ohne LUFA und ohne Interrupts auskommt, lässt er sich leicht auf MSP430 umsetzen. Mit 128 KByte Flash und guter Analogperipherie eignet sich so ein MSP430 sicherlich hervorragend für einen Datenlogger.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.