Dies ist eine alte Version des Dokuments!


Yocto/Openembedded

yocto and OpenEmbedded provide the tools necessary to create small customised linux distributions aimed at embedded systems.

Introduction to Yocto/OpenEmbedded

Learn about Yocto and bitbake which uses recipes structured in various layers to build custom images, see Introduction to Yocto/OpenEmbedded.

Read about Layers and Recipes therein.

Use devtool to add, modify and test new recipes.

Getting Started

For setting up the build environment, see Setup and Building.

Getting Started with Yocto and C/C++ demonstrates how the build environment is setup, a x86-64 image is built and run on Qemu. Then a C++ application is added to this image.

meta-ost

meta-ost is the layer containing recipes required for various OST projects.

Image Download

Workflow

Learn about how to layers should be structured, about how our CI/CD pipeline works and about how you could commit to the project in Structure / Workflow.

ROS

ros

SDK's

There are essentially three ways to build on/for a yocto image:

  • include the toolchain in the image and build natively (not recommended)
  • SDK
  • extensible SDK

See SDK's

User interface / General settings

To work with different custom Yocto builds we are providing may need documentation, especially for new users.

Networking

For networking, our Yocto images are currently (status: March 2023) using systemd-networkd which can be quite cumbersome for users without experience. The following tutorials are covering the most important basic network settings.

DHCP / Static IP addresses

In order to enable DHCP or set a static IP address please refer to the systemd-networkd documentation linked above. In case you have configured the IP address being provided as a static IP address by the DHCP server via the system's MAC address and the system does not get the according IP address from the DHCP server, it may be caused by the way some Linux distributions are announcing themselves on the network (UID vs. MAC address), which can be resolved as described here:

[DHCP]
ClientIdentifier=mac

WiFi

Setting up a WiFi connection on a specific WiFi network interface (wlan0-interface on the following example) can be done as shown on the following BeagleBoneBlue Yocto image example:

Edit the following file:

nano /etc/wpa_supplicant.conf

Outcomment the existing and paste the following new content as follows:

#ctrl_interface=/var/run/wpa_supplicant
#ctrl_interface_group=0
#update_config=1
#
network={
        key_mgmt=WPA-PSK
        ssid="<myWiFiSSID>"
        psk="<myWiFiPassword>"
}

Save the file and exit the editor.

Now edit the following file…

nano /etc/systemd/network/30-wlan0.network

…and add the following content:

[Unit]
Description=Start udhcpc DHCP client
After=wpa_supplicant.service
Wants=wpa_supplicant.service
 
[Service]
Type=oneshot
ExecStart=/sbin/udhcpc -i wlan0
TimeoutSec=30
Restart=on-failure
 
[Install]
WantedBy=network.target

Save the file and quit the editor.

Now rename the following file so it will not be used by the system anymore:

mv /etc/network/interfaces /etc/network/interfaces.bak

Finally reboot the system:

reboot

WiFi should work now.