SlideShare a Scribd company logo
1 of 28
The Yocto Project
Радослав Колев
radoslav@kolev.info
Леон Анави
leon@anavi.org
Съдържание
 Разработка на embedded Linux продукти
 Ключови наименования в ОЕ базирани системи
 Малко история
 Yocto Project и Poky
 Примери с OLinuXino
GNU/Linux дистрибуция
Приложения
Софтуерна рамка (Qt, GTK+, EFL ...)
Основни компоненти
Linux ядро, драйвери, device tree
Boot loader
Потребителско
пространство
Особености при разработката
на embedded Linux продукти
 Oбикновено различна архитектура на устройството
(target) от тази на станцията за разработка (host)
 Нестандартен хардуер: device tree,
конфигурация на Linux ядрото, кръпки
 Ограничени ресурси, но и ограничена функционалност
Необходими инструменти
 Крос компилатор за архитектурата на
вграденото устройството
 Автоматизация на процеса на сваляне,
конфигуриране, прилагане на кръпки и
компилиране на множество компоненти
 Генериране на root файлова система и
image файл в подходящ формат
Популярни системи за създаване
на еmbedded Linux дистрибуции
КConfig + Makefile базирани:
Buildroot, PTXdist, openWrt
 Сравнително прости
 Не особено гъвкави
 Със специфично предназначение (openWrt)
Популярни системи за създаване
на еmbedded Linux дистрибуции
OpenEmbedded базирани:
Poky, Angstrom, Arago, Tizen, AGL, GENIVI
 Стръмна крива на разучаване
 Гъвкави и с много възможности
 Голяма набор от готови компоненти
 Индустриален стандарт
Малко история
2002 - 2003 2004
Openembedded
като система за
създаване на
OpenZaurus
Отделяне на bitbake
и Openembedded
мета данни
OpenedHand
cъздава Poky Linux
2006 - 2008
2008 2010
Intel купува
OpenHand
Linux Foundation
създава the Yocto
Project
Започва работа по
обща база oe-core
2011
Ключови наименования в ОЕ
базирани системи
 Bitbake
 Слоеве
 Pецепти
 Mашини и BSP (Board Support Package)
 Дистрибуция
Какво е Yocto Project?
Съвместен проект под егидата на Linux
Foundation с отворен код, предоставящ
удобни за ползване инструменти за
създаване и развитие на embedded Linux
дистрибуции.
Open source проекти в Yocto
 Pseudo, Swabber
 Eclipse plugin, application developer toolkit
 Различни GUI/Web UI инструменти
 yocto kernel tooling - помощни инструменти за работа
с кръпки за ядрото и сегменти от конфигурацията му
 Poky
 И още, и още...
Poky
 Poky - система за изграждане на дистрибуция,
използвана от Yocto Project
 Bitbake - инструмент за планиране и
изпълнение на задачи
 Метаданни - дефиниция на задачи
Poky = bitbake + метаданни
Yocto/OE слоеве
Комерсиален слой (от OSV)
UI слой
Хардуерно специфичен слой (BSP)
Yocto метаданни (meta-yocto)
OpenEmbedded метаданни (oe-core)
Слой, дефиниран от разработчика
Yocto Project Releases
 6 month release cycle
 Security patches and bug fixes one release back
 Provides both a 'near current' and LTSI kernels
 Yocto Project 2.0 Jethro
 Yocto Project 1.8 Fido
 Yocto Project 1.7 Dizzy
 Yocto Project 1.6 Daisy
 Yocto Project 1.5 Dora
 Yocto Project 1.4 Dylan
Как се ползва Bitbake?
bitbake tizen-common-core-image-crosswalk -e | grep ^DISTRO_FEATURES
bitbake -s | grep foo
bitbake -c compile foo
bitbake -g core-image-minimal
bitbake foo
bitbake -c clean foo
 Проверка на стойност на променлива
 Проверка на версията на рецепта
 Изпълнение на рецепта
 Изчистване на рецепта
 Компилиране на рецепта
 Генериране на файлове за създаване на графика
