[yocto] how to build external firmware for kernel

lothar at denx.de lothar at denx.de
Mon Aug 5 15:42:10 PDT 2013


Zitat von Paul Eggleton <paul.eggleton at linux.intel.com>:

> On Monday 05 August 2013 14:41:04 lothar at denx.de wrote:
>> How may I work with the STAGING_KERNEL_DIR, since I first run the
>> firmware.bb and then the kernel.bb. I think I did not understand well,
>> how I may achieve this. Do I need to install the firmware blob into
>> something like $STAGING_KERNEL_DIR/firmware? How may I proceed here,
>> could you please explain a bit more?
>
> Sorry, I misunderstood your original explanation - in that case you  
> cannot use
> STAGING_KERNEL_DIR because it will only exist after the kernel has  
> been built.
>
> It seems a bit odd that you'd need to build the firmware first and  
> then use that
> as an input to the kernel build - is it baking the firmware into the module
> instead of loading the firmware at runtime like most other drivers?
>
> Cheers,
> Paul
>
> --

Hi Paul,

I appologize, probably I did not explain it very well.

So, in brief, I need to perform these steps in the following order:
1) check out firmware source via git
2) call "make" (builds a firmware generator tool (native), AND then  
calls it automatically right away to generate the firmware blob still  
in the same "make" call)
3) place the firmware blob somewhere, where the kernel('s recipe) can  
access it
4) check out kernel source
5) configure kernel source, and set the firmware blob
6) compile the kernel

So it's not a kernel module that has to be compiled after having the  
kernel source. It needs to be compiled before the kernel, the kernel  
needs its binary as EXTRA_FIRMWARE.

Can you help me, how to perform this? Perhaps /usr/firmware works, but  
as I already mentioned I had just problems with it, that's why I  
thought it's easier to pass the binary somehow directly.. Perhaps  
another approach would be not to have a separate recipes, but to do  
step 1-3 within the kernel .bb file, but this has to be done by the  
native toolchain, while the kernel should not use the native toolchain  
of course.. Any ideas?

BR,
L




More information about the yocto mailing list