uboot hangs freeing init memory 216k - screen blank white


I'm building JB4.3 for custom board IMX6DL I have the board connected to a LVDS screen 7inch all the images are flashed to SD card and when I boot the kernel starts and runs until Freeing init memory:216k

My build environment is as follows :

bootcmd_android=booti mmc2
bootargs_nfs=setenv bootargs ${bootargs} fec_mac=${ethaddr} root=/dev/nfs ip=${ipaddr} nfsroot=${serverip}:${nfsroot},v3,tcp
bootargs_nand=setenv bootargs ${bootargs} fec_mac=${ethaddr} ${mtdparts} gpmi_debug_init enable_wait_mode=off ubi.mtd=TargetFS root=ubi0:rootfs rootfstype=ubifs rootwait rw
bootargs_mmc=setenv bootargs ${bootargs} fec_mac=${ethaddr} root=/dev/mmcblk0p1 rootfstype=ext4 rootwait rw
bootcmd_net=run bootargs_nfs;tftpboot ${loadaddr} ${kernel}; bootm
bootcmd_net_mmc=run bootargs_mmc;tftpboot ${loadaddr} ${kernel}; bootm
bootcmd_mmc= for disk in 0 1 ; do mmc dev ${disk} ;for fs in fat ext2 ; do ${fs}load mmc ${disk}:1 ${loadaddr} /6q_bootscript && source ${loadaddr} ; done ; done
bootcmd_nand=run bootargs_nand;nand read ${loadaddr} Kernel 0x600000;bootm
loadcmd_nfs=nfs ${loadaddr} ${serverip}:/nfsroot/uImage
clearenv=sf probe 1 && sf erase 0xc0000 0x2000 && echo restored environment to factory default
upgradeu=for disk in 0 1 ; do mmc dev ${disk} ;for fs in fat ext2 ; do ${fs}load mmc ${disk}:1 ${loadaddr} /6q_upgrade && source ${loadaddr} ; done ; done
bootcmd=run bootcmd_nand_mmc
bootcmd_nand_mmc=run bootargs_mmc;nand read ${loadaddr} Kernel 0x600000;booti $loadaddr
bootargs=console=ttymxc3,115200 init=/init video=mxcfb0:dev=ldb,LDB-WVGA,if=RGB666 video=mxcfb1:off fbmem=28M vmalloc=400M
bootargs=console=ttymxc3,115200 init=/init video=mxcfb0:dev=ldb,LDB-WVGA,if=RGB666 video=mxcfb1:off video=mxcfb2:off fbmem=28M vmalloc=400M

Environment size: 2021/131068 bytes

My output code when starting kernel is:

NAND read: device 0 offset 0x300000, size 0x600000
 6291456 bytes read: OK
kernel   @ 10008000 (4435508)
ramdisk  @ 11000000 (233989)
kernel cmdline:
        use uboot command line:
        console=ttymxc3,115200 init=/init video=mxcfb0:dev=ldb,LDB-WVGA,if=RGB666 video=mxcfb1:off fbmem=28M vmalloc=400M fec_mac=00:05:00:08:ED:CO root=/dev/mmcblk0p1 rootfstype=ext4 rootwait rw

Starting kernel ...

