Budowanie dystrybucji GNU/Linux dla Raspberry Pi z pomoc Yocto Project

Podobne dokumenty
Linux z node.js dla Raspberry Pi

Uruchomienie Intel Galileo

Uruchomienie Raspberry Pi

Embedded GNU/Linux. Krzysztof Mazur

Sprawozdanie z zadania 2. Artur Angiel, śr. 12:15

Uruchomienie Raspberry Pi

WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Pracownia specjalistyczna. Numer ćwiczenia: 5.

Programowanie Systemów Wbudowanych

X P.I.W.O. Portowanie Tizena na nowe architektury na przykładzie ARMv6. Maciej Wereski Samsung R&D Institute Poland. 17 Maj Poznań, Polska

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows

Tworzenie oprogramowania

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Instrukcja instalacji oprogramowania dla środowiska Linux

Podstawowa konfiguracja routerów. Interfejsy sieciowe routerów. Sprawdzanie komunikacji w sieci. Podstawy routingu statycznego

K. Konopko; Toolchain. Toolchain. dr inż. Krzysztof Konopko

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Instalacja programu Sprzeda z motorem. bazy danych Pervasive V8

Sieciowa instalacja Sekafi 3 SQL

OpenEmbedded Marcin Juszkiewicz

I. INSTALACJA BAZY DANYCH ORACLE10g EXPRESS EDITION

Usługi sieciowe systemu Linux

April 20, 2015 KSEM WETI PG. Programowanie Systemów Wbudowanych. Kompilacja OS dla systemu wbudowanego. OpenEmbedded.

UC-8410A. Pełny opis produktu. Wbudowany mini komputer przemysłowy z 8 x RS-232/422/485, 3 x LAN, DIO, slot na karty SD, USB

K. Konopko; Toolchain. Jądro Linuksa. dr inż. Krzysztof Konopko

Git - podstawy. Błażej Kowalczyk. Koło Naukowe Robotyków KoNaR. 7 listopada 2014

T: Zabezpieczenie dostępu do komputera.

EC4P Pierwszy program w 6 krokach

Subversion - jak dziaªa

Linux - System Wbudowany

Programowanie Systemów Wbudowanych

Wprowadzenie do obsługi systemów obliczeniowych PCSS

Thinkcore W325A. Pełny opis produktu. Wbudowany komputer przemysłowy z GSM/GPRS, 1x LAN, 2x RS-232/422/485, SD, RISC CPU. [Nowy moduł GSM/GPRS]

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz 24 czerwca Podstawowe funkcje. 2.1 Windows

Instalacja i konfiguracja serwera SSH.

IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa)

Programowanie Systemów Wbudowanych

ARCHITEKTURA SYSTEMÓW WBUDOWANYCH - LABORATORIUM. Ćwiczenie 4. Temat: Serwer stron WWW jako interfejs komunikacyjny z Systemem Wbudowanym.

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

Instrukcja obsługi programu CMS Dla rejestratorów HANBANG

INFORMATOR TECHNICZNY WONDERWARE

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Rys historyczny Systemy Wbudowane Raspberry Pi Raspberry Pi - systemy Raspberry Pi - zastosowania Uruchamianie i system NIE

Git, Bitbucket, IntelliJ IDEA

Zadanie1. Wykorzystując serwis internetowy Wikipedii wyjaśnij następujące pojęcia: wirtualizacja, VirtualBox, Vmware, KVM, Virtual PC, Hyper-V.

Instalacja cross-compilatora Inne elementy. Gentoo. Krzysztof Mazur. June 25, 2014

ZASTOSOWANIE PLATFORM CYFROWYCH ARDUINO I RASPBERRY PI W NAUCZANIU STEROWANIA OBIEKTEM PNEUMATYCZNYM

Programowanie Systemów Wbudowanych

Konfiguracja i kompilacja jądra Linux. Based on Free Electrons

Rozdział 1. Informacje ogólne

Stosowanie tego urządzenia zwiększa możliwości stosowanego sprzętu jak i sofware.

Instalacja NOD32 Remote Administrator

Node.js i TypeScript - jak zacz?

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Spis treści. Wstęp... 10

HaeRWu Marcin Juszkiewicz. OpenEmbedded. Wprowadzenie. Marcin Juszkiewicz. Poznań OpenEmbedded.

