SD-Card Softwareprogrammierungsproblem (SPIN)

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
Benutzeravatar
unick59
Beiträge: 134
Registriert: Di 23. Jun 2009, 11:14
Wohnort: Heideblick

SD-Card Softwareprogrammierungsproblem (SPIN)

Beitrag von unick59 »

Hi Leute,
ich habe folgendes Problem, bedingt durch meinen Hardwareaufbau und sehe mittlerweile den Wald vor Bäumen nicht mehr:
Ich habe über ne CPLD, die im konkreten Zusammenhang als Multiplexer fungiert, an den gleichen Propeller-Pins sowohl eine SD-Card
zu hängen und quasi gleichzeitig unter Mitverwendung der Pins einen anderen Prozessorbus, auf den ich von SD gelesene Daten byteweise rüberschubsen möchte.
Das geht im Prinzip schon soweit, das ich die SD-Karte starte, File öffne und in einen Puffer (1k) einlese, dann Karte stoppe und auf den anderen Bus den Puffer schreibe.
Aber was mache ich bei mehr als Puffergröße?! Benanntes Spielchen einfach mehrfach hintereinander kann ich nicht, weil ja die DAtei immer wieder geschlossen und neu geöffnet wird. Und ich weiß nicht, ob und wie ich einen Zeiger benutzen kann, um gezielt Bytes ab einer bestimmten Stelle der Datei in den Puffer einzulesen. Gibt es da schon vorhandene Möglichkeiten in den Routinen? Also sowas wie read_file_ab adr?
Ich nutze ne fsrw-spin v1.6. Muss ich da vielleicht was anderes nehmen?

Grüße Uwe
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: SD-Card Softwareprogrammierungsproblem (SPIN)

Beitrag von yeti »

Fährst Du nur SPI über die gemeinsamen Pins?

Die Karte hat einen ChipSelect und solange sie darüber nicht selektiert ist, soll sie alles ignorieren, was auf MISO/MOSI/CLK für andere Nachbarn passiert. Ob während sie deselektiert ist überhaupt SPI über die anderen Pins gefahren wird, ist ihr vermutlich auch total egal.

...oder erzähl mal etwas mehr über das Verhalten des Muttiplexers...
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
U-Held
Beiträge: 69
Registriert: Mi 14. Dez 2011, 22:05

Re: SD-Card Softwareprogrammierungsproblem (SPIN)

Beitrag von U-Held »

Wie yeti schon schreibt: Musst Du die Datei wirklich schließen und die Karte unmounten? Wenn Du nur liest und Dich darauf verlassen kannst, dass zwischen Weg- und wieder Zuschalten der SD-Card keine Datei geändert wird, ist es doch eine Sache der Variablen im Dateisystemtreiber, festzulegen, welche Datei gerade an welcher Position im Zugriff ist. Guck Dir mal fsrwx.spin aus Spinix an. Dort wird zwischen geöffneten Dateien hin und her geschaltet, indem dem eingentlich dazu unfähigen Treiber seine globalen Variablen unterm Allerwertesten getauscht werden.

Und wenn das alles nicht hilft, musst Du beim Wiederöffnen der Datei seek() benutzen. Das findest Du hoffentlich in der Version deines fsrw, ansonsten siehe Spinix.

Viele Grüße,
u-held
Benutzeravatar
unick59
Beiträge: 134
Registriert: Di 23. Jun 2009, 11:14
Wohnort: Heideblick

Re: SD-Card Softwareprogrammierungsproblem (SPIN)

Beitrag von unick59 »

Hallo Leute,
danke für die Antworten. Ich hatte gerade eine ellenlange Hardwarebeschreibung hier eingetippt, wurde aber scheinbar zwischendurch rausgeschmissen. jetzt ist der lange Text futsch und heute habe ich keine Lust mehr von vorne anzufangen.
Das mit dem seek() könnte ne Lösung sein. Habe das aber noch nie benutzt. Setzt das einen Zeiger auf eine Adresse/Stelle in der geöffneten Datei?

Grüße Uwe

PS. Morgen tippe ich die Beschreibung meiner Hardware und was das leisten soll nochmal ein.
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: SD-Card Softwareprogrammierungsproblem (SPIN)

Beitrag von PIC18F2550 »

Ich binn mir zwar nicht sicher aber war seek nicht dafür da gezielt Sectoren von der Karte anzusprechen?
Eine weitere frage ist ob da mehrere COGs auf die gleichen Pins zugreifen.
Wen Ja so könnte man in kartentreiber ein art Control und Status Byte einrichten.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
unick59
Beiträge: 134
Registriert: Di 23. Jun 2009, 11:14
Wohnort: Heideblick

Re: SD-Card Softwareprogrammierungsproblem (SPIN)

Beitrag von unick59 »

:LACHEN
Jawoll!! seek(adresse des ersten zulesenden Bytes in der Datei) das isses!
Das löst auf einfache Weise mein Problem.
Pic hat vollkommen recht mit der Doppelbenutzung der IO-Leitungen durch mehrere (genau 2) Cogs. Darin, und in der Tatsache, dass sich auf den gemeinsam genutzten Leitungen (bei mir also zwischen einer CPLD und dem Prop) sowohl SPI-Daten, als auch andere Daten mit anderer Datenflussrichtung auf den Leitungen, tummeln liegt das eigentliche Problem. Und deshalb funzt es immer dann, wenn ich stur nacheinander SD-Karte öffne, Datei lese, dann SD-Karte schließe, gelesene Daten wegschreibe und dann da capo al fine mache.
@ Pic: Die Variante von mit dem temporärem Wegschalten der io's in der sdspi-routine hat nicht so sauber gefunzt.

