Embedded Linux - uss-defiant.de

29
Embedded Linux im Automotivebereich

Transcript of Embedded Linux - uss-defiant.de

Page 1: Embedded Linux - uss-defiant.de

Embedded Linuxim Automotivebereich

Page 2: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  Vorstellung Unicontrolâ–  Verwendete Hardwareâ–  Embedded Entwicklungsumgebungenâ–  Bauen eines Crosscompilersâ–  Kernel, Treiber und Bootloaderâ–  Bibliotheken und Toolsâ–  Lizenzierungâ–  Applikationsentwicklungâ–  NFS vs. Flashenâ–  Debuggen auf dem Target

Gliederung

Page 3: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

■ mittelständisches Unternehmen■ ca. 30 Mitarbeiter■ Zulieferer für Siemens VDO u.a.■ Automotivebereich und Schiffskommunikation■ Kombiinstrumente und Infotainment■ eigene Projekte: DKI, Mediadatenerfassung, Unilogger

Vorstellung Unicontrol

Unicontrol Systemtechnik GmbHSachsenburger Weg 34OT DittersbachD-09669 FrankenbergTel.: 037206 / 8873 - 0

http://www.unicontrol.de

Page 4: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

So fing alles an... das Digitale Kombiinstrument

Page 5: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  DKI:â—† MPC5200â—† Coral Pâ—† Basisplatine

Verwendete Hardware

Page 6: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  Unilogger:â—† MPC5200â—† integrierter

Grafikchipâ—† Basisplatine

Verwendete Hardware

Page 7: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  GHS, WindRiverâ–  Integrity, VxWorks, QNX, WinCE, OSEKâ–  SysGo, MontaVista, Denxâ–  Multi 2000, Eclipse, make, gccâ–  glibc, uClibcâ–  Hardware-Emulator/-Debuggerâ–  Netzwerk (NFS)â–  Flashenâ–  eigene Entwicklungsumgebung

Embedded Entwicklungsumgebungen

Page 8: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  historisch gewachsenâ–  spezielle Anforderungen:

â—† mehrere Targetsâ—† soll fĂĽr PC und Target bauenâ—† alles in Versionsverwaltung

â–  Realisierung:â—† System aus Konfigurationsdateien und -variablen

(platforms, projects, configs)â—† Trennung in Kernel, Tools+Libs und eigene

Software (generische + spezielle Anteile)

â–  compilieren mit gcc + make

Eigene Entwicklungsumgebung

Page 9: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  buildroot daily snapshot aus Subversion(oder als fertiges Paket)

â–  Patches einpflegen (z.B. gcc-Bugs bei C++-UnterstĂĽtzungauf PowerPC)

â–  make menuconfig

Bauen eines Crosscompilers I

Page 10: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

■ Wichtig: Zielpfad einstellen!■ gcc benutzt den Pfad unter bestimmten Umständen■ sonst Header an falscher Stelle gesucht

Bauen eines Crosscompilers II

Page 11: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  Architektur, Pfade, Versionenâ–  gcc, binutils, Kernel, uClibcâ–  gcc 4.1.1, uClibc Snapshot

Bauen eines Crosscompilers III

Page 12: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

■ zusätzlich können Busybox u.a. Utils eingebunden werden■ bei uns wird Busybox später gebaut

Bauen eines Crosscompilers IV

Page 13: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

■ Start mit make■ baut in angegebenes Verzeichnis■ lädt alle benötigten Pakete herunter und baut sie■ bei Fehlern am besten von vorn anfangen :-)

(zumindest auf PowerPC)â–  am Ende liegt im Zielverzeichnis der fertig gebaute

Compiler mit der uClibc

Bauen eines Crosscompilers V

Page 14: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  aktuellster Kernel (2.6.20 aus git)â–  vor allem wegen UnterstĂĽtzung von Embedded

OpenFirmwareâ–  Architektur: powerpc (frĂĽher: ppc)â–  Einbinden der Patches von den Maintainern fĂĽr

die Prozessorfamilie MPC52xxâ–  eigene Anpassungen (inkl. Bugreports)â–  make menuconfigâ–  make uImage