Как работи bitbake?
Примери с OLinuXino
 Open source hardware
 A10/A13/A20 Allwinner Technology ARMv7 SoC
 Клас Sunxi
Как да си направим имидж за
OlinuXino в три стъпки? (1/3)
 Сваляме Poky:
 Добяваме слоя meta-sunxi:
 Инициализираме средата в директория build:
git clone -b fido git://git.yoctoproject.org/poky.git
cd poky
git clone -b fido https://github.com/linux-sunxi/meta-sunxi.git
source oe-init-build-env
Как да си направим имидж за
OlinuXino в три стъпки? (2/3)
 Редактираме conf/local.conf:
 Редактираме conf/bblayers.conf:
MACHINE ??= "olinuxino-a20"
PARALLEL_MAKE ?= "-j 12"
BB_NUMBER_THREADS ?= "12"
BBLAYERS ?= " 
/home/leon/poky-olinuxino/meta 
/home/leon/poky-olinuxino/meta-sunxi 
/home/leon/poky-olinuxino/meta-yocto
Как да си направим имидж за
OlinuXino в три стъпки? (1/3)
 Сваляме Poky:
 Добяваме слоя meta-sunxi:
 Инициализираме средата в директория build:
git clone -b fido git://git.yoctoproject.org/poky.git
cd poky
git clone -b fido https://github.com/linux-sunxi/meta-sunxi.git
source oe-init-build-env
Как да си направим имидж за
OlinuXino в три стъпки? (3/3)
 Стартираме bitbake:
 Пием едно, две или повече кафета...
 Копираме имиджа на microSD карта с dd или bmaptool:
bitbake core-image-minimal
sudo umount /dev/sdX
sudo dd if=tmp/deploy/images/olinuxino-a20/core-image-minimal-olinuxino-a20.sunxi-sdimg of=/dev/sdX
sync
Как да създадем нов слой?
 Чрез yocto-layer:
./scripts/yocto-layer create openfest
Как да създадем нова рецепта?
 Създаваме нов файл с име от типа на:
 Създаваме рецепта по следния шаблон:
<basename>_<version>.bb
SUMMARY = ""
HOMEPAGE = ""
LICENSE = ""
LIC_FILES_CHKSUM = ""
SRC_URI = ""
SRC_URI[md5sum] = ""
SRC_URI[sha256sum] = ""
S = "${WORKDIR}/${PN}-${PV}"
inherit <stuff>
Как да разширим съществуваща
рецепта?
 Създаваме файл с разширение .bbappend:
 Пример за кръпка с промяна в кода:
 Пример за добавяне на нов файл:
<basename>_<version>.bbappend
FILESEXTRAPATHS_prepend := "{THISDIR}/${PN}:${PV}:"
SRC_URI += "file://mypatch.patch"
SRC_URI += "file://my.conf"
do_install_append() {
install -m 644 ${WORKDIR}/my.conf ${D}${sysconfdir}
}
Как да включим нова рецепта?
 Ако е необходимо добавяме слоя, съдържащ
рецептата в conf/bblayers.conf
 Включваме рецептата, към имиджа чрез неговата
рецепта или в conf/local.conf:
IMAGE_INSTALL_append = " hello "
Полезни връзки
 https://www.yoctoproject.org/documentation
 http://www.openembedded.org/wiki/Getting_started
 http://free-electrons.com/training/yocto/
 http://layers.openembedded.org/layerindex/branch/master/lay
ers/
 https://www.qtdeveloperdays.com/2013/sites/default/files/pres
entation_pdf/Yocto%20Project,%20A%20Vehicle%20for
%20Embedded%20Qt%20development.pdf
Въпроси?
Благодаря Ви!

More Related Content

Viewers also liked

Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?Julien Vermillard
 
