Re: Help with setting up a PREEMPT_RT image for BeagleBone Black #yocto


Bruce Ashfield
 

In message: [yocto] Help with setting up a PREEMPT_RT image for BeagleBone Black #yocto
on 27/10/2022 mpham20@... wrote:

Hello all,

I am new to Yocto and would like to seek assistance for setting up a PREEMPT_RT
image for BeagleBone Black.

Here is what I have tried so far. First I followed the Yocto Project Quick
Build tutorial in the documentation.

1)
sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential
chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils
iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm
python3-subunit mesa-common-dev zstd liblz4-tool

2)
git clone git://git.yoctoproject.org/poky

3)
cd poky

4)
git checkout -t origin/langdale -b my-langdale

5)
git pull

6)
source oe-init-build-env

7) Then I went to poky/build/conf and edited local.conf by uncommenting
MACHINE ?= "beaglebone-yocto"
and commenting out
#MACHINE ??= "qemux86-64"
Then I added these two lines at the bottom of the file:
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-rt"
COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"

8) Next I ran this command:
bitbake core-image-minimal

9) Then I get errors at this point.
ERROR: Nothing PROVIDES 'virtual/kernel'
linux-yocto-upstream PROVIDES virtual/kernel but was skipped: Set
PREFERRED_PROVIDER_virtual/kernel to linux-yocto-upstream to enable it
linux-yocto PROVIDES virtual/kernel but was skipped: Set
PREFERRED_PROVIDER_virtual/kernel to linux-yocto to enable it
linux-yocto-rt PROVIDES virtual/kernel but was skipped: incompatible with
machine beaglebone-yocto (not in COMPATIBLE_MACHINE)
linux-yocto-dev PROVIDES virtual/kernel but was skipped: Set
PREFERRED_PROVIDER_virtual/kernel to linux-yocto-dev to enable it
linux-yocto-rt PROVIDES virtual/kernel but was skipped: incompatible with
machine beaglebone-yocto (not in COMPATIBLE_MACHINE)
linux-yocto-upstream PROVIDES virtual/kernel but was skipped: Set
PREFERRED_PROVIDER_virtual/kernel to linux-yocto-upstream to enable it
linux-yocto PROVIDES virtual/kernel but was skipped: Set
PREFERRED_PROVIDER_virtual/kernel to linux-yocto to enable it
linux-yocto-tiny PROVIDES virtual/kernel but was skipped: incompatible with
machine beaglebone-yocto (not in COMPATIBLE_MACHINE)
linux-dummy PROVIDES virtual/kernel but was skipped: PREFERRED_PROVIDER_virtual
/kernel set to linux-yocto-rt, not linux-dummy
linux-yocto-tiny PROVIDES virtual/kernel but was skipped: incompatible with
machine beaglebone-yocto (not in COMPATIBLE_MACHINE)
ERROR: Required build target 'core-image-minimal' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-minimal', 'virtual/
kernel']

Summary: There was 1 WARNING message.
Summary: There were 2 ERROR messages, returning a non-zero exit code.

I've tried a variety of ways and read lots of links but still no luck. Can
someone tell me the best way to accomplish my goal?
Thank you for any help.
To build a kernel recipe (not just linux-yocto), it must be marked
as compatible with your machine. The messages you are seeing are
telling you that, by indicating that the recipes were skipped (since
they are not compatible) and once they are all skipped you get a failure
as nothing provides virtual/kernel.

For linux-yocto, you also need a BSP description that the tooling
uses to create the kernel configuration.

We haven't been testing the beaglebone-yocto reference against -rt,
so it isn't marked as compatible by default. That being said, it
can be easily made compatible via a bbappend. Look at the
meta-yocto-bsp layer, and the bbappends in there. We are adding
the reference boards as compatible with linux-yocto. A similar
bbappend would work for linux-yocto-rt, and you'd solve that first
issue of not having a compatible machine.

For the BSP description, it does happen that we have one in the
linux-yocto configuration meta-data, so one doesn't need to be
created. The tools would find that description during the build
and use it accordingly. The default KBRANCH should aslo be fine
for the beaglebone-yocto, as we aren't carrying any extra patches
for the board, so the linux-yocto-rt recipe's default values will
get the right branch checked out and built.

Whether it builds (it should), boots (it should) or gives you
appropriate -rt performance (unknown) .. are other questions
that are to be answered :)

Bruce



Michael


Join yocto@lists.yoctoproject.org to automatically receive all group messages.