Skriv ut denna sida

Linux embedded i praktiken

4 dagar

Linux används i många olika typer av apparater, t.ex. mobiltelefoner, industrirobotar och medicinsk utrustning. Den här kursen lär ut hur man konfigurerar Linux och utvecklar applikationer för sådana apparater. Den visar också hur man kan skriva drivrutiner för den egna hårdvaran. Under kursen får man laborera med olika typer av hårdvara samt bygga och installera ett komplett inbäddat Linuxsystem.

Inbäddade system har ofta begränsade hårdvaruresurser. Man får lära sig att välja ut och sätta samman de olika mjukvarukomponenterna för att utnyttja de tillgängliga resuserna effektivt. Kursen beskriver hur man skapar en praktisk utvecklingsmiljö utanför målplattformen med bl.a. korskompilatorer och simulering.

Skriptprogrammering gås igenom översiktligt, applikationsutveckling i programmeringsspråket C behandlas detaljerat. De viktigaste systemanropen för fil- och processhantering m.m. gås igenom. Ibland har applikationerna på inbäddade system realtidskrav; kursen diskuterar olika tekniker för att uppfylla dem.

Praktiska övningar

  • Skriva ett skriptprogram
  • Bygga dynamiska bibliotek
  • Skriva en Make-fil
  • Bygga om och installera kärnan
  • Kompilera och installera ett komplett Linuxsystem för arm-plattform
  • Korskompilera för PowerPC-plattform
  • Skriva en nätverksdemon
  • Skriva en enkel drivrutin

Förkunskaper och mål

Denna kurs riktar sig till dig som vill använda Linux som inbäddad målplattform. Lämpliga förkunskaper är att du har grundläggande kunskaper i att använda Unix/Linux och behärskar ANSI C.

Efter kursen kan du konfigurera ett Linuxsystem för att användas som en inbäddad målplattform. Du kan även utveckla inbäddade applikationer för målmiljön.

 

 

Pris: 20 900 kr (exkl. moms)

Presentation av kursmaterial
Bild på kursboken Kursmaterial på svenska + kursbok: Embedded Linux Primer: A Practical Real-World Approach, Christopher Hallinan
Presentation av kursansvarig
<p>Joakim Vikman</p>

Joakim Vikman

 

Introduktion 

  • Olika typer av inbäddade system
  • Mjukvarustacken 
  • Olika Linuxdistributioner - MontaVista, RTLinux, uClinux m fl
  • Hårdvara: CPU-typer, lagring, I/O
  • Support, Licensfrågor, GPL

    Busybox
  • Vad är Busybox
  • Konfigurera och kompilera Busybox
  • Verktyg - grep, sed, awk m fl
  • Kommandotolken ash
  • Programmering i ash
  • Administrationsverktyg


    Utvecklingsmiljön
  • Editorer: Emacs, KDevelop, Eclipse
  • Källkodshantering - cvs, subversion, patch, diff 
  • GCC, korskompilering, assemblering, länkning
  • GCC som korskompilator
  • Skriptverktyg - Perl, Python, Tcl/Tk/Expect
  • Avlusning - GDB, DDD, gdbserver, valgrind, strace
  • Simulering - qemu, SkyEye 
  • Att bygga statiska och dynamiska bibliotek 
  • Make - regler, variabler, pattern rules

    Konstruktion av Embedded Linux
  • Bygg och konfigurera initrd
  • Busybox init
  • Systembibliotek (Glibc, uClibc, newlib)
  • Kärnan - konfiguration och korskompilering 
  • Bootloader (Grub, Lilo, U-Boot)
  • Systemprogram

    Linuxsystemet
  • Användare och grupper, root, sudo 
  • Filsystemet - /usr/, /var,/ /dev, /proc etc 
  • Bootprocessen, init
  • Nätverkskonfiguration
  • Inloggning - telnet, ssh, ftp
  • Demoner - syslog, cron, xinetd, nfs
  • Brandvägg: iptables
  • Hantering av moduler till Linuxkärnan - insmod, modprobe 

    Programmering i Linuxmiljö
  • Filhantering
  • Hantering av processer - fork, exec, wait, UID/GID, setsid
  • Signalhantering
  • Ickeblockerande I/O, multiplexing 
  • Kommunikation mellan processer, pipes
  • Delat minne, minnesmappning
  • Sockets och nätverksprogrammering
  • Semaforer, message queues
  • Realtid - RTAI, RTLinux (Pro), Xenomai
  • POSIX threads

    Drivrutinsprogrammering
  • Att bygga kernemoduler
  • User space och kernel space
  • Race conditions, spinlocks 
  • Avlusning, minneshantering   
  • Interrupthantering