hallo zusammen,
mit geistert schon seit langem die idee im kopf rum ein externe
festplatte ans LAN zu hängen.
das ganze soll natürlich ohne konventionellen rechner passieren;
sprich entweder den umweg von ethernet auf ide mittels
"embadded-rechner" oder was eher interssant wäre über mikrocontroller.
nun die eigentliche frage:
gibt es so ein 'interface' auf mcontroller basis schon fertig zu kaufen
oder muss ich das selbst basteln???
ps. endziel wäre ein gerät das man irgedwo ans lan hängt, via dhcp eine
ip zuweist und ohne weiteren aufwand darauf zugreifen kann.
thx in advance
>endziel wäre ein gerät das man irgedwo ans lan hängt, via dhcp>eine ip zuweist und ohne weiteren aufwand darauf zugreifen kann.
Von wo aus oder mit welchem Protokoll willst du auf das Dateisystem
zugreifen? Von Windows aus mit SMB oder Unix mit NFS. Auf alle Fälle
solltest du dir mal diverse Angebote für ein fertiges NAS System
anschauen.
Zumindest bastelt man das nicht zwischen Frühstück und Mittag zusammen.
Schau dir das mal an: http://home.cybervillage.de/heesch/ide.htm
Ehrlich gesagt bezweifele ich das ein AVR genug Power hat um das zu
schaffen.
Gruss Cabal
@cabal
protokoll: tcpip , will ja nen webserver laufen lassen. den zugriff auf
das file-system (hatte an ext gedacht) erledigt der server.
power: sollte ein 32bit controller nicht mit der datenmenge klarkommen
(mega128 oder so)?
der atmega128 ist auch nur ein 8bit Controller. Bis auf etwas mehr flash
und ein paar IO Ports nicht viel anders als ein 4433.
Das Handling einer IDE Platte inclusive File System zu proggen stell ich
mir grausam vor. Da kann man bestimmt erstmal 1 Jahr lang Bücher
fressen. Wenn ich so etwas unbedingt bräuchte würde ichs entweder fertig
kaufen oder wenn schon selbst bauen dann mit einem Embedded PC und Linux
drauf.
Aber hör dir ruhig noch ein paar andere Meinungen an vielleicht bin ich
wieder mal zu pessimistisch.
Gruss Cabal
@cabal
...du zerstörst meinen ganzen enthusiasmus ;)
hab mir grad ein paar aktuelle mp3-projekte angesehen(mit hdd).
http://www.beatbox2002.de/ger/bb_main.html
die benutzen zb nen MC68332 von Motorola an dessen datenbus man direkt
die platte hängen kann. da bräuchte man doch 'nur'
noch das ethernet-interface mit drauf zu schnallen...
thx
kommt darauf an, mit welcher Geschwindigkeit du auf die Festplatte
zugreifen willst. Wenn dir ein paar kByte pro Sekunde reichen, schafft
es auch ein MEGA128 aber für schnelle Zugriffe im MByte Bereich ist doch
ein ganz erheblicher Hardwareaufwand erforderlich. Ein ausgemusterter,
nicht zu langsamer PC dürfte hier wohl die preiswerteste Lösung sein,
zumal hier jede Menge Software zur Verfügung steht.
das mit pc ist keine so gute idee. ich wollte das ding ja in der
grössenordnung von einem 3,5" usb-hdd gehäuse haben.
wenn man ein 10mbit leitung nimmt müsste das ding gut 500kb/s
schaffen... ist schon eine imense datenmenge.
gibts da so ne art statistik die beschreibt welche datenmenge von
verscheidenen controllern bewältigt werden? ich lese nur immer was von
operationen/sec!?!?
thx in advance
Ist gibt zwar kleine embedded Instustrie PCs in Platinenform die deinen
Wünschen gerecht werden, diese sind allerdings nicht gerade preiswert.
Schau mal bei www.msc.de
> Das Handling einer IDE Platte inclusive File System zu proggen stell ich mir
grausam vor.
Ist gar nicht so schlimm, solange es normales Fat12-16 ist ists kein
Problem. Blöder wirds bei Fat32, weil man da ohne dynmische
Speicherverwaltung kaum auskommt.
500kB/s sollten aber mit 8/16-bit kaum möglich sein, weder auf der HD-
noch auf der Ethernet-Schnittstelle.
Zusammenfassung: solche Dinger gibts zu kaufen, also tu dir nen großen
Gefallen und bestell dir ein fertiges ;)
ich wollte eigentlich ohne fat auskommen! wieso ist die datenmenge kaum
möglich(platte und ethernet kommen damit klar)?
das nadelöhr ist doch der controller der die daten schaufelt, oder?
...ist eigentlich kein Problem.
Der AVR schaufelt ohne Probleme Daten von einer Festplatte (auch FAT32!)
in einen TCP/IP Controller (z.B. Seiko) oder eine einfache ISA-NE2000
Netzwerkkarte. Ist garnet so aufwendig. Habe (Mache es immer noch...)
einen MP3-Player realisiert und da ist das kein Problem.
Gruß Jonas
@ Jonas: und welche Datenrate bekommst?
Der ideale Transfer:
1 Adressen des Kommandoregisters anlegen
2 Adressen anlegen
3 LBA schreiben #1
4 Write-Strobe
5 Adressen anlegen
6 LBA schreiben #2
7 Write-Strobe
8 Adressen anlegen
9 LBA schreiben #3
10 Write-Strobe
11 Adressen anlegen
12 LBA schreiben #4
13 Write-Strobe
14 Kommando schreiben
15 Write-Strobe
16 Adressen anlegen
17 Status-Register abfragen, ob Platte fertig
18 Adressen anlegen
Also 18 + 256*(Datenbyte low lesen+Datenbyte high lesen) Cycles = 530
Cycles im ABSOLUTEN Minimun, davon ausgegangen, dass JEDER Befehl max. 1
Cycle braucht und die Platte wahnsinnig schnell ist.
530 Cycles * ca 100ns/Cycle (ziemlich schneller Controller!) = 53µs.
Also braucht man ca. 100ns pro Byte, eine theoretische (!!)
Übertragungsrate von 1 MB/s - real wird sie unmöglich zu erreichen sein.
Dazu kommt, dass man ja auch wissen sollte, was und wo man liest, also
einige Berechnungen mit DWORDs dazu - die dauern verdammt lang!
Und so nebenbei sollte noch ein gesamter TCP/IP-Stack mit all seinen
Timern und zyklischen Abfragen laufen - zusätzlich der Zugriff auf den
externen Ethernet-Treiber, der den Bus sperrt!
Mit nem MSP430 wurden über Ethernet ohne (!) zusätzliche Belastung ca.
50kByte/s erreicht, soweit ich das auswendig weiß - also sollte das
mindestens ein Faktor 10 mehr sein, und dann noch nebenbei ne
Festplatten-Ansteuerung dazu?!
Zusammenfassend: Jonas, nett und schön, dass du nen MP3-Player bastelst,
aber da sind im Maximum 320kBit/s / 8 = 40kByte/s nötig - ein ganzes
Stück Unterschied!
Für nur 50-70 Euro gibts bei
http://www.rabbitsemiconductor.com
einige Mikroprozessormodule mit
- CPU (Z180 Clone)
- Netzwerkinterface (Realtek)
- 128-512 KB RAM
- 256-512 KB Flash-Rom
- 2-4 serielle Schnittstellen
- Frei programmierbare I/O´s
- Uhr, Watchdogtimer etc.
Das RCM2200 z.B. ist nur etwas größer als
eine Streichholzschachtel und kommt mit Netzwerkinterface für 55 $.
Der Haken : Du brauchst den C-Compiler und der ist
im Developer-Paket drinne für 250-300 Euro :-(
In der Packung is dann aber auch alles drin was
man zum sofortigen loslegen braucht.
Damit hast du dann die Netzwerkfunktionen in kürzester Zeit
programmiert, da der Compiler TCP/IP und vieles vieles andere bereits
kann.
Um das Geld kannst dir schon fast nen ARM auf nem Devel-Board zulegen,
der je nach Ausführung auch einen Netzwerk-Controller drauf hat. Und
daran ist die Festplatten-Anteuerung wieder eher kein Problem mehr!
Ja, leider.
Würde die Firma den Compiler billig oder gratis
anbieten, würden die Module sicher großen Anklang bei Hobby-Anwendern
finden.
Das Preis-Leistungsverhältniss der Module ist wirklich unschlagbar
(abgesehen von den astronomischen Versandkosten des deutschen
Distributors :-) )
Hi Leutz!
eine IDE-Platte mit FAT32 an nem MC68332A mit 25 MHz zu betreiben ist
gar kein Problem, wenn man sich mit C auskennt!
Die erreichbaren Datenübertragungsraten sind (gemessene) 5,33 MByte/s.
Programmiert wurde in C mit GNU Compiler mit aggressiven Optimierungen
und teilweise von Hand Assembler-optimiert.
Bei Anschluß an einen IP-Stack dürften sich wohl so um die 2 MByte/s
realisieren lassen, inklusive der ganzen Rechnerei.
Also Saft genug für ein 10 MBit LAN.
@Rainer:
Deine Zahlen scheinen mir aber doch schwer untertrieben.
Alte Sun-Workstationen mit 16MHz-68020ern konnten diese
Geschwindigkeiten doch schon locker bringen inklusive Netzwerk und
Multiuser/tasking. Zwar mit SCSI, aber heutige Atapi-Platten erfordern
da auch nicht mehr Rechenleistung.
Insofern sollte bei einem 68332er wesentlich mehr drin sein. Oder
betreibst Du die Platte in einem lahmen PIO-Modus?
@Jürgen
Hmm, man kann einen 68332 und einen 68020 nicht miteinander vergleichen.
Sie besitzen zwar einen ähnlichen Core, haben aber unterschiedliche
Busarchitekturen. Beim 68332 läuft der externe Datenbus mit halber
Taktfrequenz und 3-Cycle Zugriffen. Somit ergeben sich bei 16 Bit
Busbreite folgende maximale Zahlen:
max_transfer_rate = ((25 MHz / 2) * 2 Byte) / 3 Zyklen/Zugriff = 8,33
MByte/s
Diese Übertragungsrate kann aber nie erreicht werden, da der Bus ja auch
RAM und ROM Zugriffe zu tätigen hat. Somit sind die gemessenen 5,33
MByte/s ein ganz guter Wert, wohlgemerkt, da stecken
Festplattenzugriffszeit, LBA-Addressierung und ein bißchen Rechnerei
drin!!!
@Rainer:
OK, Du hast mir die gewünschte Antwort gegeben, wenn auch indirekt.
Du meinst also PIO. Warum aber die Platte nicht in einem DMA-Modus
betreiben? Dann kommst Du auf wesentlich höhere Geschwindigkeiten bzw.
der Prozi kann nebenbei noch jede Menge anderer Sachen machen.
PIO kann man heutzutage nicht ernsthaft mehr in Erwägung ziehen. Das ist
doch eine immense Ressourcenverschwendung!
Die Verwendung des PIO macht sehr wohl Sinn:
1. Da der 68332 keinerlei DMA SUpport bietet, würde man einen externen
DMA-Controller benötigen (und auch noch Dual-Port-SRAM oder zusätzlichen
DMA Speicher!!!).
2. Bei einem externen DMA Controller ergeben sich noch Schwierigkeiten
in bezug auf Busarbitrierung und Speicherzugriffe.
3. PIO-Mode 4 bietet max. 16,6 MByte/s. Das ist schneller, als ich auf
den RAM zugreifen kann! Warum sollte ich dann nach dem DMA-Modus
streben????
4. Der Einfluß der nötigen Prozessorlast während der Datenübertragung
auf die Gesamtleistung ist verschwindend, im Vergleich zu dem
Rechenaufwand, der nötig ist, um mit FAT32 und LBA auf die Platte zu
kommen. Hier würde DMA nix bringen, insbesondere auch da alle
IDE-Befehle zuerst mal im PIO-Mode übertragen werden (ja, auch bei
heutigen Rechnern!!!!!!!!!!!!!!!!!!!!) nur Daten werden im DMA
übertragen.
Also: Es wird zusätzliche Hardware nötig, die nicht mehr so einfach
einzubinden ist.
Fazit: Mit dem gegebenen System ist eine noch höhere Datenrate nicht
möglich, egal welche Verfahren ich verwende.
Bezgugsquellen für den Controller ist z.B www.Spoerle.de,
aber nur in größeren Mengen.
Infos (Datenblätter) gibts bei Motorola oder auf meiner Seite,
www.beatbox2002.de
Am besten ist aber wohl das NF300 Modul von www.elektronik.vhf.de
geeignet. Es bietet 1MB ROM, 256kB RAM und kostet noch erträglich viel
Geld. Fotos davon gibts bei vhf, oder auch auf meiner Seite.
Viel Spaß damit :-)
hab mir gard mal die nf300 module angeschaut... sind aber mit guten 160
doch relativ teuer!
könnte man nicht 'einfach' einen kompletten embedded rechner nehmen?
zb:
http://www.comp-mall.de/shop/detail.php3?db=sonderangb&prod_name=Wafer-4821
486/100MHz, LAN und IDE Interface (Preis: 135)
wie schauts eigentlich mit der maximalen platten-grösse aus?
das hängt doch letztendlich vom FS ab, oder?
Man kann schon nen embedded nehmen, linux oder auch windows drauf,
fertig. Nur, dann muß ich nicht zwingend nen embedded nehmen, dann kann
ich auch gleich nen alten PC nehmen, das ist noch billiger und vor allem
komfortabler. Aber da hat man halt dann selber nicht mehr viel zu tun
und es ist auch ein bißchen übertrieben, gleich für jedes kleine
Problemchen einen PC zu benutzen. Nicht grade ne minimalistische Lösung,
insbesondere, wenns auch noch tragbar sein soll. Außerdem find ich das
programmieren und löten recht interessant :-)=)
Die Plattengröße ist zunächst mal auf 128 GB begrenzt. Das liegt an der
ATA-Spezifikation rev 5. Die erlaubt maximal 28 Bit Breite
Sektoraddressen. Ergibt bei einer Sektorgröße von 512 Byte 128 GB
Gesamt.
Wenn man nun FAT16 verwenden sollte, hat man die Grenze von 2 GB pro
Partition. Deshalb FAT32, da liegen die Grenzen bei 8 PetaByte. Somit
völlig ausreichend für die maximal nutzbaren 128 GB, die die ATA rev 5
bietet. Das sollte eigentlich auch für alle embedded Anwendungen
ausreichen.
Und falls doch nicht, kann man ja ATA rev 6 programmieren, ist auch
nicht viel mehr, und dann liegt man bei ~130000 Petabyte.