Gömülü Yazılım - Yocto oluşturmak Raspberry Pi 4 bir bilgisayarın ekran görüntüsü

Yocto ile Raspberry Pi 4 oluşur

docker ortamı

Açık kaynak Yocto Proje kılavuzu

Docker ile Raspberry Pi'de kurulum ipuçları özel Linux

Docker kurulum ipuçları ile Raspberry Pi'de özel Linux için açık kaynaklı Yocto Proje kılavuzu

Herhangi bir donanımda özel Linux sistemleri için Yocto Projesi'ne dalın. Geliştiriciler ve gömülü sistem meraklıları için mükemmeldir. Hemen inşa etmeye başlayın!

Herhangi bir donanım mimarisi için özel Linux sistemleri oluşturmaya yönelik açık kaynaklı bir girişim olan Yocto Projesi'ni keşfedin. Platformlar arası geliştirme için CROPS'u kullanmayı, Docker kapsayıcıları ayarlamayı ve gömülü ve IoT cihazları için özel Linux görüntüleri oluşturmayı öğrenin. Kılavuzumuz, macOS'ta kurulum, derleme ortamlarının yapılandırılması ve Raspberry Pi için optimize edilmeyi kapsar. İster yeni başlayan ister uzman olun, Linux proje ihtiyaçlarınız için en iyi uygulamaları, araçları ve topluluk desteğini bulun.

Yocto Docker konteynerinde çalışıyor

Yocto dokümanlarında, yerel bir linux pc kurmaya alternatif olarak Çapraz Platform yazılımı (MAHSULLER) kurmaya ilişkin bir bölüm (2.2.2) yer almaktadır. Bu alternatif, örneğin Raspberry Pi için özelleştirilmiş bir sistem imgesi oluşturmak için docker konteynerini kullanır.

Ne yazık ki, bu ortamı Mac OS X'te (Monterey) kurmak için belgelerde bazı küçük hatalar bulunmaktadır.

Mac OS X için docker konteyner kurulumu

CROPS dockerını Linux, Windows ve Mac OS X'te kullanmak için bazı özel ayarlar gereklidir. Yocto için konteyneri kurmadan önce, sonuçları saklamak için bir docker birimi oluşturmanız gerekir. Ayrıca, Mac OS X'te dosyaları sağlamak için bir docker samba konteyneri kullanılır.

Bağlantı birimi oluştur

Bir terminal penceresinde aşağıdaki komutları yazın:

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

Bir samba konteyneri oluştur ve çalıştır

OSX, yerel olarak çalışan bir samba paylaşımına bağlanmanıza izin vermez. Bu nedenle, öncelikle 127.0.0.2 'nin 127.0.0.1' i için bir diğer ad oluşturmanız gerekir.

sudo ifconfig lo0 127.0.0.2 alias up

Ardından, docker konteynerindeki dosyaları görmenizi sağlayan samba konteynerini oluşturun:

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

Samba konteynerine bağlanmak için her zaman diğer ada sahip olmanız gerekeceğinden, samba ve diğer adın başlangıcını şu şekilde birleştirebilirsiniz:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

Artık WORKDIR'i dosya tarayıcısında açabilirsiniz. Finderda "Komut-K"ya basın ve sunucu adresi kutusuna "smb://127.0.0.2/workdir" yazın ve "Bağlan"a tıklayın. Şimdi docker konteynerinin içeriğini finderda görebilirsiniz.

###Yocto konteynerini oluşturun ve başlatın

Yocto konteynerini oluşturmak ve/veya başlatmak için bir terminal penceresine şunları girin:

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

Konteynerde oluşturma ortamını kurun

Docker konteyneri başlatıldığında, "pokyuser@d4ddfe042587:/workdir" şeklinde görünen bir terminal isteminiz olacaktır.

Artık oluşturma ortamını ayarlayabilirsiniz.

Klon poky versiyonu

Ben kendi sistemimde "Honister" adıyla Yocto sürüm 3.4'ü kullanıyorum, çünkü meta-raspberry katmanları şu anda daha yeni poky sürümleri için mevcut değil. İlk olarak, Poky deposunu klonlamak zorundasınız:

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

POKY'yi en son sürüme güncellemek istiyorsanız:

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

Raspberry Pi için ek meta katmanları

"Poky-honister" olarak değiştirin ve aşağıdaki depoları klonlayın: meta-raspberry, meta-openembedded ve gerekirse 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

