Forum: Mikrocontroller und Digitale Elektronik Zugriff auf Floppies mit AVR


von Christian W. (clupus)


Lesenswert?

Hallo allerseits,

ich wollte eigentlich wissen, ob es möglich ist ein Disketten-Laufwerk
mit einem AVR anzusprechen. Sinn: Ich suche ein nicht flüchtiges Medium
zum Speichern einiger Daten im wenige kB-Bereich bis in den MB-Bereich.
Eine Alternative wäre natürlich eine Festplatte, wobei mir das dann
doch etwas zu hart vorkommt, für die paar Daten.
Ich bin deshalb auf die Floppy gekommen, weil ich die Daten gerne via
PC auslesen würde/damit speichern würde. Was ist da günstiger, wenn PC
und Platine weit auseinander liegen, als eine Diskette kurz
rüberzutragen? Es ist klar, dass ich eine Art Dateisystem
erstellen/verwalten/verwenden muss. (Wenn mir dazu jemand eine
Idee/nähere, gute INfos hat, bin ich auch ganz Ohr, insbesondere im
Bereich Linux: minix und ext2 oder eben FAT, oder?)Dazu muss ich aber
ein fertiges Laufwerk irgendwo organisieren und dann entsprechend
ansprechen (egal, welches Dateisystem). Wie kann ich das machen?

MfG und Danke im Voraus
Christian

von Sascha (Gast)


Lesenswert?

Diskettenlaufwerke sind zwar sehr einfach anzusteuern.
Man hat direkten Zugriff auf die Laufwerksmechanik.
So sind z.B. folgemde Pins vorhanden:
- Motor an
- Kopfmotor Schritt
- Kopfmotor Richtung
- Index Pulse
etc.
Allerdings ist das Timing beim Lesen/ Schreiben exakt einzuhalten, was
mit einen MC nicht so ganz einfach sein wird.

Ich empfehlen zum Datenaustausch mit dem PC eine SD-Speicherkarte. Ist
per SPI Hardwaretechnisch sehr einfach anzubinden und ausserdem gibt es
massenhaft Beispielcode dazu.

von Dirk Schlage (Gast)


Lesenswert?

Hi,
Ich denke das wird sehr aufwendig werden, da du, wenn du keinen
Floppycontroller verwenden willst, deine Daten im Takt an das Floppy
senden musst. Floppys haben keinen eigenen Puffer, die Daten werden vom
Controller synchron zu der Rotation der Floppy geschrieben.
Wenn du darüber eine Studienarbeit machen willst, ist das ok.
Einen alten Floppycontroller für ISA-Bus vom AVR anzusteuern dürfte da
noch einfacher sein. (Aber woher nehmen)
Nimm lieber eine SD-Karte für 7 Eu kriegst du 128MB das sind eine menge
Floppys. Nebenbei: Floppys waren vor 20 Jahren schon nicht der Hit.

Dirk

von Christian W. (clupus)


Lesenswert?

OK, ich glaube, das mit den Floppies kan ich vergessen. Dann bleibt nur
die Frage: soll ich besser auf ein FAT oder ein anderes System
ausweichen? FAT gibt's halt Code-Schnipsel, aber die brauchen fast
einen externen RAM. Gibt's da anspruchslosere Alernativen?

Wenn ich ein RAM einsetzen wollte, wie müsste ich das eigentlich machen
(mega8)? Ich hab das schon ein paar mal gelesen, wusste aber nie, wie
man das macht. Hardware? Software (gcc)?

MfG und Danke soweit mal
Christian

von Barti (Gast)


Lesenswert?

Ich empfehle auch eine kleine SD-Karte. Sie ist kompakt, nicht
mechanisch, braucht wenig Platz und Strom und ist sehr billig.
Ansteuerung ist auch nicht schwierig, gibt genug Ressourcen im Netz.
Darauf ein FAT-Dateisystem implementieren und man kann sie ohne
Probleme mit dem PC lesen.

von Olaf (Gast)


Lesenswert?

Du musst nicht unbedingt ein FAT-Filesystem unterstuetzen. Du kannst
auch in ein FAT-Filesystem eine Datei auf dem PC ablegen und dann deren
Anfang in deinem Microcontroller suchen und dort einfach deine Daten
reinschreiben. Allerdings solltest du beim erstellen der DAtei darauf
achten das die Karte leer oder nicht fragmentiert ist.

