Forum: Mikrocontroller und Digitale Elektronik SPI für Embedded Linux


von Johannes (Gast)


Lesenswert?

Hi,

mein Onkel hat mir ein Board mit einem ARM Prozessor geschenkt.

Auf dem Board läuft Embedded Linux.
Jetzt dachte ich mir, dass ich da ein MP3 Player draus mache.

Die MP3 Daten möchte ich über SPI an einen MAS schicken. Da ich noch
nicht sooo viel unter Linux gemacht habe wollte ich mal wissen, ob
jemand vielleicht ein Beispielprogramm hat, um den SPI Treiber der im
Embedded Linux integriert ist zu benutzen. Bzw. wo ich so ein Programm
finde.

Hat hier schon mal jemand den SPI über Embedded Linux angesteuert?

Für Hilfe und jede Info wäre ich dankbar ;-).

Viele Grüße

Johannes

von Matthias (Gast)


Lesenswert?

Hi

viel spannender wäre zu wissen was das für ein ARM-Board ist. Ich
vermute mal das der SPI-Treiber über den üblichen PC-Parport geht und
den wird dein ARM-Board nicht haben.

Matthias

von Michi (Gast)


Lesenswert?

Viele ARMs haben DACs onboard, da kann doch der ARM das Dekodieren
selber machen und die Daten an den Analog-Ausgang geben.
Dekodierer gibt es als opensource im Netz.

von Johannes (Gast)


Lesenswert?

Also selbst machen geht nicht, dafür ist er glaub ich zu langsam, da er
keine floating Points unterstützt. Und einen Decoder ohne Floating
Points also nur mit Int ist nur sehr schwer (kommerziell) zu bekommen.
Habe mich da schon informiert.

Softfloat wäre natürlich möglich ist aber in meiner Toolchain nicht
implementiert und selbst eine zu bauen... Da drau ich mich nicht ran.

Falls natürlich hier einer einen Decoder kennt der nur Int verwendet,
dann her damit ;-)

Bei dem Board sind die Ausgänge des SPI nach ausen auf eine
Steckerleiste geführt, also anschließen kann ich es!

Viele Grüße und Danke für die Hilfe

Johannes

von Michi (Gast)


Lesenswert?

Wo ist das Problem?

Eine Suchmaschine bringt Hilfe:

http://www.underbit.com/products/mad/

von Johannes (Gast)


Lesenswert?

Die MAD Lib benutzt auch Floating Points!

Ist also ohne umschreiben nicht verwendbar!

Viele Grüße

Johannes

von Rufus T. Firefly (Gast)


Lesenswert?

@Johannes:

Kannst Du Deine Aussage mit dieser hier

  Because MAD uses integer computation rather
  than floating point, it is well suited for
  architectures without a floating point unit.
  All calculations are performed with a 32-bit
  fixed-point integer representation.

in irgendeinen Zusammenhang bringen?

(Quelle: http://www.underbit.com/products/mad/)

von Jürgen (Gast)


Lesenswert?

LOL!

Lesen BILDet... ;)

von Hans (Gast)


Lesenswert?

da sagt deren hp was anderes ;)

<<<<<<<<<<<snip>>>>>>>>>>
MAD has the following special features:

24-bit PCM output
100% fixed-point (integer) computation
completely new implementation based on the ISO/IEC standards
available under the terms of the GNU General Public License (GPL)
<<<<<<<<<<<snip>>>>>>>>>>

73

von Georg (Gast)


Lesenswert?

@Johannes:

Der MAD-Player kann wirklich reine INT werte.
Allerdings ist dieser nicht gerade gut kommentiert und auch nicht
sonderlich gut kommentiert.
Aber mit etwas Arbeit bekommt man es hin.

@Rest:

Ihr habt ja recht, aber die eigentliche Frage wurde bis jetzt nicht
beantwortet. Mich würde dies nämlich auch Interessieren, da ich ein
bald ein Projekt mit einem ARM anfange und da ich Daten messen soll
evtl auch die SPI Schnittstelle benötige!