INFORMATOR TECHNICZNY WONDERWARE

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Instalacja oprogramowania Platforma Systemowa ArchestrA 2012 R2

PLD Linux Day. Maciej Kalkowski. 11 marca Wydziaª Matematyki i Informatyki UAM

Warszawa, r. Copyright (c) 2015 Ministerstwo Finansów

INFORMATOR TECHNICZNY WONDERWARE. Konfiguracja komputera klienckiego do łączenia się z serwerem IndustrialSQL

Kompilacja image z CVS

Gdy dystrybucja Linuksa staje się niepotrzebna

Serwer SAMBA UDOSTĘPNIANIE UDZIAŁÓW SIECIOWYCH PIOTR KANIA

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

System kontroli dostępu ACCO NET Instrukcja instalacji

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat usługi DHCP.

Instalacja serwera baz danych PostgreSQL ze źródeł i pierwsze uruchomienie

1.Wstęp. 2.Generowanie systemu w EDK

VPN e-science.pl Podręcznik użytkownika

Programator AVR USBasp

Wybrane środowiska szybkiego prototypowania

Moduł nie może być zasilany z PoE. Nie ma wbudowanej przetwornicy PoE, a posiada tylko wyprowadzenie pinów RJ45 na płytkę PCB

Materiały dodatkowe. Raspberry Pi

Uruchamianie SNNS. Po uruchomieniu. xgui & lub snns & pojawia si e okno. programu. Symulator sztucznych sieci neuronowych SNNS 1

Instrukcja instalacji oprogramowania dla środowiska Windows

Zapoznanie się z konfiguracją i zarządzaniem serwerem Samba.

Produkt wycofany z oferty. W celu dobrania zamiennika prosimy o kontakt na

Technologia Programowania 2016/2017 Wykªad 13 Android. Jakub Lemiesz

Rozproszony system kontroli wersji GIT. Piotr Macuk

git krótki przewodnik

ZAŁĄCZNIK NR 4 DO SIWZ Szczegółowy opis przedmiotu zamówienia dla części I i części II Część I Oprogramowanie:

Instalacja programu Sprzeda

1. Wprowadzenie do C/C++

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux

Kopiowanie i instalowanie pliku w systemie Windows CE

Viper Linux Lite, oprogramowanie Linux

Acronis Backup & Recovery 10 Server for Linux. Instrukcja szybkiego rozpoczęcia pracy

Linux LAMP, czyli Apache, Php i MySQL

Aplikacje Systemów Wbudowanych

PODSTAWOWA OBSŁUGA PROGRAMU PROGRAMU PACKET TRACER TRYB REAL TIME

Tomasz Greszata - Koszalin

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Zarządzanie projektami informatycznymi

1. Wprowadzenie do C/C++

VMware, QEMU, UML. oraz inne wirtualne maszyny. Piotr Findeisen Filip Grządkowski Piotr Kuśka Krzysztof Mroczek

Pracownia internetowa w każdej szkole. Opiekun pracowni internetowej SBS 2003 PING

Laboratorium 1 Wprowadzenie do programowania Intel Galileo

System kontroli wersji git

Transkrypt:

Budowanie dystrybucji GNU/Linux dla Raspberry Pi z pomoc Yocto Project Adam Stolcenburg 15 stycznia 2019 Akademia ADB

Raspberry Pi

Raspberry Pi 2 Model B V1.1 i 1

Raspberry Pi 2 Model B V1.1 ii BCM2836 (rodzina BCM2709) czterordzeniowy procesor ARM Cortex-A7 900 MHz (ARMv7-A) rdze«graczny 3D VideoCore IV slot na kart micro SD 40 pinów ogólnego przeznaczenia port HDMI 3.5mm port audio i analogowego video interfejs do podª czenia kamery interfejs do podª czenia wy±wietlacza SMSC LAN9514 port Ethernet 4 porty USB Elpida EDB8132B4PB-8D-F 1 GB DDR2 SDRAM 2

Model pracy - stacja robocza 3

Model pracy - dost p zdalny 4

Model pracy - system wbudowany 5