Grundaetzlich liesse sich ein FAT-Filesystem auch auf einem
Microcontroller machen. Du brauchst aber dann mindestens 512Byte Ram
fuer den Schreib/Lesepuffer und noch mal so 50-100Byte fuer
Verwaltungsaufgaben. Das waere zwar relativ langsam und ineffizient,
wuerde aber den meisten Anspruechen genuegen da man normalweise am
Microcontrolluer nur immer eine Datei offen haben will und wohl auch
nur immer Daten anhaengt.

Die Verwendung von FAT-Code anderer Leute ist nicht nur langweilig und
uncool, der ist meist auch fuer groessere Controller geschrieben. Wenn
man genug Ram hat empfiehlt es sich naemlich schon zumindest Teile von
FAT und Direktory im Ram zu halten, das willst du aber nicht mit einem
Mega8.

Olaf

von Fred (Gast)


Lesenswert?

Hi,

ist zwar ein bischen an der ursprünglichen Frgestellung
vorbeigeschossen, aber es intgeressiert mich doch brennend: Was ist der
Unterschied zwischen SD-Speicherkarten und MMC-Karten?!? Schließlich
sind die in Bauform und wahrscheinlich auch Kontaktierung identisch,
bloß dass MMCs wohl älter (evtl. auch kleiner und v.a. langsamer) sind.
hintergrund der Frage ist, dass ich noch MMCs daheim rumfliegen habe
(aus ner alten Digicam) und die Idee mit der Anbindung an einen µP
recht interessant klingt.
Gruß

Fred

von Rolf Magnus (Gast)


Lesenswert?

> Was ist der Unterschied zwischen SD-Speicherkarten und
> MMC-Karten?!?

MMC ist der Vorgänger der SD-Karte. Die SD-Karte kann auch mit bis zu 4
Bit parallel angesprochen werden, die MMC nur seriell.

> hintergrund der Frage ist, dass ich noch MMCs daheim rumfliegen
> habe (aus ner alten Digicam) und die Idee mit der Anbindung an
> einen µP recht interessant klingt.

Kannst du getrost machen. Die meisten wählen den SPI-Modus zum
Ansprechen der Karte, und der ist bei SD und MMC gleich.

von Olaf (Gast)


Lesenswert?

Die SD-Karte kennt noch zusaetliche Modi um den Datenzugriff zu
beschraenken. Es ist daher von grossen Interesse aus der Sicht der
Industrie das sich dies durchsetzt. Du koenntest dann z.B keine
Sektorkopie einer Karte mehr machen.
Benutzt man diese Modis aber nicht sind die Karten aber gleich. Es gibt
auch schon MMC mit deutlich mehr Kontakten die dann wohl auch schneller
sind. Wobei man sich aber fragt was der Unsinn soll. Hat man wieder
alles schoen parallel haette man auch bei CF bleiben koennen.

Es gibt aber noch einen mechanischen Unterschied, SD-Karten sind etwas
dicker. Es gibt durchaus auch Geraete die nur einen MMC-Slot haben. Da
bekommt man eine SD-Karte nur mit dem Hammer rein und ganz schlecht
wieder raus. :-)

Olaf

von Rolf Magnus (Gast)


Lesenswert?

> Wobei man sich aber fragt was der Unsinn soll. Hat man wieder
> alles schoen parallel haette man auch bei CF bleiben koennen.

Nein. Erstens haben CF noch viel mehr Leitungen, zweitens gibt es
keinen Zwang, die SD-Karten parallel zu betreiben. Sie können immer
auch seriell benutzt werden, wenn man keine hohen Transferraten
braucht.

> Es gibt durchaus auch Geraete die nur einen MMC-Slot haben. Da
> bekommt man eine SD-Karte nur mit dem Hammer rein und ganz
> schlecht wieder raus. :-)

Ich habe auch ein Gerät, das nur MMC untertützt. Eine SDCARD hat
trotzdem reingepaßt, aber nicht funktioniert. Daß nur MMC untertützt
wird, habe ich erst dadurch erfahren.

von Christian W. (clupus)


Lesenswert?

Hallo nochmal,