Viele Grüße

Georg

von Hans (Gast)


Lesenswert?

ich kann zwar nicht mit einem beispielcode dienen, glaube aber trotzdem
helfen zu können ;)


spi wird am arm wahrscheinlich wie beim avr über lustige register
anzusprechen sein... also brauchst du eigentlich ja nur auf diese
register zugreifen... also gibts 2 möglichkeiten:
=> entweder ein userland app, das auf die speicherstellen zugreift(wie
z.b paralellport zugriffe die nicht über fread udgl laufen)
=> oder einen netten kernel-hack, der dir funktionen für spi in den
userspace gibt

wie das mit driver im kernel ausschaut weis ich nicht..

direkte speicherzugriffe aus dem userland benötigen root
privilegien...

mir kommt aber vor, dass ich sowas schon irgendwo gesehen habe.. schau
dir doch mal einen uclinux port für einen pda an... die müssten die
sd-karten doch auch am spi hängen haben...

hoffe geholfen zu haben.... ich werd mir jetzt noch einen kaffee holn
und mich dann in den höhrsaal begeben ;)

73

von Georg (Gast)


Lesenswert?

Danke für die Infos.

Eine Frage noch:
Wenn ich einen Treiber habe.
Geht dann nicht sowas wie ein Chipselect?

Viele Grüße

Georg

von Rufus T. Firefly (Gast)


Lesenswert?

Vieles hängt davon ab, was für ein ARM es denn nun genau ist und was für
eine Linux-Variante denn auf diesem ARM läuft.

Hat der ARM beispielsweise keine MMU (was für ARM7-Varianten zutrifft),
dann treffen die Aussagen von Hans über Userland und Privilegien nicht
zu, da ohne MMU derartiges gar nicht überwacht werden kann. Obendrein
läuft dann wohl nur noch ucLinux oder ähnliches; ein "richtiges"
Linux braucht nämlich 'ne MMU.

@Georg:
"Wenn ich einen Treiber habe. Geht dann nicht sowas wie ein
Chipselect?"

Was meinst Du damit?

von Georg (Gast)


Lesenswert?

Also ich werde wohl was mit eineme ARM9 machen (Atmel AT91RM9200)!

Es gibt wohl schon eine Studienarbeit die auf einem Demo-Board
embedded Linux aufgespielt hat. In diesem Linux soll ein Treiber für
die SPI Schnittstelle implementiert sein, soweit ich das der Doku
entnehme.

Für mich wäre jetzt interessant, wie ich von C auf den Treiber
zugreifen kann um Daten über die SSC Schnittstelle zu senden bzw. zu
empfangen.

Viele Grüße und Danke für die Hilfe

Georg

von Andi (Gast)


Lesenswert?

@Rufus:
"Hat der ARM beispielsweise keine MMU (was für ARM7-Varianten
zutrifft),"

Leider falsch, nicht alle ARM7-Derivate sind ohne MMU, wie kommst Du
denn darauf?

von Rufus T. Firefly (Gast)


Lesenswert?

Das ist mir neu; welche ARM7-Implementierungen haben denn eine?

von Steffen (Gast)


Lesenswert?

STR720 von ST und kostet etwa 5,50 EUR.

von Rufus T. Firefly (Gast)


Lesenswert?

Das ist ein ARM720, kein ARM7.

von Sebastian (Gast)


Lesenswert?

"STR720 von ST und kostet etwa 5,50 EUR"

Wo?

von Andi (Gast)


Lesenswert?

"Das ist ein ARM720, kein ARM7."

Das sieht die ARM-Webseite aber anders, ist alles die ARM7-Familie...

von Georg (Gast)


Lesenswert?

Ok schön, aber das beantwortet leider die Frage noch nicht!

Viele Grüße

Georg

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.