Oprogramowanie stacji roboczej zazwyczaj Linux oprogramowanie umo»liwiaj ce komunikacje przez port szeregowy oprogramowanie sieciowe Telnet, SSH (Secure Shell) zdalny terminal NFS (Network File System) dzielenie plików TFTP (Trivial File Transfer Protocol), HTTP (Hypertext Transfer Protocol) przesyªanie obrazu systemu zestaw narz dzi do kompilacji skro±nej (ang. cross compiling toolchain) 6

Kompilacja skro±na proces kompilacji wykonywany na innej architekturze procesora ni» ta, dla której kod jest generowany wyró»nia si nast puj ce platformy zalety platforma na której budowany jest kompilator (ang. build platform) platforma na której kompilator b dzie uruchamiany (ang. host platform) platforma na której b dzie wykonywany kod wygenerowany przez budowany kompilator (ang. target platform) brak konieczno±ci posiadania dziaªaj cego systemu na urz dzeniu docelowym brak konieczno±ci posiadania kompilatorów na systemie docelowym znacznie krótszy czas budowania 7

Komunikacja przez UART i UART u»ywa dwóch sygnaªów TxD (transmisja danych) pin 8, RxD (odbiór danych) pin 10 aby skomunikowa urz dzenia nale»y poª czy skro±nie ich sygnaªy RxD z sygnaªami TxD oraz ich mas pin 6 (na przykªad) komunikacja odbywa si na poziomie napi TTL 3,3V w przypadku komunikacji ze stacj robocz wymagany jest konwerter poziomów napi MAX3232 USB-UART FT232RL, CH340G domy±lne parametry transmisji danych: 115200 8N1 (115200 bps, 8 bitów, bez kontroli parzysto±ci, 1 bit stopu) bez kontroli przepªywu danych 8

Komunikacja przez UART ii 9

Systemy operacyjne dla Raspberry Pi bazuj ce na Linuxie Raspbian Android Things Gentoo Linux wªasne dystrybucje zbudowane z wykorzystaniem systemów wpieraj cych tworzenie dystrybucji wbudowanych (ang. embedded), np. Yocto Project (...) nie bazuj ce na Linuxie Windows 10 IoT Core FreeBSD NetBSD Haiku (...) https://en.wikipedia.org/wiki/raspberry_pi#operating_systems 10

Wªasny system bazuj cy na Linux + idealnie skrojony do potrzeb + doskonaªy by zdoby dogª bn wiedz na temat Linuxa wymaga wªasnego systemu budowania integracja dodatkowych bibliotek wymaga r cznego dbania o zale»no±ci wymaga du»ej wiedzy i nakªadu pracy 11

Dystrybucja Linux przygotowana za pomoc Yocto Project + w razie potrzeby umo»liwia idealne dopasowanie do potrzeb + umo»liwia ªatw integracje tysi cy pakietów wraz z ich zale»no±ciami + wspierany przez spoªeczno± stosunkowo wysoki próg wej±cia dªugi czas budowania wymaga ogromnych ilo±ci miejsca na stacji roboczej 12

Dystrybucja Raspbian + gotowa do natychmiastowego u»ycia + umo»liwia ªatw instalacj tysi cy pakietów wraz z ich zale»no±ciami + proces instalacji pakietów taki sam jak dla dystrybucji na PC + wspierany przez spoªeczno± du»y rozmiar minimalnej instalacji (2GB dla wersji Stretch Lite) dost pne pakiety zazwyczaj nie s naj±wie»sze 13

Yocto Project

Yocto Project https://www.yoctoproject.org/ ogªoszony przez Linux Foundation w 2010, a wystartowany w marcu 2011 22 aktywnych czªonków, platynowi czªonkowie to Intel, Texas Instruments, Facebook, ARM celem jest usprawnienie procesu tworzenia wbudowanych dystrybucji Linuxa korzysta z OpenEmbedded - framework automatyzuj cy budowanie dystrybucji Linuxa dla systemów wbudowanych BitBake - narz dzie buduj ce Poky - referencyjna dystrybucja Yocto Project 14