Standards Drive the Internet of Things
Standards Drive the Internet of ThingsStandards Drive the Internet of Things
Standards Drive the Internet of Thingszdshelby
 
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionals
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionalsJava & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionals
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionalsTrayan Iliev
 
ESP8266 and IOT
ESP8266 and IOTESP8266 and IOT
ESP8266 and IOTdega1999
 
Hands on with lightweight m2m and Eclipse Leshan
Hands on with lightweight m2m and Eclipse LeshanHands on with lightweight m2m and Eclipse Leshan
Hands on with lightweight m2m and Eclipse LeshanJulien Vermillard
 
OMA Lightweight M2M Tutorial
OMA Lightweight M2M TutorialOMA Lightweight M2M Tutorial
OMA Lightweight M2M Tutorialzdshelby
 
NodeMCU ESP8266 workshop 1
NodeMCU ESP8266 workshop 1NodeMCU ESP8266 workshop 1
NodeMCU ESP8266 workshop 1Andy Gelme
 
A reference architecture for the internet of things
A reference architecture for the internet of thingsA reference architecture for the internet of things
A reference architecture for the internet of thingsCharles Gibbons
 
Build WiFi gadgets using esp8266
Build WiFi gadgets using esp8266Build WiFi gadgets using esp8266
Build WiFi gadgets using esp8266Baoshi Zhu
 
Internet of Things (IoT) protocols COAP MQTT OSCON2014
Internet of Things (IoT) protocols  COAP MQTT OSCON2014Internet of Things (IoT) protocols  COAP MQTT OSCON2014
Internet of Things (IoT) protocols COAP MQTT OSCON2014Vidhya Gholkar
 
A Reference Architecture for IoT
A Reference Architecture for IoT A Reference Architecture for IoT
A Reference Architecture for IoT WSO2
 
IoT Cloud architecture
IoT Cloud architectureIoT Cloud architecture
IoT Cloud architectureMachinePulse
 
What exactly is the "Internet of Things"?
What exactly is the "Internet of Things"?What exactly is the "Internet of Things"?
What exactly is the "Internet of Things"?Dr. Mazlan Abbas
 
End-to-end IoT solutions with Java and the Eclipse IoT stack
End-to-end IoT solutions with Java and the Eclipse IoT stackEnd-to-end IoT solutions with Java and the Eclipse IoT stack
End-to-end IoT solutions with Java and the Eclipse IoT stackBenjamin Cabé
 
Internet of Things (IoT) - We Are at the Tip of An Iceberg
Internet of Things (IoT) - We Are at the Tip of An IcebergInternet of Things (IoT) - We Are at the Tip of An Iceberg
Internet of Things (IoT) - We Are at the Tip of An IcebergDr. Mazlan Abbas
 
IoT Standards: The Next Generation
IoT Standards: The Next GenerationIoT Standards: The Next Generation
IoT Standards: The Next GenerationReadWrite
 
Internet of Things and its applications
Internet of Things and its applicationsInternet of Things and its applications
Internet of Things and its applicationsPasquale Puzio
 

Viewers also liked (20)

Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
Iot Conference Berlin M2M,IoT, device management: one protocol to rule them all?
 
Standards Drive the Internet of Things
Standards Drive the Internet of ThingsStandards Drive the Internet of Things
Standards Drive the Internet of Things
 
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionals
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionalsJava & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionals
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionals
 
ESP8266 and IOT
ESP8266 and IOTESP8266 and IOT
ESP8266 and IOT
 
Hands on with lightweight m2m and Eclipse Leshan
Hands on with lightweight m2m and Eclipse LeshanHands on with lightweight m2m and Eclipse Leshan
Hands on with lightweight m2m and Eclipse Leshan
 
OMA Lightweight M2M Tutorial
OMA Lightweight M2M TutorialOMA Lightweight M2M Tutorial
OMA Lightweight M2M Tutorial
 
