This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How to generate DTB file from Yocto with TI meta recipes and TI SDK?



Hi all,

I'm trying to generate new DTB file for my board based on Sitara Processor through Yocto and using TI SDK and recipes. But for now, just to verify the process, I've just copied the files in <TI SDK directory>/board-support/linux-4.1.6-xxxx/arch/arm/boot/dts as follow:

- am57xx-evm.dts to am57xx-myboard.dts,

- am57xx-beagle-x15.dts to am57xx-myboard-x15.dts 

- am57xx-evm-cmem.dtsi to am57xx-myboard-cmem.dtsi

In the doubt, I've added the KERNEL_DEVICETREE_am57xx-myboard = "am57xx-myboard-x15.dtb am57xx-myboard.dtb" as well from the model of KERNEL_DEVICETREE_am57xx-evm using "bbappend" files to the following recipes:

- linux-ti-staging_4.1.bb

- linux-processor-sdk_4.1.bb

- ti-tisdk-makefile_1.0.bb (variable KERNEL_DEVICETREE_dra7xx)

When compiling the kernel with Bitbake, I've got the error message "No rule to make target arch/arm/boot/dts/am57xx-myboard-x15.dtb"

I'd like to know why and how to add my new DTB in Yocto and TI SDK. Note that if I use the DTB provided by TI, there is no problem.

If anybody has an idea, please tell me what to do or where to look at.

Thanks a lot

  • Hi,

    I will ask the software team to comment.
  • Hi,

    I think you get this error because you haven't modified the Makefile located in arch/arm/boot/dts/Makefile.

    If you have a look at this file, you'll see that you have the following fragment:

    dtb-$(CONFIG_SOC_DRA7XX) += \
       dra7-evm.dtb \
       dra7-evm-lcd-lg.dtb \
       dra7-evm-lcd-osd.dtb \
       dra72-evm-lcd-lg.dtb \
       dra72-evm-lcd-osd.dtb \
       am57xx-beagle-x15.dtb \
       dra72-evm.dtb \
       am57xx-evm.dtb \
       am572x-idk.dtb \
       am572x-idk-lcd-osd.dtb \
       am571x-idk.dtb \
       am571x-idk-lcd-osd.dtb

    Try to add your custom dtb in the list above, i.e. in your case, add the highlighted lines bellow:

    dtb-$(CONFIG_SOC_DRA7XX) += \
       dra7-evm.dtb \
       dra7-evm-lcd-lg.dtb \
       dra7-evm-lcd-osd.dtb \
       dra72-evm-lcd-lg.dtb \
       dra72-evm-lcd-osd.dtb \
       am57xx-beagle-x15.dtb \
       am57xx-myboard-x15.dtb\
       dra72-evm.dtb \
       am57xx-evm.dtb \
       am57xx-myboard.dtb\
       am572x-idk.dtb \
       am572x-idk-lcd-osd.dtb \
       am571x-idk.dtb \
       am571x-idk-lcd-osd.dtb

    Hope this helps. 

    Best Regards, 
    Yordan

  • Hi,
    Thanks for your reply. DTB files names added in the CONFIG_SOC_DRA7XX section but got the same error message.
  • Hi all,
    When I compare the package of DTS files in <TI SDK Install Directory>/board-support/linux-4.1.6-xxxx/arch/arm/boot/dts and in /build/xxx/kernel-source/arch/arm/boot/dts, it looks like all the DTS files was copied from the first location by recipes before the building of DTB files is launched.
    But any of the DTS files newly created is copied and I cannot find where is implemented the command of this copy. I guess my new files are not included in the process.
    Could anyone tell me in which recipe or where the command is implemented and executed?
    I think it concerns the TI recipes or the TI config files either in the TI meta data or in theTI SDK. I said that because if I use the DTB file provided by TI, there is no problem.
    Thanks a lot for your help.
  • Hi all,

    May I get some help from someone? Please I really need information of how the DTB is generated from Yocto through TI SDK.

    Thanks a lot

  • Hi,

    Do you build the sources from the local kernel directory? If not, then the Yocto build will download them from a repo & execute the make command. This may be the reason you don't see your custom images, when you build with Yocto.

    You could set the src_uri to point to your kernel path, like: e2e.ti.com/.../331111

    Or, I can see a problem if you just build the kernel separately & add the custom dtb & kernel in your filesystem build under /boot directory.

    Best Regards,
    Yordan