Boot i.MX6QP SABRESD evaluation board from SDCARD

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Boot i.MX6QP SABRESD evaluation board from SDCARD

Jump to solution
1,262 Views
alanmyler
Contributor II

I have the i.MX6QP SABRESD board (MCIMX6QP-SDB) which I am trying to boot from SDCARD.

I have downloaded embedded software from the NXP page:

https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/sabre-board-for...

Specifically the software: LF_v5.10_1.0.0_images_IMX6QPDLSOLOX

 

In this software is contained a WIC file, imx-image-full-imx6qpdlsolox.wic, which I put onto the SDCARD using the dd command:

$ sudo dd if=imx-image-full-imx6qpdlsolox.wic of=/dev/sdb bs=1M conv=fsync

 

When I boot the board withe the SDCARD inserted in the SD3 card socket I see the following on the console:

 

U-Boot 2020.04-5.10.9-1.0.0+gad7b74b415 (Mar 05 2021 - 07:05:56 +0000)

 

CPU:   i.MX6QP rev1.0 996 MHz (running at 792 MHz)

CPU:   Automotive temperature grade (-40C to 125C) at 18C

Reset cause: POR

Model: i.MX6 Quad SABRE Smart Device Board

Board: MX6-SabreSD

DRAM:  1 GiB

PMIC: PFUZE100! DEV_ID=0x10 REV_ID=0x21

MMC:   FSL_SDHC: 1, FSL_SDHC: 2, FSL_SDHC: 3

Loading Environment from MMC... *** Warning - bad CRC, using default environment

 

No panel detected: default to Hannstar-XGA

Display: Hannstar-XGA (1024x768)

In:    serial

Out:   serial

Err:   serial

switch to partitions #0, OK

mmc2 is current device

flash target is MMC:2

Net:  

Warning: ethernet@02188000 using MAC address from ROM

eth0: ethernet@02188000 [PRIME]

Fastboot: Normal

Normal Boot

Hit any key to stop autoboot:  0

switch to partitions #0, OK

mmc2 is current device

8584616 bytes read in 437 ms (18.7 MiB/s)

Booting from mmc ...

54840 bytes read in 24 ms (2.2 MiB/s)

Wrong Image Format for bootm command

ERROR: can't get kernel image!

=>

 

I had assumed that the WIC file would work out of the box, but presumably something needs adjusting for this to work on the SABRESD board.

Can anyone suggest what steps I need to take to get this to boot successfully?

 

 

Tags (1)
0 Kudos
1 Solution
1,231 Views
alanmyler
Contributor II

Ok, I have this working now.

After the boot fails and the prompt appears I can then type in:

=>bootz ${loadaddr} - ${fdt_addr}

And linux now boots!

 

View solution in original post

4 Replies
1,244 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

In the console have you saw that all the images download success to the SD card? When boot up from SD card have you set the proper boot mode?

0 Kudos
1,239 Views
alanmyler
Contributor II

Thanks for getting back to me about this.

To answer your questions:

>In the console have you saw that all the images download success to the SD card?

In the original post above you can see the console log from the evaluation board as the SDCARD is being read.

Or are you asking about when the SDCARD is being written on my PC? This is the log from that step:

sudo dd if=imx-image-full-imx6qpdlsolox.wic of=/dev/sdb bs=1M conv=fsync
4785+1 records in
4785+1 records out
5017505792 bytes (5.0 GB, 4.7 GiB) copied, 910.954 s, 5.5 MB/s

Your second question:

>When boot up from SD card have you set the proper boot mode?

I presume you are asking here about the SW6 switch settings on the board? I haven't changed those since I used the Android image on the SDCARD shipped with the kit. Specifically, switches 2/7 are On and switches 1/3/4/5/6/8 are OFF.

 

From the console log in the original post you can see that the board is attempting to boot from MMC2.

 

Here is the printenv result, if that is useful:

=> printenv
baudrate=115200
board_name=SABRESD
board_rev=MX6QP
boot_fdt=try
bootargs=console=ttymxc0,115200 root=/dev/mmcblk2p2 rootwait rw
bootcmd=run findfdt;run findtee;mmc dev ${mmcdev};if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then run mmcboot; else run netboot; fi; fi; else run netboot; fi
bootcmd_mfg=run mfgtool_args;if iminfo ${initrd_addr}; then if test ${tee} = yes; then bootm ${tee_addr} ${initrd_addr} ${fdt_addr}; else bootz ${loadaddr} ${initrd_addr} ${fdt_addr}; fi; else echo "Run fastboot ..."; fastboot 0; fi;
bootdelay=3
bootscript=echo Running bootscript from mmc ...; source
console=ttymxc0
dfu_alt_info=spl raw 0x400
dfu_alt_info_img=u-boot raw 0x10000
dfu_alt_info_spl=spl raw 0x400
dfuspi=dfu 0 sf 0:0:10000000:0
emmc_dev=3
emmcdev=2
epdc_waveform=epdc_splash.bin
ethact=ethernet@02188000
ethaddr=00:04:9f:05:06:e0
ethprime=eth0
fastboot_dev=mmc2
fdt_addr=0x18000000
fdt_file=imx6qp-sabresd.dtb
fdt_high=0xffffffff
fdtcontroladdr=4df5e0c8
fileaddr=18000000
filesize=d584
findfdt=if test $fdt_file = undefined; then if test $board_name = SABREAUTO && test $board_rev = MX6QP; then setenv fdt_file imx6qp-sabreauto.dtb; fi; if test $board_name = SABREAUTO && test $board_rev = MX6Q; then setenv fdt_file imx6q-sabreauto.dtb; fi; if test $board_name = SABREAUTO && test $board_rev = MX6DL; then setenv fdt_file imx6dl-sabreauto.dtb; fi; if test $board_name = SABRESD && test $board_rev = MX6QP; then setenv fdt_file imx6qp-sabresd.dtb; fi; if test $board_name = SABRESD && test $board_rev = MX6Q; then setenv fdt_file imx6q-sabresd.dtb; fi; if test $board_name = SABRESD && test $board_rev = MX6DL; then setenv fdt_file imx6dl-sabresd.dtb; fi; if test $fdt_file = undefined; then echo WARNING: Could not determine dtb to use; fi; fi;
findtee=if test $tee_file = undefined; then if test $board_name = SABREAUTO && test $board_rev = MX6QP; then setenv tee_file uTee-6qpauto; fi; if test $board_name = SABREAUTO && test $board_rev = MX6Q; then setenv tee_file uTee-6qauto; fi; if test $board_name = SABREAUTO && test $board_rev = MX6DL; then setenv tee_file uTee-6dlauto; fi; if test $board_name = SABRESD && test $board_rev = MX6QP; then setenv tee_file uTee-6qpsdb; fi; if test $board_name = SABRESD && test $board_rev = MX6Q; then setenv tee_file uTee-6qsdb; fi; if test $board_name = SABRESD && test $board_rev = MX6DL; then setenv tee_file uTee-6dlsdb; fi; if test $tee_file = undefined; then echo WARNING: Could not determine tee to use; fi; fi;
finduuid=part uuid mmc ${mmcdev}:2 uuid
image=zImage
initrd_addr=0x12C00000
initrd_high=0xffffffff
ip_dyn=yes
kboot=bootz
loadaddr=0x12000000
loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};
loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
loadtee=fatload mmc ${mmcdev}:${mmcpart} ${tee_addr} ${tee_file}
mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc clk_ignore_unused
mmcargs=setenv bootargs console=${console},${baudrate} ${smp} root=${mmcroot}
mmcautodetect=yes
mmcboot=echo Booting from mmc ...; run mmcargs; if test ${tee} = yes; then run loadfdt; run loadtee; bootm ${tee_addr} - ${fdt_addr}; else if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;fi;
mmcdev=2
mmcpart=1
mmcroot=/dev/mmcblk2p2 rootwait rw
netargs=setenv bootargs console=${console},${baudrate} ${smp} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp
netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${tee} = yes; then ${get_cmd} ${tee_addr} ${tee_file}; ${get_cmd} ${fdt_addr} ${fdt_file}; bootm ${tee_addr} - ${fdt_addr}; else if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi; fi;
script=boot.scr
sd_dev=2
serial#=1008c1d4e6b578ed
soc_type=imx6qp
spi_bus=0
spi_uboot=0x400
splashimage=0x28000000
tee=yes
tee_addr=0x20000000
tee_file=uTee-6qpsdb
update_emmc_firmware=if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; if ${get_cmd} ${update_sd_firmware_filename}; then if mmc dev ${emmcdev} 1; then setexpr fw_sz ${filesize} / 0x200; setexpr fw_sz ${fw_sz} + 1; mmc write ${loadaddr} 0x2 ${fw_sz}; fi; fi
update_sd_firmware=if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; if mmc dev ${mmcdev}; then if ${get_cmd} ${update_sd_firmware_filename}; then setexpr fw_sz ${filesize} / 0x200; setexpr fw_sz ${fw_sz} + 1; mmc write ${loadaddr} 0x2 ${fw_sz}; fi; fi
weim_base=0x08000000
weim_uboot=0x08001000

Environment size: 4950/8188 bytes
=>

0 Kudos
1,232 Views
alanmyler
Contributor II

Ok, I have this working now.

After the boot fails and the prompt appears I can then type in:

=>bootz ${loadaddr} - ${fdt_addr}

And linux now boots!

 

1,220 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

Good news it works.

0 Kudos