karo-electronics / karo-tx-uboot

U-Boot for TXCOM modules
GNU General Public License v2.0
6 stars 5 forks source link

images built from qs93 (i.MX93) defconfigs not working on target #14

Open LeSpocky opened 3 months ago

LeSpocky commented 3 months ago

Got a QS93-5210-Evalkit and tried to build this U-Boot tree with proper cross-toolchain only, without a BSP. The images produced do not work on the target board. Details below.

Steps to reproduce:

  1. clone this repo
  2. prepare: PATH="/path/to/toolchain:${PATH}" CROSS_COMPILE=aarch64-v8a-linux-gnu- BL31=/path/to/imx93-bl31.bin BINMAN_INDIRS=/path/to/firmware/ddr/synopsys make O=/path/to/build/u-boot/karo qs93-5210_defconfig
  3. build: PATH="/path/to/toolchain:${PATH}" CROSS_COMPILE=aarch64-v8a-linux-gnu- BL31=/path/to/imx93-bl31.bin BINMAN_INDIRS=/path/to/firmware/ddr/synopsys make O=/path/to/build/u-boot/karo
  4. change jumper to USB boot mode
  5. go to build dir: cd /path/to/build/u-boot/karo
  6. use uuu to transfer and start: /path/to/uuu flash.bin
  7. some output on serial console, but does not boot into U-Boot shell

Guesswork: Building https://github.com/karo-electronics/karo-nxp-bsp from scratch, finding the file flash.bin in some U-Boot build folder and using that with uuu actually works. So something in that Yocto BSP is different. Looks like Yocto clones this repo and with changeset https://github.com/karo-electronics/meta-karo-nxp/commit/0dcfb6e046b2a271ae3ab5083d80f6fec4cbf74d overwrites at least the file arch/arm/dts/imx93-karo-u-boot.dtsi … and probably more.

Just porting over those changes leads to a failing build.

LeSpocky commented 3 months ago

Just porting over those changes leads to a failing build.

At least with my first attempts. Meanwhile got it building successfully after porting the .dtsi changes. However when loading U-Boot with uuu the following error appears on serial console:

U-Boot SPL 2022.04 (May 06 2024 - 11:26:29 +0000)
SOC: 0xa1009300
LC: 0x2040010
M33 prepare ok
Normal Boot
Trying to boot from BOOTROM
Boot Stage: USB boot
Find img info 0x0000000088000000, size 288
Download 724992, Total size 726016
NOTICE:  TRDC init done
NOTICE:  BL31: v2.10.0  (release):v2.10-20240315-1
NOTICE:  BL31: Built : 14:36:53, May  3 2024

U-Boot 2022.04 (May 06 2024 - 11:26:29 +0000)