NodeMCU ESP8266 workshop 1
NodeMCU ESP8266 workshop 1NodeMCU ESP8266 workshop 1
NodeMCU ESP8266 workshop 1
 
Introducing Akka
Introducing AkkaIntroducing Akka
Introducing Akka
 
A reference architecture for the internet of things
A reference architecture for the internet of thingsA reference architecture for the internet of things
A reference architecture for the internet of things
 
Build WiFi gadgets using esp8266
Build WiFi gadgets using esp8266Build WiFi gadgets using esp8266
Build WiFi gadgets using esp8266
 
Understanding the Internet of Things Protocols
Understanding the Internet of Things ProtocolsUnderstanding the Internet of Things Protocols
Understanding the Internet of Things Protocols
 
Internet of Things (IoT) protocols COAP MQTT OSCON2014
Internet of Things (IoT) protocols  COAP MQTT OSCON2014Internet of Things (IoT) protocols  COAP MQTT OSCON2014
Internet of Things (IoT) protocols COAP MQTT OSCON2014
 
A Reference Architecture for IoT
A Reference Architecture for IoT A Reference Architecture for IoT
A Reference Architecture for IoT
 
IoT Cloud architecture
IoT Cloud architectureIoT Cloud architecture
IoT Cloud architecture
 
What exactly is the "Internet of Things"?
What exactly is the "Internet of Things"?What exactly is the "Internet of Things"?
What exactly is the "Internet of Things"?
 
End-to-end IoT solutions with Java and the Eclipse IoT stack
End-to-end IoT solutions with Java and the Eclipse IoT stackEnd-to-end IoT solutions with Java and the Eclipse IoT stack
End-to-end IoT solutions with Java and the Eclipse IoT stack
 
Internet of Things (IoT) - We Are at the Tip of An Iceberg
Internet of Things (IoT) - We Are at the Tip of An IcebergInternet of Things (IoT) - We Are at the Tip of An Iceberg
Internet of Things (IoT) - We Are at the Tip of An Iceberg
 
IoT Standards: The Next Generation
IoT Standards: The Next GenerationIoT Standards: The Next Generation
IoT Standards: The Next Generation
 
IoT architecture
IoT architectureIoT architecture
IoT architecture
 
Internet of Things and its applications
Internet of Things and its applicationsInternet of Things and its applications
Internet of Things and its applications
 

Similar to The Yocto Project

Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLeon Anavi
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiLeon Anavi
 
Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?Leon Anavi
 
Практики в програмирането на iOS приложение - дисекция на реален мой проект)
Практики в програмирането на iOS приложение - дисекция на реален мой проект)Практики в програмирането на iOS приложение - дисекция на реален мой проект)
Практики в програмирането на iOS приложение - дисекция на реален мой проект)Михаил Великов
 
Minimal linux live
Minimal linux liveMinimal linux live
Minimal linux liveIvan Davidov
 
Mozllla Labs presentation
Mozllla Labs presentationMozllla Labs presentation
Mozllla Labs presentationBogomil Shopov
 
install update and migration to windows 10
install update and migration to windows 10install update and migration to windows 10
install update and migration to windows 10RaynaITSTEP
 
Направи си сам Raspberry Pi HAT
Направи си сам Raspberry Pi HATНаправи си сам Raspberry Pi HAT
Направи си сам Raspberry Pi HATLeon Anavi
 
Python choreographe NAOqi Framework
Python choreographe NAOqi FrameworkPython choreographe NAOqi Framework
Python choreographe NAOqi FrameworkAtelier for robotics
 
Eclipse Overview@TUES
Eclipse Overview@TUESEclipse Overview@TUES
Eclipse Overview@TUESKiril Mitov
 
CCK в Джумла! света
CCK в Джумла! светаCCK в Джумла! света
CCK в Джумла! светаivoapostolov
 
3. vb osnovni menuta
3. vb osnovni menuta3. vb osnovni menuta
3. vb osnovni menutadnaidenowa
 
