HaveFunWithEmbeddedSystem/Chapter8_SOC_与_Linux/8.22_使用_Yocto_构建树莓派_4B.md

3.3 KiB
Raw Blame History

Yocto for Raspberry pi 4 B 64 bit

Using Yocto we can create custom Linux images for embedded devices. Here we are going to build a basic minimal image for raspberry pi 4b. With the small modification in the configuration file you can create the images for various versions of Raspberry pi.

[*Optional]

Full course on Yocto available @ Udemy

All the below commands are available as a shell script on https://github.com/eclabs007/Yocto-Udemy.git

Prepare your Host Linux

Install the essential tools for your host PC.

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm python

Setting up Yocto

1.Download Poky (reference implementation of yocto)

here we are downloading zeus version of Yocto.

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

navigate to poky folder

cd poky-zeus

Download meta-openembedded layer

git clone -b zeus git://git.openembedded.org/meta-openembedded

Download meta-Raspberry pi layer

git clone -b zeus git://git.yoctoproject.org/meta-raspberrypi

If you wish qt support download meta-qt5

git clone -b zeus https://github.com/meta-qt5/meta-qt5

Now you have all the necessary layers for building the Yocto

Building your first image for Raspberry Pi

For Initializing Poky Variables You can use oe-init-build-env script

The script is responsible for the initialization of variables of the Poky build system, the script creates a directory structure in which it is very well divided:

build build directory

source assembly recipes source code

download directory for downloading program code (git databases, tar.gz archives)

source oe-init-build-env

It will take you to a build folder , optionally you can give build folder as an argument , source oe-init-build-env <build_folder_name>

In the build folder now you will be able to see one folder called conf which will be having the configuration files

conf/
├── bblayers.conf
├── local.conf
└── templateconf.cfg

Now edit conf/bblayers.conf with your favorite text editor as below

add layer meta-raspberrypi to your bblayer.cof

POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
/home/eclabs/Yocto/poky-zeus/meta \
/home/eclabs/Yocto/poky-zeus/meta-poky \
/home/eclabs/Yocto/poky-zeus/meta-yocto-bsp \
/home/eclabs/Yocto/poky-zeus/meta-raspberrypi \
"

Modify conf/local.conf

MACHINE ??= “raspberrypi4-64”

you can build Yocto image for the different hardware versions of Raspberry pi by just changing this MACHINE variable.

raspberrypi0
raspberrypi0w
raspberrypi3
raspberrypi3-64
raspberrypi4
raspberrypi4-64 etc

For a building minimal image you can give the following command

bitbake core-image-minimal

it will create Kernel image ,RFS ,dtbs and boot codes for you. For the first time build will take some time( You are building a Linux from source).

After the build you can copy the images to SD card , Enjoy booting your Linux it will be available in tmp/deploy/images/raspberrypi4-64/ folder

sudo dd if=tmp/deploy/images/raspberrypi4-64/core-image-minimal-raspberrypi4-64.rpi-sdimg of=/dev/sdX bs=16M status=progress