AnsweredAssumed Answered

Unable to boot U-Boot from POR via QSPI1A on Custom i.MX6 SoloX Board

Question asked by Anthony Tzouris on Oct 25, 2015

Short Description of Issue:

 

Can get i.MX6 SoloX to boot U-Boot just fine on the Evaluation Board from QSPI2

B.  Cannot get i.MX6 to boot U-Boot from QSPI1A on Custom Board.  On custom

board, U-Boot has been modified and can write/read/verfiy QSPI 1A memory from

U-Boot successfully.  Just cannot boot from POR from i.MX6 SoloX from QSPI 1A.

 

Long Detailed Description of Issue:

 

Configuration:

    - i.MX6 SoloX processor

    - Yocto 1.7 with Freescale BSP and 3.14.28 Linux Kernel

    - u-boot.imx image was build with option in local.conf for Yocto with the

      following option: UBOOT_CONFIG="qspi2"

 

Evaluation Board: IMX6SX SabreSD

    - boot mode pins are set to QSPI

    - boot device cfg pins are set to QSPI 2

    - 2 QSPI Chips that are Micron N25Q256A 32MB (256Mb)

        - Wired to i.MX6 in QSPI Dual Mode

    - Successfully boot off of QSPI2 B by manually flash programming

        - u-boot.imx image at offset 0x1000 into the QSPI Flash through U-Boot

        - qspi-micron.bin image at offset 0x400 into the QSPI 2 Flash through

          U-Boot (This is the stock qspi micron configuration file from

          Freescale named qspi-nor-micron-n25q256a-config)

        - NOTE: qspi-micron-config needs to get converted from ASCII to binary

          through awk script in Mfgtool

    - Successfully boot same u-boot.imx image through the Mfgtool (without need

      for qspi-micron.bin)

    - Serial Flash Chip of interest from U-Boot is on Bus 0 Chip Select 0

 

Custom Board:

    - boot mode pins are set to QSPI

    - boot device cfg pins are set to QSPI 1

    - 1 Chip Spansion S25FL132K 4MB (32Mb) Flash Chip

        - Wired to i.MX6 in QSPI Single Mode (not Dual mode and not Quad mode)

    - modified files in u-boot

        ~/board/freescale/mx6sxsabresd.c (diff file attached)

        ~/include/configs/mx6sxsabresd.h (diff file attached)

    - Successfully from U-Boot can write/read/verify QSPI Flash u-boot.imx and

      qspi-spansion.bin images as booted from Mfgtool.  So U-Boot configuration

      (i.e. pin mux, memory mapped address for QSPI, removed pin mux conflicts

      for QSPI1, etc.) is working as modified.  At this point can either

      manually program the QSPI flash from U-Boot or program the QSPI Flash

      using Mfgtool and in both cases the crc32 values for the u-boot and qspi

      images are correct.

 

Issue:

    - Not able to successfully boot U-Boot from QSPI1 A Flash.

 

    - Strongly suspect configuration of values in QSPI 512 byte image are not

      correct.

 

    - Starting point for the qspi-spansion-config the Freescale provided

      qspi-nor-spansion-s25fl128s-config.  This chip runs in QSPI Quad mode

      instead of the QSPI Single mode of the new custom board Spansion Flash

      chip.

 

    - In regards to modification to the config file the obvious changes are:

            - (modify) Flash Memory Size of 1A is 4MB and all others are 0

            - (modify) sflash_type = Single Mode

            - (disable line) 1 /*device_quad_mode_en=1 to enable sending command to SPI device*/

            - (disable line) 8283 /*device_cmd=command to device for enableing Quad I/O mode*/

    - In regards to modification to the config file the non-obvious changes are:

        - DDR Mode used or not used

        - DQS Mode used or not used

        - LUT Commands correct for QSPI Single Mode (remove/add/modify ???)

        - IPCR hex values

 

attached file diff-mx6sxsabresd.c.txt

attached file diff-mx6sxsabresd.h.txt

attached modified qspi-nor-spansion-s25fl132k-config

attached imximage.cfg

Original Attachment has been moved to: diff-mx6sxsabresd.h.txt.zip

Original Attachment has been moved to: qspi-nor-spansion-s25fl132k-config.zip

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

Original Attachment has been moved to: diff-mx6sxsabresd.c.txt.zip

Outcomes