Automatisches Sicherungssystem für USB-Massenspeichergeräte - Wie viele USB-Host-Controller sind erforderlich?

Ich plane ein Gerät, das einige Instrumentierungsdaten automatisch von einer SDHC-Karte auf eine tragbare Festplatte (USB 3.0 / USB 2.0-Wechselfestplatte) sichert. Die Idee ist, die SD-Karte in das Gehäuse einzulegen, einen Knopf zu drücken und bestimmte Dateien auf der FAT32-formatierten SD-Karte auf die Festplatte in einen Satz vordefinierter Ordner zu kopieren.

Ich strebe eine Geschwindigkeit von 480 Mbit/s an. Ich habe nur begrenzte Kenntnisse über das USB-System. Ich weiß, dass ich einen Host-Controller (so etwas wie ein Vinculum) und einen USB-Hub brauche, um zwei USB-Ports zu erstellen.

Mein Zweifel ist, brauche ich einen Host-Controller oder zwei Host-Controller, um die Übertragung zwischen den beiden angeschlossenen USB-Massenspeichergeräten mit hoher Geschwindigkeit (dh 480 Mbps) zu betreiben?

Warum braucht man zwei USB-Hosts? Sie können die SD-Karte direkt lesen, wenn Sie einen geeigneten SoC zur Steuerung des Systems auswählen.
Ich möchte Daten von der SD-Karte auf die externe Festplatte übertragen. Der Mikrocontroller oder SoC muss die Daten nicht lesen, sondern nur das System steuern, um die Daten zu übertragen. Kann ein Host-Controller (High Speed) die Übertragung mit High Speed ​​durchführen?
Nö. Vinculum unterstützt nur die volle Geschwindigkeit, die 12 MBit/s beträgt.
Alle Daten müssen den Host in USB passieren
@PeterSmith Also reicht dann 1 Host-Controller? Alle Daten werden in jedem Fall darüber geleitet. Ist das der Fall?
@PeterSmith Außerdem arbeiten die meisten Mikrocontroller mit eingebauten USB-High-Speed-Host-Controllern mit niedrigeren Frequenzen wie 85/100/120 MHz. Wie können 480 Mbit/s Daten durch den Bus geleitet werden, wenn der Controller selbst mit niedrigeren Frequenzen arbeitet?
@TurboJ Ja, das ist mir aufgefallen. Ich habe das Vinculum nur als Beispiel genommen.
Vergessen Sie etwa 480 Mbit / s - die einzige Möglichkeit, dies aufrechtzuerhalten, wäre, sehr viel Glück zu haben und ein vorgefertigtes Board-System mit höherer Leistung und viel Pufferspeicher zu verwenden, das weit über das hinausgeht, was ein Anfänger bauen kann. Und tatsächlich sollte in einem solchen System DMA den Prozessorkern umgehen. Kleine MCUs machen nur dann Sinn, wenn Sie eher kompakt oder ein Lernprojekt als Leistung wollen.
@chrisstratton Aber viele IC-Hersteller werben für USB-Host-Controller mit USB 2.0 High Speed-Spezifikation. Können Sie den Pufferteil näher erläutern? Das möchte ich lernen. Oder können Sie mich auf Ressourcen verweisen, die mir beim Aufbau solcher Systeme helfen? Ich bin neu bei USB, aber ich bin Elektro- und Elektronikingenieur, sodass ich die relevanten Themen lernen und an meinem Produkt arbeiten kann.
Den Bus mit USB 2.0-Signalgeschwindigkeit betreiben zu können, bedeutet nicht, diese Datenrate beim Ein- und Ausspielen von Daten aufrechtzuerhalten - in der Praxis sind es in der Regel nur gut konfigurierte Systeme, die die Leitung voll halten können. Das ist eine Leistung, die um eine Größenordnung über dem liegt, was Sie von allem, was Sie selbst bauen, erwarten sollten.
Ein wichtiger Engpass in Ihrem System (viel schlimmer als der USB-Hostcontroller) ist der SDHC-Kartenbus ... Wenn Sie die Tabelle unter: en.wikipedia.org/wiki/Secure_Digital#Speed_class_rating überprüfen , sogar das neueste, schnellste (UHS II Klasse)-Karten unterstützen nur eine garantierte Übertragungsgeschwindigkeit von ~30 MBPS, und als ich das letzte Mal nachgesehen habe, waren diese Controller nicht leicht erhältlich.
Sie möchten etwas, auf dem Linux (oder Win) ausgeführt wird, wenn die Festplatte ein NTFS-Dateisystem hat.