Ich denke, ich patche lieber nicht in den fast als Standard geltenden fsrw-Routinen rum, sondern mache es ganz klassisch. Mit dem seek() kann ich dann ja immer an der richtigen Stelle der Datei das Lesen sozusagen fortsetzen.

Grüße und ein nicht so heißes WE wünscht

Uwe
Zuletzt geändert von unick59 am Fr 8. Jun 2018, 08:58, insgesamt 1-mal geändert.
Benutzeravatar
TuxFan
Beiträge: 1022
Registriert: So 6. Sep 2009, 11:18

Re: SD-Card Softwareprogrammierungsproblem (SPIN)

Beitrag von TuxFan »

yeti hat geschrieben:............ Ob während sie deselektiert ist überhaupt SPI über die anderen Pins gefahren wird, ist ihr vermutlich auch total egal..........
So ist es ........fast....... Bei meinem C3-ähnlichen SPI-Bus mit dauerverdrahteten SPI-Flash- und RAM-Chips läuft RX/TX/Reset zu SD-Modulen (statt SD-Karte) wie CP/Mchen und Arduinchen allerdings über einen 74(A)HC125 auf dem Modul als Torwächter. Der Torwächter sperrt den Bus auf dem Modul gegenüber dem Elderberry wenn auf die Flash und RAM-Chips mit SPI zugegriffen werden soll. Der 74(A)HC125 schaltet die Ausgänge (MISO/RX (zum Prop)) auf high-impedance während der Zustand der Eingänge (H/L) der Gatter (MOSI/TX(zum Modul) und SCLK/Reset) egal ist. Bei den SPI-Flash- und RAM-Chips wird bei Deselection auch die (MI)SO-Leitung(en) auf high impedance geschaltet. Die Eingangsleitung(en) (MO)SI und SCLK stört ein Signal in akzeptabler Höhe (max Level) nicht.
I2C sollte auch gehen aber dazu bedarf es einen I2C-tauglichen Torwächter, z.B. I2C Leitungsverlängerer mit CS-Eingang.
Noch eine kleine Anmerkung :
Ich bevorzuge die SD-MMC_FATEngine von KYE, da er seine Programme vorbildlich dokumentiert und diverse zusätzliche Funktionen gegenüber fsrw bereitstellt. Der größte Vorteil ist jedoch die Verwendung von Subdirectories.
Gruß
TuxFan
Wunder gibt es immer wieder.......
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: SD-Card Softwareprogrammierungsproblem (SPIN)

Beitrag von PIC18F2550 »

TuxFan,

kannst Du die SD-MMC_FATEngine von KYE hier mal anhängen?
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: SD-Card Softwareprogrammierungsproblem (SPIN)

Beitrag von yeti »

PIC18F2550 hat geschrieben:kannst Du die SD-MMC_FATEngine von KYE hier mal anhängen?
[OBEX] FAT16/32 Full File System Driver
By: Kwabena W. Agyeman, created: 2013-03-27 | updated: 2013-05-07

...könnt's wohl sein.
Im Forum fand ich nicht schnell genug Besseres.
TuxFan hat vielleicht Neuereres aus irgendeinem Thread geangelt und/oder bessere Bookmarks?

So schluderig wie Parallax mit Software umgeht, sollten wir langsam mal ein eigenes Archiv anlegen...
Da isser wieder, mein Parallax-Blues! :-(

——————————
Edit... was schreib ich?
Der in der OBEX angegebene Link auf AN006 zeigt ins Digiwana!
Das hab ich aber irGÄHNdwo lokal gebunkert...
Moooment...

Also besser hurtigst alles Gefundene hier anbäppen!
Dateianhänge
AN006-SD-FSS-Code-v1.0_0.zip
(931.84 KiB) 536-mal heruntergeladen
AN006-SD-FFS-Drivers-v1.0_0.pdf
(227.21 KiB) 521-mal heruntergeladen
Full_File_System_Driver_3.zip
(934.45 KiB) 573-mal heruntergeladen
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
TuxFan
Beiträge: 1022
Registriert: So 6. Sep 2009, 11:18

Re: SD-Card Softwareprogrammierungsproblem (SPIN)

Beitrag von TuxFan »

Good evening!
Der Treiber, den Yeti angehängt hat, ist auch der von mir derzeit benutzte. Einen neueren hab ich bisher nicht gefunden. Ich hab nur ein paar Durchreichfunktionen eingefügt um auf die RTC auch vom Hauptprogramm aus zugreifen zu können. Ich hab noch keine Funktion gefunden, um auf ein Objekt zwei Etagen tiefer zuzugreifen. Falls jemand etwas darüber weiß, bitte melden.Bin für jeden Tipp dankbar.
Ich bin derzeit dabei meinen Propeller getriebenen Webserver (WebProp), nach Jahren mit Großbaustelle ohne Programmieren, endlich fertig zu stellen. Dabei hab ich auch das Programm von ehemals fsrw auf SD-MMC_FATEngine umgestellt. Läuft bisher bestens.
Gruß
TuxFan
Wunder gibt es immer wieder.......
Antworten