5 Replies Latest reply on Jul 21, 2020 9:21 AM by oleb0n

    Boot Ultrazed From eMMC


      I am trying to make my Ultrazed EG boot from eMMC. It looks like I am missing something, because it does not work yet. These are the steps I make:


      1. Build a simple Vivado project (2019.2) with BRAM and AXI UART just to add something

      2. Create a petalinux project based on Ultrazed IOOC BSP with following options:

           - sys console PS UART0

           -rootfs mmcblk1p2 to boot from SD (to be changed later)

           - kernel, dev tree and image all stored on SD

      3. petalinux-build and "petalinux-package --boot --fsbl images/linux/zynqmp_fsbl.elf --u-boot images/linux/u-boot.elf --pmufw images/linux/pmufw.elf --fpga images/linux/system.bit --force"

      3.(A) Create similar set of system files with rootfs location  mmcblk0p2

      4.Format SD card and write three system files to BOOT partition fat32 and rsync existing rootfs Ubuntu to ext4 partition.

      5. Boot Ultrazed from the SD card

      6. Use fdisk to create BOOT and rootfs on /dev/mmcblk0 (eMMC)

      7. Copy additional set of three system files (ones showing location of rootfs as /dev/mmcblk0p2) to /dev/mmcblk0p1 and use rsync to copy rootfs from /dev/mmcblk1p2 to /dev/mmcblk1p2

      8. Change boot mode switch on Ultrazed to 1001 and reboot

      9 See the output below. It stops at uboot and cannot move further.

      10. I also tried to create a uEnv.txt with the line "root=/dev/mmcblk0p2"  in the eMMC boot partition, it does not make any difference. I can very easily boot Ubuntu from SD but not from eMMC, please help!




      Xilinx Zynq MP First Stage Boot Loader

      Release 2019.2   Jul 17 2020  -  18:15:03

      NOTICE:  ATF running on XCZU3EG/silicon v4/RTL5.1 at 0xfffea000

      NOTICE:  BL31: Secure code at 0x0

      NOTICE:  BL31: Non secure code at 0x8000000

      NOTICE:  BL31: v2.0(release):xilinx-v2019.1-12-g713dace9

      NOTICE:  BL31: Built : 18:11:52, Jul 17 2020

      PMUFW:  v1.1



      U-Boot 2019.01 (Jul 17 2020 - 18:12:51 +0000)


      Board: Xilinx ZynqMP

      DRAM:  2 GiB

      EL Level:       EL2

      Chip ID:        zu3eg

      MMC:   mmc@ff160000: 0, mmc@ff170000: 1

      Loading Environment from SPI Flash... SF: Detected n25q256a with page size 512 Bytes, erase size 128 KiB, total 64 MiB

      *** Warning - bad CRC, using default environment


      In:    serial@ff000000

      Out:   serial@ff000000

      Err:   serial@ff000000

      Board: Xilinx ZynqMP

      Bootmode: EMMC_MODE

      Reset reason:   EXTERNAL

      Net:   ZYNQ GEM: ff0e0000, phyaddr 9, interface rgmii-id

      eth0: ethernet@ff0e0000

      U-BOOT for uz3eg-iocc-2019-2


      ethernet@ff0e0000 Waiting for PHY auto negotiation to complete...... done

      BOOTP broadcast 1

      BOOTP broadcast 2

      BOOTP broadcast 3

      BOOTP broadcast 4

      BOOTP broadcast 5

      DHCP client bound to address (3755 ms)

      Hit any key to stop autoboot:  0

      Device: mmc@ff160000

      Manufacturer ID: 13

      OEM: 14e

      Name: Q2J55

      Bus Speed: 50000000

      Mode : MMC High Speed (52MHz)

      Rd Block Len: 512

      MMC version 5.0

      High Capacity: Yes

      Capacity: 7.1 GiB

      Bus Width: 4-bit

      Erase Group Size: 512 KiB

      HC WP Group Size: 8 MiB

      User Capacity: 7.1 GiB WRREL

      Boot Capacity: 16 MiB ENH

      RPMB Capacity: 4 MiB ENH

      MMC: no card present

        • Re: Boot Ultrazed From eMMC

          I suspect something is broken in your u-boot settings and/or Image Packaging Configuration settings.  Can you attach your <project>/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h file here?

            • Re: Boot Ultrazed From eMMC

              Tom, I appreciate your very quick reply, thanks. The file contents is below:


              #include <configs/platform-auto.h>


              #define CONFIG_NR_DRAM_BANKS 3


              #define CONFIG_SYS_BOOTM_LEN 0xF000000

              #undef  CONFIG_SYS_BOOTMAPSZ


              #define DFU_ALT_INFO_RAM \

                              "dfu_ram_info=" \

                      "setenv dfu_alt_info " \

                      "image.ub ram $netstart 0x1e00000\0" \

                      "dfu_ram=run dfu_ram_info && dfu 0 ram 0\0" \

                      "thor_ram=run dfu_ram_info && thordown 0 ram 0\0"


              #define DFU_ALT_INFO_MMC \

                      "dfu_mmc_info=" \

                      "set dfu_alt_info " \

                      "${kernel_image} fat 0 1\\\\;" \

                      "dfu_mmc=run dfu_mmc_info && dfu 0 mmc 0\0" \

                      "thor_mmc=run dfu_mmc_info && thordown 0 mmc 0\0"


              /*Required for uartless designs */

              #ifndef CONFIG_BAUDRATE

              #define CONFIG_BAUDRATE 115200

              #ifdef CONFIG_DEBUG_UART

              #undef CONFIG_DEBUG_UART




              /* Extra U-Boot Env settings */

              #define CONFIG_EXTRA_ENV_SETTINGS \

                  SERIAL_MULTI \

                  CONSOLE_ARG \

                  PSSERIAL0 \

                  "nc=setenv stdout nc;setenv stdin nc;\0" \

                  "ethaddr=00:0a:35:00:22:01\0" \

                  "importbootenv=echo \"Importing environment from SD ...\"; " \

                      "env import -t ${loadbootenv_addr} $filesize\0" \

                  "loadbootenv=load mmc $sdbootdev:$partid ${loadbootenv_addr} ${bootenv}\0" \

                  "sd_uEnvtxt_existence_test=test -e mmc $sdbootdev:$partid /uEnv.txt\0" \

                  "uenvboot=" \

                      "if run sd_uEnvtxt_existence_test; then " \

                          "run loadbootenv; " \ 

                          "echo Loaded environment from ${bootenv}; " \

                          "run importbootenv; " \

                      "fi\0" \

                  "sdboot=echo boot Petalinux; run uenvboot ; mmcinfo && fatload mmc 1 ${netstart} ${kernel_img} && bootm \0" \

                  "autoload=no\0" \

                  "clobstart=0x10000000\0" \

                  "netstart=0x10000000\0" \

                  "dtbnetstart=0x11800000\0" \

                  "loadaddr=0x10000000\0" \

                  "boot_img=BOOT.BIN\0" \

                  "load_boot=tftpboot ${clobstart} ${boot_img}\0" \

                  "update_boot=setenv img boot; setenv psize ${bootsize}; setenv installcmd \"install_boot\"; run load_boot ${installcmd}; setenv img; setenv psize; setenv installcmd\0" \

                  "install_boot=mmcinfo && fatwrite mmc 0 ${clobstart} ${boot_img} ${filesize}\0" \

                  "bootenvsize=0x40000\0" \

                  "bootenvstart=0x1360000\0" \

                  "eraseenv=sf probe 0 && sf erase ${bootenvstart} ${bootenvsize}\0" \

                  "jffs2_img=rootfs.jffs2\0" \

                  "load_jffs2=tftpboot ${clobstart} ${jffs2_img}\0" \

                  "update_jffs2=setenv img jffs2; setenv psize ${jffs2size}; setenv installcmd \"install_jffs2\"; run load_jffs2 test_img; setenv img; setenv psize; setenv installcmd\0" \

                  "sd_update_jffs2=echo Updating jffs2 from SD; mmcinfo && fatload mmc 0:1 ${clobstart} ${jffs2_img} && run install_jffs2\0" \

                  "install_jffs2=sf probe 0 && sf erase ${jffs2start} ${jffs2size} && " \

                      "sf write ${clobstart} ${jffs2start} ${filesize}\0" \

                  "kernel_img=image.ub\0" \

                  "load_kernel=tftpboot ${clobstart} ${kernel_img}\0" \

                  "update_kernel=setenv img kernel; setenv psize ${kernelsize}; setenv installcmd \"install_kernel\"; run load_kernel ${installcmd}; setenv img; setenv psize; setenv installcmd\0" \

                  "install_kernel=mmcinfo && fatwrite mmc 1 ${clobstart} ${kernel_img} ${filesize}\0" \

                  "cp_kernel2ram=mmcinfo && fatload mmc 1 ${netstart} ${kernel_img}\0" \

                  "dtb_img=system.dtb\0" \

                  "load_dtb=tftpboot ${clobstart} ${dtb_img}\0" \

                  "update_dtb=setenv img dtb; setenv psize ${dtbsize}; setenv installcmd \"install_dtb\"; run load_dtb test_img; setenv img; setenv psize; setenv installcmd\0" \

                  "sd_update_dtb=echo Updating dtb from SD; mmcinfo && fatload mmc 0:1 ${clobstart} ${dtb_img} && run install_dtb\0" \

                  "fault=echo ${img} image size is greater than allocated place - partition ${img} is NOT UPDATED\0" \

                  "test_crc=if imi ${clobstart}; then run test_img; else echo ${img} Bad CRC - ${img} is NOT UPDATED; fi\0" \

                  "test_img=setenv var \"if test ${filesize} -gt ${psize}\\; then run fault\\; else run ${installcmd}\\; fi\"; run var; setenv var\0" \

                  "netboot=tftpboot ${netstart} ${kernel_img} && bootm\0" \

                  "default_bootcmd=run cp_kernel2ram && bootm ${netstart}\0" \