[PATCH] config: imx: Add support for Phytec's phycore imx8mm running SDP gadget
Lukasz Majewski
lukma at denx.de
Wed Aug 21 12:10:19 CEST 2024
Hi Benjamin,
> On 19.08.24 16:36, Lukasz Majewski wrote:
> > Hi Benjamin,
> >
> >> Hi Lukasz,
> >> did you test this? It does not work for me. When I try it, the
> >> U-Boot hangs in SPL. Here is what I got:
> >> From Host:
> >>
> >> bhahn at llp-hahn:~/git-repos/u-boot$ sudo uuu -b spl
> >> build/mini/flash.bin uuu (Universal Update Utility) for nxp imx
> >> chips -- lib1.4.193
> >>
> >> Success 0 Failure 0
> >>
> >>
> >> 7:3 1/ 1 [=================100%=================] SDP: boot -f
> >> build/mini/flash.bin
> >>
> > Please test this branch:
> > https://github.com/lmajewski/u-boot/commits/phycore-imx8mm-qspi-nvme
> >
> > On HOST:
> > uuu -v -b qspi ~/work/DENX/u-boot/flash.bin
> >
> > Stop on u-boot prompt.
> >
> > u-boot=> fastboot 0
> >
> > QSPI is flashed via USB - however - I've noticed that there are some
> > flipped bits on USB transmission when I do compare it with tftp
> > transfer.
> >
> > This needs to be investigated, however seems to be an orthogonal
> > problem from QSPI boot support.
>
> I tested your branch. Your commands seem to work. Here is the log:
>
>
> U-Boot SPL 2024.10-rc2-g718c0f57cacb (Aug 21 2024 - 10:12:26 +0200)
> WDT: Started watchdog at 30280000 with servicing every 1000ms (60s
> timeout) Trying to boot from USB SDP
> SDP: initialize...
> SDP: handle requests...
> Downloading file of size 984992 to 0x40400000... done
> Jumping to header at 0x40400000
> Header Tag is not an IMX image
> Found header at 0x40424a00
> NOTICE: BL31: v2.6(release):lf-5.15.71-2.2.1-0-gf4540f956
> NOTICE: BL31: Built : 06:10:48, Apr 13 2023
>
>
> U-Boot 2024.10-rc2-g718c0f57cacb (Aug 21 2024 - 10:12:26 +0200)
>
> CPU: Freescale i.MX8MMQ rev1.0 1600 MHz (running at 1200 MHz)
> CPU: Industrial temperature grade (-40C to 105C) at 42C
> Reset cause: POR
> Model: PHYTEC phyBOARD-Polis-i.MX8MM RDK
> DRAM: 2 GiB
> Core: 114 devices, 28 uclasses, devicetree: separate
> WDT: Started watchdog at 30280000 with servicing every 1000ms (60s
> timeout) MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
> Loading Environment from MMC... *** Warning - bad CRC, using default
> environment
>
> Reading from MMC(2)... In: serial at 30880000
> Out: serial at 30880000
> Err: serial at 30880000
> Net: eth0: ethernet at 30be0000
> Hit any key to stop autoboot: 0
> u-boot=> fastboot 0
> Starting download of 1194400 bytes
> .........
> downloading of 1194400 bytes finished
> Unknown command 'qspihdr' - try 'help'
> SF: Detected n25q256ax1 with page size 256 Bytes, erase size 64 KiB,
> total 32 MiB
> SF: 1245184 bytes @ 0x0 Erased: OK
> device 0 offset 0x0, size 0x1239a0
> SF: 1194400 bytes @ 0x0 Written: OK
>
Ok.
>
> I noticed this message in the log though:
>
> Unknown command 'qspihdr' - try 'help'
>
The same "Unknown command...." was also present on my site.
>
> Booting over qspi does not work. Probably because it is not a
> dedicated qspi flash image (does not get flashed with the correct
> offset).
Are you using imx8mm or imx8mn ?
Please check if you have:
https://github.com/lmajewski/u-boot/commit/d33a67756c7a29618ececcfd9a9d2def3b1f9af0
on your board added.
If possible - you can use tftp to download the flash.bin to your board?
setenv serverip 10.0.0.81;dhcp flash-fspi.bin; sf probe; sf
erase 0x0 0x200000; sf write 0x40480000 0x0 0x200000
sf erase 0x400000 0x100000
>
> About some bits getting flipped:
> For me it is not just some bits getting flipped. I read back the
> image from /dev/mtd0 with the dd command and compare the hexdump
> ouput to the original image. Theoretically it should identical, but
> that is not the case. There are not just some flipped bits, but the
> Image flashed via uuu looks like a completely different image.
Ok - strange...
Then uuu (and USB) needs to be debugged.
> I also
> tested flashing with dd in linux and in U-Boot with loading the image
> via fatload from the sdcard and flashing it with "sf update
> ${loadaddr} 0 ${filesize}". With those two flashing methods I get an
> Image that is identical to the original Image when I read it back, as
> I would expect.
Ok.
Just to be 100% sure - are you able to boot from QSPI with the
flash.bin build from
https://github.com/lmajewski/u-boot/commits/phycore-imx8mm-qspi-nvme
>
> Benjamin
>
> >
> >> Log on target:
> >>
> >> U-Boot SPL 2024.10-rc2-00131-g0303f2240376 (Aug 19 2024 - 15:18:36
> >> +0200) WDT: Started watchdog at 30280000 with servicing every 1000ms
> >> (60s timeout) Trying to boot from USB SDP
> >>
> >> U-Boot SPL 2024.10-rc2-00131-g0303f2240376 (Aug 19 2024 - 15:18:36
> >> +0200) WDT: Started watchdog at 30280000 with servicing every 1000ms
> >> (60s timeout) Trying to boot from USB SDP
> >>
> >> To me it looks like there are some changes missing to get this
> >> feature to work.
> >> You can take a look at my commits where I added this feature for
> >> imx8mp. 199229e28b2b2da57c52ee46452f930785cf6002 ("phycore-imx8mp:
> >> add USB mass storage support")
> >> 8dcf1df48dff339b172d1bce2a38a965ee4aafca ("phycore-imx8mp: add
> >> support for booting and flashing emmc via UUU")
> >>
> >>
> >> Here are the changes I needed to do on top of your patch to get
> >> this feature to work for mini:
> >>
> >> diff --git a/arch/arm/dts/imx8mm-phyboard-polis-rdk-u-boot.dtsi
> >> b/arch/arm/dts/imx8mm-phyboard-polis-rdk-u-boot.dtsi
> >> index 516e52e1f5de..cdaff2f8da9b 100644
> >> --- a/arch/arm/dts/imx8mm-phyboard-polis-rdk-u-boot.dtsi
> >> +++ b/arch/arm/dts/imx8mm-phyboard-polis-rdk-u-boot.dtsi
> >> @@ -69,3 +69,8 @@
> >> &wdog1 {
> >> bootph-pre-ram;
> >> };
> >> +
> >> +&usbotg1 {
> >> + dr_mode = "peripheral";
> >> + u-boot,dm-spl;
> >> +};
> >> diff --git a/board/phytec/phycore_imx8mm/phycore-imx8mm.c
> >> b/board/phytec/phycore_imx8mm/phycore-imx8mm.c
> >> index 06cffbca3a69..00fdd4edbe36 100644
> >> --- a/board/phytec/phycore_imx8mm/phycore-imx8mm.c
> >> +++ b/board/phytec/phycore_imx8mm/phycore-imx8mm.c
> >> @@ -45,6 +45,10 @@ int board_late_init(void)
> >> case MMC3_BOOT:
> >> env_set_ulong("mmcdev", 2);
> >> break;
> >> + case USB_BOOT:
> >> + printf("Detect USB boot. Will enter fastboot
> >> mode!\n");
> >> + env_set_ulong("dofastboot", 1);
> >> + break;
> >> default:
> >> break;
> >> }
> >> diff --git a/configs/phycore-imx8mm_defconfig
> >> b/configs/phycore-imx8mm_defconfig
> >> index beb2f1e9f031..e8d3ffe8c05d 100644
> >> --- a/configs/phycore-imx8mm_defconfig
> >> +++ b/configs/phycore-imx8mm_defconfig
> >> @@ -31,7 +31,7 @@ CONFIG_FIT_EXTERNAL_OFFSET=0x3000
> >> CONFIG_SPL_LOAD_FIT=y
> >> CONFIG_OF_SYSTEM_SETUP=y
> >> CONFIG_USE_BOOTCOMMAND=y
> >> -CONFIG_BOOTCOMMAND="mmc dev ${mmcdev}; if mmc rescan; then if run
> >> loadimage; then run mmcboot; else run netboot; fi; fi;"
> >> +CONFIG_BOOTCOMMAND="if test ${dofastboot} = 1; then fastboot 0;
> >> fi; mmc dev ${mmcdev}; if mmc rescan; then if run loadimage; then
> >> run mmcboot; else run netboot; fi; fi;"
> >> CONFIG_DEFAULT_FDT_FILE="oftree"
> >> CONFIG_SYS_CBSIZE=2048
> >> CONFIG_SYS_PBSIZE=2074
> >> @@ -153,3 +153,11 @@ CONFIG_CI_UDC=y
> >> CONFIG_SDP_LOADADDR=0x40400000
> >> CONFIG_SPL_USB_SDP_SUPPORT=y
> >> CONFIG_IMX_WATCHDOG=y
> >> +CONFIG_CMD_USB_SDP=y
> >> +CONFIG_FASTBOOT_FLASH=y
> >> +CONFIG_FASTBOOT_FLASH_MMC_DEV=2
> >> +CONFIG_FASTBOOT_MMC_BOOT_SUPPORT=y
> >> +CONFIG_FASTBOOT_MMC_BOOT1_NAME="mmc2boot0"
> >> +CONFIG_FASTBOOT_MMC_BOOT2_NAME="mmc2boot1"
> >> +CONFIG_FASTBOOT_MMC_USER_SUPPORT=y
> >> +CONFIG_FASTBOOT_MMC_USER_NAME="mmc2"
> >> diff --git a/include/configs/phycore_imx8mm.h
> >> b/include/configs/phycore_imx8mm.h
> >> index dd7cfdba52d2..f3a750089dd5 100644
> >> --- a/include/configs/phycore_imx8mm.h
> >> +++ b/include/configs/phycore_imx8mm.h
> >> @@ -26,6 +26,11 @@
> >> "fdt_addr=0x48000000\0" \
> >> "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
> >> "ip_dyn=yes\0" \
> >> + "dofastboot=0\0" \
> >> + "fastboot_raw_partition_bootloader=66 8128\0" \
> >> + "fastboot_raw_partition_all=0 4194304\0" \
> >> + "emmc_dev=2\0" \
> >> + "sd_dev=1\0" \
> >> "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
> >> "mmcpart=1\0" \
> >> "mmcroot=2\0" \
> >>
> >>
> >> With these changes booting via SDP with uuu and flashing emmc with
> >> uuu should work. Sadly I did not find a way to be able to flash
> >> eMMC and SD-Card over uuu with the same bootloader because it was
> >> necessary for me to specify the device to flash in
> >> CONFIG_FASTBOOT_FLASH_MMC_DEV.
> >>
> >> with kind regards,
> >> Benjamin
> >>
> >> On 15.08.24 10:45, Lukasz Majewski wrote:
> >>> After this change it would be possible to boot SDP gadget when
> >>> Phytec's Phycore imx8mm module has USB ROM boot selected.
> >>>
> >>> With this change it shall be possible to flash eMMC/SD card
> >>> content with uuu program.
> >>>
> >>> Signed-off-by: Lukasz Majewski <lukma at denx.de>
> >>> ---
> >>> configs/phycore-imx8mm_defconfig | 18 +++++++++++++++++-
> >>> 1 file changed, 17 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/configs/phycore-imx8mm_defconfig
> >>> b/configs/phycore-imx8mm_defconfig index 6748e6fafb..beb2f1e9f0
> >>> 100644 --- a/configs/phycore-imx8mm_defconfig
> >>> +++ b/configs/phycore-imx8mm_defconfig
> >>> @@ -25,6 +25,7 @@ CONFIG_SPL=y
> >>> CONFIG_ENV_OFFSET_REDUND=0x3E0000
> >>> CONFIG_SYS_LOAD_ADDR=0x40480000
> >>> CONFIG_PCI=y
> >>> +# CONFIG_ANDROID_BOOT_IMAGE is not set
> >>> CONFIG_FIT=y
> >>> CONFIG_FIT_EXTERNAL_OFFSET=0x3000
> >>> CONFIG_SPL_LOAD_FIT=y
> >>> @@ -57,6 +58,7 @@ CONFIG_SYS_I2C_EEPROM_ADDR_LEN=2
> >>> CONFIG_SYS_EEPROM_SIZE=4096
> >>> CONFIG_SYS_EEPROM_PAGE_WRITE_BITS=5
> >>> CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS=5
> >>> +# CONFIG_CMD_BIND is not set
> >>> CONFIG_CMD_CLK=y
> >>> CONFIG_CMD_FUSE=y
> >>> CONFIG_CMD_GPIO=y
> >>> @@ -86,6 +88,10 @@ CONFIG_SPL_CLK_COMPOSITE_CCF=y
> >>> CONFIG_CLK_COMPOSITE_CCF=y
> >>> CONFIG_SPL_CLK_IMX8MM=y
> >>> CONFIG_CLK_IMX8MM=y
> >>> +CONFIG_USB_FUNCTION_FASTBOOT=y
> >>> +CONFIG_FASTBOOT_BUF_ADDR=0x42800000
> >>> +CONFIG_FASTBOOT_BUF_SIZE=0x20000000
> >>> +CONFIG_FASTBOOT_UUU_SUPPORT=y
> >>> CONFIG_MXC_GPIO=y
> >>> CONFIG_DM_I2C=y
> >>> CONFIG_MISC=y
> >>> @@ -116,7 +122,6 @@ CONFIG_FEC_MXC=y
> >>> CONFIG_MII=y
> >>> CONFIG_NVME_PCI=y
> >>> CONFIG_PCIE_DW_IMX=y
> >>> -CONFIG_PHY=y
> >>> CONFIG_PHY_IMX8M_PCIE=y
> >>> CONFIG_PINCTRL=y
> >>> CONFIG_SPL_PINCTRL=y
> >>> @@ -136,4 +141,15 @@ CONFIG_SYSRESET_PSCI=y
> >>> CONFIG_SYSRESET_WATCHDOG=y
> >>> CONFIG_DM_THERMAL=y
> >>> CONFIG_IMX_TMU=y
> >>> +CONFIG_USB=y
> >>> +CONFIG_SPL_USB_HOST=y
> >>> +CONFIG_USB_EHCI_HCD=y
> >>> +CONFIG_MXC_USB_OTG_HACTIVE=y
> >>> +CONFIG_USB_GADGET=y
> >>> +CONFIG_SPL_USB_GADGET=y
> >>> +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
> >>> +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
> >>> +CONFIG_CI_UDC=y
> >>> +CONFIG_SDP_LOADADDR=0x40400000
> >>> +CONFIG_SPL_USB_SDP_SUPPORT=y
> >>> CONFIG_IMX_WATCHDOG=y
> >>
> >
> >
> >
> > Best regards,
> >
> > Lukasz Majewski
> >
> > --
> >
> > DENX Software Engineering GmbH, Managing Director: Erika Unter
> > HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell,
> > Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email:
> > lukma at denx.de
>
>
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20240821/7b94d62d/attachment.sig>
More information about the U-Boot
mailing list