Inbäddad programvara - Yocto bygga Raspberry Pi 4 en skärmdump av en dator

Yocto-bygge – Raspberry Pi 4

i en dockningsmiljö

Yocto körs i dockningsprogrambehållare

I yocto docs finns ett kapitel (2.2.2) för att konfigurera CROss PlatformS (CROPS) som alternativ till att konfigurera en ursprunglig Linux-PC.Detta alternativ använder dockningsprogrambehållare för att bygga en anpassad systemavbild, t.ex. för Raspberry Pi.

Tyvärr finns det några små misstag i dokumentationen för att konfigurera denna miljö för mig på Mac OS X (Monterey).### Konfigurera dockningsprogrambehållare för Mac OS X

För att använda CROPS-docker på Linux, Windows och Mac OS X krävs några speciella inställningar. Innan du konfigurerar programbehållaren för Yocto måste du skapa en dockningsvolym för att lagra resultaten. En dockare med samba-programbehållare används även för att tillhandahålla filerna i Mac OS X.

# Skapa dockningsvolym

Skriv följande kommandon i ett terminalfönster:

docker volume create --name raspberry
docker run -it --rm -v raspberry:/workdir busybox chown -R 1000:1000 /workdir

# Skapa och kör en samba-programbehållare

OSX låter dig inte ansluta till en lokalt körd samba-partition. Därför måste du först skapa ett alias för 127.0.0.1 i form av 127.0.0.2.

sudo ifconfig lo0 127.0.0.2 alias up

Skapa sedan samba-programbehållaren, som låter dig se filerna i dockningsvolymen:

docker create -t --expose 445 -p 127.0.0.2:445:445 --name samba -v raspberry:/workdir crops/samba

Eftersom du alltid behöver ha alias för att ansluta till samba-programbehållaren, kan du kombinera början av samba och alias på följande sätt:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

Nu kan du öppna workdir i filbläddraren. I finder trycker du på "Command-K" och i serverns adressruta skriver du "smb://127.0.0.2/workdir" och klickar på "Connect". Nu bör du se innehållet i dockningsvolymen i finder.

Skapa och starta Yocto-programbehållaren

För att skapa och/eller starta Yocto-programbehållartypen i ett terminalfönster:

docker run --rm -it --name=crops-poky -v raspberry:/workdir crops/poky:ubuntu-20.04 --workdir=/workdir

Konfigurera byggmiljö i programbehållaren

När dockningsprogrambehållaren startas har du en terminalprompt som ser ut så här: "pokyuser@d4ddfe042587:/workdir".

Nu kan du konfigurera byggmiljön.

Klona poky-version

I mitt fall använder jag Yocto-versionen 3.4 med namnet "Honister", eftersom meta-raspberrylagren inte är tillgängliga för nyare poky-versioner just nu. Den första gången måste du klona poky-datakatalogen:

git clone -b honister git://git.yoctoproject.org/poky poky-honister

Om du vill uppdatera poky till den senaste versionen:

cd poky-honister
git pull --all --prune

# Ytterligare metalager för Raspberry Pi

Ändra till "poky-honister" och klona följande datalager: meta-raspberry, meta-openembedded och vid behov meta-qt5

cd poky-honister
git clone -b honister git://git.yoctoproject.org/meta-raspberrypi
git clone -b honister git://git.openembedded.org/meta-openembedded
git clone -b honister https://github.com/meta-qt5/meta-qt5.git

# Konfigurera byggkonfiguration

Lämna poky-honister-katalogen, så att du är i /workdir. Källkoda nu byggmiljön med skriptet oe-init-build-env.

cd ..
source poky-honister/oe-init-build-env rpi-build

En ny katalog "rpi-build" – du kan namnge den som du vill – och en conf-katalog med filerna bblayers.conf, local.conf och templateconf.cfg skapas.

Eftersom det inte finns någon texteditor installerad i programbehållaren, måste du antingen redigera config-filerna i den monterade samba-volymen i Mac OS X eller installera en texteditor i programbehållaren. För att göra detta måste du öppna ett andra terminalfönster – medan yocto-programbehållaren körs – och starta ett bash-skal i programbehållaren med root-rättigheter:

docker exec -it --user=root crops-poky bash
apt-get install nano
exit

Då kan du redigera config-filerna i yocto-programbehållaren som pokyuser.

Obs!

Editorn är inte permanent installerad. Efter att du har lämnat programbehållaren och öppnar den igen måste du installera den på nytt

Lägg först till meta-raspberry i filen bblayers.conf

nano conf/bblayers.conf

Lägg till "/workdir/poky-honister/meta-raspberrypi " så att det ser ut som

BBLAYERS ?= " \
  /workdir/poky-honister/meta \
  /workdir/poky-honister/meta-poky \
  /workdir/poky-honister/meta-yocto-bsp \
  /workdir/poky-honister/meta-raspberrypi \
  "

och spara det.

Redigera sedan local.conf

Redigera filen local.conf:

nano conf/local.conf

Ändra följande rader:

  • MACHINE ??= "qemux86-64" -> MACHINE ??= "raspberrypi4-64"

Beroende på vilken Raspberry du vill använda (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64, osv.)

Avkommentera följande rader:

  • DL_DIR ?= "${TOPDIR}/downloads"
  • SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
  • TMPDIR = "${TOPDIR}/tmp"

Lägg till följande rader i slutet, för att få en sdimg att flasha till ett SD-kort:

  • IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
  • SDIMG_ROOTFS_TYPE = "ext4.xz"

Spara filen local.conf.

Bitbake den första bilden

Nu har du de minsta inställningarna för att bygga den första bilden:

bitbake -k core-image-minimal

I Yocto-dokumentationen hittar du en kort beskrivning av tillgängliga bildbeskrivningar.

Till exempel:

  • core-image-minimal: En liten bild som bara kan låta en enhet starta.
  • core-image-base: En bild enbart för konsolen som stöder målenhetens hårdvara fullt ut.
  • core-image-full-cmdline: En bild som endast är avsedd för konsoler med fler fullständiga Linux-systemfunktioner installerade.

Efter ett tag – vilket kan vara flera timmar den första gången – är bitbake klar och du hittar sdimg-filen i följande katalog:

/workdir/rpi-build/tmp/deploy/images/raspberrypi4-64

Extra konfigurationer

Extra hårdvarukonfigurationer för Raspberry

För att konfigurera specifika hårdvaruinställningar kan du titta på extra-apps.md och extra-build-config.md. Du hittar även dessa filer i katalogen meta-raspberrypi/docs.

Metalagret tillhandahåller även en bildkonfiguration "rpi-test-image" att använda med bitbake. Bilden är baserad på "core-image-base" som inkluderar de flesta paketen i meta-raspberrypi och några medieprover.

bitbake -k rpi-test-image

Extra programvarukonfigurationer

Beroende på vilken bildbyggarkonfiguration du använder kan du behöva installera ytterligare programvarupaket.

Du kan göra detta genom att lägga till några inställningar i filen local.conf.

Till exempel kan du lägga till följande rader, för att ställa in ssh-server, pi-user och systemd:

## packages
IMAGE_INSTALL:append = " openssh-sftp-server sudo python3 python3-pip rpi-gpio raspi-gpio"
IMAGE_FEATURES:append = " ssh-server-openssh"

## systemd settings
DISTRO_FEATURES:append = " systemd"
VIRTUAL-RUNTIME:init_manager = "systemd"
VIRTUAL-RUNTIME:initscripts = ""
IMX_DEFAULT_DISTRO_FEATURES:append = " systemd"

Eller lägga till python:

IMAGE_INSTALL:append = " python3 python3-pip rpi-gpio raspi-gpio"

Obs!

Det första mellanslaget i " python3 python3-pip rpi-gpio raspi-gpio" är viktigt, eftersom texten läggs till i den befintliga konfigurationen och måste separeras med detta mellanslag.

Upphovsrättslicens

Copyright © 2022 Interelectronix e.K.
Detta projekts källkod är licensierad under licensen GPL-3.0.

Tack

Källor som används för att skapa dessa instruktioner:

Tack till alla.