SDRAM als SCSI-Gerät emulieren?

S

Simone Winkler

Guest
Hallo!

Ich arbeite gerade an einem Projekt: ich baue eine Digitalkamera.
Sie speichert die Daten in einem SDRAM. Kommunikation mit dem PC soll über
USB erfolgen. Am Board sind auch noch ein AVR Atmega128 und ein FPGA und für
die USB-Verbindung ein Philips PDIUSBD12 (und anderes...).

Jetzt gibt es 2 Möglichkeiten:

* Firmware mit eigenen Vendor Befehlen, sodaß ich selbst einen Treiber und
ein kleines Programm für den PC schreiben (adaptieren) muß. Dafür hätte ich
Beispielcode usw.

* Das USB-Interface so gestalten, daß der SDRAM von extern aussieht wie ein
Mass Storage Device. Man müßte also am SDRAM FAT-Dateisystem verwenden, und
zusätzlich müßte der SDRAM (oder halt das Interface) die Befehle verstehen,
die der PC sendet. Dazu gibt es bereits Firmware von Philips, aber leider
halt für eine CompactFlash-Karte. Die Firmware übersetzt sozusagen die
SCSI-Befehle des PCs auf CompactFlash-Befehle. Der SDRAM bzw. der AVR müßte
also auf Kommandos, mit denen man so eine CF-Karte anspricht, reagieren
können.

Ich stell mir zweiteres seeehr aufwendig vor.
Besonders, weil in der DigiCam immer nur Bilder mit gleicher Größe
gespeichert werden.
Außerdem hab ich zu 1.) ja auch einige Beispiele gefunden. Der Treiber wird
halt ein wenig schwieriger.

Meine Fragen:
* Was würdet ihr machen?
* Gibt es vielleicht zufällig irgendwo eine (fast) vollständige Lösung für
2.), die für einen SDRAM (o.ä.) ist und dem PC vorgaukelt, ein SCSI-Gerät zu
sein?

Vielen Dank!
Simone Winkler

P.S.: Ich kann nichts für die Wahl SDRAM als Speicherelement, CF wäre wohl
besser gewesen, aber die Hardware ist nicht meine.
 
Simone Winkler <simone.winkler@gmx.at> wrote:



Ich stell mir zweiteres seeehr aufwendig vor.
Ich denke es ist nicht ganz so schwierig wie du glaubst. Du musst ja
auf jedenfall einen Mechanismus fuer USB programmieren welcher es dir
erlaubt Datenbloecke ueber USB zu verschicken.

Wenn du das nun machst dann empfiehlt es sich in der Tat ein
Mass-Storage-Device zu simulieren weil es die Programmierung auf
PC-Seite stark vereinfacht oder gar ueberfluessig macht.

Deine zusaetzliche Arbeit besteht dann in der Tat darin ein Filesystem
in deiner Kamera zu programmieren. Das wuerde ich jedoch fuer
einfacher halten als einen eigenen Treiber zu schreiben der in den
tiefen deines Betriebssystems, vielleicht gar dieses obergrauslige aus
Redmond, rumpopelt.

Besonders, weil in der DigiCam immer nur Bilder mit gleicher Größe
gespeichert werden.
Wenn du nicht packst. (jpeg)

2.), die für einen SDRAM (o.ä.) ist und dem PC vorgaukelt, ein SCSI-Gerät zu
sein?
Wieso willst du soetwas sein wenn du USB benutzt?


Olaf

p.s: Ich hoffe du hast es gemerkt und weisst es zu schaetzen das ich
nicht einmal gefragt habe wieso heute noch jemand eine Kamera selber
bauen will? :-]



--
D.i.e.s.S. (K.)
 
On Mon, 26 Jan 2004 20:16:58 GMT, Olaf Kaluza <olaf@criseis.ruhr.de>
wrote:

Olaf

p.s: Ich hoffe du hast es gemerkt und weisst es zu schaetzen das ich
nicht einmal gefragt habe wieso heute noch jemand eine Kamera selber
bauen will? :-]

Vor allem wenns in Ami-Land schon einmal Digital-Kameras mit 2
Megapixeln gibt. Die man zu usb-devices umbauen kann ;)
Kostenpunkt 12$


Weiß jemand wo man sowas herkriegt in D?

