Schnittstelle mit SATA in eingebetteten Systemen

Wäre es möglich, eine SATA-Schnittstelle in einem eingebetteten System, beispielsweise einem MP3-Player oder einer Videokamera, zu verwenden? (Geschwindigkeit nicht kritisch)

Was ist der typische Weg, dies zu tun? On-Chip-Peripherie, externe ICs usw. Was ist bei der Implementierung solcher Schnittstellen zu beachten?

Hängt von der Art des Controllers ab, den Sie für Ihr eingebettetes System verwenden werden. Sie können ARM-Prozessoren mit integrierter SATA-Unterstützung erhalten, wenn Sie an ein billiges Mikro wie einen PIC oder MSP430 denken, vielleicht an eine USB-zu-SATA-Brücke. Sie würden jedoch ernsthafte Software dafür schreiben. Wenn Sie nur herumspielen, besorgen Sie sich vielleicht ein Linux-Entwicklungsboard wie ein PI oder so und eine USB-Festplatte, um zu beginnen. Sie sind im Wesentlichen SATA-Laufwerke mit einem USB-zu-SATA-Bridge-Chip im Inneren.
Da Sie die Frage nicht sehr eng spezifiziert haben, können Sie sich meiner Meinung nach auch ansehen, wie Cubieboard SATA integriert - cubieboard.org/download

Antworten (2)

SATA ist keine einfache Sache. SATA-Peripheriegeräte werden entweder über PCIe-zu-SATA-Konverter, USB-zu-SATA-Brücken angeboten, oder der Prozessor verfügt über ein On-Chip-Peripheriegerät. Um einen integrierten SATA-Peripherie-Controller zu bekommen, muss man schon ziemlich High-Tech sein.

Texas Instruments hat einige gute USB-zu-SATA-Brücken, die sich hervorragend für externe Festplatteneinschübe eignen.

Ich habe im ganzen Internet gesucht und konnte keinen externen SATA-IC finden, der mit einem Peripheriegerät mit niedrigem Kommunikationsprotokoll kommunizieren kann. Es gibt einige, die von P/ATA (IDE) zu SATA wechseln, obwohl Sie keinen Controller mehr finden können, der ein P/ATA-Protokoll verarbeitet, außer vielleicht aus den dunkelsten Tiefen der Welt.

Wenn Sie eine SATA-Schnittstelle implementieren möchten, müssen Sie bedenken, dass das Layout der Schnittstelle differenzielle Paare erfordert, die natürlich differenziell geroutet werden müssen (längenangepasst, so parallel wie möglich geroutet).

Danke, tolle Antwort. Wie Sie konnte ich keine dedizierten SATA-Low-Speed-Signalwandler-ICs finden, und die ICs, die SATA als Peripheriegerät haben, scheinen wirklich extrem hochwertig (komplex) zu sein. Die Route SATA->USB + USB->Controller/Prozessor scheint zum Testen am einfachsten zu sein. Die Konverter sind leicht zu bekommen und für Testzwecke kostengünstig genug, und MCUs mit USB-Host-Unterstützung scheinen viel häufiger zu sein als solche mit SATA.
Einverstanden, sogar Freescale hat ARM M0+ Controller, die über einen USB OTG & USB Host/Device verfügen. Es ist eigentlich ziemlich erstaunlich.

Die obige Antwort ist schon ziemlich gut, aber ein alternativer Ansatz, wenn Ihr Mikrocontroller zu alt/langsam/dumm für sogar USB-Host oder USB-OTG ist, ist die Verwendung einer Software (bit-banged) P/ATA-Schnittstelle mit einem P/ ATA-zu-SATA-Brückenchip. Ein allgemein verfügbarer ist der JMicron JM20330, dessen Datenblatt hier JM20330 zu finden ist . Der kleinste gemeinsame Nenner PIO-Modus 0 ist so ziemlich nur ein 16-Bit-Parallelbus, dessen Details hier zu finden sind . Der Link hat auch eine 8-Bit-8051-basierte Implementierung, die wahrscheinlich auf wirklich fast jeden Mikrocontroller portierbar sein wird, sogar auf solche, die für einen USB-Host zu Low-Tech sind.

+1 für die Erwähnung von JMicron. Wenn Sie ihren Chip bekommen möchten, müssen Sie sie direkt kontaktieren, obwohl sie eine Weile brauchen, um zu antworten (oder zumindest haben sie es bei mir getan). Auch die Teileliste ist nicht aktuell.