Building a Custom Linux BSP for SoC FPGA Systems Using the Yocto Project - ArrowElectronics/arrow-soc-workshops GitHub Wiki
Overview
The following pages are dedicated to instructing the reader on how to publish a Linux build system for their custom Intel® SoC FPGA based design using the Yocto Project. The Yocto Project is well suited to providing a deterministic, repeatable build system.
Table of Contents
- Introduction to Yocto
- Getting started
- Customizing your Build for Specific Hardware
- Clone the Layer
- Change the Configuration to Build for a Specific Machine
- Change the Configuration to Build for a Specific Linux Kernel
- Change the Configuration to set the number of Processor Threads
- Add Your Layer to the Layer Configuration File
- Modify the configuration to target a Development kit.
- Rebuild
- Copy the Linux image to a micro SD card.
- Connect to the target terminal
- Boot the Linux image on either board
- Create a Custom Board Layer
- Build the Custom Image
- Examine the live system
- Navigating the Build
- Debugging the Build
- Useful Commands
- Additional Learning
Introduction to Yocto
The Yocto Project is an open source collaboration project that helps developers create custom Linux-based systems for embedded products, regardless of the hardware architecture. The project provides a flexible set of tools and a space where embedded developers worldwide can share technologies, software stacks, configurations and best practices which can be used to create tailored Linux images for embedded devices.
The project provides a standard to delivering hardware support and software stacks, allowing the interchange of software configurations and builds. The tools allow users to build and support customizations for multiple hardware platforms and software stacks in a maintainable and scalable way.
Historically the project grew from, and works with the OpenEmbedded Project which is where the build system and some of the meta-data are derived.
Workshop goals
Yocto is a broad subject that requires extensive knowledge. This workshop aims to introduce the reader to this build system and the tools that are available from the Yocto Foundation that will assist in self-learning and developing expertise. This workshop will incrementally walk the reader through increasingly complex build systems. While Yocto by definition supports multiple processor architectures, this workshop will focus on SoC FPGAs from Intel.
The workshop will target a number of different SoC Development kits for convenience. These are readily available at arrow.com. The reader will initially build an x86 based Yocto distribution that can be emulated on an x86 host. A custom Intel (formerly Altera) layer will be added to support Intel and third party (Including Arrow) SoC FPGA custom hardware development kits. A simple Linux system will be built that boots on the Arrow SoCKit Development kit or the Terasic De10-nano development kit. This will be implemented by adding the Altera BSP layer to the Yocto build system.
Finally, the reader will learn how to create a custom layer to support booting Linux on their own custom Intel SoC FPGA hardware platforms. One of the following three kits will be used as a target for this purpose.
- Terasic DE10-nano
- Arrow DataStorm DAQ
- Arrow SoCKit
The Arrow SoCKit is no longer in production. Loaners are available from Arrow. Please contact your Arrow FAE to request a loaner.
Recommended References and Reading
Yocto is complex and requires a good understanding of its concepts and tools. This workshop does not attempt to fill that void. It is expected that the reader will self educate regarding the details of the Yocto Project. The yocto Project organization provides a rich set of resources for developers. Areas that we recommend include
- Getting Started: The Yocto Project Overview
- Yocto Project Overview and Concepts Manual
- Yocto Project Documentation for the Warrior release.
- Community Resources which include Technical articles, presentations and books.
Hyper-links of key words have been provided in the pages that follow and provide a deeper explanation of their function based on the reference material listed above.
Next- Getting Started
Return to - Arrow SoC FPGA Workshops