wo bekomm ich dann entweder Infos, wie man das macht, oder
entstrechende Code-Schnipsel her? Ich bevorzuge nicht die Idee mit der
vorzeitig hergestellten Datei, da der µC mindestens mit 2 Dateien
rumhantieren muss und dann aber auch weitere erstellen können soll.
Eine andere Frage tuut sich mir auf (s.o.) wie kann ich ein externes
RAM an den Mega8 anschließen? Geht das überhaupt? Wenn ja: Wie
realisiere ich Soft- und Hardwaremäßig das?
UNd noch eine Kleinigkeit: Das SPI ist doch die PIN-Kombination MOSI,
MISO, Clk und SS, oder? Nun möchte ich mehrere Chips an einen Bus
zusammenhängen. Einer soll als zentrale Steuereinheit dienen, einer
soll als Speicherverwaltungs-Chip dienen, ein paar andere für die
Eingabe/die Informationsaufnahme zuständig. Da da z.T. sehr kleine
Controller benötigt werden (mir reicht bei einigen Aufgaben wirklich
ein tiny o.ä), würde ich gerne die Chips über einen Hardware-Bus
zusammenschalten. Meine Überlegungen waren, dass ein UART/TWI nicht von
allen Chips (v.a. den kleinen) unterstützt werden. Kann ich hier das SPI
einsetzen? Prinzipiell ja schon, muss nur dafür sorgen, dass es zu
keinen Kollisionen kommt. Kann ich das mit de Bus auc machen, wenn ich
einen Chip an eine SD anschließen will?

MfG
Christian

von Peter D. (peda)


Lesenswert?

"Du musst nicht unbedingt ein FAT-Filesystem unterstuetzen. Du kannst
auch in ein FAT-Filesystem eine Datei auf dem PC ablegen und dann
deren
Anfang in deinem Microcontroller suchen und dort einfach deine Daten
reinschreiben."


Ja, das wäre auch exakt mein Ansatz.
Eine nicht fragmentierte Datei mit der maximalen Größe anlegen, am
Anfang ein Magic (z.B. 16 Byte) reinschreiben und dann den MC einfach
dieses Magic suchen lassen und dahinter seine Daten schreiben lassen.

Irgendwelche FAT zu implementieren ist dann völlig unötig.

Solange die Datei unfragmentiert ist, geht dann auch ein UNIX, NTFS,
UDF oder was es sonst noch gibt.

Der MC muß dann nur ein Endekennzeichen setzen, damit dann der PC weiß,
bis wohin die Datei wirklich Daten enthält, bzw. damit auch der MC weiß,
wo er den nächsten Datensatz anhängen muß.


Peter

von Christian W. (clupus)


Lesenswert?

Aber das geht immer von einer Datei aus! Wenn ich jetzt aber mehrere
brauche, die angelegt werden müssen???

MfG
Christian

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?


von Fred (Gast)


Lesenswert?

Hallo nochmal,

wollte nur schnell ein kurzes "Danke" loswerden.
Gruß

Fred

von Christian W. (clupus)


Lesenswert?

» http://elm-chan.org/fsw/ff/00index_e.html

Das ist aber ein Code für "große" Chips. Da reicht mir wahrscheinlich
der RAM nicht. Wie kann ich das umgehen? (Wie RAM extern hinzufügen?)

Wie kann ich die SD-Karte über den 4-Bit-Bus anzapfen, damit der SPI
frei bleibt?

MfG und Danke soweit mal
Christian

von Olaf (Gast)


Lesenswert?

> Wie kann ich die SD-Karte über den 4-Bit-Bus anzapfen, damit
> der SPI frei bleibt?

Ich hab drei ueberraschende Neuigkeiten fuer dich:

1. SPI ist kein Bus sondern nur ein syncrones serielles Interface.

2. Man kann meherre Geraete an einem SPI betreiben wenn du jedem seine
eigene CS Leitung verpasst. Das kann manchmal mit Muehe verbunden sein
weil SPI eben kein BUS ist, die Devices also unterschiedliche
Vorstellungen von der Clockpolaritaet haben. Man muesste dann bei jedem
umschalten richtig initialisieren.

3. Wenn es garnicht anders geht kann man SPI auch in Software
programmieren.

olaf

von Hannes L. (hannes)


Lesenswert?

> Wenn ich ein RAM einsetzen wollte, wie müsste ich das eigentlich
> machen
> (mega8)?

> (Wie RAM extern hinzufügen?)

Ganz einfach: Schau Dir an, wieviele Pins statischer RAM hat, dann
schau Dir an, wieviele Pins Dein Mega8 noch frei hat, dann überlege, ob
Du diese Frage nochmal stellst.

Selbst wenn Du statt des Mega8 den Mega168 benutzt, wäre eine
PC-kompatible FAT mangels RAM nicht realisierbar. Du wirst also einen
größeren Controller mit mehr SRAM benutzen müssen oder Du musst auf die
PC-Kompatiblität verzichten.
Dazwischen gibt es noch die Möglichkeit, einen Controller mit
Speicherinterface (8515-kompatibles Pinout oder Mega128) zu benutzen
und daran externes SRAM anzuschließen. Das erfordert allerdings eine
recht komplexe Platine. Hinweise dazu bieten die Datasheets der
betreffenden AVRs (8515, Mega128, ...)

