Skip to main content
Visitor II
February 27, 2020
Solved

Booting linux kernel with different device tree?

  • February 27, 2020
  • 3 replies
  • 3524 views

So it looks like Uboot supports /boot/extlinux/extlinux.conf boot menu file on STM32MP157-DK2 board? But does it support FDT entry used to specify device tree file to use? Or I have to rebuild the kernel anytime when I want to make small changes to device tree?

-albertr

    This topic has been closed for replies.
    Best answer by albertr

    Found the problem - /extlinux/extlinux.conf file had some whitespaces after name of the kernel image file, like:

    "KERNEL /uImage "

    Doh! It's all good and working after removing these whitespaces ;)

    Still not sure why it complies about power adapter, if anyone has any ideas, let me know.

    -albertr

    3 replies

    Technical Moderator
    February 28, 2020

    Hi @albertr​ 

    No need to rebuild full kernel just for a Device Tree update.

    Please refer to https://wiki.st.com/stm32mpu/wiki/How_to_compile_the_device_tree_with_the_Developer_Package

    Once built, you copy dtb on the target with scp and you can manage to call it by editing /boot/extlinux/extlinux.conf, creating your own boot entry in menu or overidding existing one.

    Hope it help,

    Olivier

    albertrAuthor
    Visitor II
    February 28, 2020

    Oliver, thanks! So according to this page FDT is supported, that's what I was looking for, thanks again!

    -albertr

    albertrAuthor
    Visitor II
    March 1, 2020

    Hi @Community member​ 

    I have a little problem here... Re-compiled the kernel from the latest 1.2.0 source (2020-02-19), but for some reason having a problem with reading it off SDCARD, please see below:

    U-Boot SPL 2018.11-stm32mp-r3 (Oct 10 2019 - 11:26:18 -0400)

    Model: STMicroelectronics STM32MP157C-DK2 Discovery Board

    RAM: DDR3-1066/888 bin G 1x4Gb 533MHz v1.45

    Trying to boot from MMC1

    U-Boot 2018.11-stm32mp-r3 (Oct 10 2019 - 11:26:18 -0400)

    CPU: STM32MP157CAC Rev.B

    Model: STMicroelectronics STM32MP157C-DK2 Discovery Board

    Board: stm32mp1 in basic mode (st,stm32mp157c-dk2)

    Board: MB1272 Var2 Rev.C-01

    DRAM: 512 MiB

    Clocks:

    - MPU : 650 MHz

    - MCU : 208.878 MHz

    - AXI : 266.500 MHz

    - PER : 24 MHz

    - DDR : 533 MHz

    ****************************************************

    *      WARNING 1.5mA power supply detected       *

    *    Current too low, use a 3A power supply!     *

    ****************************************************

    NAND: 0 MiB

    MMC:  STM32 SDMMC2: 0, STM32 SDMMC2: 1

    Loading Environment from EXT4... ** File not found /uboot.env **

    ** Unable to read "/uboot.env" from mmc0:4 **

    In:   serial

    Out:  serial

    Err:  serial

    Net:  eth0: ethernet@5800a000

    Hit any key to stop autoboot: 0

    Boot over mmc0!

    Saving Environment to EXT4... File System is consistent

    Unsupported feature metadata_csum found, not writing.

    ** Unable to write "/uboot.env" from mmc0:4 **

    Failed (1)

    switch to partitions #0, OK

    mmc0 is current device

    Scanning mmc 0:4...

    Found /extlinux/extlinux.conf

    Retrieving file: /extlinux/extlinux.conf

    1092 bytes read in 1 ms (1 MiB/s)

    Select the boot mode

    1:     CubeMX

    2:     stm32mp157c-dk2-m4-examples-sdcard

    3:     stm32mp157c-dk2-sdcard

    4:     stm32mp157c-dk2-a7-examples-sdcard

    Enter choice: 1:       CubeMX

    Retrieving file: /uImage

    ** File not found /uImage      **

    Skipping CubeMX for failure retrieving kernel

    2:     stm32mp157c-dk2-m4-examples-sdcard

    Retrieving file: /uImage.old

    ** File not found /uImage.old                                                                       **

    Skipping stm32mp157c-dk2-m4-examples-sdcard                                                         for failure retrieving kernel

    3:     stm32mp157c-dk2-sdcard

    Retrieving file: /uImage.old

    6598512 bytes read in 287 ms (21.9 MiB/s)

    append: root=/dev/mmcblk0p6 rootwait rw console=ttySTM0,115200 console=tty0 fbcon=rotate:3

    Retrieving file: /stm32mp157c-dk2.dtb

    68852 bytes read in 4 ms (16.4 MiB/s)

    ## Booting kernel from Legacy Image at c2000000 ...

    Not sure what is going on here, the boot partition has bootfs label and is formatted as EXT4 as you can see below:

    root@stm32mp1:~# ls -la /dev/disk/by-partlabel | grep boot

    lrwxrwxrwx 1 root root 15 Feb 29 22:45 bootfs -> ../../mmcblk0p4

    root@stm32mp1:~# mount | grep boot

    /dev/mmcblk0p4 on /boot type ext4 (rw,noatime,sync)

    Here's the list of files there:

    root@stm32mp1:~# ls -la /boot

    total 13162

    drwxr-xr-x 4 root root   1024 Feb 29 20:29 .

    drwxr-xr-x 20 root root   4096 Feb 29 10:45 ..

    drwxr-xr-x 2 root root   1024 Nov 20 11:34 extlinux

    drwx------ 2 root root  12288 Oct 8 20:24 lost+found

    -rw-rw-r-- 1 root root  68900 Nov 22 17:11 stm32mp157c-dk2-a7-examples.dtb

    -rw-r--r-- 1 root root  69558 Mar 9 2018 stm32mp157c-dk2-a7-examples.dtb.old

    -rw-r--r-- 1 root root  77256 Feb 29 18:50 stm32mp157c-dk2-cubemx.dtb

    -rw-r--r-- 1 root root  33472 Feb 29 17:46 stm32mp157c-dk2-cubemx.dts

    -rw-r--r-- 1 root root 101035 Feb 29 18:58 stm32mp157c-dk2-cubemx.dtsi

    -rw-rw-r-- 1 root root  69823 Nov 22 17:11 stm32mp157c-dk2-m4-examples.dtb

    -rw-r--r-- 1 root root  70485 Mar 9 2018 stm32mp157c-dk2-m4-examples.dtb.old

    -rw-rw-r-- 1 root root  68852 Nov 22 17:11 stm32mp157c-dk2.dtb

    -rw-r--r-- 1 root root  69510 Mar 9 2018 stm32mp157c-dk2.dtb.old

    -rw-rw-r-- 1 root root 6227256 Feb 29 14:29 uImage

    -rw-rw-r-- 1 root root 6598512 Nov 22 17:00 uImage.old

    and here's the content of /boot/extlinux/extlinux.conf menu file:

    root@stm32mp1:~# cat /boot/extlinux/extlinux.conf

    # Generic Distro Configuration file generated by OpenEmbedded

    menu title Select the boot mode

    TIMEOUT 5

    DEFAULT CubeMX

    LABEL CubeMX

           KERNEL /uImage     

           FDT /stm32mp157c-dk2-cubemx.dtb

           APPEND root=/dev/mmcblk0p6 rootwait rw console=ttySTM0,115200 console=tty0 fbcon=rotate:3

    LABEL stm32mp157c-dk2-m4-examples-sdcard                                                        

           KERNEL /uImage.old                                                                      

           FDT /stm32mp157c-dk2-m4-examples.dtb                                                    

           APPEND root=/dev/mmcblk0p6 rootwait rw console=ttySTM0,115200 console=tty0 fbcon=rotate:3

    LABEL stm32mp157c-dk2-sdcard

           KERNEL /uImage.old

           FDT /stm32mp157c-dk2.dtb

           APPEND root=/dev/mmcblk0p6 rootwait rw console=ttySTM0,115200 console=tty0 fbcon=rotate:3

    LABEL stm32mp157c-dk2-a7-examples-sdcard

           KERNEL /uImage.old

           FDT /stm32mp157c-dk2-a7-examples.dtb

           APPEND root=/dev/mmcblk0p6 rootwait rw console=ttySTM0,115200 console=tty0 fbcon=rotate:3

    Any ideas?

    -albertr

    albertrAuthor
    Visitor II
    March 1, 2020

    So I have updated u-boot to the latest patched version from 1.2.0 software release (2020-02-19) and disabled metadata_csum on bootfs filesystem, but it's still not finding the kernel file.

    I'm also not user what "WARNING 1.5mA power supply detected" means, since I'm using a good quality 10A USB-C power supply. However, I do have a little 3V coin battery attached for backup RTC time, does it measure its power supply?

    U-Boot SPL 2018.11-stm32mp-r4 (Feb 29 2020 - 23:11:25 -0500)

    Model: STMicroelectronics STM32MP157C-DK2 Discovery Board

    RAM: DDR3-1066/888 bin G 1x4Gb 533MHz v1.45

    Trying to boot from MMC1

    U-Boot 2018.11-stm32mp-r4 (Feb 29 2020 - 23:11:25 -0500)

    CPU: STM32MP157CAC Rev.B

    Model: STMicroelectronics STM32MP157C-DK2 Discovery Board

    Board: stm32mp1 in basic mode (st,stm32mp157c-dk2)

    Board: MB1272 Var2 Rev.C-01

    DRAM: 512 MiB

    Clocks:

    - MPU : 650 MHz

    - MCU : 208.878 MHz

    - AXI : 266.500 MHz

    - PER : 24 MHz

    - DDR : 533 MHz

    ****************************************************

    *      WARNING 1.5mA power supply detected       *

    *    Current too low, use a 3A power supply!     *

    ****************************************************

    NAND: 0 MiB

    MMC:  STM32 SDMMC2: 0, STM32 SDMMC2: 1

    Loading Environment from EXT4... ** File not found /uboot.env **

    ** Unable to read "/uboot.env" from mmc0:4 **

    In:   serial

    Out:  serial

    Err:  serial

    Net:  eth0: ethernet@5800a000

    Hit any key to stop autoboot: 0

    Boot over mmc0!

    Saving Environment to EXT4... File System is consistent

    update journal finished

    done

    OK

    switch to partitions #0, OK

    mmc0 is current device

    Scanning mmc 0:4...

    Found /extlinux/extlinux.conf

    Retrieving file: /extlinux/extlinux.conf

    1092 bytes read in 1 ms (1 MiB/s)

    Select the boot mode

    1:     CubeMX

    2:     stm32mp157c-dk2-m4-examples-sdcard                                                        

    3:     stm32mp157c-dk2-sdcard

    4:     stm32mp157c-dk2-a7-examples-sdcard

    Enter choice: 1:       CubeMX

    Retrieving file: /uImage     

    ** File not found /uImage      **

    Skipping CubeMX for failure retrieving kernel

    2:     stm32mp157c-dk2-m4-examples-sdcard                                                        

    Retrieving file: /uImage.old                                                                      

    ** File not found /uImage.old                                                                       **

    Skipping stm32mp157c-dk2-m4-examples-sdcard                                                         for failure retrieving kernel

    3:     stm32mp157c-dk2-sdcard

    Retrieving file: /uImage.old

    6598512 bytes read in 289 ms (21.8 MiB/s)

    append: root=/dev/mmcblk0p6 rootwait rw console=ttySTM0,115200 console=tty0 fbcon=rotate:3

    Retrieving file: /stm32mp157c-dk2.dtb

    68852 bytes read in 4 ms (16.4 MiB/s)

    ## Booting kernel from Legacy Image at c2000000 ...

      Image Name:  Linux-4.19.49

      Created:     2019-11-22 21:41:22 UTC

      Image Type:  ARM Linux Kernel Image (uncompressed)

      Data Size:   6598448 Bytes = 6.3 MiB

      Load Address: c2000040

      Entry Point: c2000040

      Verifying Checksum ... OK

    ## Flattened Device Tree blob at c4000000

      Booting using the fdt blob at 0xc4000000

      XIP Kernel Image ... OK

      Using Device Tree in place at c4000000, end c4013cf3

    Starting kernel ...

    -albertr

    Visitor II
    May 20, 2021

    Hello !

    I'm trying to boot an STM32MP157a-dk1 using an image that i made with build-root but when i boot i got this message :

    Unable to write "/uboot.env" from mmc0:4 0693W00000AP51iQAD.png

    Visitor II
    October 20, 2021

    Hello!

    change buildroot/configs/stm32mp157a_dk1_defconfig file

    BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^metadata_csum"