Yocto for Raspberry Pi
()
About this ebook
- Set up and configure the Yocto Project efficiently with Raspberry Pi
- Deploy multimedia applications from existing Yocto/OE layers
- An easy-to-follow guide to utilize your custom recipes on your Raspberry Pi
If you are a student or a developer of embedded software, embedded Linux engineer or embedded systems in competence with Raspberry Pi and want to discover the Yocto Project, then this book is for you. Experience with Yocto is not needed.
Related to Yocto for Raspberry Pi
Related ebooks
Mastering Embedded Linux Programming - Second Edition Rating: 5 out of 5 stars5/5Embedded Linux Development with Yocto Project Rating: 0 out of 5 stars0 ratingsLearning Embedded Linux Using the Yocto Project Rating: 0 out of 5 stars0 ratingsUsing Yocto Project with BeagleBone Black Rating: 0 out of 5 stars0 ratingsGetting Started with Raspberry Pi Zero Rating: 5 out of 5 stars5/5Raspberry Pi Robotic Projects - Third Edition Rating: 0 out of 5 stars0 ratingsLearning Embedded Android N Programming Rating: 0 out of 5 stars0 ratingsInternet of Things with Python Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Amazing Projects from Scratch Rating: 0 out of 5 stars0 ratingsRaspberry Pi Home Automation with Arduino - Second Edition Rating: 0 out of 5 stars0 ratingsRaspberry Pi for Secret Agents Rating: 4 out of 5 stars4/5Raspberry Pi By Example Rating: 0 out of 5 stars0 ratingsRaspberry Pi Cookbook for Python Programmers Rating: 0 out of 5 stars0 ratingsRaspberry Pi Computer Architecture Essentials Rating: 0 out of 5 stars0 ratingsPython Programming for Arduino Rating: 5 out of 5 stars5/5Raspberry Pi Mechatronics Projects HOTSHOT Rating: 5 out of 5 stars5/5Raspberry Pi: The complete guide to raspberry pi, including raspberry pi projects, tips, troubleshooting, and more! Rating: 0 out of 5 stars0 ratingsLearn IoT Programming Using Node-RED: Begin to Code Full Stack IoT Apps and Edge Devices with Raspberry Pi, NodeJS, and Grafana Rating: 0 out of 5 stars0 ratingsRaspberry Pi Server Essentials Rating: 0 out of 5 stars0 ratingsRaspberry Pi Android Projects Rating: 0 out of 5 stars0 ratingsBuilding a Home Security System with Raspberry Pi Rating: 0 out of 5 stars0 ratingsRaspberry Pi Super Cluster Rating: 0 out of 5 stars0 ratingsInstant MinGW Starter Rating: 0 out of 5 stars0 ratingsRaspberry Pi Essentials Rating: 0 out of 5 stars0 ratingsLearning Raspbian Rating: 5 out of 5 stars5/5Raspberry Pi: The Ultimate Guide to Raspberry Pi, Including Projects, Programming Tips & Tricks, and Much More! Rating: 0 out of 5 stars0 ratingsEmbedded Linux Projects Using Yocto Project Cookbook Rating: 5 out of 5 stars5/5
Hardware For You
iPhone 14 Pro Max User Guide for Beginners and Seniors Rating: 0 out of 5 stars0 ratingsMastering ChatGPT Rating: 0 out of 5 stars0 ratingsTor Darknet Bundle: Master the Art of Invisibility Rating: 0 out of 5 stars0 ratingsiPhone Photography: A Ridiculously Simple Guide To Taking Photos With Your iPhone Rating: 0 out of 5 stars0 ratingsCompTIA A+ Complete Review Guide: Core 1 Exam 220-1101 and Core 2 Exam 220-1102 Rating: 5 out of 5 stars5/5Computer Science: A Concise Introduction Rating: 4 out of 5 stars4/5Programming Arduino: Getting Started with Sketches Rating: 4 out of 5 stars4/5Dancing with Qubits: How quantum computing works and how it can change the world Rating: 5 out of 5 stars5/5TI-84 Plus CE Graphing Calculator For Dummies Rating: 0 out of 5 stars0 ratingsMacs All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsUnlock Any Roku Device: Watch Shows, TV, & Download Apps Rating: 0 out of 5 stars0 ratingsExploring Windows 11 - 2023 Edition Rating: 0 out of 5 stars0 ratingsExploring Arduino: Tools and Techniques for Engineering Wizardry Rating: 4 out of 5 stars4/5Amazon Web Services (AWS) Interview Questions and Answers Rating: 5 out of 5 stars5/5CompTIA A+ Complete Review Guide: Exam Core 1 220-1001 and Exam Core 2 220-1002 Rating: 5 out of 5 stars5/5MacBook For Dummies Rating: 4 out of 5 stars4/5Artificial Intelligence for Fashion: How AI is Revolutionizing the Fashion Industry Rating: 0 out of 5 stars0 ratingsComputer Organization and Design: The Hardware / Software Interface Rating: 4 out of 5 stars4/5Upgrading and Fixing Computers Do-it-Yourself For Dummies Rating: 4 out of 5 stars4/5iPad and iPad Pro For Dummies Rating: 0 out of 5 stars0 ratingsSamsung Galaxy S23 Ultra User Guide for Beginners and Seniors Rating: 3 out of 5 stars3/5Linux All-In-One For Dummies Rating: 2 out of 5 stars2/5Chip War: The Fight for the World's Most Critical Technology Rating: 4 out of 5 stars4/5Arduino: A Quick-Start Beginner's Guide Rating: 4 out of 5 stars4/5Build Your Own PC Do-It-Yourself For Dummies Rating: 4 out of 5 stars4/5Creative Selection: Inside Apple's Design Process During the Golden Age of Steve Jobs Rating: 5 out of 5 stars5/5
Reviews for Yocto for Raspberry Pi
0 ratings0 reviews
Book preview
Yocto for Raspberry Pi - Pierre-Jean Texier
Table of Contents
Yocto for Raspberry Pi
Credits
About the Authors
About the Reviewers
www.PacktPub.com
eBooks, discount offers, and more
Why subscribe?
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
1. Meeting the Yocto Project
The Yocto Project
Understanding the build system
The core components
What is Poky?
The Chief - BitBake
OpenEmbedded-Core
Exploring metadata
Yocto Project - workflow
Summary
2. Building our First Poky Image for the Raspberry Pi
Installing the required packages for the host system
Poky on Ubuntu
Poky on Fedora
Downloading the Poky metadata
Downloading the Raspberry Pi BSP metadata
The oe-init-build-env script
Editing the local.conf file
Editing the bblayers.conf file
Building the Poky image
Choice of image
Running BitBake
Creating an SD card
Booting the image on the Raspberry Pi
Summary
3. Mastering Baking with Hob and Toaster
Hob
Preparing the environment for Hob
Running Hob
Configuring recipes and packages
Building the image
Exploring Toaster
Installing the required packages for the host system
Running Toaster
Running BitBake
Running the web interface
Summary
4. Understanding BitBake
BitBake
Metadata
Configuration
Classes
Recipes
Parsing metadata
Preferences and providers
Dependencies
Fetching
The local file fetcher
The HTTP fetcher
The Git fetcher
Understanding BitBake's tasks
Summary
5. Creating, Developing, and Deploying on the Raspberry Pi
Software development kits (SDKs)
A generic SDK - meta-toolchain
image.bb -c populate_sdk
The Qt SDK - meta-toolchain-qt
The Qt5 SDK - meta-toolchain-qt5
Cross-compilation - an example
Configuration of the SDK environment
List of tools
Compilation
Raspberry Pi and a package manager
Package format availablility
Choosing a package format
Installing and updating a package on the target
RPM packages
Installing manually
Installing automatically
IPK packages
Installing manually
Installing automatically
Our application - an introduction
Our application - creating the recipe
The recipe explained
Summary
6. Working with External Layers
Introducing layers
The basic concepts of layers
Theory
The software layer
README and COPYING
The classes folder
The conf folder
The recipes-* directory
The machine (BSP) layer
Adding external layers to the Raspberry Pi
Summary
7. Deploying a Custom Layer on the Raspberry Pi
Creating the meta-packt_rpi layer with the yocto-layer script
Adding gpio-packt to meta-packt_rpi
Patching gpio-packt
Generating the patch
Adding the patch to the recipe file
Creating the raspberry-packt-image.bb image
Creating the environment
Modifying the recipe file
Deploying the raspberry-packt-image.bb image
Summary
8. Diving into the Raspberry Pi's Peripherals and Yocto Recipes
The SPI bus
The spi-tools project
Inclusion in the meta-oe layer
Baking spi-tools
Testing on the Raspberry Pi
spi-config
spi-pipe
Conclusion
The i2c bus
The Wii Nunchuck
The Nunchuck connector
The Raspberry Pi connection
The Nunchuck's protocol
Encryption
Requesting sensor data
Testing the i2c connection
Creating the Nunchuck application
Integrating with meta-packt_rpi
Creating the Nunchuck recipe
Testing the Nunchuck application
V4L presentation
Video support
v4l-utils integration
Summary
9. Making a Media Hub on the Raspberry Pi
Project description â CPU temperature monitoring
Overview
Hardware/software requirements
Creating the main application
server.js
index.html
Creating the Yocto/OE environment
Modifying the image
Creating the recipe file
Explanation
Autostarting - the init file
Explanation
Autostarting - the recipe file
Explanation
Deploying raspberry-packt-image
Testing the application
The future of this project
Summary
10. Playing with an LCD Touchscreen and the Linux Kernel
The Linux kernel
The Linux kernels versus the Raspberry Pi Linux kernel
Getting started with the Linux kernel
Configuring the kernel in Yocto
Configuring the kernel with LCD support
The Raspberry Pi device tree
Configuring the touchscreen from the kernel perspective
Setting up an LCD display for the Raspberry Pi using the Yocto Project
The Raspberry Pi 7 touchscreen
The PiTFT 2.8 resistive touchscreen
Developing applications and using them on an LCD display
Developing a custom application using Qt
Summary
11. Contributing to the Raspberry Pi BSP Layer
Open source
Contributing to open source projects
Exploring Git
What is Git?
Working with Git
Contributing to the Yocto Project
Contributing to meta-raspberrypi
Setting up your Git repository
Creating your commit
Sending changes to the community
Follow-up
Practical example - sending a custom tool upstream
Summary
12. Home Automation Project - Booting a Custom Image
Home automation using a Raspberry Pi
Material required for the project
Setting up the base for the project
Creating a new layer
Customizing the image recipe
Building and booting the image
Creating the server side
Creating a packet list for your image
Setting up a customized package list
Start using a customized package list in meta-packt-iot
Putting it all together
Serial and SSH connections to the Raspberry Pi
Controlling the relay using the Raspberry Pi
Controlling the lamp using the Raspberry Pi
Turning on/off the lamp from a smartphone
Extra - using a Raspberry Pi with an LCD as the client
Summary
Yocto for Raspberry Pi
Yocto for Raspberry Pi
Copyright © 2016 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: June 2016
Production reference: 1170616
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham
B3 2PB, UK.
ISBN 978-1-78528-195-2
www.packtpub.com
Credits
About the Authors
Pierre-Jean TEXIER is an embedded Linux engineer at Amplitude Systèmes (a pioneer in the marketing of Ytterbium femtosecond lasers) since 2014, where he maintains a custom SoC called i.MX6 with the Yocto Project (meta-fsl-arm), which is made by a French company, EUKREA.
He is a graduate of ESTEI school at Bordeaux, where he studied for 3 years to become an embedded Linux engineer.
He is a big supporter of the world of free software and the embedded world. His knowledge includes C/C++, Yocto, Linux, Bash, and kernel development, but he is also open to trying new things and testing new technologies.
Firstly, I want to thank my patient wife for her support during my writing sessions. I also give thanks my parents and my brother; without them, this book possibly would not have happened.I would also like to thank all of the mentors that I’ve had over the years—mentors such as Cyril SAGONERO, Sylvain LE HENAFF, Pierre BORDELAIS, Vincent POULAILLEAU, Fabrice BONNET, Jean-Claude PERESSINOTTO, and Pierre AUBRY. Without learning from these teachers, there is not a chance I could be doing what I do today.To finish, I would like to thank Eric MOTTAY, the CEO of Amplitude Systèmes; Luca TESTA, the head of the electronics team at Amplitude Systèmes for his trust; and Hitesham WOODHOO, Alexandre GAMONET, Kevin PINTO, and Guillaume MACHINET for all the discussions about the Raspberry Pi during coffee breaks.
Petter Mabäcker is a senior software developer specializing in embedded Linux systems. For the past 8 years, he has been working with embedded Linux professionally. Currently, Petter works as a Scrum Master and senior software developer at Ericsson AB. Additionally, his knowledge includes C/C++, shell scripting, Yocto Project (including BitBake and OpenEmbedded), Scrum, and Git.
In 2013, Petter started the small business Technux, which he runs as a side project in parallel with his duties at Ericsson. Some of the focus areas of the business are open source embedded Linux projects, such as the Yocto Project, together with different projects that involve the Raspberry Pi. As part of the work with Technux, Petter works as a contributer to the Yocto Project (including the Raspberry Pi BSP layer, known as meta-raspberrypi ).
I would like to give special thanks to my beloved family for letting me spend the time needed to finalize this book besides all my other duties.
About the Reviewers
Burt Janz has been involved with computing systems since he assembled his first microcomputer in the US Navy in 1975. Starting with the development of device drivers and low-level interfaces on *nix systems in the early 1980s, Mr. Janz has been writing complex software products for over 30 years. His expertise stretches from the design and implementation of low-level operating system internals and device drivers to complex applications for embedded and handheld devices and government and enterprise-level systems.
A 1988 graduate with high honors in BSCS from Franklin Pierce College, he was an adjunct professor at Daniel Webster College for 11 years in their evening-based Continuing Education program, developing embedded and enterprise-level software during the day. His curricula of instruction included courses from a basic introduction to computers to programming languages (C/C++/Java) to networking theory and network programming, database theory and schema design, artificial intelligence systems. Along the way, Mr. Janz has written magazine articles and other technical commentaries as well as having been involved with one of the first over-the-counter Linux distributions (Yggdrasil, in 1994).
Mr. Janz has designed complete embedded and enterprise-level software system architectures as a lead architect and has led teams from the requirements and design phases of new products through to completion and delivery to customers. He has experience with x86, 68xxx, PPC, ARM, and SPARC processors and continues to write kernel threads and kmods, open firmware device trees, drivers for new and proprietary hardware, FPGA I/P core interfaces, applications, libraries, and boot manager code. He may be contacted directly by email at bhjanz@ccsneinc.com or burt.janz@gmail.com or via LinkedIn.
Dave (Jing) Tian is a PhD student and a security researcher at the Computer & Information Science & Engineering (CISE) department of the University of Florida. He is a founding member of the SENSEI center and the Florida Institute for Cybersecurity. His research involves system security, embedded systems, trusted computing, and compilers. He has an interest in Linux kernel hacking, compiler hacking, and machine learning. He also spent a year on AI and machine learning direction and taught Python and operating system classes at the University of Oregon. Before that, he worked as a software developer at the Linux Control Platform (LCP) group at Alcatel-Lucent (former Lucent Technologies) R&D department for around 4 years. He holds BS and ME degrees in EE from China. He can be reached via