Kernel, Treiber und Bootloader I

Page 15: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  Grafiktreiber Fujitsu Coral P (auch von Denx undALT Software (OpenGL) unterstĂĽtzt)

â–  CAN-Treiber mit Transportprotokoll alsoptionales Modul

â–  Diagnosetreiber (ĂĽber Transportprotokoll)â–  GPIO-Treiberâ–  GPL-Lizenzierung (bis auf wenige Ausnahmen)â–  mit eigenem Buildsystem gebaut

Kernel, Treiber und Bootloader II

Page 16: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  U-Boot Snapshot (git) oder fertiges Paketâ–  Hauptentwicklung bei Denx, Anteil von Secret Labâ–  unterstĂĽtzt Embedded OpenFirmware

Kernel, Treiber und Bootloader III

Page 17: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  eigene Anpassungen an unsere Hardware ďż˝ GPLâ–  UnterstĂĽtzung des Coral make boardname_config (uc5200,

basiert auf tqm5200)■ make erzeugt uboot.bin■ Flashen mit U-Boot � Henne-Ei-Problem■ problematisch, wenn Flashen fehlschlägt■ auch per JTAG - JTAG-Tools (openwince) von Unicontrol

auf HW portiert (Prozessor + Pinbelegung Flashanbindung)

Kernel, Treiber und Bootloader IV

Page 18: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

■ Pakete runterladen oder Snapshot■ Patches einpflegen (Busybox z.B. tftp)■ bei uns automatisch (ähnlich zu buildroot)■ Busybox: make menuconfig

.config speichern und in Zukunft benutzenâ–  sonst:

./configure --host=powerpc-unknown-linux --target=host--prefix=...; make && make install(eigentlich powerpc-uclibc-linux, aber viele configureserkennen das nicht richtig und brechen ab)

■ aufpassen bei benutzten Headerfiles!■ am Ende erhält man Bibliotheken und Tools

Bibliotheken und Tools

Page 19: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

■ Dilemma: Applikationssoftware soll nicht veröffentlichtwerden (Know-How, Sicherheitsbedenken)

â–  Konsequenz: GPL-Bibliotheken scheiden ausâ–  GPL-Tools und LGPL-Bibliotheken weitgehend

unproblematisch■ aber: Nutzer muss Möglichkeit haben, im System diese

Bibliotheken/Tools auszutauschen■ schwierig bei Embedded Systemen■ theoretisch besteht bei uns diese Möglichkeit, allerdings wird

Zugriff auf Flash aus SicherheitsgrĂĽnden unterbundenâ–  im Kernel bestimmte Funktionen nur fĂĽr GPL-Treiber

verfĂĽgbar ďż˝ wir benutzen GPL

Lizenzierung

Page 20: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  ...um dem Target einen Sinn zu geben

â–  Unicontrol-Entwicklungen:â—† DKI - Digitales Kombiinstrument

✦ generische (fahrzeugunabhängige) Anteile✦ fahrzeug- / projektabhängige Anteile

◆ UDAG - Universelles Datenerfassungsgerät✦ Förderantrag aufbauend auf Machbarkeitsstudie „Unilogger“✦ Linux auf dem Target✦ Konfigurationsapplikation mit C# auf Windows✦ selbe Codebasis für beide (C++, Boost)

ďż˝ beide benutzen dasselbe Buildsystem

Applikationsentwicklung

Page 21: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

■ endgültige Version:◆ Schreiben in ROM oder Flash � „Flashen“◆ unabhängig vom Entwicklungsrechner

■ zur Entwicklung:◆ Laden in RAM per Debugger/Emulator (JTAG)◆ Netzwerk-Filesystem, z.B. NFS◆ abhängig vom Entwicklungsrechner

NFS vs. Flashen I

Page 22: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  in /etc/exports Verzeichnis freigeben:/tftproot/ *(rw,no_root_squash,async,nohide)

â–  make nfs kopiert alles nach /tftproot/TARGET/â–  selbe Verzeichnisstruktur wie auf Targetâ–  Kernel als Rootpath mitgeben

(bei uns im U-Boot durchKonfigurationsvariablen)