Initializing cgroup subsys cpu
Linux version 3.0.35-06428-ge1c0848-dirty (jonathan@jonathan-VirtualBox) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #14 SMP PREEMPT Fri Apr 17 11:20:00 CEST 2015
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: EfusA9 Quad/Solo
Memory policy: ECC disabled, Data cache writealloc
CPU identified as i.MX6DL/SOLO, silicon rev 1.2
PERCPU: Embedded 7 pages/cpu @80e69000 s5536 r8192 d14944 u32768
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 97280
Kernel command line: noinitrd loglevel=7 no_console_suspend console=ttymxc3,115200 init=/init video=mxcfb0:dev=ldb,LDB-WVGA,if=RGB666 video=mxcfb1:off fbmem=28M vmalloc=400M fec_mac=00:05:00:08:ED:CO root=/dev/mmcblk0p1 rootfstype=ext4 rootwait rw
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 384MB = 384MB total
Memory: 377800k/377800k available, 146488k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xfbe00000 - 0xffe00000   (  64 MB)
    vmalloc : 0xa0800000 - 0xf2000000   (1304 MB)
    lowmem  : 0x80000000 - 0xa0000000   ( 512 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .init : 0x80008000 - 0x8003e000   ( 216 kB)
      .text : 0x8003e000 - 0x8087fabc   (8455 kB)
      .data : 0x80880000 - 0x80911740   ( 582 kB)
       .bss : 0x80911764 - 0x80a63ad8   (1353 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Preemptible hierarchical RCU implementation.
MXC GPIO hardware
sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms
Set periph_clk's parent to pll2_pfd_400M!
MXC_Early serial console at MMIO 0x21f0000 (options '115200')
bootconsole [ttymxc3] enabled
Console: colour dummy device 80x30
Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
Initializing cgroup subsys debug
Initializing cgroup subsys cpuacct
Initializing cgroup subsys freezer
CPU: Testing write buffer coherency: ok
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
Brought up 1 CPUs
SMP: Total of 1 processors activated (1581.05 BogoMIPS).
devtmpfs: initialized
print_constraints: dummy:
NET: Registered protocol family 16
print_constraints: vddpu: 725 <--> 1300 mV at 700 mV fast normal
print_constraints: vddcore: 725 <--> 1300 mV at 1150 mV fast normal
print_constraints: vddsoc: 725 <--> 1300 mV at 1200 mV fast normal
print_constraints: vdd2p5: 2000 <--> 2775 mV at 2400 mV fast normal
print_constraints: vdd1p1: 800 <--> 1400 mV at 1100 mV fast normal
print_constraints: vdd3p0: 2625 <--> 3400 mV at 3000 mV fast normal
### - HW config Board 0 Rev.0.0
hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
hw-breakpoint: 1 breakpoint(s) reserved for watchpoint single-step.
hw-breakpoint: maximum watchpoint size is 4 bytes.
L310 cache controller enabled
l2x0: 16 ways, CACHE_ID 0x410000c8, AUX_CTRL 0x32050000, Cache size: 524288 B
bio: create slab <bio-0> at 0
mxs-dma mxs-dma-apbh: initialized
print_constraints: VDDA: 3300 mV
print_constraints: VDDIO: 3300 mV
print_constraints: VDDD: 1500 mV
print_constraints: vmmc: 3300 mV
vgaarb: loaded
SCSI subsystem initialized
spi_imx imx6q-ecspi.0: probed
spi_imx imx6q-ecspi.1: probed
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Freescale USB OTG Driver loaded, $Revision: 1.55 $
imx-ipuv3 imx-ipuv3.0: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 driver probed
mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 dphy version is 0x3130302a
MIPI CSI2 driver module loaded
Advanced Linux Sound Architecture Driver Version 1.0.24.
Bluetooth: Core ver 2.16
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO socket layer initialized
Switching to clocksource mxc_timer1
NET: Registered protocol family 2
IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
TCP established hash table entries: 16384 (order: 5, 131072 bytes)
TCP bind hash table entries: 16384 (order: 5, 196608 bytes)
TCP: Hash tables configured (established 16384 bind 16384)
TCP reno registered
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
Trying to unpack rootfs image as initramfs...
Freeing initrd memory: 228K
Static Power Management for Freescale i.MX6
wait mode is enabled for i.MX6
cpaddr = a0820000 suspend_iram_base=a0890000
PM driver module loaded
iMX6 PCIe PCIe RC mode imx_pcie_pltfm_probe entering.
PCIE: imx_pcie_pltfm_probe start link up.
link up failed, DB_R0:0x00487200, DB_R1:0x08200000!
IMX PCIe port: link down with power supply 0!
IMX usb wakeup probe
add wake up source irq 75
IMX usb wakeup probe
cpu regulator mode:ldo_enable
i.MXC CPU frequency driver
ashmem: initialized
JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
fuse init (API version 7.16)
msgmni has been set to 738
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
mxc_sdc_fb mxc_sdc_fb.0: register mxc display driver ldb
_regulator_get: get() with no identifier
Console: switching to colour frame buffer device 100x30
mxc_sdc_fb mxc_sdc_fb.1: Can't get fb option for mxcfb1!
imx-sdma imx-sdma: loaded firmware 1.1
imx-sdma imx-sdma: initialized
Serial: IMX driver
imx-uart.0: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX
imx-uart.1: ttymxc1 at MMIO 0x21e8000 (irq = 59) is a IMX
imx-uart.3: ttymxc3 at MMIO 0x21f0000 (irq = 61) is a IMX
console [ttymxc3] enabled, bootconsole disabled
console [ttymxc3] enabled, bootconsole disabled
imx-uart.4: ttymxc4 at MMIO 0x21f4000 (irq = 62) is a IMX
[drm] Initialized drm 1.1.0 20060810
[drm] Initialized vivante 1.0.0 20120216 on minor 0
brd: module loaded
loop: module loaded
at24 0-0057: 2048 byte at24 EEPROM, writable, 8 bytes/write
m25p80 spi0.0: found m25p05-nonjedec, expected sst25vf016b
m25p80 spi0.0: m25p05-nonjedec (64 Kbytes)
Creating 2 MTD partitions on "m25p80":
0x000000000000-0x000000040000 : "bootloader"
mtd: partition "bootloader" extends beyond the end of device "m25p80" -- size truncated to 0x10000
0x000000010000-0x000000010000 : "kernel"
mtd: partition "kernel" is out of reach -- disabled
ONFI flash detected
ONFI param page 0 valid
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron MT29F2G08ABAEAH4)
gpmi-nand imx6q-gpmi-nand.0: enable asynchronous EDO mode 5
Scanning device for bad blocks
Bad eraseblock 16 at 0x000000200000
Bad eraseblock 17 at 0x000000220000
Bad eraseblock 18 at 0x000000240000
Creating 6 MTD partitions on "gpmi-nand":
0x000000000000-0x000000080000 : "NBoot"
0x000000080000-0x000000280000 : "UBoot"
0x000000280000-0x0000002c0000 : "UBootEnv"
0x0000002c0000-0x000000300000 : "UserDef"
0x000000300000-0x000000900000 : "Kernel"
0x000000900000-0x000010000000 : "TargetFS"
GPMI NAND driver registered. (IMX)
vcan: Virtual CAN interface driver
CAN device driver interface
flexcan netdevice driver
flexcan imx6q-flexcan.0: device registered (reg_base=a09b0000, irq=142)
flexcan imx6q-flexcan.1: device registered (reg_base=a09b8000, irq=143)
FEC Ethernet Driver
fec_enet_mii_bus: probed
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1
fsl-ehci fsl-ehci.0: irq 75, io base 0x02184000
fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
add wake up source irq 72
fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2
fsl-ehci fsl-ehci.1: irq 72, io base 0x02184200
fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
ARC USBOTG Device Controller driver (1 August 2005)
android_usb gadget: Mass Storage Function, version: 2009/09/11
android_usb gadget: Number of LUNs=1
 lun0: LUN: removable file: (no medium)
Gadget Android: controller 'fsl-usb2-udc' not recognized
android_usb gadget: android_usb ready
Suspend udc for OTG auto detect
fsl-usb2-udc: bind to driver android_usb
mousedev: PS/2 mouse device common for all mice
input: gpio-keys as /devices/platform/gpio-keys/input/input0
sx8655 1-0049: sx8655_probe()
sx8655 1-0049: write mask fail
sx8655: probe of 1-0049 failed with error -5
i2c-core: driver [isl29023] using legacy suspend method
i2c-core: driver [isl29023] using legacy resume method
rtc-pcf8563 0-0051: chip found, driver version 0.4.3
rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.
rtc-pcf8563 0-0051: retrieved date/time is not valid.
using rtc device, rtc-pcf8563, for alarms
rtc-pcf8563 0-0051: rtc core: registered rtc-pcf8563 as rtc0
i2c /dev entries driver
Linux video capture interface: v2.00
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video16
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video17
imx2-wdt imx2-wdt.0: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=1)
Bluetooth: HCI UART driver ver 2.2
Bluetooth: HCI H4 protocol initialized
Bluetooth: HCI BCSP protocol initialized
Bluetooth: HCILL protocol initialized
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci sdhci-esdhc-imx.2: no write-protect pin available!
sdhci sdhci-esdhc-imx.2: no card-detect pin available!
android_work: did not send uevent (0 0   (null))
mmc0: SDHCI controller on platform [sdhci-esdhc-imx.2] using ADMA
sdhci sdhci-esdhc-imx.1: no write-protect pin available!
sdhci sdhci-esdhc-imx.1: no card-detect pin available!
mmc1: SDHCI controller on platform [sdhci-esdhc-imx.1] using ADMA
sdhci sdhci-esdhc-imx.0: no write-protect pin available!
sdhci sdhci-esdhc-imx.0: no card-detect pin available!
mmc2: SDHCI controller on platform [sdhci-esdhc-imx.0] using ADMA
mxc_vdoa mxc_vdoa: i.MX Video Data Order Adapter(VDOA) driver probed
VPU initialized
android_work: sent uevent USB_STATE=CONNECTED
mxc_asrc registered
android_work: sent uevent USB_STATE=DISCONNECTED
Galcore version
revserved_memory_account:viv_gpu registerd
Thermal calibration data is 0x54d4b869
Thermal sensor with ratio = 174
usb 2-1: new high speed USB device number 2 using fsl-ehci
Anatop Thermal registered as thermal_zone0
anatop_thermal_probe: default cooling device is cpufreq!
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
android_work: sent uevent USB_STATE=CONNECTED
logger: created 256K log 'log_main'
logger: created 256K log 'log_events'
logger: created 256K log 'log_radio'
logger: created 256K log 'log_system'
usbcore: registered new interface driver snd-usb-audio
Cirrus Logic CS42888 ALSA SoC Codec Driver
i2c-core: driver [cs42888] using legacy suspend method
i2c-core: driver [cs42888] using legacy resume method
+++ [arch/arm/mach-mx6/board-mx6q_efusa9.c 522]:mx6_efusa9_sgtl5000_init:  rate 22000000
sgtl5000 0-000a: sgtl5000 revision 17
hub 2-1:1.0: USB hub found
print_constraints: 0-000a: 850 <--> 1600 mV at 1200 mV normal
hub 2-1:1.0: 4 ports detected
android_work: sent uevent USB_STATE=DISCONNECTED
asoc: sgtl5000 <-> imx-ssi.1 mapping ok
Initialize HDMI-audio failed. Load HDMI-video first!
ALSA device list:
  #0: sgtl5000-audio
