This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

kernel hangs after uncompression...

Other Parts Discussed in Thread: AM3352

Hello,

I'm working on a custom AM3352 based board. So far i've managed to get the u-boot fully up and running without any problems. However, when I try to boot the kernel, it gets stuck at

"Uncompressing Linux... done, booting the kernel."

After that, nothing! Which is really weird ;-) I've tried the following:

  • test the memory ( which is 128 MB )
  • disable almost every driver
  • recheck the bootargs: yes it is ttyO0, these work fine on the beaglebone
  • turn on Low Level debug and early printk
I'd like to add that on the u-boot files, i've deleted the rtc_init because this seemed to hang... in the linux kernel, i've changed the pinmux to not add the rtc init, but i don't know if this is sufficiënt...
The kernel & ubi fs loads from nand
uboot from spi
i'm clueless!
  • That problem is common enough that the TI Wiki has a page for it:

    http://processors.wiki.ti.com/index.php/Kernel_-_Common_Problems_Booting_Linux

    The "Uncompressing" comes from the loader code within Linux image. It's essentially another bootloader that prints to a hard-coded serial port. Linux might printing to a different tty. But if it worked as a whole on the beaglebone then it's tougher to find. Worst case is that it is DDR config problem. Linux uses DDR harder with DMA than u-boot. There is might be silicon revision checks. Your custom board may have the newest revision that the your kernel is not aware of. Just a guess though. My experience has been with the OMAP-L processors.

  • Hello, 

    Thank you for your respons, i've tried the page you suggested already, but enabling these debug modes doesn't seem te get my any further, since nothing appears on my serial port :s I've done mtest in u-boot and this didn't report any problems with the DDR, so chances are probably slim the problem comes from my ddr, but I'll look it up anyway :-)

    This revision check, how can I know for sure? Or can I change it... i've downloaded a newer PSP, i'll let you know how that goes :-)

    Thanks in advance!

  • The new PSP didn't resolve the problem... still the same...

  • Traced through the Arago GIT for the AM335X. The CPU revision is handled here in arch/arm/mach-omap2/id.c, omap3_check_revision(). Looks like it can't hang there. The OMAP-L13x processors have hang code if it did not like the revision.

    Not sure about the memory test in u-boot. Depending on where u-boot resides, it can only test memory it isn't in. I don't think the test code uses DMA or enables CPU cache or coded in assembler. Linux code tends to be harder on memory. Maybe try backing off the DDR timings. Can say quantatively. I'm a FW guy and HW guys tell me what numbers to put in DDR registers.

  • Hi,

    I've improved the timings, but the problem remains the same... I took me a while to get the hang of the configuration. 

    Anyway, thanks for your help!

  • Could it be that it has something to do with the fact that I only have 128MB of ram? Since the BB has 256MB...

  • Ok, I finally managed to get it to print some debug information! I forgot to add earlyprintk=serial to the boot args...

    Anyway, this is what I get:

    Uncompressing Linux... done, booting the kernel.
    [ 0.000000] Linux version 3.2.0 (root@debian) (gcc version 4.4.5 (Debian 4.4.5-8) ) #19 Tue Aug 20 11:10:23 CEST 2013
    [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7d
    [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [ 0.000000] Machine: am335xevm
    [ 0.000000] bootconsole [earlycon0] enabled
    [ 0.000000] Memory policy: ECC disabled, Data cache writeback
    [ 0.000000] AM335X ES2.0 (neon )
    [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
    [ 0.000000] Kernel command line: console=ttyO0,115200n8 earlyprintk=serial root=ubi0:rootfs rw ubi.mtd=7,2048 rootfstype=ubifs rootwait=1
    [ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
    [ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
    [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
    [ 0.000000] Memory: 128MB = 128MB total
    [ 0.000000] Memory: 123228k/123228k available, 7844k reserved, 0K highmem
    [ 0.000000] Virtual kernel memory layout:
    [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
    [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
    [ 0.000000] vmalloc : 0xc8800000 - 0xff000000 ( 872 MB)
    [ 0.000000] lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)
    [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
    [ 0.000000] .text : 0xc0008000 - 0xc05b1000 (5796 kB)
    [ 0.000000] .init : 0xc05b1000 - 0xc05ed000 ( 240 kB)
    [ 0.000000] .data : 0xc05ee000 - 0xc0656820 ( 419 kB)
    [ 0.000000] .bss : 0xc0656844 - 0xc0685424 ( 187 kB)
    [ 0.000000] NR_IRQS:396
    [ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
    [ 0.000000] Total of 128 interrupts on 1 active controller
    [ 0.000000] OMAP clockevent source: GPTIMER2 at 25000000 Hz
    [ 0.000000] omap_dm_timer_switch_src: Switching to HW default clocksource(sys_clkin_ck) for timer1, this may impact timekeeping in low power state
    [ 0.000000] OMAP clocksource: GPTIMER1 at 25000000 Hz
    [ 0.000000] sched_clock: 32 bits at 25MHz, resolution 40ns, wraps every 171798ms
    [ 0.000000] Console: colour dummy device 80x30
    [ 0.004724] Calibrating delay loop... 571.80 BogoMIPS (lpj=2859008)
    [ 0.068422] pid_max: default: 32768 minimum: 301
    [ 0.073190] Security Framework initialized
    [ 0.077420] Mount-cache hash table entries: 512
    [ 0.082366] CPU: Testing write buffer coherency: ok
    [ 0.088170] devtmpfs: initialized
    [ 0.095049] Unhandled fault: external abort on non-linefetch (0x1028) at 0xf9e3e078
    [ 0.102715] Internal error: : 1028 [#1]
    [ 0.106588] Modules linked in:
    [ 0.109695] CPU: 0 Not tainted (3.2.0 #19)
    [ 0.114189] PC is at _update_sysc_cache+0x38/0x84
    [ 0.118927] LR is at _enable+0x204/0x370
    [ 0.122890] pc : [<c00252cc>] lr : [<c00264c8>] psr: 40000013
    [ 0.122898] sp : c701df00 ip : c701df10 fp : c701df0c
    [ 0.134409] r10: 00000000 r9 : 00000000 r8 : c05bb4d8
    [ 0.139656] r7 : 00000000 r6 : c064e4b0 r5 : 00000000 r4 : c060b888
    [ 0.146192] r3 : c060b888 r2 : c060c92c r1 : 00000078 r0 : f9e3e000
    [ 0.152731] Flags: nZcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
    [ 0.160041] Control: 10c5387d Table: 80004019 DAC: 00000015
    [ 0.165804] Process swapper (pid: 1, stack limit = 0xc701c2f0)
    [ 0.171654] Stack: (0xc701df00 to 0xc701e000)
    [ 0.176051] df00: c701df34 c701df10 c00264c8 c00252a0 00000000 c701df20 c060b888 00000001
    [ 0.184225] df20: c0026e30 00000000 c701df54 c701df38 c0026ed8 c00262d0 00000000 c05bb4d8
    [ 0.192399] df40: c060b888 c05f680c c701df74 c701df58 c0024d10 c0026e3c c05ebec8 c0656880
    [ 0.200574] df60: c00449dc 00000013 c701df84 c701df78 c05bb54c c0024cdc c701dfdc c701df88
    [ 0.208748] df80: c0008858 c05bb4e4 c007ac38 c00ff31c 0000007f c05bb4d8 c701dfbc 00373231
    [ 0.216922] dfa0: 00000000 c05e0000 0000018c c061d628 c00449dc c05ebec8 c05ec494 c00449dc
    [ 0.225096] dfc0: 00000013 00000000 00000000 00000000 c701dff4 c701dfe0 c05b128c c0008828
    [ 0.233270] dfe0: 00000000 c05b1208 00000000 c701dff8 c00449dc c05b1214 aaaaaaaa aabaaeba
    [ 0.241434] Backtrace:
    [ 0.243948] [<c0025294>] (_update_sysc_cache+0x0/0x84) from [<c00264c8>] (_enable+0x204/0x370)
    [ 0.252557] [<c00262c4>] (_enable+0x0/0x370) from [<c0026ed8>] (_setup+0xa8/0x188)
    [ 0.260122] r7:00000000 r6:c0026e30 r5:00000001 r4:c060b888
    [ 0.265821] [<c0026e30>] (_setup+0x0/0x188) from [<c0024d10>] (omap_hwmod_for_each+0x40/0x60)
    [ 0.274331] r5:c05f680c r4:c060b888
    [ 0.277972] [<c0024cd0>] (omap_hwmod_for_each+0x0/0x60) from [<c05bb54c>] (omap_hwmod_setup_all+0x74/0xa0)
    [ 0.287598] r7:00000013 r6:c00449dc r5:c0656880 r4:c05ebec8
    [ 0.293299] [<c05bb4d8>] (omap_hwmod_setup_all+0x0/0xa0) from [<c0008858>] (do_one_initcall+0x3c/0x190)
    [ 0.302678] [<c000881c>] (do_one_initcall+0x0/0x190) from [<c05b128c>] (kernel_init+0x84/0x128)
    [ 0.311377] [<c05b1208>] (kernel_init+0x0/0x128) from [<c00449dc>] (do_exit+0x0/0x69c)
    [ 0.319286] r5:c05b1208 r4:00000000
    [ 0.322911] Code: e3100c01 15930050 05930050 119010b1 (07901001)
    [ 0.329116] ---[ end trace 1b75b31a2719ed1c ]---
    [ 0.333785] Kernel panic - not syncing: Attempted to kill init!
    [ 0.339728] Backtrace:
    [ 0.342254] [<c0018dc4>] (dump_backtrace+0x0/0x10c) from [<c0433780>] (dump_stack+0x18/0x1c)
    [ 0.350688] r7:c701bc00 r6:c0611f08 r5:c06594c8 r4:c06594c8
    [ 0.356395] [<c0433768>] (dump_stack+0x0/0x1c) from [<c04337e8>] (panic+0x64/0x1a0)
    [ 0.364058] [<c0433784>] (panic+0x0/0x1a0) from [<c004505c>] (do_exit+0x680/0x69c)
    [ 0.371631] r3:c701bd24 r2:c701dd28 r1:c701dd64 r0:c0520ee0
    [ 0.377336] [<c00449dc>] (do_exit+0x0/0x69c) from [<c0018ff4>] (die+0x124/0x2d8)
    [ 0.384740] [<c0018ed0>] (die+0x0/0x2d8) from [<c0019230>] (arm_notify_die+0x24/0x5c)
    [ 0.392580] [<c001920c>] (arm_notify_die+0x0/0x5c) from [<c0008660>] (do_DataAbort+0x94/0xa4)
    [ 0.401116] [<c00085cc>] (do_DataAbort+0x0/0xa4) from [<c0014f58>] (__dabt_svc+0x38/0x60)
    [ 0.409291] Exception stack(0xc701deb8 to 0xc701df00)
    [ 0.414369] dea0: f9e3e000 00000078
    [ 0.422551] dec0: c060c92c c060b888 c060b888 00000000 c064e4b0 00000000 c05bb4d8 00000000
    [ 0.430733] dee0: 00000000 c701df0c c701df10 c701df00 c00264c8 c00252cc 40000013 ffffffff
    [ 0.438906] r7:c701deec r6:ffffffff r5:40000013 r4:c00252cc
    [ 0.444606] [<c0025294>] (_update_sysc_cache+0x0/0x84) from [<c00264c8>] (_enable+0x204/0x370)
    [ 0.453220] [<c00262c4>] (_enable+0x0/0x370) from [<c0026ed8>] (_setup+0xa8/0x188)
    [ 0.460793] r7:00000000 r6:c0026e30 r5:00000001 r4:c060b888
    [ 0.466498] [<c0026e30>] (_setup+0x0/0x188) from [<c0024d10>] (omap_hwmod_for_each+0x40/0x60)
    [ 0.475008] r5:c05f680c r4:c060b888
    [ 0.478648] [<c0024cd0>] (omap_hwmod_for_each+0x0/0x60) from [<c05bb54c>] (omap_hwmod_setup_all+0x74/0xa0)
    [ 0.488283] r7:00000013 r6:c00449dc r5:c0656880 r4:c05ebec8
    [ 0.493981] [<c05bb4d8>] (omap_hwmod_setup_all+0x0/0xa0) from [<c0008858>] (do_one_initcall+0x3c/0x190)
    [ 0.503366] [<c000881c>] (do_one_initcall+0x0/0x190) from [<c05b128c>] (kernel_init+0x84/0x128)
    [ 0.512066] [<c05b1208>] (kernel_init+0x0/0x128) from [<c00449dc>] (do_exit+0x0/0x69c)
    [ 0.519983] r5:c05b1208 r4:00000000

  • That's good to hear you've got serial port output. Bad that you have a stack dump. I don't remember that earlyprintk took parameter. Something new.

    Looks like it panic'ed somewhere in the hw_mod code. I believe the AM335X board code uses the I2C EEPROM contents to conditionally run init code. You'll need to initialize the EEPROM or patch the board code to not use the EEPROM values. I am guessing the hw_mod did not like whatever value came out of the EEPROM.

  • Hello,

    I've found that the problem AGAIN was the RTC; this time it was a hwmod, wich i had to delete from the hwmod table found in: omap_hwmod_33xx_data.c, there I looked for am33xx_rtc_hwmod and removed the entry in am33xx_hwmods[]. However, when i boot now, I get a whole lot of extra issues, probably related to drivers and such, so i'll probably be able to fix this myself. I will have to look up if the stalls on initing the RTC are normal... we don't use it, but i didn't expect a kernel panic because of this :s

    Many, many thanks!