dtb questions

  • Hello,


    I have a system in production based on buildroot-2015 (sdcard fsimx6-V2.1) and I'm migrating my system to yocto 2022.


    In sdcard fsimx6-V2.1 no there is NO dtb file.





    In sdcard fsimx6-V3.1 (or yocto 2024 sdcard, there are several dtb.




    Why in the old releases there was no dtb file? The dtb was distributed embedded in kernel 3?


    For the current yocto 2022 image I understand and know which dtb I should use now, that is not a problem. I must use armstonea9q.dtb for my board.

    The problem is that the Yocto + Weston system boots perfectly but I don't see the weston on my screen. The screen remains with a white background.

    As I can't find the dtb of kernel 3, I don't understand why in buildroot 2015 my screen was visible and now with yocto 2022 my screen is not visible.


    I use these two LVDS display models: ETM070081BDH6 and ETM0700ASEDH6


    Can you help us to solve this dtb issue?


    My client's machines require an urgent upgrade and since I can't solve the dtb problem, I can't give them a solution.


    Thank you very much

  • I add more information:


    Device-tree used: armstonea9q.dtb


    Sources attached.

    BOARD

    U-Boot 2018.03 (Sep 21 2022 - 16:43:03 +0000) for F&S


    CPU: Freescale i.MX6Q rev1.3, 996 MHz (running at 792 MHz)

    CPU: Extended Commercial temperature grade (-20C to 105C)

    Reset: WDOG

    Board: armStoneA9 Rev 1.10 (LAN, 4x DRAM)

    I2C: ready

    DRAM: 1 GiB

    NAND: 256 MiB

    MMC: FSL_SDHC: 0

    Loading Environment from NAND... OK

    In: serial

    Out: serial

    Err: serial

    Net: FEC [PRIME]

    Normal Boot

    Hit any key to stop autoboot: 0

  • Hello Alfred,


    sdcard image has all device trees on the first partition. Normally you can use our default device trees. Over the time our experience shows that our customer use different combination of boot divice. E.g. it is possible to configure our bootloader to use device tree from NAND or USB and other images like linux kernel and rootfs from eMMC. Also we desided to add some more binaries to our sdcard tar ball. But they are same default images like in our bsp binaries folder.


    If you want to use several device trees for armstonea9 you can e.g compile the binary manuelly and add (copy) it inside the sdcard image. This can be done by mounting the image as loopback device. You will find more information online. (e.g. on wikipedia) It should be a easiest and fastest way from my point of view.


    For production it can be more better way to add the divice tree to the machine file fsimx6.conf in .../meta-fus/conf/machine directory and add the your device tree to the kernel. For this it need to:

    • Extend the KERNEL_DEVICETREE enviroment with your device tree
    • Add the patch to recipe ../meta-fus/recipse-kernel/linux/linux-fus.bb
    • (Re)compile the kernel e.g. commado bitbake -c compile linux-fus -f
    • Build your image again. E.g. bitbake fus-image-std
    • Boot the board and go to the bootloader command line interface
    • Change the environment bootfd to bootloader name, which should be used. E.g. cmd 'editenv bootfdt' allows to change the env. value.
    • Optional use 'saveenv' command to write the new value to the persistent memory.

    Hope this helps.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • In the past, Linux did not use device trees. There used to be a board support file directly in the kernel that defined the devices that were available on that board. So there was one board support file for each board. This was very inflexible and required recompilation of the whole kernel if some device parameters like display resolution or timings changed.


    In later kernels, the hardware description of a board was moved to the device tree. So now the device tree defines what hardware is available on the board and we only need a board-specific device tree file. The kernel can remain unchanged all the time. The switch to device trees on the fsimx6 architecture was done with the V3.0 release, hence the new major version number.


    If you look at the device tree file armstonea9q.dts, you can see at the beginning some settings that you can change. Specifically the display configuration can be defined/modified there. You can define what displays (up to four) you actually use (CONFIG_ARMSTONEA9_MXCFB<n>) and what display parameters should be used for each of the displays (for example CONFIG_ARMSTONEA9_LVDS0_*). There are quite some long comments that should explain what you need to set. Then you have to recompile the device tree and install the new dtb file on the board.


    However NXP was not very consistent when doing the switch to device trees. So the settings for LVDS and HDMI are completely done in the device tree, but the settings for the RGB-Interface are given in the device driver in file drivers/video/fbdev/mxc/mxc_lcdif.c. There are several settings provided (see the array lcdif_modedb at the beginning of the file) and you simply select one of the predefined settings by giving the Mode String, for example:


    CONFIG_ARMSTONEA9_LCD_MODE_STR "LCD-ET070080"


    Usually you can use one of the given timings. Only if your display has completely different settings, then you need to add a new entry to this table using a new Mode String, and then you have to recompile and reinstall the kernel, too. Of course you have to use this new Mode String in your device tree then.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Hello,


    OK, But....


    why in the old SDs: sdcard-fsimx6-B2015 there was no dtb file?

    Neither is the dtb integrated in the old kernel (uImage (kernel 3 - 2015)).


    I need to know this information to try to incorporate all the LDVS parameters in the current devicetree because in the Yocto-2022 and yocto-2024 my LVDS display does not work. If I could access the devicetree of our Buildroot 2015 image that we have on the production machines I could copy the LVDS parameters, but I can't find the dtb anywhere.

  • There was no device tree back then. So you cannot extract the data from it. The resolution and timings were given as C-code in some struct in the board support file and is now hidden somehwere deep inside the large kernel image (which is gzipped, too, so no chance to find it). You need the source code from back then. Or try to create new timings from the data sheet of the display.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.