Bisher bin ich mit dem (wenigen) SRAM der AVRs immer ausgekommen, meist
war noch ein großer Teil ungenutzt. Aber das FAT-System ist nunmal so
bescheuert, dass man dafür viel RAM benötigt. Ich habe es deshalb
bisher gemieden. PC-Kompatiblität ist nicht alles...

> Wie kann ich die SD-Karte über den 4-Bit-Bus anzapfen,

Vermutlich gar nicht. Denn in den öffentlich zugänglichen Datenblättern
der SD-Cards fehlen nämlich die Informationen, die für den Zugriff im
"SD Memory Card"-Mode von Bedeutung sind. Um diese Informationen zu
bekommen, musst Du wohl (zahlendes) Mitglied in der "SD-Group"
werden.

Die SD-Card ist nunmal zum Verteilen von Multimedia-Daten konzipiert
worden, wobei die Gängelung des Benutzers (Rechtebeschneidung) im
Vordergrund steht. Wenn Du sie für andere Zwecke "missbrauchen"
willst, dann musst Du mit den Einschränkungen leben.

...

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Zum Thema FAT16 gibt es auch einen Beitrag in der Codesammlung.

von Olaf (Gast)


Lesenswert?

> Aber das FAT-System ist nunmal so bescheuert, dass
> man dafür viel RAM benötigt. Ich habe es deshalb
> bisher gemieden. PC-Kompatiblität ist nicht alles...

Das stimmt nicht. Man braucht zwingend einen 512Byte grossen Puffer um
die MMC/SD Karte beschreiben zu koennen. Ansonsten koennte man sich
aber Stueck fuer Stueck durch das Dateisystem arbeiten.

Man liesst einfach am Anfang mal den Bootsektor ein und merkt sich dann
nur in welchem Sektor die beiden FATs und das Direktory steht. Dann legt
man sein File im Direktory an. Sobald man nun einen Sektor mit Daten
voll hat, schreibt man ihn in sein File und schaut dann erstmal in der
FAT nach wo der naechste hinsoll. Man muss sich ja nur diese
Sektornummer merken. Dann kann man seinen Buffer wieder fuer Daten
verwenden. Ausserdem passt man nach dem Schreiben der Daten noch
schnell die FATs und das Direktory an.
Auf diese Weise wuerde man mit etwa 550Byte auskommen. Waere also mit
einem R8C oder dem veralteten Mega8 <BG> machbar.

Klar, es waere hoellisch umstaendlich und schnarchlahm, aber fuer ein
paar Messdaten wuerde es ausreichen. Aber natuerlich sowas kann man
noch nicht von jemand anderem kopieren sondern man muesste es sich
selber schreiben. :-]

Olaf

von Hannes L. (hannes)


Lesenswert?

> Man braucht zwingend einen 512Byte grossen Puffer ..

Eben, und das ist in meinen Augen (für AVR-Verhältnisse) "viel RAM".
Ansonsten gebe ich Dir recht.

> Zum Thema FAT16 gibt es auch einen Beitrag in der Codesammlung.

Sicher, aber dort wird man vermutlich auch nicht mit weniger RAM
auskommen, oder?
Mal ganz abgesehen davon, dass in der Codesammlung inzwischen soviel
Müll steht, dass es kaum noch möglich ist, "die Spreu vom Weizen" zu
unterscheiden.

Ansonsten empfehle ich Christian, erstmal die Datenblätter der
evaluierten Komponenten zu beschaffen, zu lesen und versuchen zu
verstehen.

...

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Sicher, aber dort wird man vermutlich auch nicht mit weniger RAM
>auskommen, oder?

Dass man 512 Bytes braucht liegt in der Sektorengrösse begründet
(soweit ich das System bis jetzt verstanden habe).

>Mal ganz abgesehen davon, dass in der Codesammlung inzwischen soviel
>Müll steht, dass es kaum noch möglich ist, "die Spreu vom Weizen"
zu
>unterscheiden.

Das kann man relativ leicht an der Überschrift erkennen...da
sollte/müsste trotzdem mal ausgemistet werden ...(Alle Beiträge, die
ohne Anhang gestartet werden, grundsätzlich löschen - denn Code gehört
in den Anhang.)

von Sascha (Gast)


Lesenswert?

