From the "Real-time Edge Yocto Project User Guide" section "8 Building packages based on i.MX Yocto release" I understand that it is possible to add Real-Time Edge to an existing Yocto build. I'm interested in the real-time features and the abilty to run a bare-metal application on an A53 core of an i.MX 8M Nano chip along with Linux on the other cores.
When I reproduce the instructions in section 8 of the "Real-time Edge Yocto Project User Guide" I do not get a working build. The build fails more or less immediately with the following error messages:
$ bitbake core-image-minimal
NOTE: Your conf/bblayers.conf has been automatically updated.
WARNING: You are running bitbake under WSLv2, this works properly but you should optimize your VHDX file eventually to avoid running out of storage space
Loading cache: 100% | | ETA: --:--:--
Loaded 0 entries from dependency cache.
WARNING: /home/stm/src/imx-yocto-bsp/sources/meta-freescale/recipes-kernel/linux/linux-imx_6.1.bb: Exception during build_dependencies for do_kernel_checkout
WARNING: /home/stm/src/imx-yocto-bsp/sources/meta-freescale/recipes-kernel/linux/linux-imx_6.1.bb: Error during finalise of /home/stm/src/imx-yocto-bsp/sources/meta-freescale/recipes-kernel/linux/linux-imx_6.1.bb
ERROR: ExpansionError during parsing /home/stm/src/imx-yocto-bsp/sources/meta-freescale/recipes-kernel/linux/linux-imx_6.1.bb
Traceback (most recent call last):
File "Var <do_kernel_checkout>", line 1, in <module>
File "/home/stm/src/imx-yocto-bsp/sources/poky/meta/classes-recipe/kernel-yocto.bbclass", line 86, in get_machine_branch(d=<bb.data_smart.DataSmart object at 0x7ff1bdf4f280>, default='master'):
def get_machine_branch(d, default):
> fetch = bb.fetch2.Fetch([], d)
for url in fetch.urls:
File "/home/stm/src/imx-yocto-bsp/sources/poky/bitbake/lib/bb/fetch2/__init__.py", line 1687, in Fetch.__init__(urls=['${KERNEL_SRC}'], d=<bb.data_smart.DataSmart object at 0x7ff1bdf4f280>, cache=True, localonly=False, connection_cache=None):
try:
> self.ud[url] = FetchData(url, d, localonly)
except NonLocalMethod:
File "/home/stm/src/imx-yocto-bsp/sources/poky/bitbake/lib/bb/fetch2/__init__.py", line 1274, in FetchData.__init__(url='${KERNEL_SRC}', d=<bb.data_smart.DataSmart object at 0x7ff1bdf4f280>, localonly=False):
self.basepath = None
> (self.type, self.host, self.path, self.user, self.pswd, self.parm) = decodeurl(d.expand(url))
self.date = self.getSRCDate(d)
File "/home/stm/src/imx-yocto-bsp/sources/poky/bitbake/lib/bb/fetch2/__init__.py", line 357, in decodeurl(url='${KERNEL_SRC}'):
if not m:
> raise MalformedUrl(url)
bb.data_smart.ExpansionError: Failure expanding variable do_kernel_checkout, expression was set +e
source_dir=`echo //git | sed 's%/$%%'`
source_workdir="//git"
if [ -d "//git/" ]; then
# case: git repository
# if S is WORKDIR/git, then we shouldn't be moving or deleting the tree.
if [ "${source_dir}" != "${source_workdir}" ]; then
if [ -d "${source_workdir}/.git" ]; then
# regular git repository with .git
rm -rf //git
mv //git //git
else
# create source for bare cloned git repository
git clone //git //git
rm -rf //git
fi
fi
cd //git
# convert any remote branches to local tracking ones
for i in `git branch -a --no-color | grep remotes | grep -v HEAD`; do
b=`echo $i | cut -d' ' -f2 | sed 's%remotes/origin/%%'`;
git show-ref --quiet --verify -- "refs/heads/$b"
if [ $? -ne 0 ]; then
git branch $b $i > /dev/null
fi
done
# Create a working tree copy of the kernel by checking out a branch
machine_branch="${@ get_machine_branch(d, "master" )}"
# checkout and clobber any unimportant files
git checkout -f ${machine_branch}
else
# case: we have no git repository at all.
# To support low bandwidth options for building the kernel, we'll just
# convert the tree to a git repo and let the rest of the process work unchanged
# if //git hasn't been set to the proper subdirectory a default of "linux" is
# used, but we can't initialize that empty directory. So check it and throw a
# clear error
cd //git
if [ ! -f "Makefile" ]; then
bberror "S is not set to the linux source directory. Check "
bbfatal "the recipe and set S to the proper extracted subdirectory"
fi
rm -f .gitignore
git init
check_git_config
git add .
git commit -q -m "baseline commit: creating repo for no-pn-0.0-1"
git clean -d -f
fi
set -e
which triggered exception MalformedUrl: The URL: '${KERNEL_SRC}' is invalid and cannot be interpreted
The variable dependency chain for the failure is: do_kernel_checkout
ERROR: Parsing halted due to errors, see error messages above
What is wrong with the instructions in the "Real-time Edge Yocto Project User Guide" and how can I set up a working build?
And is it possible in general to use Real-Time Edge with an i.MX 8M Nano chip?