SPI oder I2C COM als Slave am embedded Linux System für µC Kommunikation

Gast #6025489
Lesenswert?

Guten Morgen,

wir müssen auf der Uni ein Projekt starten, es geht um den 
Datenaustausch eines embedded Linux Board (imx6UL) mit einem µC 
Controller. Das System ist schon vorgegeben, µC muss Master sein imx6 
Slave. An sich habe I2C und SPI zur Verfügung.

Bin noch nicht ganz eingetaucht in die Materie aber soweit ich gegoogelt 
habe müsste die SPI Unit vom imx6 schon hardwäre-mässig SPI Slave 
unterstützen ist das richtig? I2C Slave geht am imx6 immer? Könnten man 
bei beiden Varianten einen Speicherbereich von der Hauptapplikation 
befüllen und eine COM Applikation arbeitet selbstständig und 
versenden/empfängt Daten als eigener Prozess und kommuniziert intern nur 
über den Speicher?

Die Kommunikation soll nicht GBs übertragen aber Pin-Toggeln kann ich 
auch nicht.
Hat da jemand Erfahrung und kann mir ein paar Tipps geben?

Vielen Dank

Mike
#6025577
Lesenswert?

Moin,

Guck', was die Treiber auf dem imx Board koennen/unterstuetzen. Selbst 
wenn's die Hardware kann, willst du nicht noch extra einen Kerneltreiber 
dafuer schreiben im Rahmen so einer Aufgabe.

Mike schrieb:
> Könnten man
> bei beiden Varianten einen Speicherbereich von der Hauptapplikation
> befüllen und eine COM Applikation arbeitet selbstständig und
> versenden/empfängt Daten als eigener Prozess und kommuniziert intern nur
> über den Speicher?

Ja, das waere wohl nicht der unvernuenftigste Weg.

Gruss
WK
#6025795
Lesenswert?

Mike schrieb:
> Das geht leider nicht, wir haben ein Board mit den Schnittstellen
> bekommen, auf beiden läuft auch schon was anderes I2C IO Expander und
> SPI ein Display also dürfen wir uns da nur ranhängen.

Das klingt ziemlich unmöglich.
In der Regel kann nur eine Applikation ein Interface öffnen (fopen, 
fclose).
Unter einem OS wird es nicht möglich sein, daß mehrere Applikation sich 
ein Interface teilen.
Und das ein Linux überhaut I2C-, SPI-Slave-Treiber implementiert hat, 
klingt auch sehr unwahrscheinlich.

Generell ist SPI-Slave auf einer CPU sehr störanfällig, da SPI keinerlei 
Flußkontrolle hat. Der Master weiß also nie, ob der Slave überhaupt 
empfangsbereit ist bzw. ob er seinen Sendepuffer mit sinnvollen Daten 
gefüllt hat.
Gast #6025839
Lesenswert?

Peter D. schrieb:
> Mike schrieb:
>> Das geht leider nicht, wir haben ein Board mit den Schnittstellen
>> bekommen, auf beiden läuft auch schon was anderes I2C IO Expander und
>> SPI ein Display also dürfen wir uns da nur ranhängen.
>
> Das klingt ziemlich unmöglich.
> In der Regel kann nur eine Applikation ein Interface öffnen (fopen,
> fclose).

Im linux sind die Interfaces noch nicht verwendet, nur an den HW 
Schnittstellen selbst hängen schon andere Teilnehmer.
Gast #6038544
Lesenswert?

Peter D. schrieb:
> Mike schrieb:
>> Das geht leider nicht, wir haben ein Board mit den Schnittstellen
>> bekommen, auf beiden läuft auch schon was anderes I2C IO Expander und
>> SPI ein Display also dürfen wir uns da nur ranhängen.
>
> Das klingt ziemlich unmöglich.
> In der Regel kann nur eine Applikation ein Interface öffnen (fopen,
> fclose).
> Unter einem OS wird es nicht möglich sein, daß mehrere Applikation sich
> ein Interface teilen.
> Und das ein Linux überhaut I2C-, SPI-Slave-Treiber implementiert hat,
> klingt auch sehr unwahrscheinlich.
>
> Generell ist SPI-Slave auf einer CPU sehr störanfällig, da SPI keinerlei
> Flußkontrolle hat. Der Master weiß also nie, ob der Slave überhaupt
> empfangsbereit ist bzw. ob er seinen Sendepuffer mit sinnvollen Daten
> gefüllt hat.

Also /dev/i2c-X läßt sich problemlos von mehr als einem Prozess 
gleichzeitig bedienen.

Der Master liest doch bei SPI ein Datenwort ein, ober der Slave will 
oder nicht.
Steht da nüscht drin hatte der Slave noch keine Wort bereit gestellt, 
wird aber über das Eintreffen eines Wortes informiert und kann 
entsprechend handeln.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren