Praktikant schrieb:
> Hi Lieber Entwickler,
>
> Nach eine lange Suche hier konnte ich mich leider nicht weiter schlau
> machen.
>
> Ich habe ein Steuerungsgerät für mein Praktikum zu realisieren, der ca.
> 40 digitale I/O für einige Sensoren, einen CANbus um mit einige
> Komponente zu kommunizieren, ADC und einen DAC besitzen muss.
>
> Als Ideen hatte ich zwei:
>
>
> -Entweder mit einem Raspberry, der einige MHZ (700) Leistung unter dem
> Hub hat. und dann voll ausgestatet mit einem OS. Dafür muss ich alle
> dieser Expander (für die GPIO, für Canbus, Für ADC..etc) extra
> ausstaten, und dazu auch die Software.
>
> -zweite Idee wäre mit einer MCU (beispielweise Cortex-M3). Denn er
> besitze all dise Schnittstellen. Da benötigte man keine Expander dazu.
>
>
> Jetzt bleibt mir die Frage mit der Echtzeit Offen.
>
> ist das Raspberry so leistungsfähig, um die funktionen im echtzeit
> auszuführen ??
>
> wie könntet ihr die zwei Idee bewerten ??
Erstmal bewerte ich Deine Rechtschreibung mit 4-.
Der Raspberry ist populär, aber nicht das einige Linux-Board. Für Dich
wäre der BeagleBoneBlack viel besser geeignet, weil er viel mehr IOs
hat. Plus: er ist auch sonst schneller.
http://beagleboard.org/Products/BeagleBone%20Black
Was ist bei Deiner Anwendung wichtig?
- Brauchst Du eine hohe Rechenleistung? Musst Du viele
Gleitkommaoperationen durchführen? Dann ist ein Linux-Board besser?
- In der Automobilindustrie gibt es oft die Anforderung, dass jedes
CAN-Gerät innerhalb von n Millisekunden (mit n<<1000) nach dem
Einschalten betriebsbereit und auf CAN Messages reagieren können muss.
Das schaffst Du mit einem Linux-Board und einem Standard-Linux niemals.
Da hast Du Bootzeiten von einigen 10 Sekunden. In diesem Fall musst Du
ein Mikrocontrollerboard verwenden, das ein prozessorinternes Flash hat,
aus dem der Code direkt ausgeführt wird. Die großen ARM11 und Cortex
A8/A9 haben das nicht, und die findest Du daher nicht in diesen
Anwendungen.
- Musst du zwingend ein festes Zeitraster einhalten, egal was auch immer
passiert? Das nennt sich "harte Echtzeit". Dafür ist Linux nicht
geeignet. Nimm ein richtiges Echtzeitbetriebssystem (RTOS) und suche die
Hardware dann nach den Anforderungen des RTOS aus. Das wäre ein Punkt
für den Mikrocontroller.
- Brauchst Du schnelle IOs? Ist es wichtig, dass der Prozessor die Pins
schnell schalten kann? Dann kannst Du nicht mit IO-Expandern arbeiten,
dann müssen es GPIO-Pins des Controllers sein. Das schließt dann den
Raspberry Pi aus, weil der nur wenige Pins dafür über hat. Und bei Linux
wirst Du Dich dann mit Kernelprogrammierung auseinandersetzen müssen,
was Dein Projekt deutlich schwieriger macht. Ohne Linux hast Du es hier
einfacher.
- Musst Du viel auf dem CAN-Bus senden oder empfangen? Werden hohe
Datenraten benötigt? Wird ein definiertes Zeitraster benötigt? Hier
schneidet der Raspbery Pi sehr schlecht ab. Die CAN-Interfaces, die es
dafür gibt, laufen alle über SPI, und der in diesen Lösungen verwendete
Microchip SPI-CAN-Controller ist dafür nicht die optimale Lösung. Der
BeagleBoneBlack hat glaube ich CAN im Mikrocontroller schon eingebaut -
Du bräuchtest dann nur noch einen Transceiver. Und wenn Du einen Cortex
M3/M4 oder einen PIC32 nimmst, dann wählst Du natürlich einen, der CAN
schon eingebaut hat.
Im großen und ganzen kann ich Dir sagen:
1. Nicht den Raspberry Pi nehmen. Der ist zwar weit verbreitet, und er
ist billig, aber er ist für das, was Du machen willst, nicht gedacht und
nicht geeignet. Es gibt genügend andere Linux-Boards, die Deine
Anforderungen besser erfüllen - falls Du überhaupt Linux verwenden
willst und verwenden kannst.
2. Überlege, ob Du die hohe Gleitkommaleistung der Linux-Boards wirklich
brauchst. Am besten ist es, wenn Du alles mit Ganzzahlen oder
Festkommazahlen machst. Das schafft dann auch ein Cortex M3/M4 oder
PIC32.
fchk