Werbung
Hallo,
für mich gibt es auf dem Raspi nicht eine Programmiersprache.
-Das Webinterface nutzt html mit php und Java für Ajax.
-Die Kommunikation mit dem Atmel geschieht über 2 Programme (Senden und Empfangen), welche in C programmiert sind.
-Einige Aufgaben erledigen BASH-Scripte
-Das Internetradio 'überwacht' bei mir ein in C geschriebenes Programm.
Programmiert wird bei mir auf dem Raspi entweder klassisch mit Totalcommander als FTP-Programm und SSH-Zugriff per PuTTy zum kompilieren. Gelegentlich nehme ich auch das ftp-Plugin vom Notepadd++ direkt zum Code bearbeiten. SSH-Zugriff zum kompilieren bleibt aber.
Ich betrachte den Raspi wie einen AVR. Alles als Root gemacht und die meisten Probleme sind schon beseitigt. Raspbian bringt viel Ballast mit und ist nicht von Haus aus geeignet für die Aufgaben, wie ich sie mir vorstelle. Ständiges Schreiben auf die SD-Karte ist ein Nogo, zumal die Raspis gerne mal SD-Karten(-Inhalte) zerstören, wenn sie unkrontolliert von der Stromquelle getrennt werden. Eine USV kann da helfen, kostet aber mehr als der Raspi selbst. <> Das ist auch sein großer Nachteil. Zubehör ist in Relation (für meinen Geschmack) zu teuer. Eine Soundkarte kostet soviel wie 3 USB-Lautsprecher mit eingebauter Soundkarte...
Die AVRs programmiere ich in Bascom mit gelegentlichem Inline-Assembler-Anteil. Von C bin ich da weg. Hatte das mal genutzt, als ich Programme aus dem Netz für mich (oder andere im Netz) angepasst hatte. In Bascom bin ich zwischenzeitlich fit genug, um alle meine Wünsche umzusetzen. Beim Raspi kämpfte ich gelegentlich noch mit selbstverständlichen Dingen wie keine Unterbrechung des Programmes während auf der Schnittstelle nix rein kommt. Das habe ich nun endgültig durch die zwei separaten Programme für Senden und Empfangen gelöst. Tastaturen abfragen geht per Threading dafür problemlos. Das hat den Vorteil, dass man auch Sondertasten wie DEL, BackSpace und NumLock für eigene Zwecke nutzen kann.
Python habe ich mir angesehen, aber noch gar nichts mit gemacht. Wiring-Pi geht auch in C. Echtzeit-Aufgaben macht bei mir immer ein AVR. Als Displays nutze ich am Raspi kleine Bilderrahmen, welche mit LCD4Linux angesprochen werden. Ich habe noch zwei Grafik-LCDs für den Raspi, deren Ansteuerungsbeispiele im Netz sind aber darauf ausgelegt, die Konsole anzuzeigen. Das will ich aber nicht. Eine eigene Ansteuerung mit individuellen Anzeigen ist für die Winterabende gedacht.
Wenn das Herz involviert ist, steht die Logik außen vor! \/
was natürlich dann wieder die Frage aufwirft, für welches Projekt denn dein Hardware-Setup mit Raspi+AVR aufgesetzt wurde.
Und ob dann nicht ein Arduino Due (ARM Cortex M3, aber bare-metal, ohne LINUX) nicht ebenso oder besser geeignet wäre (sowohl schneller + direkter Hardware-Zugriff, 50 digitale Pins, davon 6 mit Hardware-pwm, 12 analoge ADC Pins, 2 analoge DAC pins, 3 UART, 2 I2C, 2 SPI (davon aber nur 1 über Sketch ansprechbar), 2 USB, multitaskingfähig (kooperativ u/o pre-emptiv), 84 MHz, 92k RAM.
Mit Zusatzshields ist er auch Internet-fähig.
Und natürlich lässt er sich ebenfalls mit weiteren Arduinos seriell oder wie auch immer verbinden und erweitern.
Im Geschwindigkeitstest ist der Due fast so schnell wie der Raspi, aber eben echtzeitfähig mit voller Hardware-Pin-Kontrolle samt Timern und Hardware-IRQs.
Was er nicht hat, ist HDMI und Video etc.
Wie gesagt, es kommt eben auf die Ziel-Anwendung an.
Geändert von HaWe (15.11.2015 um 08:56 Uhr)
Die Raspis haben alle ein Webinterface für Infos und schnelle Einstellmöglichkeiten (auch per eigener, unter Windows laufender Fernbedienung für das Tablet im Wohnzimmer) sowie die Zuständigkeit für (W)LAN, Internetradio / Musik von interner SD-Karte. Zwei können 'ihren' AVR per Netzwerk flashen und zwei haben als reine Internetradios keinen AVR an der Seite. (W)LAN, Tastatur und Display per LCD4Linux geht auch ohne AVR.
Echtzeitdinge und Analogwerte macht ein AVR. (LED-Stripes (WS2812B und WS2801), Fernbedienung (IR, X10), Sensoren für Temperatur und Helligkeit, Klassische LCD-Displays).
Der AVR im Wecker ist der Master und wenn im Weckfalle der Raspi nicht antwortet oder einen Fehler meldet, dann weckt der AVR klassisch per Piezo-Pieper.
Edit:
Zusatzboards nutze ich selten, da der Preis oft den des Raspis übersteigt. Eine 'Soundkarte' kostet soviel wie 3 USB-Lautsprecher mit eingebauter Soundkarte.
Wenn das Herz involviert ist, steht die Logik außen vor! \/
wenn der Raspi z.B. die 50 digital- und Analogwerte im 10µs- Bereich braucht und auch wieder an Hardware ausgeben muss, kann die zwar ein Arduino so schnell auslesen und steuern, aber er kann sie dennoch nicht dem Raspi in dieser Geschwindigkeit zur Verfügung stellen, wenn das Raspi Programm sie so schnell benötigt, denn so schnell ist keine Verbindung zwischen beiden Boards.
Ein Due kann das alles mit eigenen Mitteln locker.
... aber wie gesagt, alles eine Frage der Ziel-Anwendung.
Ja, genau.
In der Tabelle von HaWe kann man ja schön sehen, was ich in Sachen Due meinte.
Da ist der Teensy aufgeführt, d.h. ein 72 MHz Cortex M4 ist schneller als der 84 MHz Cortex M3 im Due.
Wenn man dann jenseits der Arduino Welt schaut (Preise genommen von Watterott):
ST Nucleo F401 : 84 MHz Cortex M4F, 96 kB RAM : 12,60 €
ST Nucleo F411 : 100 MHz Cortex M4F, 128 kB RAM : 12,60 €
ST Nucleo F446 : 180 MHz Cortex M4F, 128 kB RAM : 13,60 €
Wie man sieht: Die Bindung an Arduino und den Due kann eine teure Angelegenheit sein.
völlig richtig, nur: wie will ein Anfänger die alle so einfach und bequem programmieren wie einen Arduino?
(edit: Due aus China für 20 EUR, versandkostenfrei, und der Teensy hat insgesamt schlechtere Benchmarks und weit weniger Pins, dabei sind die Teensy-Benchmarks noch nicht einmal unabhängig bestätigt)
Natürlich kann man einen Raspi auch bare-metal programmieren, ohne Linux, aber welcher Anfänger macht denn das?
Selbst C mit Geany auf einem Linux-Raspi ist für Anfänger nicht geeignet.
Topic -Thema ist aber ja ein Anfänger-Setup.
Und für Anfänger würde ich sagen:
Raspi mit Python für Multimedia-Anwendungen
und Arduino (Mega/ Zero/ Due) mit der Arduino Sketch/Wiring IDE für Hardware-orientierte Anwendungen.
Ausführungsgeschwindigkeiten sind in diesen Anfänger-Bereichen mit Python vs. Arduino C absolut vergleichbar.
Ich denke, das ist allgemeiner Konsenz.
Geändert von HaWe (15.11.2015 um 09:28 Uhr)
Ich verwende teilweise alternativ Arch, das ist viel kompakter.
http://archlinuxarm.org/platforms/ar...raspberry-pi-2
Na na na, vor ein paar Monaten hattest Du hier ein Problem mit einen Schach-Algorithmus, der war auf meinem Beaglebone 20 mal schneller, als auf dem Due. Und ein Raspi2 ist deutlich schneller als ein Beaglebone.
Der Due ist ein teures 32-Bit Board mit vielen Pins. Wenn man das Format braucht, kann er sinnvoll sein, sonst nicht. Die Performance ist eher mäßig, verglichen mit neueren Boards mit Cortex-M4.
der Geschwindigkeitstest ist natürlich ebenfalls abhängig von den einzelnen Tests-Algorithmen.
Mein Brickbench, der verschiedene breiter gefächerte Rechen- und Displaytests durchführt, zeigt diese Ergebnisse:
http://www.mindstormsforum.de/viewto...&t=8095#p64772Code:HaWe brickbench © test (time: ms) Arduino Arduino Arduino PJRC Teensy Raspberry Pi Typ, OS, FW, PL, API Mega2560 Due Zero 3.1 B+/Raspbian MCU, cpu-Takt AVR/16MHz ARM M3/84Mhz ARM M0/48MHz ARM M4/72MHz 800 MHz Firmware/vers.,Pr.Lang. IDE 1.6x C++ IDE 1.6x C++ IDE 1.6x C++ IDE 1.6x C++ gnu C++, Geany LCD / TFT (true color) ILI9225 UTFT ILI9341_due (Adafr.ILI9340) ILI9327 NC HDMI,full-HD screen size tested 240*176 320*240 320*240 320*240 1080*620 ============================================================================================================== 0 100000 integer add/subtr 129 8 15 5 1 1 52000 integer multiply/division 1219 7 102 5 3 2 5000 float operations 326 107 397 92 13 3 Mersenne Tw. PRNG (&,^,>>,<<) 313 7 36 4 2 -------------------------------------------------------------------------------------------------------------- 4 matrix algebra (prod/determ.) 244 23 92 19 1 5 int array sort [500] 1366 171 379 110 88 -------------------------------------------------------------------------------------------------------------- 6 display text 80618 973 (~DUE: 9110) 1667 2630 7 display graphics 224505 3255 (~DUE:40675) 3194 13333 ============================================================================================================== execution time 308720 4551 50806 5096 16072 ==============================================================================================================
Aber natürlich ergeben spezifische Einzeltests auch spezifische Vor- und Nachteile der ein oder anderen Plattform. Das gilt ganz besonders für Hardware-Pin-Zugriffe, die auf dem Raspi bei ca 200µs liegen und beim Due ca. 100x so schnell sind (hier gar nicht mal getestet).
(edit: die Unterschiede merkt man sicher bei langdauernden, komplizierten Algorithmen wie Chess-Engines oder Neuronalen Netzen und vor allem float-Kalkulationen, aber nie und nimmer bei einfachen, kurzen, alltäglichen Berechnungen!)
Aber wie gesagt, alles eine Frage der Ziel-Anwendung.
Geändert von HaWe (15.11.2015 um 09:01 Uhr)
Lesezeichen