Wersje Yocto Project Codename Yocto Project Version Release Date Poky Version BitBake branch Thud 2.6 Nov 2018 20.0 1.40 Sumo 2.5 Apr 2018 19.0 1.38 Rocko 2.4 Oct 2017 18.0 1.36 Pyro 2.3 May 2017 17.0 1.34 Morty 2.2 Nov 2016 16.0 1.32 Krogoth 2.1 Apr 2016 15.0 1.30 Jethro 2.0 Nov 2015 14.0 1.28 Fido 1.8 Apr 2015 13.0 1.26 (...) (...) (...) (...) (...) Bernard 1.0??? 2011 5.0 1.11 (...) (...) (...) (...) (...) https://wiki.yoctoproject.org/wiki/releases 15

Warstwy Yocto Project repozytoria zawieraj ce metadane mówi ce systemowi budowania co robi zawieraj recepty, klasy, pliki konguracyjne oraz pliki modykuj ce metadane dostarczane przez inne warstwy indeks ocjalnych warstw kompatybilnych z Yocto Project: https://www.yoctoproject.org/software-overview/layers/ warstwy kompatybilne z OpenEmbedded: http://layers.openembedded.org/layerindex/branch/master/layers/ podstawowe warstwy dostarczane w ramach dystrybucji Poky: meta - rdze«openembedded z metadanymi wspieraj cymi architektury ARM, ARM64, x86, x86-64, PowerPC, MIPS, MIPS64 oraz QEMU meta-poky - metadane specyczne dla dystrybucji Poky meta-yocto-bsp - metadane dotycz ce sprz tu referencyjnego 16

Warstwa BSP (board support package) dla Raspberry Pi http://layers.openembedded.org/layerindex/branch/master/layer/metaraspberrypi/ wymaga warstw openembedded-core - meta z dystrybucji Poky - git://git.yoctoproject.org/poky.git meta-oe - git://git.openembedded.org/meta-openembedded dokumentacja opisuj ca mo»liwo±ci oraz zmienne konguracyjne dost pna w katalogu docs, a w postaci ju» wygenerowanej pod adresem https://media.readthedocs.org/pdf/meta-raspberrypi/latest/meta-raspberrypi.pdf wspierane maszyny: raspberrypi, raspberrypi0, raspberrypi0-wi, raspberrypi2, raspberrypi3, raspberrypi3-64, raspberrypi-cm, raspberrypi-cm3 17

Konguracja stacji roboczej na potrzeby Yocto Project zalecana jedna z dystrybucji Linuxa: Fedora, opensuse, Debian, Ubuntu albo CentOS co najmniej 50GB wolnej przestrzeni na dysku przygotowanie dystrybucji Ubuntu 16.04 $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm bmap-tools make xsltproc docbook-utils fop dblatex xmlto cpio python python3 python3-pip python3- pexpect xz-utils debianutils iputils-ping python-git bmap-tools python3-git curl parted dosfstools mtools gnupg autoconf automake libtool libglib2.0- dev python-gtk2 bsdmainutils screen libstdc++-5-dev libx11-dev $ git config --global user.email "adres@email" $ git config --global user.name "Imie Nazwisko" 18

Budowanie minimalnego obrazu dla Raspberry Pi i pobranie dystrybucji Poky w wersji sumo $ git clone --single-branch -b sumo git://git.yoctoproject.org/poky.git pobranie kompatybilnej warstwy BSP dla Raspberry Pi $ git clone --single-branch -b sumo git://git.yoctoproject.org/meta-raspberrypi pobranie zale»no±ci warstwy BSP dla Raspberry Pi $ git clone --single-branch -b sumo git://git.openembedded.org/metaopenembedded ªadowanie skryptu przygotowuj cego ±rodowisko buduj ce, je±li podany katalog nie istnieje utworzy domy±ln konguracj w podkatalogu conf $ source./poky/oe-init-build-env <opcjonalna nazwa katalogu> 19

Budowanie minimalnego obrazu dla Raspberry Pi ii modykacja conf/local.conf na potrzeby Raspberry Pi podstawowa conguracja MACHINE="raspberrypi2" DISTRO = "poky" aktywacja konsoli na porcie szeregowym i ustawienie hasªa dla root ENABLE_UART = "1" INHERIT += "extrausers" EXTRA_USERS_PARAMS = "usermod -P haslo root; " zalecana opcjonalna konguracja INHERIT += "rm_work" DL_DIR = "/mnt/yocto/sumo/downloads" SSTATE_DIR = "/mnt/yocto/sumo/sstate-cache" 20