Wieso schreibt der MC die Dateien nicht einfach hinterienander auf die
Speicherkarte? Am Anfang dann noch eine kleine Tablle wo drinsteht wo
welche Datei anfaengt und aufhoert. Also ein einfachst-Dateisystem.
Wenn du nur zwei Dateien hast und die Speicherkarte gross genug ist,
dann koenntest du die erste Datei z.B. vom Anfang bis zur Haelfte und
die zweite Datei von der Haelfte bis zum Ende der Speicherkarte haben.
Die Dateien koennten dann noch ohne Probleme wachsen.

Auf dem PC muss dann nur ein kleines Programm geschrieben werden,
welches die Speicherkarte leist und die Dateien extrahiert.

von Olaf (Gast)


Lesenswert?

> Dass man 512 Bytes braucht liegt in der Sektorengrösse
> begründet (soweit ich das System bis jetzt verstanden habe).

Das ist richtig. Und es laesst sich auch nicht aendern wenn man Daten
schreiben will. Beim lesen kann man den Buffer auch kleiner machen. Ich
weiss aber nicht ob das jede Karte unterstuezt.

Aber wenn man einen Microcontroller mit 1kB Ram hat dann ist das
moeglich. Ich hab jedenfalls eine Datenlogger Applikation mit R8C
problemlos laufen. Das geht sogar mit im Hintergrund laufendem
Debugger. (der braucht auch noch etwas Ram)

Olaf

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Auf dem PC muss dann nur ein kleines Programm geschrieben werden,
>welches die Speicherkarte leist und die Dateien extrahiert.

Da dürfte es einfacher sein, dem µC den FAT zu verpassen.
Sonst könnte man es vielleicht noch so machen, dass man die SDC/MMC als
reinen Speicher für den Logger benutzt und die Daten dann per PC über
den Controller abfragt (die Karte quasi direkt anlöten).

von Sascha (Gast)


Lesenswert?

>Da dürfte es einfacher sein, dem µC den FAT zu verpassen.

Da wiederspreche ich aber!

Ich hatte von Jahren soetwas aehnliches mit einer CF-Karte gemacht.
Der MC sammelte Sensordaten und schrieb diese auf die CF-Karte.
Im Sektor 1 stand die Endposition der Datei in Sektoren. Ab Sektor 2
dann die Datei.

Unter Linux hat dann ein simples Shell-Script die Datei extrahiert.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Unter Linux

Das kann natürlich sein (bin von der "herkömmlichen"
KlickibuntiFenster-Betriebssystem-Variante ausgegangen)

von Hannes L. (hannes)


Lesenswert?

Ich beschreibe die SD-Card vom PC aus blockweise unter DOS
(QBASIC-Programm) und nutze dazu meinen Eigenbau-ISP-Programmer und ein
Adapter von ISP auf SD-Card. Der AVR braucht die Daten allerdings nur
zum Lesen. Ein komplettes Dateisystem war bisher noch nicht nötig, also
habe ich mir noch keine ernsthaften Gedanken darüber gemacht.

Die Beschreibung des FAT-Systems hat mich auch erstmal davon
abgehalten, dieses System zu implementieren.

...

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>unter DOS (QBASIC-Programm)
Wer ausser dir macht das noch? (Nicht persönlich nehmen!)
Standard ist/soll in diesm Fall IMHO eine FAT16-formatierte SD-Karte,
die man mit Hilfe der µC-Schaltung beschreibt und im PC mit Hilfe eines
handelsüblichen "Cardreaders" (gibt's  die in zwischen als
100in1-Cardreader?) ausliest.
Dass man unter Linux oder DOS sowas machen kann, kann ich mir
(inzwischen) vorstellen. Jemand, der sowas macht, sollte dann IMHO aber
auch keine Probleme haben, dieses System auf einen µC zu übertragen.

von neuer (Gast)


Lesenswert?

Unter Linux hat dann ein simples Shell-Script die Datei extrahiert....


auch unter windows!!! wurde es ganz einfach durchgeführt.

von Hannes L. (hannes)


Lesenswert?

> Wer ausser dir macht das noch? (Nicht persönlich nehmen!)

Vermutlich niemand. Aber ich hatte keine Lust, mich auf dem AT90S8535L
(den Mega8535 gab's noch nicht) mit FAT zu verzetteln.

Und da ich damals auch keine Möglichkeit fand, per Cardreader die
SD-Card sektorweise anzusprechen, habe ich es eben so gelöst.

;-)

...

von Olaf (Gast)


Lesenswert?

