Hallo,
ich habe mir mal spasseshalber ein wenig die Hardware des Raspi
angeschaut, der inzwischen 3,5 Mio verkaufte Exemplare meldet.
Datenblatt der CPU:
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf
Datenblatt der BCM2863 Soc, die um die CPU gebettet sind:
http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf
Verkürztes Datenblatt des VideoCore IV:
http://www.broadcom.com/docs/support/videocore/VideoCoreIV-AG100-R.pdf
Da kommt noch einiges hinzu, wie Buscontroller, Speicheranbindung,
externe Bausteine, USB, Lan Interface usw.
Ohne dass da jemand alles durchklickt sind das allein fast 2000 Seiten
Dokumentation. Nur für die Hardware, denn die Software wie
Grafiktreiber, OpenGL usw. erfordert weitere "Einarbeitung".
Wer sich mal das Datenblatt eines "einfachen" 802 Wlan Stick-Chips
angeschaut hat samt dem Source der Treibersoftware und zugrunde
liegender Standards läuft auch schnell Amok.
Ich stelle mir grad so vor jemand aus meiner früheren Firma würde das
hingelegt "Arbeiten se sich mal ein...", ich wüsste von jedem dass er
entweder gekündigt hätte oder aus dem Fenster gesprungen wäre.
Ich frage mich daher, wie Projekte wie der Raspi organsisiert werden,
denn sein Linux muss auf der untersten Ebene exakt auf diese Hardware
abgebildet werden. Nicht nur auf den Befehlssatz der CPU was schon im
GCC steckt sondern auch auf dessen komplette Peripherie. Da kommen
einige hunderttausende Codezeilen zustande. Der Apple 2 wurden noch von
Woz als 1-Mann Entwicklung gemacht, das dürfte hier wohl utopisch sein.
Weiss hier jemand wie solche Projekte wie der Raspi organsiert werden,
damit sie beherrschbar bleiben? Was liefert der Hersteller, was wird vom
Anwender gefordert?
Gruss,
Christian
Christian J. schrieb:> Weiss hier jemand wie solche Projekte wie der Raspi organsiert werden,> damit sie beherrschbar bleiben?
Jemand der sich damit auskennt entwickelt die Hardware (Eben Upton
arbeitet bei Broadcom) und setzt auf vorhandene Software die angepasst
wird. Linux gab es schon für ARM bevor jemand an den PI gedacht hat.
Naja, Linux ist ja schon mal da. Was gemacht wird um es auf eine neue
Architektur zu bringen ist:
1) die Architektur in den gcc zu bringen (moderater Aufwand, aber am
Anfang braucht man noch keine Optimierung und so)
2) die architekturabhängigen Teile im Kernel zu ändern (Startup-Code und
Taskswitching, dass kann relativ wenig sein)
3) die Treiber zu schreiben
Diese 3 Schritte werden auch gerne schon von Hardwareherstellern
gemacht, denn wenn Linux auf dem neuen tollen Superprozessor von Firma X
läuft, dann kann Firma X die auch verkaufen.
Um die Komplexität in den Griff zu bekommen gibt es die Unix
Philosophie. Die besagt, sehr stark vereinfacht, dass man für jede
Teilaufgabe ein einfaches Programm haben soll, welches nur dieses
Teilproblem löst, sonst nichts. Deshalb gibts da Programme wie sort oder
cut. Damit kannst Du mit sehr wenig Aufwand sehr komplizierte Probleme
lösen. Natürlich sprechen alle Systeme (ASCII/UTF-8-)Text, was die Sache
sehr einfach macht.
Dadurch dass sich damit die Arbeit schon aufteilt und Arbeit auch
wiederverwendet werden kann, sinkt der Aufwand enorm.
Deshalb gibt Dir zum Beispiel diese kurze Zeile
grep "t=" /sys/bus/w1/devices/10-000801b5-seriennummer/w1_slave | cut -d
"=" -f 2
die Temperatur eines DS18B20 Temperaturfühlers aus. Noch ein paar echos
und in das cgi-bin Verzeichnis eines Webservers rein, und Du hast ein
Web-Thermometer.
Daraus kann man auch in einfacheren Projekten lernen. Zum Beispiel ist
es durchaus häufig vernünftig zunächst eine einfache Shell und ein
Dateisystem zu haben. Dadurch vereinfachen sich später viele Problem.
Hallo,
der gcc selbst ist ja "neutral". Der seetzt den C99 Standard auf den
Maschinenbefehlssatz um und berücksichtigt dabei die Eigenheiten der
CPU. Der ARM11 ist ohne C Compiler und unterlegtes OS ohnehin witzlos.
Das Datenblatt der CPU sind fast 1000 Seiten. Das haben Leute des GCC
Teams schon länger gemacht, den ARM 11 auf ihren Compiler portiert. Wenn
ich grad nach links schaue wo mein Raspi den sdcc Compiler seit ca 2,5h
durchkompiliert, das sind schon ein paar Zeilen.
Der Grafiktreiber für die GBU zur Anbindung an den Linux Kernel wurde
von einem Amerikaner in 4 Wochen allein erstellt und er bekam dafür
10.000 USD Preisgeld. Vermutlich so ein 1 Mann Genie.
Ich frage mich aber grad was die Hersteller so an
"Abstraktionsschichten" anbieten, damit ihre Kunden eben nicht aus dem
Fenster springen.
grep "t=" /sys/bus/w1/devices/10-000801b5-seriennummer/w1_slave | cut -d
"=" -f 2
Ich sehe da nur dass cut ein One-Wire Protokoll aktiviert und dass
unterlegte Treiber den DS, den ich selbst schon verwendet habe mit
Bitbanging ins sys Verzeichnis abbilden, wo er wie ein Gerät arbeitet.
Das hat mein Cubietruck auch, da kann man LEDs, CPU usw. drin verändern.
Das Zauberwort heisst ISO/OSI Modell, mehrere Schichten, die die
Hardware von der User Umgebung abtrennen. Nix Neues.
Christian J. schrieb:> Hallo,>> ich habe mir mal spasseshalber ein wenig die Hardware des Raspi> angeschaut, der inzwischen 3,5 Mio verkaufte Exemplare meldet.> Ich stelle mir grad so vor jemand aus meiner früheren Firma würde das> hingelegt "Arbeiten se sich mal ein...", ich wüsste von jedem dass er> entweder gekündigt hätte oder aus dem Fenster gesprungen wäre.
Naja ein Auto aus der oberklasse hat mindestens eine Computer mit der
Komplexität RasPi verbaut (Navi,Freisprech,Internet,Multimedia) trotzdem
schafft es auch ein 8-Klässler sich in die Bedienung einzuarbeiten.
MfG,
Fpga Kuechle schrieb:> trotzdem> schafft es auch ein 8-Klässler sich in die Bedienung einzuarbeiten.
Davon rede ich nicht, das ist nur das Frontend für Otto-Normaluser. Ich
finde mich in jedem Dienstwagen in unter 1/2h mit der Bedienung aller
Geräte zurecht. Das ist so gemacht und gewollt. Außer Mercedes C-Klasse,
da hat es länger gedauert, den konnte ich nicht mal starten. Allerdings
fahre ich selbst Scirocco II, da braucht man sowas nicht :-)
Christian J. schrieb:> Der Apple 2 wurden noch von> Woz als 1-Mann Entwicklung gemacht, das dürfte hier wohl utopisch sein.
KOmmt drauf an, Schaltplan für einen ARM-SOC zeichnen ist kein
Hexenwerk, auch Powersupply etc.. Layout ist bei der kleinen Platine
auch in ein paar Wochen gezeichnet. Üblicherweise teilt man aber
dergleich unter ein paar Leuten auf. Einer macht die Power supply einer
die CPU, ein dritter Ethernet,USB und ESD. Dann kommt der erste
Prototyp: jetzt misst jeder, ob alles funzt und was korrregeirt werden
muß. Ich schätze bei einem kleinen team von 3 mann sollte man 2 Monate
für den ersten Prototyp rechnen. Mglw schafft das auch ein erfahrener
allein in ein paar Monaten.
MfG,
Christian J. schrieb:> Weiss hier jemand wie solche Projekte wie der Raspi organsiert werden,> damit sie beherrschbar bleiben?
genau wie alles komplexe organisiert wird: module. jeder macht seinen
teil in dem er sich auskennt und gibt das ergebnis dem nächsten weiter,
der vom mehreren unter ihm (in der herstellungshierarchie) die teile
gemäß seines wissens zusammenfügt.
ich baue z.b. grade einen 3d drucker in eigenregie zusammen, und benutze
einzelteile von denen ich nicht weiß wie sie produziert werden.
irgendjemand hat mir aluprofile produziert, linearführungen,
sinterlager, microcontroller, schrittmotoren und deren treiber-ic's.
man muss ich nur mal hineinversetzen was es braucht um microschalter mit
zehntausenden garantierten betätigungen herzustellen - ich kanns mir
grob vorstellen, wissen und überblicken kann ichs nicht - vor allem
nicht die gesamtheit allen wissens das in die produktion der teile
geflossen ist, sie ich hier zusammenstöpsle.