Budowanie minimalnego obrazu dla Raspberry Pi iii modykacja conf/bblayers.conf na potrzeby Raspberry Pi $ bitbake-layers remove-layer meta-yocto-bsp $ bitbake-layers add-layer../meta-raspberrypi $ bitbake-layers add-layer../meta-openembedded/meta-oe rozpocz cie procesu budowania $ bitbake core-image-minimal obraz wynikowy pojawi si w katalogu TMPDIR, domy±lnie w podkatalogu o nazwie tmp, na przykªad./tmp/deploy/images/raspberrypi2/core-image-minimal-raspberrypi2-20190113222415.rootfs.rpi-sdimg 21

Programowanie obrazu na karcie micro SD wykrycie nazwy urz dzenia przypisanego do czytnika kart SD za pomoc dmesg sd 6:0:0:1: [sdc] 30318592 512-byte logical blocks: (15.5 GB/14.5 GiB) sd 6:0:0:1: [sdc] Write Protect is off sdc: sdc1 sdc2 sd 6:0:0:1: [sdc] Attached SCSI removable disk zapisanie obrazu na karcie SD warto± <sdx> nale»y zast pi odpowiedni nazw urz dzenia $ cd./tmp/deploy/images/raspberrypi2 $ sudo dd bs=4m if=core-image-minimal-raspberrypi2-20190113222415.rootfs.rpisdimg of=/dev/<sdx> status=progress conv=fsync 22

Komunikacja za pomoc portu szeregowego instalacja Minicom $ sudo apt-get install minicom dodanie uprawnie«do terminala (po tej zmianie nale»y si ponownie zalogowa ) $ sudo adduser $USER dialout uruchomienie (nazw ttyusb0 nale»y zast pi odpowiedni nazw terminala do którego zostaª przypisany konwerter USB-UART informacja dost pna przez dmesg) $ minicom -con -D /dev/ttyusb0 ttyusb0 wyª czenie sprz towej kontroli transmisji danych (ang. Hardware Flow Control) nale»y wcisn CTRL + a, nast pnie o, wybra Serial port setup i wcisn f aby przeª czy ustawienie Hardware Flow Control na No zapisanie ustawie«nale»y wyj± z poprzedniego menu za pomoc ESC i wybra Save setup as ttyusb0 23

Wª czenie wsparcia dla kamery modykacja conf/local.conf GPU_MEM = "128" VIDEO_CAMERA = "1" CORE_IMAGE_EXTRA_INSTALL += "userland" ponowne budowanie $ bitbake core-image-minimal test kamery z poziomu Raspberry Pi root@raspberrypi2:~# raspistill -o image.jpg 24

Dodanie biblioteki OpenALPR ±ci gni cie dodatkowej warstwy $ git clone https://github.com/maxinbjohn/meta-homeassistant-backup.git../meta -homeassistant-backup modykacja conf/bblayers.conf $ bitbake-layers add-layer../meta-homeassistant-backup modykacja conf/local.conf CORE_IMAGE_EXTRA_INSTALL += "openalpr" 25

Dodanie nowego pakietu utworzenie nowej warstwy $ bitbake-layers create-layer../meta-main dodanie nowej warstwy do conf/bblayers.conf $ bitbake-layers add-layer../meta-main utworzenie recepty main $ rm -rf../meta-main/recipes-example/example $ mkdir -p../meta-main/recipes-example/main $ touch../meta-main/recipes-example/main/main_1.0.bb 26

Przykªadowa zawarto± main_1.0.bb i DESCRIPTION = "Parking" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${common_license_dir}/mit;md5=0835 ade698e0bcf8506ecda2f7b4f302" SRCREV = "7a010cbf8fca587128c25ae95458952a57cbdfb4" SRC_URI = "git://adbacademy.imei.uz.zgora.pl/bitbucket/scm/par/raspberry.git; protocol=https \ file://makefile.patch \ file://license_plates_region_fix.patch \ file://header_include_fix.patch" DEPENDS = "openalpr userland" 27

Przykªadowa zawarto± main_1.0.bb ii TARGET_CC_ARCH += "${LDFLAGS}" S = "${WORKDIR}/git" do_compile_prepend () { } ${MAKE} ${EXTRA_OEMAKE} clean do_install() { install -d ${D}/opt/main/ install ${S}/main ${D}/opt/main } FILES_${PN} = "/opt/main/main" 28