Also zumindest unter Win98 muss man Karten auch Sektorweise ansprechen
koennen weil ich zum debuggen immer debug im DOS-Fenster benutzt habe
und das konnte einzelne Sektoren lesen.

Aber es hindert einen ja auch niemand daran eine Karte auf dem PC zu
formatieren, dort ein File abzulegen und dann zu schauen in welchem
Sektor beginnt das File. Man kann dann die Karte genauso Sektorweise
beschreiben, aber unter beliebigen Betriebssystemen auf Filesystemebene
darauf zugreifen.

Olaf

von mr.chip (Gast)


Lesenswert?

Wenn wir gerade von Floppies sprechen: Sind das jetzt Schrittmotoren?
Könnte man die sinnvoll als Motoren für einen kleineren Roboter
verwenden?

Und noch etwas zum Thema: Zu erwähnen wäre für SD-Cards die Library von
Ulrich Radig, www.ulrichradig.de. (Sofern es nicht schon erwähnt wurde.)

von Christian Wolf (Gast)


Lesenswert?

Hallo nochmal,

also es geht mir weniger um die Richtung PC --> SD --> µC, sondern eher
anderst herum. Es soll möglich sein, ein (großes) Programm auf dem PC zu
schreiben, das dann Compuiliert wird (nicht mit avr-gcc, sondern in eine
selbst erstellte, vermutlich "leserliche" Sprache nach dem Motto
"m1r40" für "Motor 1 rechtsdrehend mit 40%" oder so.). So kann man
verschiedene Programme aufbauen und diese auch in einem eigenen
Verzeichnis ablegen. (Zu so einem Programm gehören mehrere Dateien. =>
Verzeichnis zur Struktur). Nun soll der User dem AVR mitteilen (Tasten,
LCD, ...), welches Programm auszuführen ist. Der AVR hat dann alle
Befehle in der Datei abzuarbeiten. Idealterweise sollte er dann noch
die Möglichkeit haben, die Abläufe etwas genauer zu dokuentieren (=>
Datei schreiben un Unterverzeichnis) nach dem Motto "Motor drehte mit
xxy Upm".
Ich denke, mit einem einfachst-System komme ich da nicht besonders
weit. Das wäre, denke ich ein rießiger Aufwand.

Da ich nicht viel über das FAT weiß, würde mich mal interessieren, wie
das eigentlich aufebaut ist. Wo bekomme ich die Info her?
Wie ich schon oben erwähnt habe, will ich ja notfalls der SD einen
eigenen µC verpassen.
Was ist ein 8515? Ein "alter" Chip? Weil von denen hab ich noch ein
paar hier rumfahren (AT98C2051 und AT89C55 (der kann doch viel ext. RAM
ranhängen, oder?)) Allerdings weiß ich nicht, wie ich die Dinger richtig
programmieren kann. Weiß jemand da eine Möglichkeit unter Linux mit C zu
compilieren? Gibt es da freie Programmer zum Selbstbau (notfalls kann
ich den auch selber machen.)?

Eine andere Möglichkeit wäre natürlich, da ich Linux verwende, ein
Linux-Dateisytem zu implementieren. Ich denke da an Minix, weil das ein
sehr altes (klein, wenig speicherhungrig) Dateisystem ist. Aber auch
hier weiß ich nicht, wie es aufgebaut ist.

MfG
Christian

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Nimm einfach FAT. Wie die aufgebaut ist braucht dich nicht zu
interessieren, es gibt fertige Bibliotheken die auch auf einen Mega8
noch passen.

von Christian Wolf (Gast)


Lesenswert?

Das beantwortet aber einen großen Teil meiner Fragen nicht: Zum Thema
wie funktioniert FAT und zu den "alten" Chips mit ext. RAM und
Programmierung.

MfG
Christian

von inoffizieller WM-Rahul (Gast)


Lesenswert?

FAT ist ein Filesystem (auch altdeutsch "Dateisystem" genannt). Das
hat nichts mit RAM und alten Chips zu tun.
Bei einem Dateinsystem werden auf einem bestimten Teil des
Speichermediums (File Allocation Table = FAT) Informationen zum
Lagerort, der Grösse und dem Namen der Daten gespeichert.
Das kann man im RAM natürlich auch machen (RAMdisk).

>Compuiliert
etc.
Klingt nach Fischertechnik Computing, Lego Mindstorm o.dergl.

Wenn du auf dem PC ein Programm nach deinen Vorgaben (Syntax und was da
noch so zugehört) erstellst, dann brauchst du auf dem Controller einen
"Interpreter", der deine Programmiersprache dann versteht und umsetzt
(PHP arbeitet so).

