[poky] Problems creating a new BSP

Bruce Ashfield bruce.ashfield at gmail.com
Wed May 18 17:15:31 PDT 2011


On Wed, May 18, 2011 at 1:47 PM, Tim Cussins <timcussins at eml.cc> wrote:
> On 18/05/11 17:20, Bruce Ashfield wrote:
>>
>> On Wed, May 18, 2011 at 11:56 AM, Tim Cussins<timcussins at eml.cc>  wrote:
>>>
>>> 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 :(
>>
>> We can definitely get you up and running.
>>
>>>
>>> (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"
>>
>> the recipe names will change slightly in the near future, the
>> linux-yocto_git is also "stable", so if you want something
>> newer than 2.6.34, you can use that as well.
>
> noted. i actually started with 2.6.37 until the wheels fell off :)

Aha. Same error ? Something different ? Either way, if you
get back to it, I can help if somethings lurking. If the steps
are wrong in the docs, that's also something that would be
good to know!

Cheers,

Bruce

>
>>>
>>> (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 :)
>>
>> I'm not sure about this one at the moment, I've never had this happen,
>> or spent much time poking around in that particular code.
>>
>>>
>>> (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'
>>
>> I can help with this one. There was a change to the defconfig
>> processing late in the 1.0 cycle that missed being tested
>> against defconfig kernel builds against yocto (since the default
>> boards don't do this). It copies the defconfig into the source
>> directory, which isn't what we want since the src/build is split.
>>
>> I put a fix into master for this, and it should have also been
>> in bernard, but obviously, I'll need to check this.
>>
>> The fix you can manually do is by applying this chunk to
>> kernel-yocto.bbclass
>>
>> +# overrides the base kernel_do_configure, since we don't want all the
>> +# defconfig processing in there
>> +kernel_do_configure() {
>> +        yes '' | oe_runmake oldconfig
>> +}
>> +
>> +
>>
>> And then you'll be good to go.
>
> great - that's making progress now. fyi the kernel build itself is breaking
> now, but i reckon i can deal to that :)
>
> Thanks heaps!
> T
>
>> Bruce
>>
>>
>>>
>>> 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
>>> _______________________________________________
>>> poky mailing list
>>> poky at yoctoproject.org
>>> https://lists.yoctoproject.org/listinfo/poky
>>>
>>
>>
>>
>
>



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"



More information about the poky mailing list