CPU:   i.MX93(52) rev1.1 1700 MHz (running at 1692 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 35C
Reset cause: POR (0x1)
Model: Ka-Ro electronics GmbH QS93-5210 (NXP i.MX93) solder-in module on QSBASE93 baseboard
DRAM:  1 GiB
Core:  199 devices, 20 uclasses, devicetree: separate
MMC:   fsl_esdhc mmc@428b0000: no card present
FSL_SDHC: 0 (eMMC), FSL_SDHC: 1
Loading Environment from MMC... OK
Fail to setup video link
In:    serial
Out:   serial
Err:   serial

BuildInfo:
  - ELE firmware version 0.0.11-33cda99a

UID: 0x32a65ee5 0x85431aaa 0xfc3798bb 0x85de3651
loading FDT from mmc 0:1 'imx93-qs93-5210.dtb'
** No partition table - mmc 0 **
Couldn't find partition mmc 0:1
'imx93-qs93-5210.dtb' does not exist
Failed to load fdt file: 'imx93-qs93-5210.dtb': -2
Net:   Using MAC addr from fuse
MAC addr: 00:0c:c6:0e:50:42
Using MAC addr from fuse
MAC addr: 00:0c:c6:0e:50:43
eth1: ethernet@42890000, eth0: ethernet@428a0000
Boot from USB for uuu
Hit any key to stop autoboot:  0 

Looks like the partitions are not found. I guess it is not only the .dtsi but also more pieces from the defconfig like CONFIG_CMD_GPT which are changed in Yocto BSP? Please port over those changes to U-Boot so it is possible to use this without Yocto.

lw-karo commented 3 months ago

Alexander Dahl @.***> wrote:

Just porting over those changes leads to a failing build.

At least with my first attempts. Meanwhile got it building successfully after porting the .dtsi changes. However when loading U-Boot with uuu the following error appears on serial console:

U-Boot SPL 2022.04 (May 06 2024 - 11:26:29 +0000)
SOC: 0xa1009300
LC: 0x2040010
M33 prepare ok
Normal Boot
Trying to boot from BOOTROM
Boot Stage: USB boot
Find img info 0x0000000088000000, size 288
Download 724992, Total size 726016
NOTICE:  TRDC init done
NOTICE:  BL31: v2.10.0  (release):v2.10-20240315-1
NOTICE:  BL31: Built : 14:36:53, May  3 2024

U-Boot 2022.04 (May 06 2024 - 11:26:29 +0000)

CPU:   i.MX93(52) rev1.1 1700 MHz (running at 1692 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 35C
Reset cause: POR (0x1)
Model: Ka-Ro electronics GmbH QS93-5210 (NXP i.MX93) solder-in module on QSBASE93 baseboard
DRAM:  1 GiB
Core:  199 devices, 20 uclasses, devicetree: separate
MMC:   fsl_esdhc ***@***.***: no card present
FSL_SDHC: 0 (eMMC), FSL_SDHC: 1
Loading Environment from MMC... OK
Fail to setup video link
In:    serial
Out:   serial
Err:   serial

BuildInfo:
  - ELE firmware version 0.0.11-33cda99a

UID: 0x32a65ee5 0x85431aaa 0xfc3798bb 0x85de3651
loading FDT from mmc 0:1 'imx93-qs93-5210.dtb'
** No partition table - mmc 0 **
Couldn't find partition mmc 0:1
'imx93-qs93-5210.dtb' does not exist
Failed to load fdt file: 'imx93-qs93-5210.dtb': -2
Net:   Using MAC addr from fuse
MAC addr: 00:0c:c6:0e:50:42
Using MAC addr from fuse
MAC addr: 00:0c:c6:0e:50:43
eth1: ***@***.***, eth0: ***@***.***
Boot from USB for uuu
Hit any key to stop autoboot:  0 

Looks like the partitions are not found. I guess it is not only the .dtsi but also more pieces from the defconfig like CONFIG_CMD_GPT which are changed in Yocto BSP? Please port over those changes to U-Boot so it is possible to use this without Yocto.

The GPT won't appear magically out of thin air. You need to issue the proper 'gpt write' command to create it. Please refer to the 'uuu.auto' script created by our yocto BSP.

Lothar Waßmann --


Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10 Geschäftsführer: Matthias Kaussen Handelsregistereintrag: Amtsgericht Aachen, HRB 4996

www.karo-electronics.de | @.***


LeSpocky commented 3 months ago

Hello Lothar,

thanks for your quick reply. I suspect you did not understand what I'm trying to achieve here? See below.

The GPT won't appear magically out of thin air. You need to issue the proper 'gpt write' command to create it.

  1. The board is still in stock configuration, so the partitions are already present. I did not change any content of the eMMC. Currently I just want to recreate a working U-Boot without the whole Yocto BSP.

  2. Issuing gpt write in U-Boot is not possible, because CONFIG_CMD_GPT is not enabled in the defconfig present in this U-Boot fork.

Please refer to the 'uuu.auto' script created by our yocto BSP. Lothar Waßmann --

Nice to know. But even with that knowledge I would have to change U-Boot .config first. We could argue what has to go into the defconfig and what not. My expectation is the defconfig in U-Boot has everything to successfully boot the board, which is currently not possible without changes from another project.

The reason for this is: you patch two things in your (Yocto based) BSP, which can be done directly in this U-Boot tree. Having that kind of changes (.dtsi) and configuration (defconfig) in two different places seems like more work for you and your users?

Regarding the defconfig this might be okay, changing the .config is easy enough. However the dtsi is not changed easily from the build system, especially when looking at the amount of changes done. Maybe the ticket subject was a little misleading?

(Disclaimer: We want to use the Ka-Ro SoM with a different BSP than Yocto, because we have long term experience with that one and near zero experience with Yocto. Of course the U-Boot configuration somehow depends on the actual rootfs, boot method etc. and when progressing further we will use our own, but the dtsi problem still stands.)

Greets Alex