Wybrane zadania do_build - domy±lne zadanie, wywoªuje wszystkie normalne zadania do_fetch - pobiera ¹ródªa z SRC_URI do katalogu wskazywanego przez DL_DIR do_unpack - rozpakowuje ¹ródªa do katalogu wskazywanego przez WORKDIR do_patch - nakªada patche do_configure - konguruje ¹ródªa do_compile - kompiluje kod ¹ródªowy, dziaªa w katalogu roboczym ${B} do_install - kopiuje pliki które maj tra do pakietów do ${D} do_package - rozdziela pliki dostarczone ${D} na wiele pakietów https://www.yoctoproject.org/docs/latest/mega-manual/mega-manual.html#ref-tasksbuild 29

Konguracja Git dla repozytoriów wymagaj cych autoryzacji plik.netrc umieszczony w katalogu domowym u»ytkownika machine adbacademy.imei.uz.zgora.pl login Twoj.Login password Twoje.haslo 30

Rozwi zywanie problemów z budowaniem pakietów wyczyszczenie pakietu (main to nazwa czyszczonego pakietu) $ bitbake -c cleanall main uruchomienie powªoki deweloperskiej $ bitbake -c devshell main wyj±cie z powªoki # exit wykonanie zadania kompilacji oraz zada«od niego zale»nych $ bitbake -C compile main 31

SDK budowanie SDK $ bitbake core-image-minimal -c populate_sdk SDK pojawi si w katalogu TMPDIR, domy±lnie w podkatalogu o nazwie tmp, na przykªad./tmp/deploy/sdk/poky-glibc-x86_64-core-image-minimalcortexa7hf-neon-vfpv4-toolchain-2.5.2.sh instalacja SDK $./poky-glibc-x86_64-core-image-minimal-cortexa7hf-neon-vfpv4-toolchain-2.5.2. sh ªadowanie skryptu przygotowuj cego ±rodowisko dla SDK (zakªadaj c»e SDK jest zainstalowane w katalogu./sdk) $ source./sdk/environment-setup-cortexa7hf-neon-vfpv4-poky-linux-gnueabi 32

Zmienne ±rodowiskowe ustawiane przez SDK (fragment) (...) CC="arm-poky-linux-gnueabi-gcc -march=armv7ve -marm -mfpu=neon-vfpv4 -mfloat-abi= hard -mcpu=cortex-a7 --sysroot=$sdktargetsysroot" CXX="arm-poky-linux-gnueabi-g++ -march=armv7ve -marm -mfpu=neon-vfpv4 -mfloat-abi= hard -mcpu=cortex-a7 --sysroot=$sdktargetsysroot" CPP="arm-poky-linux-gnueabi-gcc -E -march=armv7ve -marm -mfpu=neon-vfpv4 -mfloat-abi =hard -mcpu=cortex-a7 --sysroot=$sdktargetsysroot" AS="arm-poky-linux-gnueabi-as " LD="arm-poky-linux-gnueabi-ld --sysroot=$sdktargetsysroot" GDB=arm-poky-linux-gnueabi-gdb STRIP=arm-poky-linux-gnueabi-strip RANLIB=arm-poky-linux-gnueabi-ranlib OBJCOPY=arm-poky-linux-gnueabi-objcopy OBJDUMP=arm-poky-linux-gnueabi-objdump AR=arm-poky-linux-gnueabi-ar NM=arm-poky-linux-gnueabi-nm (...) 33

Instalacja i u»ycie SSH modykacja conf/local.conf dodaj ca serwer SSH CORE_IMAGE_EXTRA_INSTALL += "openssh" EXTRA_USERS_PARAMS += "useradd -P password user; " instalacja klienta SSH na stacji roboczej $ sudo apt-get install openssh-client logowanie do Raspberry Pi (hasªo takie jakie podali±my po parametrze -P useradd) $ ssh user@192.168.0.180 user@192.168.0.180's password: 34

