My company has an IMX6DL product, there is 2% probability that then Kernel cannot be started。
I try to follow way to solution this Problem:
1. I open kerner low level debug print . when cannot start up kernel , have follow kernel debug :
Uncompressing Linux... done, booting the kernel.
2. I try to cold start up product , try 3000 times cold start up , 2940 times can startup success .
3. U-boot log follow :
U-Boot 2015.04-g310e0ad-dirty (Jan 15 2021 - 16:20:00)
CPU: Freescale i.MX6DL rev1.3 at 792 MHz
CPU: Temperature 36 C
Reset cause: POR
Board: MX6-SabreSD
I2C: ready
DRAM: 2 GiB
PMIC: PFUZE100 ID=0x10
MMC: Card did not respond to voltage select!
Card did not respond to voltage select!
FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
*** Warning - bad CRC, using default environment
Display: panel1280x800d24 (1280x800)
In: serial
Out: serial
Err: serial
config_ipu_lvds_clk: freq = 560000000.
config_ipu_lvds_clk(16): 84857130 Hz.
switch to partitions #0, OK
mmc2(part 0) is current device
Net: FEC [PRIME]
Error: FEC address not set.
Normal Boot
Hit any key to stop autoboot: 1 0
switch to partitions #0, OK
mmc2(part 0) is current device
reading boot.scr
** Unable to read file boot.scr **
reading zImage
7913104 bytes read in 214 ms (35.3 MiB/s)
Booting from mmc ...
reading imx6dl-sabresd.dtb
43977 bytes read in 18 ms (2.3 MiB/s)
Kernel image @ 0x12000000 [ 0x000000 - 0x78be90 ]
## Flattened Device Tree blob at 18000000
Booting using the fdt blob at 0x18000000
Using Device Tree in place at 18000000, end 1800dbc8
Starting kernel ...arm
Uncompressing Linux... done, booting the kernel.
4. follow is my bootargs :
=> pri
baudrate=115200
boot_fdt=try
bootcmd=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;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=1
bootscript=echo Running bootscript from mmc ...; source
console=ttymxc0
disp_num=1
emmcdev=2
epdc_waveform=epdc_splash.bin
ethact=FEC
ethprime=FEC
fdt_addr=0x18000000
fdt_file=imx6dl-sabresd.dtb
fdt_high=0xffffffff
image=zImage
initrd_addr=0x12C00000
initrd_high=0xffffffff
ip_dyn=yes
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}
lvds_num=1
mfgtool_args=setenv bootargs console=ttymxc0,115200 rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.file=/fat g_mass_storage.ro=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" enable_wait_mode=off
mmcargs=setenv bootargs console=${console},${baudrate} ${smp} root=${mmcroot} video=mxcfb0:dev=ldb,1280x800M@60,if=RGB24,bpp=32 video=mxcfb1:off video=mxcfb2:off vmalloc=256M Backlight_polarity=0,Backlight_min=0,Backlight_frequency=200 usbcore.autosuspend=-1
mmcautodetect=yes
mmcboot=echo Booting from mmc ...; run mmcargs; 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;
mmcdev=2
mmcpart=1
mmcroot=/dev/mmcblk3p2 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 ${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;
panel=panel1280x800d24
script=boot.scr
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
Environment size: 2883/8188 bytes
5. I suspect it is the DDR parameter。
a. I tried to use the tools to calibrate the DDR parameters at room temperature。but also have same problem。
c. I tried to use the tools to calibrate the DDR parameters at 70°。but also have same problem。
c. I tried to use the tools to calibrate the DDR parameters at 40°。but also have same problem。
6. I suspect it is a problem with the power-on sequence of the product, but I use the oscilloscope to measure VDD_CORE, VDD_SOC, VDD_DDR, and the waveform is the same when it is normal and abnormal.
7. There are currently 10 samples, all showing the same phenomenon.
8. I also tried to use DDR stress to test the stability of DDR, and the test passed.
please help me to solution this problem, thanks very much .
Hello, did you find solution to this issue? Was issue related to RAM calibration?
Hi chenfulin5
except ddr such issue may be caused by emmc signal integrity, so one can try suggestions
provided on
https://community.nxp.com/t5/i-MX-Processors/eMMC-8GB-to-4GB-crash-on-linux-yocto-boot/m-p/373231
Best regards
igor
Dear sir :
I try to use the old ddr, 1GB DDR to startup system , cold startup 500times is ok .
can you give me MT41K256M16TW-107 AUT_P_Micron DDR calibration script 。
I suspect there is a problem with my 2GB DDR calibration parameters.
thanks very much。
scripts can be found on
https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX6ULL-LPDDR2-Script-Aid/ta-p/1121785
Best regards
igor
Dear Sir ,
Do you have a form this configured parameters ? about MT41K256M16TW-107 AUT_P_Micro.
I have configured it with reference to this link, but this phenomenon still occurs .