What is the purpose of imx8mn-evk-u-boot.dtsi?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

What is the purpose of imx8mn-evk-u-boot.dtsi?

Jump to solution
560 Views
moose
Contributor IV

According to imx8mn_evk_defconf, the boot dts file is imx8mn-elk.dts which includes imx8mn-elk.dtsi then imx8mn.dtsi. I don't see imx8mn-evk-u-boot.dtsi included, and I am not sure how and when this file is used. We are having a boot-up issue and wondering if this file is the issue. Do we need it if we are basing our board on imx8mn-evk with some modifications? Thank you.

Labels (1)
0 Kudos
1 Solution
304 Views
moose
Contributor IV

The short answer is u-boot build system automatically includes <orig_filename>-u-boot.dtsi in addition to the defined board file. In this example, the final u-boot device tree is imx8mn-evk.dts + imx8mn-evk-u-boot.dtsi. I found this description to be helpful.

Not knowing this, we only created a custom device tree file for our board based on imx8mn-evk.dts and did not create -u-boot.dtsi version. @sinanakman this was causing SPL not to boot at all ( the common uuu USB cannot connect error). The underlying issue is inside imx8mn-evk-u-boot.dtsi, many nodes were decleraded with the property 'u-boot,dm-spl'. Apparently, this needed to select which node SPL would drive so you are not including the whole tree that u-boot uses. Obviously, without it, SPL did not have access to many key nodes such as pmic and uart, and it is no wonder we were not booting with zero output messages. I found this description to be useful.

@hustdage I do not believe Binman is in play here, but I could be wrong as I am new to all this. You are correct that binman node is described within *-u-boot.dtsi file, but I don't believe it is used in the imx8mn-evk board since CONFIG_BINMAN is not set. I see boards that specifically select it, such as IMX8MN_BEACON, but not the IMX8MN_EVK target. It may be there as an optional feature, but I think the imx8mn_evk board still uses ad-hoc scripts included within the imx-boot to support the imx-mkimage tool in building the final image (flash.bin). Please correct me if I am wrong.

View solution in original post

0 Kudos
5 Replies
518 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

The imx8mn-evk-u-boot.dtsi will overlay  imx8mn-evk.dts, so the final dtb will contain properties in imx8mn-evk-u-boot.dtsi .

Of course, you need modify imx8mn-evk-u-boot.dtsi.

0 Kudos
493 Views
hustdage
Contributor II

Moose' question  is "I don't see imx8mn-evk-u-boot.dtsi included". 

And I have answered 

"

It is called binman node in u-boot.

You can check the u-boot document. And learn this u-boot knowledge.

It is not overlay, it is Automatic .dtsi includesion.

https://github.com/nxp-imx/uboot-imx/blob/lf-6.1.36-2.1.0/tools/binman/binman.rst

 

Automatic .dtsi inclusion

It is sometimes inconvenient to add a 'binman' node to the .dts file for each board. This can be done by using #include to bring in a common file. Another approach supported by the U-Boot build system is to automatically include a common header. You can then put the binman node (and anything else that is specific to U-Boot, such as u-boot,dm-pre-reloc properies) in that header file.

Binman will search for the following files in arch/<arch>/dts:

<dts>-u-boot.dtsi where <dts> is the base name of the .dts file
<CONFIG_SYS_SOC>-u-boot.dtsi
<CONFIG_SYS_CPU>-u-boot.dtsi
<CONFIG_SYS_VENDOR>-u-boot.dtsi
u-boot.dtsi
526 Views
sinanakman
Senior Contributor III

Hi Moose

 

If you can show us what boot up issues you are having we might be able to help you a bit better. Please describe your custom board how it deviates from the eval board you might have based it and how you generate your images that you are having issues with.

 

Best regards

Sinan Akman

0 Kudos
532 Views
hustdage
Contributor II

It is called binman node in u-boot.

You can check the u-boot document. And learn this u-boot knowledge.

0 Kudos
305 Views
moose
Contributor IV

The short answer is u-boot build system automatically includes <orig_filename>-u-boot.dtsi in addition to the defined board file. In this example, the final u-boot device tree is imx8mn-evk.dts + imx8mn-evk-u-boot.dtsi. I found this description to be helpful.

Not knowing this, we only created a custom device tree file for our board based on imx8mn-evk.dts and did not create -u-boot.dtsi version. @sinanakman this was causing SPL not to boot at all ( the common uuu USB cannot connect error). The underlying issue is inside imx8mn-evk-u-boot.dtsi, many nodes were decleraded with the property 'u-boot,dm-spl'. Apparently, this needed to select which node SPL would drive so you are not including the whole tree that u-boot uses. Obviously, without it, SPL did not have access to many key nodes such as pmic and uart, and it is no wonder we were not booting with zero output messages. I found this description to be useful.

@hustdage I do not believe Binman is in play here, but I could be wrong as I am new to all this. You are correct that binman node is described within *-u-boot.dtsi file, but I don't believe it is used in the imx8mn-evk board since CONFIG_BINMAN is not set. I see boards that specifically select it, such as IMX8MN_BEACON, but not the IMX8MN_EVK target. It may be there as an optional feature, but I think the imx8mn_evk board still uses ad-hoc scripts included within the imx-boot to support the imx-mkimage tool in building the final image (flash.bin). Please correct me if I am wrong.

0 Kudos