Kurulum yapılandırması

/workdir içine girmek için poky-honister dizinini bırakın. Şimdi oe-init-build-env komut dosyasıyla yapı ortamını kaynaklayın.

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

"rpi-build" adlı yeni bir dizin - istediğiniz şekilde adlandırabilirsiniz - ve bblayers.conf, local.conf ve templateconf.cfg dosyalarının bulunduğu bir conf dizini oluşturulur.

Konteynerde yüklü bir metin düzenleyicisi olmadığından, yapılandırma dosyalarını Mac OS X'te yüklü samba hacminde düzenlemeniz veya konteynere bir metin düzenleyicisi kurmanız gerekir. Bunu yapmak için de yocto konteyneri çalışırken ikinci bir terminal penceresi açmalı ve konteyner içinde kök ayrıcalıkları olan bir bash kabuğu başlatmalısınız:

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

Ardından yocto konteynerinde yapılandırma dosyalarını pokyuser olarak düzenleyebilirsiniz.

Not

Düzenleyici kalıcı olarak yüklenmez. Konteynerden ayrılıp tekrar girdikten sonra tekrar yüklemeniz gerekir

İlk olarak, bblayers.conf dosyasına meta-raspberry'yi ekleyin

nano conf/bblayers.conf

"/workdir/poky-honister/meta-raspberrypi " ekleyin, böylece

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

ve kaydedin.

İkincisi local.conf dosyasını düzenleyin

Local.conf dosyasını düzenle:

nano conf/local.conf

Aşağıdaki satırları değiştirin:

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

Hangi Raspberry'yi kullanmak istediğinize bağlı olarak (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64 vb.)

Aşağıdaki satırları yorumdan çıkarın:

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

Bir sdimg'nin SD karta flaş yapması için aşağıdaki satırları sona ekleyin:

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

local.conf dosyasını kaydedin.

İlk imgeyi bitbake edin

Artık ilk imgeyi oluşturmak için minimum ayarlara sahipsiniz:

bitbake -k core-image-minimal

Yocto belgelerinde, mevcut imge açıklamalarına ilişkin kısa bir tanım bulabilirsiniz.Örneğin:

  • core-image-minimal: Bir cihazın önyüklenmesine izin verebilen küçük bir imge.
  • core-image-base: Hedef cihaz donanımını tam olarak destekleyen yalnızca konsol imgesi.
  • core-image-full-cmdline: Daha fazla tam özellikli Linux sistem işlevselliği yüklü yalnızca konsol imgesi.

Bir süre sonra, ki bu ilk seferinde birkaç saat sürebiliyor, bitbake biter ve aşağıdaki dizinde sdimg dosyasını bulabilirsiniz:

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

Ekstra konfigürasyonlar

Ekstra Raspberry donanım konfigürasyonları

Belirli donanım ayarlarını yapmak için, extra-apps.md ve extra-build-config.md seçeneklerine bakabilirsiniz. Bu dosyaları meta-raspberrypi/docs dizininde de bulabilirsiniz.

Meta katman ayrıca bitbake ile kullanmak için bir imge yapılandırması "rpi-test-image" sağlamaktadır. İmge, meta-raspberrypi ve bazı medya örneklerindeki paketlerin çoğunu kapsayan "core-image-base"e dayanmaktadır.

bitbake -k rpi-test-image

Ekstra yazılım konfigürasyonları

Hangi imge oluşturma konfigürasyonunu kullandığınıza bağlı olarak, ek yazılım paketlerini yüklemeniz gerekebilir.

Bunu, local.conf dosyasına bazı ayarlar ekleyerek yapabilirsiniz.

Örneğin, ssh-server, pi-user ve systemd'yi ayarlamak için aşağıdaki satırları ekleyin:

## 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"

Veya python ekleyin:

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

Not

"python3 python3-pip rpi-gpio raspi-gpio"

daki başlangıç boşluğu önemlidir, çünkü metin mevcut konfigürasyona eklenir ve bu boşlukla ayrılması gerekir.

Telif Hakkı Lisansı

Telif Hakkı © 2022Interelectronix e.K.
Bu Proje kaynak kodu ** GPL-3.0**lisansı altında lisanslanmıştır.

Teşekkür

Bu Komutları oluşturmak için kullanılan kaynaklar aşağıda verilmiştir:

Hepsine teşekkürler.