[yocto] Building Out-of-Tree Modules on the BBB Target

Bruce Ashfield bruce.ashfield at gmail.com
Wed May 15 07:25:10 PDT 2019


On Wed, May 15, 2019 at 3:44 AM Zoran Stojsavljevic <
zoran.stojsavljevic at gmail.com> wrote:

> > That's correct. That command only adds the kernel source and
> > build infrastructure to the SDK, not to your target image. *You'd still*
> *> need to arrange to have the kernel-devsrc package installed on the*
> *> target image if you want it on the board's rootfs.* How you arrange
> > to have the package installed to the image varies with the image
> > (since they all don't have the same image install variables, etc).
>
> And here is a $1,000,000 USD question? How to do it on Poky (as
> example of what you have stated in RED)? ;-)
>
> In other words: how to arrange it on Poky (as a Referent example)?
>

The core-image-kernel-dev image is how I do all my on target testing when I
introduce a new reference kernel for a release. And IIRC the autobuilders
are using a sato based image (Richard could confirm more easily that I
could what image type the autobuilders are using for hello-world on target
module tests).

Bruce



>
> Thank you,
> Zoran
> _______
>
>
> On Wed, May 15, 2019 at 7:41 AM Bruce Ashfield <bruce.ashfield at gmail.com>
> wrote:
>
>>
>>
>> On Tue, May 14, 2019 at 1:30 PM Zoran Stojsavljevic <
>> zoran.stojsavljevic at gmail.com> wrote:
>>
>>> Hello Chris, Bruce,
>>>
>>> I have some additional data to share with you both, since I have tried
>>> something. And here is my take on the things!
>>>
>>> > 1. Build using a bb recipe.
>>> > Take a look at meta-skeleton/recipes-kernel/hello-mod for an example.
>>> > You just need to add meta-skeleton to your bblayers.conf and then
>>> >  bitbake hello-mod
>>>
>>> I looked into this example, and, yes, it is classic kernel module
>>> definition out of the tree. With some outdated data, all cool, the
>>> YOCTO designer should take care himself to fix these data, if using
>>> this stuff.
>>>
>>> But this is NOT mandatory, since I can add out of the tree module NOT
>>> actually using built-in module. I just use .../tmp/deploy/images/bbb/*
>>> generated stuff, since I have automated scripts which are bringing all
>>> these on my BBB target. Then I tftp my source code module to the
>>> target.
>>>
>>> > 2. Build from the SDK:
>>> > First, add the kernel source to the SDK by adding this to
>>> conf/local.conf
>>> >  TOOLCHAIN_TARGET_TASK_append = " kernel-devsrc"
>>>
>>> YES, this is THE command which should generate
>>> /usr/src/kernel(s)/`uname -r` or similar... But adding it to
>>> local.conf and after deleting kernel, then regenerating bitbake -k
>>> core-image-minimal does not bring this path into the rootfs image!?
>>>
>>
>> That's correct. That command only adds the kernel source and build
>> infrastructure to the SDK, not to your target image. You'd still need to
>> arrange to have the kernel-devsrc package installed on the target image if
>> you want it on the board's rootfs. How you arrange to have the package
>> installed to the image varies with the image (since they all don't have the
>> same image install variables, etc).
>>
>>
>>
>>>
>>> I did it actually using meta-bbb, and using poky referent distro as
>>> two additional layers to the more complex bbb image!
>>> https://github.com/jumpnow/meta-bbb.git
>>>
>>> The (KAS - you can figure out out of it local.conf) script I am using
>>> to build such a BBB image is here:
>>>
>>> https://github.com/ZoranStojsavljevic/bbb-yocto/blob/master/bbb-releases/bbb-warrior/kas-bbb-warrior.yml
>>>
>>> I did not try it with BBB reference poky only! Maybe I should try it
>>> as only referent poky? What do you think?
>>>
>>> Does in this case is SDK build really mandatory??? Should NOT be!
>>>
>>>
>> You only do the SDK steps if you want to support building out of tree
>> modules in an SDK install. So it is not mandatory for on target module
>> builds.
>>
>> Bruce
>>
>>
>>
>>> > Once the SDK is installed, generate the kernel headers:
>>> >  sudo -i
>>> >  . /opt/poky/2.6.2/environment-setup-cortexa8hf-neon-poky-linux-gnueabi
>>> >  cd /opt/poky/2.6.2/sysroots/cortexa8hf-neon-poky-linux-gnueabi
>>> >  cd /usr/src/kernel
>>> >  make oldconfig scripts
>>> >  exit
>>>
>>> This is in nutshell the same what I did (a bit different) for Embedded
>>> Debian. This is already on the target BBB, NOT while building YOCTO
>>> BBB image!
>>>
>>> > Finally, build your module using a Makefile like this
>>> >  obj-m := hello-mod.o
>>> >  all:
>>> >        make -C $(SDKTARGETSYSROOT)/usr/src/kernel M=$(shell pwd)
>>>
>>> As said before: bringing my own module into the target BBB (I have my
>>> own examples, and I build them on the target with the almost the same
>>> Makefiles)
>>>
>>> Zoran
>>> _______
>>>
>>> On Sun, May 12, 2019 at 3:15 PM Chris Simmonds <chris at 2net.co.uk> wrote:
>>> >
>>> > Hi Zoran,
>>> >
>>> > There are two ways to do this
>>> >
>>> > 1. Build using a bb recipe.
>>> > Take a look at meta-skeleton/recipes-kernel/hello-mod for an example.
>>> > You just need to add meta-skeleton to your bblaysers.conf and then
>>> >   bitbake hello-mod
>>> >
>>> >
>>> > 2. Build from the SDK:
>>> > First, add the kernel source to the SDK by adding this to
>>> conf/local/conf
>>> >   TOOLCHAIN_TARGET_TASK_append = " kernel-devsrc"
>>> >
>>> > Then build the SDK
>>> >   bitbake -c populate_sdk [your image recipe]
>>> >
>>> > Once the SDK is installed, generate the kernel headers:
>>> >   sudo -i
>>> >   .
>>> /opt/poky/2.6.2/environment-setup-cortexa8hf-neon-poky-linux-gnueabi
>>> >   cd /opt/poky/2.6.2/sysroots/cortexa8hf-neon-poky-linux-gnueabi
>>> >   cd /usr/src/kernel
>>> >   make oldconfig scripts
>>> >   exit
>>> >
>>> > Finally, build your module using a Makefile like this
>>> >
>>> >   obj-m := hello-mod.o
>>> >   all:
>>> >         make -C $(SDKTARGETSYSROOT)/usr/src/kernel M=$(shell pwd)
>>> >
>>> >
>>> > HTH,
>>> > Chris
>>> >
>>> > On 12/05/2019 11:53, Zoran Stojsavljevic wrote:
>>> > > Hello to the YOCTO community,
>>> > >
>>> > > I am using (to build the target for Beagle Bone Black) the following
>>> script:
>>> > > https://github.com/ZoranStojsavljevic/bbb-yocto
>>> > >
>>> https://github.com/ZoranStojsavljevic/bbb-yocto/blob/master/bbb-yocto.sh
>>> > >
>>> > > The latest kernel I am using from the following repo:
>>> > > https://github.com/jumpnow/meta-bbb
>>> > >
>>> > > Is kernel 5.0.14 .
>>> > >
>>> > > Here is the snippet of the boot traces:
>>> > > Starting kernel ...
>>> > >
>>> > > [    0.000000] Booting Linux on physical CPU 0x0
>>> > > [    0.000000] Linux version 5.0.14-jumpnow (oe-user at oe-host) (gcc
>>> > > version 8.3.0 (GCC)) #1 Fri May 10 13:12:33 UTC 2019
>>> > > [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7),
>>> cr=10c5387d
>>> > > [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing
>>> > > instruction cache
>>> > > [    0.000000] OF: fdt: Machine model: TI AM335x BeagleBone Black
>>> > > [    0.000000] Memory policy: Data cache writeback
>>> > > [    0.000000] cma: Reserved 16 MiB at 0x9f000000
>>> > > [    0.000000] CPU: All CPU(s) started in SVC mode.
>>> > > [    0.000000] AM335X ES2.1 (sgx neon)
>>> > > [    0.000000] random: get_random_bytes called from
>>> > > start_kernel+0xa4/0x460 with crng_init=0
>>> > > [    0.000000] Built 1 zonelists, mobility grouping on.  Total
>>> pages: 130048
>>> > > [    0.000000] Kernel command line: console=ttyO0,115200n8
>>> > > root=/dev/ram0 ip=dhcp
>>> > >
>>> > > According to the documentation, the following:
>>> > > 2.10.1. Building Out-of-Tree Modules on the Target
>>> > > https://www.yoctoproject.org/docs/latest/kernel-dev/kernel-dev.html
>>> > >
>>> > > I tried to find /usr/src/kernels/5.0.14... Directory, since I see
>>> > > from the build that kernel-dev and kernel-devsrc are included:
>>> > > [user at fedora29-ssd bbb-yocto]$ bitbake -s | grep kernel
>>> > > core-image-kernel-dev                                 :1.0-r0
>>> > > kernel-devsrc                                         :1.0-r0
>>> > > kernel-selftest                                       :1.0-r0
>>> > >
>>> > > THE PROBLEM: But I could not find ob BBB target /usr/src/kernels
>>> > > directory at all!?
>>> > >
>>> > > Two questions here?
>>> > > [1] Do you have any advice on this problem (what I am missing here)?
>>> > > [2] Alternative to [1]: how I can use cross compiler from
>>> > > .../build/tmp to build Out-of-Tree Module for the BBB target on the
>>> > > host?
>>> > >
>>> > > Thank you,
>>> > > Zoran
>>> > > _______
>>> > >
>>> >
>>> >
>>> > --
>>> > Chris Simmonds, trainer and consultant at 2net
>>> > http://www.2net.co.uk
>>> > Author of "Mastering Embedded Linux Programming"
>>>
>>
>>
>> --
>> - Thou shalt not follow the NULL pointer, for chaos and madness await
>> thee at its end
>> - "Use the force Harry" - Gandalf, Star Trek II
>>
>>

-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end
- "Use the force Harry" - Gandalf, Star Trek II
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20190515/50bf17fd/attachment-0001.html>


More information about the yocto mailing list