Демо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин НаковДемо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин НаковSvetlin Nakov
 
Adaptive design with Fe Framework (Bulgarian version)
Adaptive design with Fe Framework (Bulgarian version)Adaptive design with Fe Framework (Bulgarian version)
Adaptive design with Fe Framework (Bulgarian version)Peter Naydenov
 
Въведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiВъведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiLeon Anavi
 
[Dev.bg] CI from scratch with Jenkins
[Dev.bg] CI from scratch with Jenkins[Dev.bg] CI from scratch with Jenkins
[Dev.bg] CI from scratch with JenkinsBorislav Traykov
 

Similar to The Yocto Project (20)

Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и Docker
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry Pi
 
Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?Как проектът Yocto помага за създаване на Internet of Things?
Как проектът Yocto помага за създаване на Internet of Things?
 
Практики в програмирането на iOS приложение - дисекция на реален мой проект)
Практики в програмирането на iOS приложение - дисекция на реален мой проект)Практики в програмирането на iOS приложение - дисекция на реален мой проект)
Практики в програмирането на iOS приложение - дисекция на реален мой проект)
 
Minimal linux live
Minimal linux liveMinimal linux live
Minimal linux live
 
Why do we need a language like go?
Why do we need a language like go?Why do we need a language like go?
Why do we need a language like go?
 
Mozllla Labs presentation
Mozllla Labs presentationMozllla Labs presentation
Mozllla Labs presentation
 
Using NAOqi
Using NAOqiUsing NAOqi
Using NAOqi
 
Embedded Gnu
Embedded GnuEmbedded Gnu
Embedded Gnu
 
install update and migration to windows 10
install update and migration to windows 10install update and migration to windows 10
install update and migration to windows 10
 
Направи си сам Raspberry Pi HAT
Направи си сам Raspberry Pi HATНаправи си сам Raspberry Pi HAT
Направи си сам Raspberry Pi HAT
 
Python choreographe NAOqi Framework
Python choreographe NAOqi FrameworkPython choreographe NAOqi Framework
Python choreographe NAOqi Framework
 
Eclipse Overview@TUES
Eclipse Overview@TUESEclipse Overview@TUES
Eclipse Overview@TUES
 
CCK в Джумла! света
CCK в Джумла! светаCCK в Джумла! света
CCK в Джумла! света
 
3. vb osnovni menuta
3. vb osnovni menuta3. vb osnovni menuta
3. vb osnovni menuta
 
Демо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин НаковДемо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин Наков
 
Sample IT Test 13
Sample IT Test 13Sample IT Test 13
Sample IT Test 13
 
Adaptive design with Fe Framework (Bulgarian version)
Adaptive design with Fe Framework (Bulgarian version)Adaptive design with Fe Framework (Bulgarian version)
Adaptive design with Fe Framework (Bulgarian version)
 
Въведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiВъведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry Pi
 
[Dev.bg] CI from scratch with Jenkins
[Dev.bg] CI from scratch with Jenkins[Dev.bg] CI from scratch with Jenkins
[Dev.bg] CI from scratch with Jenkins
 

More from Leon Anavi

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Leon Anavi
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Leon Anavi
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedLeon Anavi
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Leon Anavi
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesLeon Anavi
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware MakersLeon Anavi
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareLeon Anavi
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureLeon Anavi
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive KioskLeon Anavi
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Leon Anavi
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiLeon Anavi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Leon Anavi
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsLeon Anavi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareLeon Anavi
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiLeon Anavi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxLeon Anavi
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux DevicesLeon Anavi
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT BrokersLeon Anavi
 
Free and Open Source Software Tools for Making Open Source Hardware
 Free and Open Source Software Tools for Making Open Source Hardware Free and Open Source Software Tools for Making Open Source Hardware
Free and Open Source Software Tools for Making Open Source HardwareLeon Anavi
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxLeon Anavi
 

