I am using custom imx6 solo board.
SD boot Issue Details:
=================
BMOD[1:0]= 10- Internal boot
1. Not booting from SD card
2. JTAG also not connected.
BMOd[1:0]= 00 - boot from fuses.
1. JTAG connected if Micro SD Card NOT connected.
2. Boots from SD if JTAG NOT connected.(fuses are at default setting)
Boot logs:
=========
U-Boot 2009.08 (Jul 19 2014 - 19:41:32)
CPU: Freescale i.MX6 family TO1.2 at 792 MHz
Thermal sensor with ratio = 182
Temperature: 41 C, calibration data 0x57e4c47d
mx6q pll1: 792MHz
mx6q pll2: 528MHz
mx6q pll3: 480MHz
mx6q pll8: 50MHz
ipg clock : 66000000Hz
ipg per clock : 66000000Hz
uart clock : 80000000Hz
cspi clock : 60000000Hz
ahb clock : 132000000Hz
axi clock : 198000000Hz
emi_slow clock: 99000000Hz
ddr clock : 396000000Hz
usdhc1 clock : 198000000Hz
usdhc2 clock : 198000000Hz
usdhc3 clock : 198000000Hz
usdhc4 clock : 198000000Hz
nfc clock : 24000000Hz
Board: i.MX6DL/Solo-ZENBOX: unknown-board Board: 0x61012 [POR]
Boot Device: NOR
I2C: ready
DRAM: 1 GB
MMC: FSL_USDHC: 0
*** Warning - bad CRC or MMC, using default environment
In: serial
Out: serial
Err: serial
Net: got MAC address from IIM: 00:00:00:00:00:00
FEC0 [PRIME]
Hit any key to stop autoboot: 0
MX6SOLO SABREAUTO U-Boot >
Fuses Dump:
===========
MX6SOLO SABREAUTO U-Boot > imxotp read 0
Reading fuse at index: 0x0
Fuse at (index: 0x0) value: 0x20220002
MX6SOLO SABREAUTO U-Boot > imxotp read 5
Reading fuse at index: 0x5
Fuse at (index: 0x5) value: 0x0
MX6SOLO SABREAUTO U-Boot > imxotp read 6
Reading fuse at index: 0x6
Fuse at (index: 0x6) value: 0x0
SRC registers Dump
=================
MX6SOLO SABREAUTO U-Boot > md 0x20d8000
020d8000: 00000521 00000000 00000001 00000000 !...............
020d8010: 00000000 00000000 0000001f 08000001 ................
020d8020: 00000000 00000000 00000000 00000000 ................
020d8030: 00000000 00000000 00000000 00000000 ................
020d8040: 00000000 00000000 00000000 00000000 ................
020d8050: 00000000 00000000 00000000 00000000 ................
020d8060: 00000000 00000000 00000000 00000000 ................
020d8070: 00000000 00000000 00000000 00000000 ................
020d8080: 00000000 00000000 00000000 00000000 ................
020d8090: 00000000 00000000 00000000 00000000 ................
020d80a0: 00000000 00000000 00000000 00000000 ................
020d80b0: 00000000 00000000 00000000 00000000 ................
020d80c0: 00000000 00000000 00000000 00000000 ................
020d80d0: 00000000 00000000 00000000 00000000 ................
020d80e0: 00000000 00000000 00000000 00000000 ................
020d80f0: 00000000 00000000 00000000 00000000 ................
Please help to identify the issue how it is booting in Bmod[1:0]= 00 when fuses are not blown and not booting in internal boot mode.
SBMR can be checked even in BMOD 10. You can connect JTAG and read SBMR or you can probe GPIOs during reset. The GPIO status during reset should satisfy 0 (<0.3*3.3) and 1 (>0.7*3.3) as required. The problem should be with GPIO settings only.
Hi prashant
such behaviour may be explained so called "manufacture mode" -
when processor will try to boot from SD/MMC
before serial download mode. It is explained in
sect.8.11 "SD/MMC Manufacture Mode" IMX6SDLRM
i.MX 6Solo/6DualLite Applications Processor Reference Manual
and link below
Best regards
chip
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hello Chip,
Thanks for your prompt response.
But when we configure BMOD=10 - internal boot and SD boot config.
Nothing is happening.No Clock at SD1_CLK.
In serial downloader mode JTAG is not getting connected whereas in boot from fuses mode it gets connected and manufacturer mode is supported in this mode.
Could you please suggest the possible solution and way to verify the boot mode pins are sampled correctly.
With Regards,
Prashant
Hi prashant
suggest to check by oscilloscope all boot pins
and recheck all points given in Chapter 2 Design Checklist
Chapter 8 Avoiding Board Bring-up Problems
IMX6DQ6SDLHDG, Hardware Development Guide for i.MX 6Quad.
Also one can check registers SRC_SBMR1, SRC_SBMR2
for both cases with jtag.
Best regards
chip
Hello Chip,
Thanks for your suggestions.
We tried to probe the various GPIOs and boot mode pins and found all to be correct.
However we have a confusion with respect to the NVCC_GPIO domain power up sequence .
In our case this domain is UP before the IMX RESET signal.
Is this a problem???
It seems still BMOD/GPIOs are not sampled correctly. Hence not booting in Internal boot.
Whereas booting in Manufacturing mode.
With Regards,
Prashant
Hi prashant
power up sequence is described in sect.4.2.1 "Power-Up Sequence"
IMX6DQCEC i.MX 6Dual/6Quad Applications Processors for Consumer Products - Data Sheet
I.MX6 POR should be released when all power supplies and clocks become stable.
As for incorrect boot pins sampling, one can check registers SRC_SBMR1, SRC_SBMR2.
Best regards
chip
Hello Chip,
Thanks for the posts.
Manufacturing mode is working perfectly fine.(This mode is working when BMOD[1:0]= 00 with SD card connected to esdhc0)
But when i am trying to boot from SD from internal boot nothing happens(when BMOD[1:0]= 10 with SD card connected to esdhc0).
I tired to provide the POR still no success.
GPIOs are configured correctly.
JTAG is connected in BMOD[1:0]= 00 and it does not connect in BMOD[1:0]= 10 hence not able to read the SBMR in internal boot case.
Please suggest what could be a problem.
With Regards,
Prashant
Hello Prashant,
Were you able to address the issue that you have mentioned above. We have the similar situation, where our boot mode is Internal, GPIO settings configured for SD2.
However we do not see the clock on the SD2. We have verified the board across the hardware checklist, but no clue. The manufacturing mode works okay with default fuse bit which is all zeros.
Any inputs here would be a great help. Thank you.
Thanks,
Praveen
Hello Praveen,
No success yet trying to identify the issue.
Please let me know if you have any clue on it.
With Regards,
Prashant
Hi Prashant,
We were able to get the boot working. We had to increase the pull up on the GPIO pins till the point the internal BOOT_CFG registers reflects the required value.
We read the registers using jtag script when the boot mode is internal 0x01.
Also, the value BOOT_CFG are sampled at the rising edge of the POR signal. So the GPIO state must be settled to the required state before the rising edge of the POR signal.
-Praveen