Forum: Mikrocontroller und Digitale Elektronik embedded Linux / Buch


von Bert (Gast)


Lesenswert?

Hey Leute,

ich wollte euch mal fragen ob Ihr Stand 2022 ein halbwegs aktuelles Buch 
in Richtung embedded-linux kennt?
Ich bin zwar kein komplett blutiger Anfänger (habe vor 5-6 Jahren mal 
U-Boot & Linux-Kernel für einen Zynq gebaut), allerdings war das damals 
eher try&error bis es funktioniert hat...
Nun werde ich damit wahrscheinlich jetzt wieder vermehrt zu tun haben.

Daher wollte ich mal wissen, was es an aktueller Literatur gibt, wo 
einfach nochmal alles sauber beschrieben ist wie z.B.

- Wie konfiguriere ich U-Boot & Linux-Kernel korrekt
- Wie setze ich die Toolchain zum bauen korrekt auf
- Wie baue ich das Dateisystem für SD/eMMC
- Wie konfiguriere ich die Treiber im Device-Tree korrekt
- Evtl. einen praxis-Guide für gängige SoC-Plattformen (von zB TI, NXP, 
etc..) wie man am schnellsten zu was kommt ohne vorher tausende Seiten 
an Doku vom Bootprozess studieren zu müssen :)

Am besten evtl. erklärt anhand eines ARM-Boards, dass verfügbar ist und 
an dessen Dokumentation man auch gut ran kommt.

Danke euch !

von es irrt der Mensch solang er strebt (Gast)


Lesenswert?

Bert schrieb:

> Am besten evtl. erklärt anhand eines ARM-Boards, dass verfügbar ist und
> an dessen Dokumentation man auch gut ran kommt.

Jederzeit kostenlos als pdf downloadbar:
http://www.zynqbook.com/


> allerdings war das damals
> eher try&error bis es funktioniert hat...

Das ist es immer, auch mit einem aktuellen Buch. Es sei den jemand setz 
für Dich alles auf. So wie Mutti, die Dir 'früher' die Schuhe gebunden 
hat.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Wuerd' mal sagen, dass die genannten Punkte grossteils jeweils zu stark 
projekt/hw-spezifisch sind, als dass da jemand ein allgemein gehaltenes 
Buch drueber haette schreiben koennen.
In Sachen Toolchain und "was-muss-ins-filesystem" kann's nicht schaden, 
wenn man mal ein paar B/LFSe gebaut hat. Moeglichst auf einem nicht 
allzu schnellen Rechner, so dass man Zeit hat, ueber die ge-c&p-eten 
Kommandos nachzusinnieren...

Gruss
WK

von Alexander S. (alesi)


Lesenswert?

Kennst Du diese Seite von Jay Carlson 
https://jaycarlson.net/embedded-linux/
oder dieses wiki https://elinux.org/Main_Page ?

: Bearbeitet durch User
von fred (Gast)


Lesenswert?

unabhängig von diversen Literaturen kann ich https://buildroot.org nur 
empfehlen!

Toolchain und Umgebung selbst aufsetzen ist IMHO veraltetes Handwerk

lg

von M. Н. (Gast)


Lesenswert?

Bert schrieb:
> allerdings war das damals
> eher try&error bis es funktioniert hat...

Das ist auch der normale Weg. Die Thematik ist so verschwurbelt, dass 
die meisten Bücher nicht mehr aktuell sind bis sie abgedruckt wurden.
Es gibt einige gute Bücher für das Gersamtsystem, die einem aber bei der 
korrekten Integration eines Linux auf ein ARM System o.ä. wenig helfen.

Linux Driver Development for Embedded Processors - Second Edition: Learn 
to develop embedded Linux drivers with kernel 4.9 LTS (English Edition) 
frand ich ganz gut für die ganze Treibergeschichte.

Aber für das Zusammenstöpseln des Linux bringt das auch nur so mäßig 
was.

Bert schrieb:
> - Wie konfiguriere ich U-Boot & Linux-Kernel korrekt
> - Wie setze ich die Toolchain zum bauen korrekt auf
> - Wie baue ich das Dateisystem für SD/eMMC

Es macht zwar (zumindest mir) Spaß das alles mal händisch 
durchzubasteln, ist aber in den wenigsten fällen sinnvoll. Es gibt 
Projekte wie buildroot und yocto, die quasi um den Flow herumgescriptet 
wurden, damit man da halbwegs sinnvoll was bauen kann. Viele Hersteller 
(bspw. TI) bieten z.B. für Yocto eigene Yocto layer auf github o.ä. an, 
mit denen man Kernel/Uboot für ihre SoCs bauen kann.