More from Leon Anavi (20)

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware Makers
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source Hardware
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry Pi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source Hardware
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry Pi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с Linux
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT Brokers
 
Free and Open Source Software Tools for Making Open Source Hardware
 Free and Open Source Software Tools for Making Open Source Hardware Free and Open Source Software Tools for Making Open Source Hardware
Free and Open Source Software Tools for Making Open Source Hardware
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade Linux
 

The Yocto Project

  • 1. The Yocto Project Радослав Колев radoslav@kolev.info Леон Анави leon@anavi.org
  • 2. Съдържание  Разработка на embedded Linux продукти  Ключови наименования в ОЕ базирани системи  Малко история  Yocto Project и Poky  Примери с OLinuXino
  • 3. GNU/Linux дистрибуция Приложения Софтуерна рамка (Qt, GTK+, EFL ...) Основни компоненти Linux ядро, драйвери, device tree Boot loader Потребителско пространство
  • 4. Особености при разработката на embedded Linux продукти  Oбикновено различна архитектура на устройството (target) от тази на станцията за разработка (host)  Нестандартен хардуер: device tree, конфигурация на Linux ядрото, кръпки  Ограничени ресурси, но и ограничена функционалност
  • 5. Необходими инструменти  Крос компилатор за архитектурата на вграденото устройството  Автоматизация на процеса на сваляне, конфигуриране, прилагане на кръпки и компилиране на множество компоненти  Генериране на root файлова система и image файл в подходящ формат
  • 6. Популярни системи за създаване на еmbedded Linux дистрибуции КConfig + Makefile базирани: Buildroot, PTXdist, openWrt  Сравнително прости  Не особено гъвкави  Със специфично предназначение (openWrt)
  • 7. Популярни системи за създаване на еmbedded Linux дистрибуции OpenEmbedded базирани: Poky, Angstrom, Arago, Tizen, AGL, GENIVI  Стръмна крива на разучаване  Гъвкави и с много възможности  Голяма набор от готови компоненти  Индустриален стандарт
  • 8. Малко история 2002 - 2003 2004 Openembedded като система за създаване на OpenZaurus Отделяне на bitbake и Openembedded мета данни OpenedHand cъздава Poky Linux 2006 - 2008 2008 2010 Intel купува OpenHand Linux Foundation създава the Yocto Project Започва работа по обща база oe-core 2011
  • 9. Ключови наименования в ОЕ базирани системи  Bitbake  Слоеве  Pецепти  Mашини и BSP (Board Support Package)  Дистрибуция
  • 10. Какво е Yocto Project? Съвместен проект под егидата на Linux Foundation с отворен код, предоставящ удобни за ползване инструменти за създаване и развитие на embedded Linux дистрибуции.
  • 11. Open source проекти в Yocto  Pseudo, Swabber  Eclipse plugin, application developer toolkit  Различни GUI/Web UI инструменти  yocto kernel tooling - помощни инструменти за работа с кръпки за ядрото и сегменти от конфигурацията му  Poky  И още, и още...
  • 12. Poky  Poky - система за изграждане на дистрибуция, използвана от Yocto Project  Bitbake - инструмент за планиране и изпълнение на задачи  Метаданни - дефиниция на задачи Poky = bitbake + метаданни
  • 13. Yocto/OE слоеве Комерсиален слой (от OSV) UI слой Хардуерно специфичен слой (BSP) Yocto метаданни (meta-yocto) OpenEmbedded метаданни (oe-core) Слой, дефиниран от разработчика
  • 14. Yocto Project Releases  6 month release cycle  Security patches and bug fixes one release back  Provides both a 'near current' and LTSI kernels  Yocto Project 2.0 Jethro  Yocto Project 1.8 Fido  Yocto Project 1.7 Dizzy  Yocto Project 1.6 Daisy  Yocto Project 1.5 Dora  Yocto Project 1.4 Dylan
  • 15. Как се ползва Bitbake? bitbake tizen-common-core-image-crosswalk -e | grep ^DISTRO_FEATURES bitbake -s | grep foo bitbake -c compile foo bitbake -g core-image-minimal bitbake foo bitbake -c clean foo  Проверка на стойност на променлива  Проверка на версията на рецепта  Изпълнение на рецепта  Изчистване на рецепта  Компилиране на рецепта  Генериране на файлове за създаване на графика
  • 17. Примери с OLinuXino  Open source hardware  A10/A13/A20 Allwinner Technology ARMv7 SoC  Клас Sunxi
  • 18. Как да си направим имидж за OlinuXino в три стъпки? (1/3)  Сваляме Poky:  Добяваме слоя meta-sunxi:  Инициализираме средата в директория build: git clone -b fido git://git.yoctoproject.org/poky.git cd poky git clone -b fido https://github.com/linux-sunxi/meta-sunxi.git source oe-init-build-env
  • 19. Как да си направим имидж за OlinuXino в три стъпки? (2/3)  Редактираме conf/local.conf:  Редактираме conf/bblayers.conf: MACHINE ??= "olinuxino-a20" PARALLEL_MAKE ?= "-j 12" BB_NUMBER_THREADS ?= "12" BBLAYERS ?= " /home/leon/poky-olinuxino/meta /home/leon/poky-olinuxino/meta-sunxi /home/leon/poky-olinuxino/meta-yocto
  • 20. Как да си направим имидж за OlinuXino в три стъпки? (1/3)  Сваляме Poky:  Добяваме слоя meta-sunxi:  Инициализираме средата в директория build: git clone -b fido git://git.yoctoproject.org/poky.git cd poky git clone -b fido https://github.com/linux-sunxi/meta-sunxi.git source oe-init-build-env
  • 21. Как да си направим имидж за OlinuXino в три стъпки? (3/3)  Стартираме bitbake:  Пием едно, две или повече кафета...  Копираме имиджа на microSD карта с dd или bmaptool: bitbake core-image-minimal sudo umount /dev/sdX sudo dd if=tmp/deploy/images/olinuxino-a20/core-image-minimal-olinuxino-a20.sunxi-sdimg of=/dev/sdX sync
  • 22. Как да създадем нов слой?  Чрез yocto-layer: ./scripts/yocto-layer create openfest
  • 23. Как да създадем нова рецепта?  Създаваме нов файл с име от типа на:  Създаваме рецепта по следния шаблон: <basename>_<version>.bb SUMMARY = "" HOMEPAGE = "" LICENSE = "" LIC_FILES_CHKSUM = "" SRC_URI = "" SRC_URI[md5sum] = "" SRC_URI[sha256sum] = "" S = "${WORKDIR}/${PN}-${PV}" inherit <stuff>
  • 24. Как да разширим съществуваща рецепта?  Създаваме файл с разширение .bbappend:  Пример за кръпка с промяна в кода:  Пример за добавяне на нов файл: <basename>_<version>.bbappend FILESEXTRAPATHS_prepend := "{THISDIR}/${PN}:${PV}:" SRC_URI += "file://mypatch.patch" SRC_URI += "file://my.conf" do_install_append() { install -m 644 ${WORKDIR}/my.conf ${D}${sysconfdir} }
  • 25. Как да включим нова рецепта?  Ако е необходимо добавяме слоя, съдържащ рецептата в conf/bblayers.conf  Включваме рецептата, към имиджа чрез неговата рецепта или в conf/local.conf: IMAGE_INSTALL_append = " hello "
  • 26. Полезни връзки  https://www.yoctoproject.org/documentation  http://www.openembedded.org/wiki/Getting_started  http://free-electrons.com/training/yocto/  http://layers.openembedded.org/layerindex/branch/master/lay ers/  https://www.qtdeveloperdays.com/2013/sites/default/files/pres entation_pdf/Yocto%20Project,%20A%20Vehicle%20for %20Embedded%20Qt%20development.pdf