Es kommt darauf an, was du machen willst (ich habe mir dein Post nicht
komplett durchgelesen), manchmal gibt es schon eine fertige Lösung, die
man einfach noch nicht gefunden hat (jemand anders aber)...

von Hannes L. (hannes)


Lesenswert?

> Was ist ein 8515? Ein "alter" Chip?

Eigentlich nicht, der Mega8515 ist neuer als der Mega8. Es handelt sich
um zwei pinkompatible AVRs, einmal den (veralteten) AT90S8515, zum
anderen dessen Nachfolger ATMega8515. Beide haben das Feature
"Speicherinterface", sind also zum Anschluss von externem SRAM
vorbereitet. Für speicherhungrige Anwendungen könnte man das SRAM damit
auf 32kB oder mehr aufstocken. Nähere Informationen stehen im Datasheet
des AT90S8515 oder ATMega8515.

> Da ich nicht viel über das FAT weiß, würde mich mal interessieren,
> wie
> das eigentlich aufebaut ist. Wo bekomme ich die Info her?

Weiter oben
http://www.mikrocontroller.net/forum/read-1-406853.html#407023
gab es den Link auf:
http://elm-chan.org/fsw/ff/00index_e.html
und dort ganz untern unter 'Ressources' findet man weiterführende
Links, z.B. auch:
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx

Weiterhin findet Google:
http://www.google.de/search?num=100&hl=de&ie=ISO-8859-1&newwindow=1&q=specification+FAT+filetype%3Apdf&meta=lr%3Dlang_de%7Clang_en

Es sollte also nicht unmöglich sein, Informationen zu finden.

> Das beantwortet aber einen großen Teil meiner Fragen nicht: Zum
> Thema
> wie funktioniert FAT und zu den "alten" Chips mit ext. RAM und
> Programmierung.

Von alten Chips ist keine Rede, nur von AVRs mit integriertem
Speicherinterface zum Anschluss eines externen SRAMs.

> manchmal gibt es schon eine fertige Lösung, ..

Das ist aber nicht Jedermanns Sache. Manchmal ist eigener schlechterer
Code unter'm Strich besser als zusammengefundener besserer, aber
unverstandener Code. Das ist eben Ansichtsache. Der Eine macht, der
Andere klaut. ;-)

...

von inoffizieller WM-Rahul (Gast)


Lesenswert?

der xx2051 ist ein 8051-Derivat... Zwar auch von Atmel, aber ein anderer
Controller-Kern.

von Christian Wolf (Gast)


Lesenswert?

Also 1.) zum Thema FAT denke ich, kann ich erst mal was lesen. Das wir
wohl etwas Zeit brauchen. Wenn ich da Fragen hab, meld ich mich!
2.) Bzgl. anderem Core: Was ist da das Problem?
Das Ding 89C55 hat deutlich mehr Flash. Für eine kleine Rutine langt's
allemal. Ich hab da einen Comiler namens sdcc. Funktioniert der gut
(Erfahrungen?)? Gibt's einen geschickten Programmer?
3.) Das mit Interpreter & Co. war mir von vorne herein klar. Es geht
hier konkret darum, einen Kreuztisch mit Spindel zu steuern. Und da
sollen halt verschiedene Programme drauf laufen. (s.o.) Das wird eh ein
großer Batzen; ich weiß och nicht, wie viele Chips ich brauchen werde,
aber mahr als 5 werden's wohl werden. Da kann dann einer ruhig eine
interpretationsaufgabe übernehmen.

Eine andere Frage: Wenn man den 8515er nicht mit 64k RAM sondern -
sagen wir mal - mit 32k Flash und 32k RAM ausstattet, kann der dann
auch vom Flash runter arbeiten? Welche Adressen gelten dann für was?
Wie kann ich in den ext. Flash springen und den ext. RAM verwenden
(avr-gcc)?

MfG
Christian

von ??? (Gast)


Lesenswert?

...wer sagt eigentlich das mann alle Bytes eines Sektors nutzen muss?
bei den heutigen Preisen für MMC/SD-Kareten ist es doch kein Problem
z.B. nur 64Bytes eines Sektors im RAM zu halten und den Rest beim
schreiben mit $00 der $FF zu füllen.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

@Christian:
Es ist ein Unterschied, ob du Flash (eine Art ROM) als Baustein
benutzt, oder eine Flash-Card (SD/MMC/CF...).
Der Baustein liefert dir bei anlegen einer bestimmten Adresse den
Inhalt einer Speicherstelle. Eine Flash-Card arbeitet seriell. Da wird
die Ansteuerung etwas umständlicher, geht aber auch.