Antworten (2)

SD-Karten verwenden ihr eigenes Protokoll, nicht USB. Sie benötigen keinen USB-Host-Controller, um mit ihnen zu sprechen. Sie können entweder SPI (obwohl dies nicht zu einem hohen Datendurchsatz führt) oder deren parallelen Schnittstellenmodus verwenden. Es gibt viele Mikrocontroller, die sowohl USB HS unterstützen als auch eine parallele Schnittstelle für SD-Karten eingebaut haben (suchen Sie nach solchen mit SDHC).

Was Sie vorschlagen, ist eigentlich nicht so schwer, aber es ist ein Hochgeschwindigkeitsboard, das Sie entwerfen müssen, und Sie müssen die Glue-Software zusammenstellen, um das Kopieren durchzuführen, einschließlich eines FAT32-Treibers, der die Rohdaten interpretieren kann auf jedem Speichergerät. Wenn Ihre Zeit nicht sehr, sehr billig ist, sollten Sie besser einen Einplatinencomputer kaufen, der diese Fähigkeit eingebaut hat, dann können Sie alles mit einem einzeiligen Linux-Shell-Skript erledigen.

Ich möchte eine kundenspezifische Leiterplatte entwerfen, da ein SBC für den von uns angestrebten Preis zu kostspielig wäre. Aus diesem Grund möchte ich mein eigenes Board entwerfen. Würde ein Chip wie TUSB7340 ( ti.com/product/TUSB7340 ) nicht ausreichen, um ein solches System zu bauen?
Dieser Chip verbindet USB mit PCIe. Sie benötigen auch einen Prozessor mit PCIe.
@ RaghavendraKumar - schau dir die ARM-Cortex-Controller von ST, NXP, Atmel usw. an. Suche nach solchen mit USB HS und einem SDHC. Wenn Sie etwas von ST verwenden, können Sie wahrscheinlich den größten Teil der Software aus den vom Anbieter bereitgestellten Bibliotheken beziehen (wahrscheinlich das gleiche für die anderen, ich habe nur weniger Erfahrung damit), aber Sie müssen ziemlich kompetent in der eingebetteten Programmierung sein, um sie mitzubringen alles richtig zusammen.
@jon Ich habe sie auch gesehen. Es gibt den LPC4350 ( nxp.com/products/microcontrollers-and-processors/arm-processors/… ) Er verfügt über alle Peripheriegeräte und mehr, die für mein Projekt erforderlich sind. Aber reicht dieser IC allein aus, um Übertragungsraten von 480 Mbit/s zwischen zwei Peripheriegeräten zu erreichen? oder ist ein Puffer, wie oben vorgeschlagen, erforderlich?
Anders herum: Der beste Weg, diese Geschwindigkeit zu erreichen, ist eine Single-Chip-Lösung, die auf der einen Seite USB und auf der anderen Seite SDIO hat. Der LPC4350 sieht dafür gut aus, obwohl er etwas wenig RAM hat.
@pjc50 Wird das geringe RAM ein Problem für die Datenübertragungsraten oder für die allgemeine Programmierung des Chips sein?
Bei 480 Mbit füllen Sie 256 kByte RAM in etwa 4 Millisekunden, daher muss Ihr Interrupt-Turnaround in der Software schnell sein. Andererseits hat es nichts anderes zu tun, es muss lediglich das nächste Lesen oder Schreiben so schnell wie möglich planen. Wie Chris Stratton sagt, wird der Gesamtdurchsatz niedriger als 480 Mbit sein, egal was Sie tun. Aber Sie sollten in der Lage sein, 50-75% davon zu erreichen.

Sie haben das Vinculum erwähnt; Sie könnten es verwenden, da es die Fähigkeit hat, ein SPI-Master (für die SD-Karte) und ein USB-Host zu sein - sehen Sie sich die VNC2-Geräte an.

Warum dies ihr Ziel nicht erreichen würde, wurde bereits vor zwei Monaten umfassend erläutert. Bitte lesen Sie, was bereits zu einer Frage gepostet wurde, bevor Sie versuchen zu antworten.