Ansonsten als Tipp: Aldi-Süd hat am Do für 70 Fragezeichen ne 2 MP von
Tevion.

Viele Grüße,
----
Jan C. Bernauer
 
: Ich denke es ist nicht ganz so schwierig wie du glaubst. Du musst ja
: auf jedenfall einen Mechanismus fuer USB programmieren welcher es dir
: erlaubt Datenbloecke ueber USB zu verschicken.

allerdings müßte ich im Nicht-Mass-Storage-Fall nicht sektorenweise
übertragen, sondern immer nur gleich viel, weil jedes Bild gleich groß ist
usw.

:
: Wenn du das nun machst dann empfiehlt es sich in der Tat ein
: Mass-Storage-Device zu simulieren weil es die Programmierung auf
: PC-Seite stark vereinfacht oder gar ueberfluessig macht.
:
: Deine zusaetzliche Arbeit besteht dann in der Tat darin ein Filesystem
: in deiner Kamera zu programmieren. Das wuerde ich jedoch fuer
: einfacher halten als einen eigenen Treiber zu schreiben der in den
: tiefen deines Betriebssystems, vielleicht gar dieses obergrauslige aus
: Redmond, rumpopelt.

ja, schon. aber die zusätzliche Arbeit besteht auch darin, die SCSI-Befehle
des PCs umzusetzen auf den SDRAM. Da gibt's ja dann auch Dinge, wo man
Status-Bytes o.ä. zurücksenden muß usw. Ist doch unnötiger Aufwand, oder?
Ich habe ja eine Firmware, die eben diese Befehle umsetzt, aber eben auf
eine compact-flash-karte, ich müßte die also wieder weiterumsetzen usw.

Für den Treiber hätte ich Beispiele, die ich nurmehr adaptieren möchte.

:
: >Besonders, weil in der DigiCam immer nur Bilder mit gleicher Größe
: >gespeichert werden.
:
: Wenn du nicht packst. (jpeg)

Die Bilder sind unkomprimiert. (Bitmap)

:
: >2.), die für einen SDRAM (o.ä.) ist und dem PC vorgaukelt, ein
SCSI-Gerät zu
: >sein?
:
: Wieso willst du soetwas sein wenn du USB benutzt?
:

So ein Kartenleser o.ä. zeigt die Karte im Windows ja als Wechseldatenträger
an, d.h. als Laufwerk, als Festplatte. Deshalb SCSI-Befehle, Windows sendet
solche an das Gerät. Die müssen dann verarbeitet werden, und das sind
einige.

:
: Olaf
:
: p.s: Ich hoffe du hast es gemerkt und weisst es zu schaetzen das ich
: nicht einmal gefragt habe wieso heute noch jemand eine Kamera selber
: bauen will? :-]
:

Naja, wie gesagt, die Idee war nicht meine. Aber ein Kollege hatte die
gesamte Hardware und keine Zeit. Und ich will nun die Gelegenheit nutzen, um
vieles zu lernen: VHDL für den FPGA, SDRAM-Interface, USB-Schnittstelle,
usw. Davon kann ich sicher viel mitnehmen und am Ende kann man sogar Bilder
machen damit ;-).
 
"Simone Winkler" <simone.winkler@gmx.at> schrieb:

Jetzt gibt es 2 Möglichkeiten:
3. Variante: PTP (Picture Transfer Protocol). Ist ein von Kodak
etablierter Standard, der mittlerweile von einigen Kameras anderer
Hersteller ebenso implementiert wird und u. a. von der libgphoto2 gut
verarbeitet werden kann. Gegenüber dem Filesystem bietet er den
Vorteil, daß man (falls die Kamera solch ein Feature implementieren
möchte) bspw. via USB die Kamera auslösen lassen kann und daß auch der
Erhalt der `thumbnails' (Vorschau-Bilder) zu einem beliebigen Bild
definiert ist.

Die Dokumentation zu PTP ist von Kodak veröffentlicht und sollte es
ermöglichen, daß man darauf basierend ein Gerät entwickeln kann.
--
Jörg Wunsch

"Verwende Perl. Shell will man können, dann aber nicht verwenden."
Kristian Köhntopp, de.comp.os.unix.misc
 

Welcome to EDABoard.com

Sponsor

Back
Top