Hi guten Tag,
welcher Single Board Computer ist wirklich Open Source?
Also Arduino ist denke ich Open Source-> andere Hersteller bauen sehr
ähnlichen.
Wie viel Open Source ist Raspberry, es gibt anscheinend nicht so viele
genaue Imitate.
Ist Banana Pi auch Open Source?
Vielen Dank schönen Tag noch :D
wo ist bei dir die Grenze für OpenSource?
Beim Raspi ist der Grafiktreiber nicht OpenSource. (auch wenn aktuell an
einen opensource treiber gearbeitet wird)
Auch die CPU selber ist nicht OpenSource.
Danke.
*Als was könnte man einen Arduino denn bezeichnen?
*Und Beim Raspberry liegt also alles offen , damit andere Leute daran
weiterprogrammieren können und sozusagen auch andere Hersteller alles
1:1 kopieren können?
*Und Beim Banana?
Danke!
Gut dass heißt die CPU und GPU sind nicht offen, sondern von ARM und
Broadcom oder?
Der Rest ist aber frei zugänglich.
Beim Arduino ist der ATmega bzw auch ein ARM nicht OpenSource oder?
Danke!
Aber die Software ist bei allen OpenSource. Was bedeutet das?
Kann man da nur die I/O selber programmieren oder noch etwas tiefer
gehen?
Also irgendwie den Prozessor programmieren oder so?
Dann sollte man erstmal klären:
- Was ist ein SBC
--> Arduino schonmal nicht!
- Was meint OpneSource
--> Software?
--> SoftCore?
Oder meinst du auch OpenHardware?
Das ist eine schwierige Frage, denn: Was genau braucht es denn damit
der SBC "Open Source" ist?
Natürlich, RPi, BBB, und Co., da läuft überall ein Linux drauf, und im
zweifel lassen sich die Boards auch Bare-Metal programmieren. Die
eigentliche Software ist also Open-Source. Und die Schaltpläne der
Boards können auch eingesehen werden. Aber: Reicht das um das ganze als
"Open-Source" zu bezeichnen?
Ich sag mal was für Mich Open-Source wäre:
Open-Source wäre für mich, wo alles einsehbar bar! Also nicht nur Code
vom OS oder Schaltpläne vom Board, sondern auch, was In der CPU/GPU
passiert (und damit meine ich keinen Verkackten "Block-Schaltbilder").
Und genau hier scheitert es. ARM ist noch mehr zugenagelt als x86. Was
in der CPU für Microcode und Backdoars ausgeführt werden? Keine Ahnung.
Weiß nur der Hersteller...
Bei ARM ist das Problem, das Nur der Core lizensiert wird, was dann aber
an Peripherie noch dazu kommt, das kann der Hersteller frei entscheiden.
Bei x86 gibt es (soweit ich weiß!) an der Stelle kein Spielraum. der
Core ist der Core, fertig. Was das Mainboard nachher an Schnittstellen
hat, liegt beim Mainboard-Hersteller, hat in dem Sinne aber nichts mit
der CPU zu tun.
Und bei x86 ist ganz klar das Problem, der Microcode, die Intel MMU und
die Intel Innovation Engine. Das sind nämlich 3 Teile die sich jeder
Kontrolle entziehen, sowohl der Kontrolle durch das OS, als auch der
Kontroller des Nutzers, als auch der Kontrolle der Kernel-Hacker. Intel
weiß, was darin passiert. Der Rest der Welt darf raten...
BIOS/UEFI/SecureBoot sind ebenfalls so Sachen, die von den
Boardherstellern nicht offengelegt wird.
Was wäre eine Open-Source alternative? FPGA!
Moment, stop, nein, nicht wirklich. Hier ist wieder das Problem: Selbst
wenn man den Code hätte, der Ausgeführt wird, weiß man was da sonst noch
so im inneren passiert? Vielleicht auch ein kleiner Teil des FPGA-Cores
der eine versteckte Firmware vom Hersteller hat?
Also, die Frage ist: Was genau ist für Dich Open-Source?
Reicht es dir, die Board-Schaltpläne und das OS einsehen zu können?
Dann ist Arduino Open-Source, fällt aber nicht unter SBC.
Dann sind RPi, BBB und Co. SBC die auch Open-Source sind.
Grüße
Moin,
Schnurrbart Ente schrieb:> Aber die Software ist bei allen OpenSource. Was bedeutet das?
Nicht alle Software ist OpenSource. Bei dickeren Chips, wie sie in den
diversen $OBST-pi Rechnern verbaut sind, gibts oft mehr oder weniger
kleine (aber deshalb nicht unwichtige) Teile, die's nur als Binaerblob
gibt. Gerne davon betroffen ist:
Der erste Bootloader, also das erste Stueck Software, das der Prozessor
aus einem vom user programmierbaren Flash laed und ausfuehrt. Das kann
ein kleines binary sein, das "nur" u-boot laed, aber signiert sein muss,
damit der Prozessor es ausfuehrt.
Saemtliche Software, die um Hardwarebeschleunigung herum arbeitet.
Manche Funktionen z.b. Graphik, Audio/Video-Codecs,
Ver/Entschluesselungen lassen sich durch spezielle Hardware ausserhalb
des Prozessors deutlich schneller abarbeiten. Zu dieser Hardware gibts
oft vom Hersteller keine Unterlagen fuer normale Sterbliche. Mit Glueck
evtl. ein paar Binaries, die diese Hardware ansprechen und deren
Interface zum Prozessor hin mehr oder weniger duerftig dokumentiert ist.
Das sind die ueblichen Verdaechtigen.
> Kann man da nur die I/O selber programmieren oder noch etwas tiefer> gehen?
Kommt halt drauf an, was "tiefer" heisst. An ein paar Pins wackeln wird
eher funktionieren, als z.B. schnelle DCT-Funktionen per
Videobeschleunigung zu programmieren.
> Also irgendwie den Prozessor programmieren oder so?
"Prozessor programmieren" sollte keine Probleme machen, da der
Prozessortyp meist gut dokumentiert ist und man zumindest fuer die
gaengigen Prozessoren (ARM) an jeder Ecke mit Crosscompilern
zugeschuettet wird.
Gruss
WK
Kaj G. schrieb:> Ich sag mal was für Mich Open-Source wäre:
Lass mich raten - du kompilierst deinen Linuxkernel selbst - aber nur
nach dem du höchstselbst ein Codereview jeder einzelnen Zeile
durchgeführt hast? Könnte ja jemand irgendwas reingeschmuggelt haben!
Auch bei den CPUs. Selbst wenn detaillierte Pläne bekannt wären,
wüsstest du immer noch nicht ob das Stück Silizium vor dir wirklich den
Plänen entspricht. Also Chips selber ätzen ...
Zur eigentlichen Frage:
Für den RPI gibt es keine Schaltpläne und der Bootloader ist imho
vollkommen vernagelt. Vollständige Datenblätter habe ich auch noch keine
gesehen. Deswegen: Keineswegs Opensource (auch wenn das ein bisschen vom
Selbstbild der RPI-Foundation abweicht).
Beaglebone: Für den SoC gibt es ausführliche Datenblätter frei verfügbar
sowie imho auch Schaltpläne für das Beaglebone Black.
Olimex veröffentlicht für seine SBCs auch regelmäßig Schaltpläne und
Datenblätter, die ALlwinner SoCs laufen soweit ich weiß aber auch nur
mit irgendwelchen Blobs.
Rene S. schrieb:> Dann sollte man erstmal klären:> - Was ist ein SBC> --> Arduino schonmal nicht!
Wieso nicht? Natürlich ist das ein SBC, wenn man unter SBC "single board
computer" versteht.
Ein Microcontroller ist der AVR (oder ARM), der auf die Arduinoplatine
gelötet ist.
Schnurrbart Ente schrieb:> *Und Beim Banana?
Vielleicht lässt sich die Frage durch Ausschluss einfacher beantworten:
Der Banana-Pi (bzw. alle Clone mit Allwinner-CPU) sind sozusagen
Opensource-Antimaterie.
http://linux-sunxi.org/GPL_Violations
Diverse OpenWRT-Taugliche Router/Boards sind sehr "Open Source". Keine
VGA mit Binärblob, aber ggfs. ein WLan-Firmware-BLOB.
Nach neuen FCC-regeln aber bald illegal, schnell noch mit ein paar
eindecken bevor die alle zwangs-Verdongelt werden müssen.
http://heise.de/-3109847
RasPi ist momentan so "halbwegs" Opensource, hat aber die höchsten
Chancen "ganz frei" zu werden, wenn der neue VGA-Treiber fertig ist.
Halli Hallo,
der letzte Beitrag ist zwar schon etwas her, dennoch möchte ich hieran
anknüpfen.
Welche Architektur kommt denn momentan am nächsten an den Begriff "Open
Source" heran? ARM, X86, MIPS, Sparc?
Wo ist am meisten offengelegt? Also wo kann ich wirklich nachvollziehen
was die CPU macht? Ähnlich wie in einem kleinen Microcontroller.
Danach würde ich mir ein geeignetes Board suchen, egal ob SBC oder
komplettes Mainboard
Tim M. schrieb:> Also wo kann ich wirklich nachvollziehen was die CPU macht?
Auf welchem Level hättest Du das gerne? Auf Bit- und Registerebene, oder
möchstest Du den internen Logikgattern zusehen können, oder gar den
einzelnen Transistoren?
Tim M. schrieb:> Mir ist schon klar, dass du dich über mich lustig machst,
Das ist ein Missverständnis. Es gibt halt unterschiedliche Sichtweisen,
was man unter "nachvollziehen, was eine CPU macht" versteht.
Sehen, was ein Assemblerprogramm anstellt, sehen, was in den internen
Registern abläuft, wenn ein einzelner Befehl abgearbeitet wird, oder
auch sehen, was auf den verschiedenen Bussen des Controllers/Prozessors
während der Abarbeitung von Befehlen geschieht.
Das ist ernstgemeint.
Für ersteres genügt irgendein Controller, bei dem die
Assemblerprogrammierung ausreichend gut dokumentiert ist (d.h.:
Praktisch jeder, wie sonst sollte man dafür Programme schreiben?), für
die weiteren Einsichten bräuchte man z.B. VHDL-Modelle des CPU-Kerns und
einen fetten Simulator.
Moin,
Tim M. schrieb:> Welche Architektur kommt denn momentan am nächsten an den Begriff "Open> Source" heran? ARM, X86, MIPS, Sparc?
Das hat nichts miteinander zu tun. Du kannst auf allen Architekturen
Open und Closed source schreiben und anbieten. Es ist das drumherum;
alles was nicht-Prozessor ist, was Probleme macht:
Graphikbeschleunigung, Videocodecs, Cryptounits,....
Und dann evtl. noch ein Signaturcheck im 1.Stage bootloader oder wie
beim RaspPI - dass der 1.Stage bootloader garnicht von der eigentlichen
CPU ausgefuehrt wird. Aber auch das ist voellig von der CPU-Architektur
unabhaengig.
Gruss
WK
Ok, ich bleibe mal beim "drumherum".
Für den Raspberry Pi gibt es ein PDF: BCM2835 ARM Peripherals.
Dort ist das ausführlich beschrieben.
Aber für den Prozessor finde ich nur Blockschaltbilder. Hier würde ich
meine Nase einfach tiefer reinstecken wollen
Ein interessanter Link: Dort läuft es darauf hinaus, dass es öffentlich
gemachte Architekturen nur als Softcore auf einem FPGA gibt
https://whitequark.org/blog/2012/09/25/why-raspberry-pi-is-unsuitable-for-education/
Tim M. schrieb:> Mir ist schon klar, dass du dich über mich lustig machst, dennoch gebe> ich eine Antwort und sage auf Registerebene
Dann ist doch ein Blockbild + Instruction set genug offenlegung?! Es
gibt jedenfalls AVR-FPGA Implementierungen die auf Basis der
Datenblätter erstellt wurden.
http://opencores.org/project,avr_core