Der 89C55 ist ein ganz wunderbarer Controller (hab nie etwas anderes
behaupten wollen).
Im Prinzip kannst du ihn mit 64KB RAM ausrüsten und die FLASH-Card dann
über eine andere Schnittstelle (SPI) ansprechen.
Mit 64K sollte es dann auch keine Probleme bzgl. FAT geben.
Die FLASH-Card lässt sich halt nicht nicht so einfach in ein
Mikrocontroller-System integrieren. Egal welches Speicherinterface der
Controller mitbringt (wobei eine Hardware-SPI die Sache AFAIK schon
etwas erleichtert).

von CF_1 (Gast)


Lesenswert?

> http://elm-chan.org/fsw/ff/00index_e.html

Ich wollte diesen Link nochmal hervorheben. Macht einen ordentlichen
Eindruck und scheint besser als das, was ich eigentlich hernehmen
wollte:
http://www.sparkfun.com/commerce/product_info.php?products_id=657
(Siehe Download "Firmware")

Zu der Speicherdiskussion:
Es gibt zwei Möglichkeiten, so ein Projekt durchzuziehen:
- Entweder man will schnell zu einem Ergebnis kommen, und nimmt
vorgefertigte Libraries wie die von Andreas genannte. Dann braucht man
halt einen größeren Prozessor, der entsprechend mehr kostet.
- Oder man will etwas lernen und versucht, das gleiche Ziel mit wenig
Speicher zu erreichen.

Beides kann Spaß machen - ich hab mich für ersteres entschieden. Baue
auch gerade eine Art Datenlogger, und da ich mit Speicher etc. keinen
Ärger haben wollte, hab ich den größten MSP genommen, den ich finden
konnte (1611=10K SRAM (oder nur 5? k.A.))...

Christian

von CF_1 (Gast)


Lesenswert?

Ach ja, damit keine Mißverständnisse entstehen, ich bin ein anderer
Christian als der Fragende...

von Christian W. (clupus)


Lesenswert?

» @Christian:
» Es ist ein Unterschied, ob du Flash (eine Art ROM) als Baustein
» benutzt, oder eine Flash-Card (SD/MMC/CF...).
» Der Baustein liefert dir bei anlegen einer bestimmten Adresse den
» Inhalt einer Speicherstelle. Eine Flash-Card arbeitet seriell. Da
wird
» die Ansteuerung etwas umständlicher, geht aber auch.
»
» Der 89C55 ist ein ganz wunderbarer Controller (hab nie etwas anderes
» behaupten wollen).
» Im Prinzip kannst du ihn mit 64KB RAM ausrüsten und die FLASH-Card
dann
» über eine andere Schnittstelle (SPI) ansprechen.
» Mit 64K sollte es dann auch keine Probleme bzgl. FAT geben.
» Die FLASH-Card lässt sich halt nicht nicht so einfach in ein
»
 Mikrocontroller-System integrieren. Egal welches Speicherinterface
der
» Controller mitbringt (wobei eine Hardware-SPI die Sache AFAIK schon
etwas erleichtert).

Mein Frage hatte mehrere Intensionen:
1. Kann ich einen 8051 (oder was auch immer) einfach an ein AVR-System
anschließen? Wenn ja, wie kann ich möglichst leicht programmieren
(eigene Software, s. Punkt 3)?
2. Kann ich die Sachen mit dem SD-Chip einen 8051er erledigen lassen
(ext. Speicher) und diesen via Soft-SPI o. ä. ansprechen?
3. Kann ich, um ein eigenes, sehr großes Programm (viele Text-Tabellen
imm Flash für LCD-Ausgabe und stark verschachtelt) den Flash und den
RAM erweitern? Wenn ja, wie wird das
a) mit der Speicherverwaltung gemacht (RAM-Lücke?)?
b) mit einem C-Compiler richtig angesprochen, dass die Variablen in den
RAM ausgelagert werden? Wie die Teile für internes und externes Flash
erzeugen? (avr-gcc wegen 8515 und irgendwas für die 8051er!) Ist es
möglich, dem Compiler zu sagen, was extern und was intern sein soll?

MfG
Christian

von Christian W. (clupus)


Lesenswert?

Da ich momentan sehe, dass das zu weit vom eigentlichen Thema weggeht,
schreibe ich das in separate Beiträge ins Forum.

Danke
Christian

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
Noch kein Account? Hier anmelden.