â–  Kernel per TFTP gebootet(selbes Verzeichnis wieNFS): nfsboot im U-Boot(eigene Anpassung)

NFS vs. Flashen II

Page 23: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

■ make flash_image baut Images aus allen benötigten Teilen■ mehrere Images, digital signiert:

â—† OFDTB (OpenFirmware DeviceTree Binary)â—† Kernel, RootFS, OptFSâ—† Splashscreen (U-Boot), Designs (VarFS)

â–  Flashen ĂĽber verschiedene Methoden:â—† CAN (per Diagnose ĂĽber TP)â—† Netzwerk (von Applikation auch ĂĽber MenĂĽ)â—† JTAG, seriell, ...

â–  Image im U-Boot ĂĽber ramboot gestartet (automatisch nachTimeout)

■ Timeout auf 0 setzbar, schaut nach Tastendruck, später GPIO

NFS vs. Flashen III

Page 24: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

■ Zugriff auf HW:◆ seriell (minicom)◆ Netzwerk zum Aufstecken (telnet)◆ JTAG (zusätzliche HW)

■ Kernel-Debugging:◆ kdb (direkt im Kernel mit eigener Oberfläche)◆ kgdb (Kernelpatch, Connect mit gdb)

â–  Applikation evtl. fĂĽr Host compilieren und dort debuggenâ–  bei den Tools auch gdb fĂĽr Target ďż˝ Debugging auf Targetâ–  aber: Binaries zu groĂź ďż˝ besser: Remote-Debugging

(z.B. mit -O3 und strip 6,7MB, mit -g -ggdb3 ca. 120MB)â–  gdb + gdbserver mit buildroot gebaut (massiv gepatcht)

Debuggen auf dem Target I

Page 25: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  Target:â—† gdbserver /dev/ttyS0|host:port

(host: erlaubter Client, wird nicht unbedingt geprüft)◆ per seriell problematisch, wenn Konsole die belegt◆ mögliche Szenarien:

✦ gdbserver seriell, Konsole Netzwerk✦ gdbserver Netwerk, Konsole seriell✦ beide Netzwerk✦ beide seriell auf verschiedenen seriellen Interfaces

Debuggen auf dem Target II

Page 26: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  Host:â—† GDB aufrufen:

powerpc-linux-gdb binary (mit Debugsymbolen)gdb> target remote /dev/ttyS0|host:portgdb> cont (nicht run!)

◆ gdb (aus Toolchain!) läuft auf Host, aber verarbeitet Symbolevom Target (strip ebenso)

◆ auf Target und Host muss Binary nicht dasselbe sein, nurAbarbeitungsreihenfolge � gestripptes Binary auf Targetmöglich

Debuggen auf dem Target III

Page 27: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  DDD:â—† Aufruf im gdb in Skript verlagern:

# cat target-debugtarget remote host:port

â—† ddd mit diesem Skript aufrufen:ddd -x target-debug --debugger \/opt/toolchains/ppc-4.1.1-2/bin/powerpc-linux-gdb binary

â—† ddd-Konsole durch Output nahezu unbrauchbarâ—† Backtrace ebensoâ—† deswegen gdb auf Kommandozeile vorzuziehen

â–  Alternativen?â—† kdbg (KDE), aber kann kein Remote-Debugging

Debuggen auf dem Target IV

Page 28: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

Page 29: Embedded Linux - uss-defiant.de

Embedded Linux im Automotivebereich

Jan Horbach, Unicontrol Systemtechnik GmbH – Chemnitzer Linux-Tage 2007 – 3./4. März 2007

â–  WeiterfĂĽhrende Links:

â—† http://www.unicontrol.deâ—† http://www.digitales-kombiinstrument.de

â—† http://www.linuxdevices.comâ—† http://www.busybox.netâ—† http://uclibc.orgâ—† http://u-boot.sourceforge.netâ—† http://openwince.sourceforge.net

Vielen Dank fĂĽr Ihre AufmerksamkeitUnicontrol Systemtechnik GmbHSachsenburger Weg 34OT DittersbachD-09669 FrankenbergTel.: 037206 / 8873 - 0

http://www.unicontrol.de