How to boot imx6 SABRE SD board from qspi NOR flash using MfgTool

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

How to boot imx6 SABRE SD board from qspi NOR flash using MfgTool

Jump to solution
5,952 Views
ozu
Contributor III

I have an imx6 SABRE SD board with imx6 solo x controller on it. The board also has QSPI interface. I could boot the board from SD card that came along with it.

 

Now I am trying to use MfgTool to load the uboot image in the qspi2. I think I am able to copy uboot to qspi flash. Please find the attached console messages, which show that the writing U-boot was successful.

 

When I restart the board after receiveing the Update Complete message, I can not see anything on the console. I expect to see a U-boot prompt, from which I can change partitions or maybe load the kernel. I have also attached my cfg.ini settings for the MfgTool. Why cant I see U-boot on console?

 

Can I also change ucl2.xml and try burning kernel (zImage) in qspi2 as well? Is it possible to boot entirely from qspi2, without using the SD card at all?

 

Any help appreciated! Thanks!!

Original Attachment has been moved to: Console-messages.txt.zip

Original Attachment has been moved to: cfg.ini.zip

0 Kudos
1 Solution
1,987 Views
igorpadykov
NXP Employee
NXP Employee

Hi ozu

first one needs to verify what qspi is soldered : spansion-s25fl128 or micron-n25q256,

for cfg.ini settings one can look at mfgtool2-yocto-mx6-sabresd-qspi-nor.vbs

(it is attached), like:

norconfig=qspi-nor-micron-n25q256a-config

sxuboot=sabresd

sxnor=qspi2

sxdtb=sdb-reva

seek=1

hdrseek=4

also for qspi boot one can look at

https://community.freescale.com/thread/340521

https://community.freescale.com/message/523505#523505

Boot dip settings is described on attached Linux Guide sect.4.5.9 Booting from QuadSPI.

Since qspi capacity is not big, one needs to create small linux image, to boot entirely from qspi2,

without using the SD card at all

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

View solution in original post

6 Replies
1,988 Views
igorpadykov
NXP Employee
NXP Employee

Hi ozu

first one needs to verify what qspi is soldered : spansion-s25fl128 or micron-n25q256,

for cfg.ini settings one can look at mfgtool2-yocto-mx6-sabresd-qspi-nor.vbs

(it is attached), like:

norconfig=qspi-nor-micron-n25q256a-config

sxuboot=sabresd

sxnor=qspi2

sxdtb=sdb-reva

seek=1

hdrseek=4

also for qspi boot one can look at

https://community.freescale.com/thread/340521

https://community.freescale.com/message/523505#523505

Boot dip settings is described on attached Linux Guide sect.4.5.9 Booting from QuadSPI.

Since qspi capacity is not big, one needs to create small linux image, to boot entirely from qspi2,

without using the SD card at all

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

1,987 Views
ozu
Contributor III

Thanks Igor! igorpadykov

It was helpful. My offset settings were wrong. By changing the seek and hdrseek values, now I am able to flash u-boot at the correct offset and I can see it loading when I restart the board. But the kernel doesn't get fully loaded. I am getting following error:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)

I have attached the detailed log in the file Kernel panic.txt and I have also attached the environment variables setting of U-boot here. Can you help?

The environment variables look a little confusing to me, since 'root' is defined multiple times and also 'mmcroot' does not specify rootfs. But these are 'as is' variables from the uboot binary file given with MfgTool.

Also, MfgTool that I am using (imx-3.14.28_1.0.0_ga-mfg-tools.tar) has two folders

1) mfgtools-with-rootfs.tar

2) mfgtools-without-rootfs.tar

I don't really understand their significance but I am using the one with the name mfgtools-with-rootfs.tar

Regards,

Vasu

0 Kudos
1,987 Views
igorpadykov
NXP Employee
NXP Employee

Hi Vasu

MFG Tools supports only writing uboot to qspi-nor,

kernel and rootfs should be placed on other media: nand or sd/emmc.

Please check sect. 4.7 Running Linux on the target  i.MX_Linux_User's_Guide.pdf

included in L3.14.28_1.0.0_LINUX_DOCS

~igor

0 Kudos
1,987 Views
florian_germain
Contributor II

Igor,

We have a sabresd board and i program qspi2 with uboot. The board work fine and uboot (on qspi2) allow me to use rootfs on NFS.

I face a problem on our custom board based on sabresd design. The board embed a IMX6SX 17x17 no PCIe and a QuadSPI Flash Micron N25Q128.

The QuadSPI flash is programmed with MfgTool. But when uboot (on Qspi2) don't boot.

I can see that parameters are well programmed and loaded in the CPU: configuration parameters are loaded at 18Mhz and the SPI frequency change to the value set in the QSPI header (checked with oscilloscope). But after 33µs the QSPI clock stop.

Our board use only one Qspi flash connected from 128Mb on QSPI2A. This flash don't support DDR mode.

I changed the "qspi-nor-micron-n25q256a-config" file from MFG tool to fit to Micron N25Q128A13 flash.

     - disable ddr mode enable

     - change LUT:

               ADDR_DDR - 0 - 0x18

               CMD - 0 - 0x3D

               READ_DDR - 1 - 0x04

               DUMMY - 1 - 0x06

               JMP_ON_CS - 0 - 0

     become now:

               ADDR - 0 - 0x18     (disable ddr)

               CMD - 0 - 0x3B     ( DUAL_OUTPUT_FAST_READ without DDR )

               READ - 1 - 0x04     (disable ddr)

               DUMMY - 1 - 0x06

               JMP_ON_CS - 0 - 0

     So 2818 043d 3904 0d06 2400 become 0818 043b 1d04 0d06 2400. This should allow not to use DDR mode.

Is there something else to change?

Thanks

0 Kudos
1,987 Views
florian_germain
Contributor II

Witout Freescale support i solved my problem.

The problem was in the QSPI configuration parameters.

This is the workaround i found to switch from micron n25q256a to n25q128a:

- sclk_freq=0 (change frequency to 18MHz)

- sflash_type=0 (single mode)

- ddr_mode=0 (disable ddr mode, because this flash don't support DDR mode)

- change LUT:          

               CMD - 0 - 0x3D

               ADDR_DDR - 0 - 0x18              

               DUMMY - 1 - 0x06

               READ_DDR - 1 - 0x04

               JMP_ON_CS - 0 - 0

become now:

               CMD - 0 - 0x03

               ADDR - 0 - 0x18              

               READ - 0 - 0x08

               JMP_ON_CS - 0 - 0

So 2818 043d 3904 0d06 2400 become 0818 0403 2400 1c08

This LUT sequence use the default read sequence used by IMX to read parameters:

pastedImage_5.png

This method should works on most of flash, because it is used to read QSPI parameters.

The "problem" is that it is "1 wire -18MHz", so it is slow.

But in my situation, i use QSPI flash for debug, so no problem.

0 Kudos
1,987 Views
ozu
Contributor III

Just to close the topic,

I was using SD card loaded with kernel and rootfs but the reason behind error was that the SD card was corrupt.

When I replaced the SD card, everything worked well.

Thanks!

0 Kudos