[poky] Problems creating a new BSP

Tim Cussins timcussins at eml.cc
Wed May 18 08:56:14 PDT 2011


Hi all,

I've been having trouble getting my own kernel built and it's time to go 
to the list :)

The problem: As part of my bsp I want a kernel that's based on the yocto 
tree, but is built for my machine. Mu current setup fails to build it :(

(1) I've been following the steps outlined here:

   http://www.yoctoproject.org/docs/bsp-guide/bsp-guide.html

(2) I'm tracking the bernard branch of poky.

(3) My new meta directory (meta-tephra) is inside the top-level of my 
poky checkout. Here's what's in there (find):

./recipes-kernel
./recipes-kernel/linux
./recipes-kernel/linux/linux-yocto-stable_git.bbappend
./recipes-kernel/linux/linux-yocto-stable
./recipes-kernel/linux/linux-yocto-stable/defconfig
./conf
./conf/machine
./conf/machine/tephra.conf
./conf/layer.conf
./images
./images/poky-image-tephra-sdk.bb

(4) Contents of tephra.conf

TARGET_ARCH = "arm"
MACHINE_FEATURES = "kernel26"
IMAGE_FSTYPES ?= "tar.bz2 ext3"
ROOT_FLASH_SIZE = "280"
IMAGE_ROOTFS_SIZE_ext2 ?= "280000"
IMAGE_ROOTFS_SIZE_ext3 ?= "280000"
# Don't include kernels in standard images
RDEPENDS_kernel-base = ""
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto-stable"
#PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers-yocto"
EXTRA_IMAGEDEPENDS += ""
MACHINE_ESSENTIAL_EXTRA_RDEPENDS = ""
require conf/machine/include/tune-arm1136jf-s.inc
KERNEL_IMAGETYPE = "uImage"
SERIAL_CONSOLE = "115200 ttyS0"

(5) Contents of linux-yocto-stable_git.bbappend

FILESEXTRAPATHS := "${THISDIR}/${PN}"
COMPATIBLE_MACHINE_tephra = "tephra"
KMACHINE_tephra = "arm_versatile_926ejs"
SRC_URI += "file://defconfig"

(6) Contents of defconfig

Same as mx3_defconfig (for freescale iMX 3)

(6b) for completeness here's layer.conf

# We have a conf directory, add to BBPATH
BBPATH := "${BBPATH}:${LAYERDIR}"

# We have a recipes directory containing .bb and .bbappend files, add to 
BBFILES
BBFILES := "${BBFILES} \
             ${LAYERDIR}/recipes*/*/*.bb \
             ${LAYERDIR}/recipes*/*/*.bbappend \
             ${LAYERDIR}/images/*.bb"

BBFILE_COLLECTIONS += "tephra"
BBFILE_PATTERN_tephra := "^${LAYERDIR}/"
BBFILE_PRIORITY_tephra = "5"

(7) Minor confusion - When I invoke

   bitbake virtual/kernel -DDDD -v

The process warns during the start of kernel_do_compile() (from 
kernel.bbclass) that

   "Warning: make dep is unnecessary now."

It's trying to build deps - fair enough, as the value of 
KERNEL_MAJOR_VERSION is 'None' because that information is taken from 
the kernel build output:

   oe_runmake include/linux/version.h CC="${KERNEL_CC}" LD="${KERNEL_LD}"

but this won't generate

   include/generated/utsrelease.h

which is where the kernel version now lives. Changing the line to 
generate this target ensures that utsrelease.h is built, but 
KERNEL_MAJOR_VERSION is still 'None'.

I'm pretty confused by this and need help :)

(8) Major problem - The copying of my defconfig into .config causes the 
kernel build to terminate with:

   linux is not clean, please run 'make mrproper'

Commenting out the defconfig reference in my bbappend:

   #SRC_URI += "file://defconfig"

allows the kernel build to complete, but obviously not with the 
configuration I was after :(

Any insight into what I'm doing wrong (either philosophically or 
technically) would be awesome.

Thanks in advance,

Tim



More information about the poky mailing list