Das ist aber auch nicht immer unfallfrei und man muss teilweise einfach 
wühlen. Ich habe 2 Wochen verballert, bis ich herausgefunden hatte, dass 
der MMC/SDIO Driver im Devicetree eine Referenz auf eine Spannungsquelle 
haben will, da er das zum init der Karte braucht. Damit wären wir auch 
schon bei der nächsten Frage:

Bert schrieb:
> - Wie konfiguriere ich die Treiber im Device-Tree korrekt

Die Kurzversion: Copy & Paste. Du bist selten der erste, der einen 
gewissen SoC verwendet. Kopieren, verstehen, reinbauen sind hier die 
richtigen Schritte. Oft ist die Devicetree-Konfig nur unzulänglich bis 
gar nicht dokumentiert. Generische Sachen wie der Interruptcontroller 
diverser ARM systeme gehen. Da findet man die entsprechende Doku. Aber 
bei manch anderen Sachen muss man, wenn es nicht will durch den Treiber 
Code wühlen.

Bert schrieb:
> - Evtl. einen praxis-Guide für gängige SoC-Plattformen (von zB TI, NXP,
> etc..) wie man am schnellsten zu was kommt ohne vorher tausende Seiten
> an Doku vom Bootprozess studieren zu müssen :)

Passende beispiele im Netz für deinen SoC suchen.

Ich habe einst auf einem Altera-SOC Treiber für IPs entwickelt. Sprich 
VHDL in den FPGA rein und dann den Linux Treiber dafür geschrieben.
Da das kein produktivsystem war, habe ich den einfachen Weg gewählt:
- Von Altera die Beispiel SD Karte heruntergeladen (wegen dem Second 
Stage bootloader, und den UBoot selbst). Das Linux darauf war für mich 
nutzlos. Zu alt zu schmal.

Da es irgenwie zum Ziel gehen musste habe ich dann den Kernel 
selbstgebaut (Musste ich ja eh wegen meinen Treibern). Für die SoCFPGA 
Platform von Altera bspw hat der Kernel mainline schon configs und 
devicetrees. Da habe ich einfach bisschen rumgepatcht, bis ich meien 
Devices drin hatte.
Für das RootFS hatte ich dann gar keinen Kopf mehr und habe eiskalt 
einfach das Rootfs von "Archlinux for Raspberry PI" geklaut.
-> Innerhalb eines Tages ein custom-Linux, mit dem die 
Treiberentwicklung starten kann.

von Tux ohne Schnaps (Gast)


Lesenswert?

Je nach SoC ist Ubuntu Core auch eine Option.

Hängt jedoch auch sehr von der Anwendung ab ob das sinnvoll ist.

Ansonsten Yocto Linux mit allen möglichen Quellen wie dem Mega Manual, 
Toradex hatte ein paar Artikel, genauso ST/Analog Devices. Beim 
Raspberry Pi im Wiki gibt es z.B eine sehr gute Dokumentation des Device 
Trees und Overlays.

Händisch würde ich aktuell kein rootfs mehr zusammenbauen, das kann 
niemand warten, du willst allein schon ein System wie 
Yocto/Buildroot/Ubuntu Core für das Dependency Management, bei Yocto 
wären die Lizenz Reports und CVE Scans hervorzuheben. Ubuntu Core hat 
diesen CVE Scan sogar im SNAP Store, kann ggf. die Geschichte 
vereinfachen.

Was willst du denn genau machen, Budget und welche Stückzahlen und 
welche anford hast du denn genau?

von Tux ohne Schnaps (Gast)


Lesenswert?

Bert schrieb:
> Wie konfiguriere ich die Treiber im Device-Tree korrekt

Mit Glück ist im Kernel eine entsprechende .txt, mit Pech ist die 
relativ wertlos und du darfst die fdt Sektion des Kernel Treibers 
anschauen, das ist aber machbar.

Gibt auch "device tree for dummies" bei dem schon erwähnten elinux.org, 
das ist eine sehr gute Quelle.

Linux Developer Konferenz gibt es immer gute Vorträge.

Wenn du viel arbeitest am Grundsetup des Systems rate ich dir zu 
häufigen Clean Builds, dazu brauchst du jedoch ein schnelles System. 
Intel 13900k oder Ryzen 7950X mitsamt 128GB Raudisk sind hier dringend 
zu empfehlen.

Wenn du Dokumentation zu MAC/systemd usw brauchst ist nach den 
Herstellerseiten das Arch Wiki auch eine sehr gute Anlaufstelle - wäre 
übrigens auch eine Distro welche man im embedded Bereich einsetzen 
könnte.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.