NET: Registered protocol family 26
TCP cubic registered
NET: Registered protocol family 17
android_work: sent uevent USB_STATE=CONNECTED
can: controller area network core (rev 20090105 abi 8)
android_work: sent uevent USB_STATE=DISCONNECTED
NET: Registered protocol family 29
can: raw protocol (rev 20090105)
can: broadcast manager protocol (rev 20090105 t)
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Bluetooth: BNEP filters: protocol multicast
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
lib80211: common routines for IEEE802.11 drivers
Registering the dns_resolver key type
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
Bus freq driver module loaded
Bus freq driver Enabled
android_work: sent uevent USB_STATE=CONNECTED
DVFS driver module loaded
regulator_init_complete: VDDD: incomplete constraints, leaving on
rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.
rtc-pcf8563 0-0051: retrieved date/time is not valid.
rtc-pcf8563 0-0051: hctosys: invalid date/time
Freeing init memory: 216K

Sorry about the length of the code, any help would be greatly appreciated, I'm rather stuck and can't find anything on the internet to combat this.

asked on Stack Overflow Apr 21, 2015 by jmyth742 • edited Apr 12, 2019 by karel

1 Answer


Despite my not being familiar with this platform, and the age of the question, I think it's still helpful to address the question in general, from the standpoint of booting a Linux system. If you look at systems that do work, you can get at least a clue.

The "freeing memory" is the last thing the kernel does before starting init. The next line should be init starting and displaying its version (or whatever it likes to do). If init is missing, there would be a kernel panic, so I guess there's an issue with init itself.

Implied in all this is that

  • the bootloader ran successfully
  • the bootloader found and loaded the kernel
  • the kernel started up, ran, did all the kernel-things
  • the kernel found a file system (or ramfs) to run all the startup things
  • the kernel finished everything and is now handing off to init so that the actual running of the system can proceed.

I'm going to leave this here since I think it's likely other people will have similar issues, and lacking an actual answer, this is a start. In particular, there's nothing wrong with U-Boot. The worst you could do is tell it is to do something weird with init, but "init=/init" is about as straightforward as it gets.

answered on Stack Overflow Apr 27, 2019 by gbarry

User contributions licensed under CC BY-SA 3.0