Instalacja i u»ycie serwera NFS instalacja $ sudo apt-get install nfs-kernel-server nfs-common konguracja $ sudo mkdir /mnt/nfs $ sudo chmod 777 /mnt/nfs $ sudo sh -c 'cat << EOF >> /etc/exports /mnt/nfs *(rw,sync,no_subtree_check) EOF' uruchomienie $ sudo service nfs-kernel-server restart montowanie katalogu z poziomu Raspberry Pi root@raspberrypi2:~# mkdir /mnt/nfs root@raspberrypi2:~# mount -t nfs -o nolock 192.168.0.100:/mnt/nfs /mnt/nfs 35

Warto przeczyta Embedded Linux Development Using Yocto Project Cookbook - Second Edition, Alex González https://www.yoctoproject.org/docs/ https://www.yoctoproject.org/docs/latest/bitbake-user-manual/bitbake-usermanual.html https://www.yoctoproject.org/docs/latest/mega-manual/mega-manual.html 36

Dzi kuj 36

Makele.patch i Index: git/makefile =================================================================== --- git.orig/makefile +++ git/makefile @@ -1,21 +1,14 @@ - -GCC = g++ - - - - - OUTPUT_FILE = main 37

Makele.patch ii all: CarPlateRecognizer.o CarPlateDataPC.o CarPlateDataRaspberry.o CarPlateSender.o - $(GCC) main.cpp CarPlateRecognizer.o CarPlateDataPC.o CarPlateDataRaspberry.o CarPlateSender.o -L/home/others/projects/ADBProject/libs -lopenalprarm -o $( OUTPUT_FILE) + $(CXX) main.cpp CarPlateRecognizer.o CarPlateDataPC.o CarPlateDataRaspberry.o CarPlateSender.o -L/home/others/projects/ADBProject/libs -lopenalpr -o $( OUTPUT_FILE) CarPlateRecognizer.o: CarPlateRecognizer.h CarPlateRecognizer.cpp data/ CarPlateDataPC.h data/carplatedataraspberry.h data/carplatesender.h - $(GCC) CarPlateRecognizer.cpp -c -o CarPlateRecognizer.o + $(CXX) CarPlateRecognizer.cpp -c -o CarPlateRecognizer.o CarPlateDataPC.o: data/carplatedatapc.cpp data/carplatedatapc.h - $(GCC) data/carplatedatapc.cpp -c -o CarPlateDataPC.o + $(CXX) data/carplatedatapc.cpp -c -o CarPlateDataPC.o 38

Makele.patch iii CarPlateDataRaspberry.o: data/carplatedataraspberry.cpp data/carplatedataraspberry. h - $(GCC) data/carplatedataraspberry.cpp -c -o CarPlateDataRaspberry.o + $(CXX) data/carplatedataraspberry.cpp -c -o CarPlateDataRaspberry.o CarPlateSender.o: data/carplatesender.cpp data/carplatesender.h - $(GCC) data/carplatesender.cpp -c -o CarPlateSender.o + $(CXX) data/carplatesender.cpp -c -o CarPlateSender.o clean: rm -rf *.o $(OUTPUT_FILE) 39

license_plates_region_x.patch Index: raspberry/carplaterecognizer.cpp =================================================================== --- raspberry.orig/carplaterecognizer.cpp +++ raspberry/carplaterecognizer.cpp @@ -19,7 +19,7 @@ CarPlateRecognizer::CarPlateRecognizer() void CarPlateRecognizer::init() { - alpr::alpr openalpr("au"); + alpr::alpr openalpr("eu"); if(openalpr.isloaded() == false) { std::cerr << "OpenALPR not loaded" << std::endl; 40

header_include_x.patch i Index: git/carplaterecognizer.h =================================================================== --- git.orig/carplaterecognizer.h +++ git/carplaterecognizer.h @@ -1,7 +1,7 @@ #ifndef CAR_PLATE_RECOGNIZER_H #define CAR_PLATE_RECOGNIZER_H -#include "libs/alpr.h" +#include <alpr.h> #include "data/carplatedata.h" #include <vector> Index: git/data/carplatesender.h 41

header_include_x.patch ii =================================================================== --- git.orig/data/carplatesender.h +++ git/data/carplatesender.h @@ -1,7 +1,7 @@ #ifndef CAR_PLATE_SENDER_H #define CAR_PLATE_SENDER_H -#include "../libs/alpr.h" +#include <alpr.h> class CarPlateSender { public: 42