Linux penguin

Labbar inbyggda hack på SAM9-L9260

Detta är en labbserie som är tänkt att användas för självstudier för Lysatormedlemmar.

Kortet som ska användas är det Olimexkortet som saknar display. Det står Olimex och SAM9-L9260 på ovansidan vid platsen för 40-pinnarskontakten.

Bild på kortet SAM9-L9260

Börja med att titta på föreläsningen eller på föreläsningen i högupplöst video och titta på föreläsningsmaterialet.

Dokumentation och exempelkod finns på http://www.lysator.liu.se/inbyggda-hack/olimex/SAM9-L9260/

Ännu mer doukmentation och kod till SAM9-L9260 och en del andra kort finns på http://www.lysator.liu.se/~kjell-e/embedded/ .

Datorn bishibosh i ~(tilde) är uppsatt som arbetsstation för labbar i inbyggda system. Bishibosh har två nätverksinterface där eth1 är kopplat till ett separat nät avsett för laborationer med inbyggda system. Nätet har adress 192.168.0.0/24. eth1 på bishibosh har adress 192.168.0.1.

Du behöver vara med i gruppen inbyggda-hack. Prata med en root innan du börjar labba.

Bishibosh är uppsatt med tjänsterna dhcp, tftp och NFS för det interna labbnätverket. NFS exporterar /export/embedded. Du bör skapa en katalog i /export/embedded där katalogen ska ha samma namn som din användaridentitet på Lysator. Här kan du senare lägga root-filsystem som ska NFS-monteras av labbkortet. tftp är chrootad till /embedded/tftproot/ vilket innebär att sökvägen du ska ange på labbkortet när du laddar filer från tftpservern inte ska inte innehålla /embedded/tftproot/. Du bör skapa en katalog i /embedded/tftproot/ där katalogen ska ha samma namn som din användaridentitet på Lysator. Exempel: du har filen /embedded/tftproot/dinuser/uImage på bishibosh och för att ladda den ska du på labbkortet ange sökvägen /dinuser/uImage.

Förberedelser

Övrigt innan du kör igång

Notera att du måste använda enkelfnuttar ' till U-Boot inte dubbelfnuttar " när du sätter ett värde till en variabel.

Bild på kortet

Laboration 1: U-Boot

I denna laboration ska du bekanta dig med bootloadern U-Boot. Se till att picocom är igång. Anslut sladdarna till kortet, serieport, nätverk, ström. När du är i bootloadern innan kortet har hunnit börja boota Linux tryck på någon tangent i din picocom.

Laboration 2: Mer U-Boot

I denna laboration ska du bekanta dig ännu mer med U-Boot. Här ska du boota ett litet Linuxsystem som finns i en initramfs på tftp-servern. Se till att picocom är igång. Anslut sladdarna till kortet, serieport, nätverk, ström. Innan kortet bootar Linux tryck på någon tangent.

Laboration 3: Boota med filer från ett USB-minne

I denna laboration ska du ladda en fil med kärnan och en med ett rootfilsystem från ett USB-minne och sedan boota med dessa.

Laboration 4: kompilera busybox och bygga ett rootfilsystem

I denna laboration ska du korskompilera busybox och med hjälp av U-Boot och därefter med genext2fs och mkimage skapa en image med ett rootfilsystem.

Om det inte gick bra att boota kan det bero på att busybox är dynamiskt länkad istället för statiskt länkad. Kontrollera även bootargs så att de är korrekta.

Laboration 5: kompilera busybox och bygga ett rootfilsystem inklusive libfiler

I denna laboration ska du korskompilera busybox och länka den dynamiskt och med hjälp av U-Boot och därefter med genext2fs och mkimage skapa en image med ett rootfilsystem. Rootfilsystemet ska innehålla en kopia av libfilerna från ditt toolchain.

Laboration 6: korskompilera Linuxkärnan

I denna laboration ska du öva på att korskompilera Linuxkärnan och prova och boota med denna kärna.

Laboration 6b: korskompilera en patchad standardkärna

I denna laboration ska du öva på att korskompilera en standard Linuxkärna och prova och boota med denna kärna.

Laboration 7: boota med NFS-rootfilsystem

I denna laboration ska du boota kortet med den kärna som du byggde i föregående laboration och det rootfilsystem som du byggde med hjälp av busybox i laboration 5. Den stora skillnaden mot tidigare är att här ska root-filsystemet NFS-exporteras och monteras som root-filsystem under boot. I denna laboration ska systemet dessutom använda mdev för dynamisk hantering av devicefiler.

Grattis du har nu bootat kortet med ett NFS-monterat root-filsystem som använder mdev, "mdev is a mini-udev implementation for dynamically creating device nodes in the /dev directory."

Laboration 8: bygga ett toolchain

I denna laboration ska du bygga ett toolchain, som du senare kan använda för att korskompilera annan programkod med. Detta toolchain ska byggas för att köras på en x86/x86_64-baserad dator och kompilera kod för en arm-baserad Linuxmaskin. Detta toolchain ska du installera under /embedded/tools/dinuser/toolchain/

Laboration 9: kompilera u-boot

I denna laboration ska du kompilera u-boot och provköra den i en virtuell maskin.

U-Boot finns att ut från http://www.denx.de/wiki/U-Boot.

Laboration 10: korskompilera ett program

I denna laboration ska du korskompilera ett program med hjälp av det toolchain som du i en tidigare laboration installerade under /embedded/tools/dinuser/toolchain/

Laboration 11: buildroot

I denna laboration ska du med hjälp av buildroot bygga ett komplett system; toolchain, u-boot, linuxkärna och rootfilsystem.






Ansvarig för dessa övningar är: Kjell Enblom