A13 Olinuxino Micro hang on boot

Started by iso9660, June 19, 2013, 10:39:04 AM

Previous topic - Next topic

iso9660

Hello,

Recently we are having some issues booting A13 Olinuxino Micro in many boards. It hangs after configuring uart.
Have somebody had this issue? Do you have any idea about how to test the board to find the problem?
This is the boot dump:

U-Boot SPL 2012.10-04280-g648b086-dirty (Feb 13 2013 - 22:42:56)
DRAM: 256MB
SUNXI SD/MMC: 0


U-Boot 2012.10-04280-g648b086-dirty (Feb 13 2013 - 22:42:56) Allwinner
Technology

CPU:   SUNXI Family
Board: A13-OLinuXino-MICRO
I2C:   ready
DRAM:  256 MiB
MMC:   SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
reading uEnv.txt

** Unable to read "uEnv.txt" from mmc 0:1 ** Loading file "uEnv.txt" from
mmc device 0:1 Failed to mount ext2 filesystem...
** Bad ext2 partition or disk - mmc 0:1 ** ext2load - load binary file from
a Ext2 filesystem

Usage:
ext2load <interface> <dev[:part]> [addr] [filename] [bytes]
     - load binary file 'filename' from 'dev' on 'interface'
       to address 'addr' from ext2 filesystem Loading file "boot/uEnv.txt"
from mmc device 0:1 Failed to mount ext2 filesystem...
** Bad ext2 partition or disk - mmc 0:1 ** ext2load - load binary file from
a Ext2 filesystem

Usage:
ext2load <interface> <dev[:part]> [addr] [filename] [bytes]
     - load binary file 'filename' from 'dev' on 'interface'
       to address 'addr' from ext2 filesystem reading boot.scr

236 bytes read
Jumping to boot.scr
## Executing script at 44000000
Loading file "script.bin" from mmc device 0:1 Failed to mount ext2
filesystem...
** Bad ext2 partition or disk - mmc 0:1 ** ext2load - load binary file from
a Ext2 filesystem

Usage:
ext2load <interface> <dev[:part]> [addr] [filename] [bytes]
     - load binary file 'filename' from 'dev' on 'interface'
       to address 'addr' from ext2 filesystem Loading file "uImage" from mmc
device 0:1 Failed to mount ext2 filesystem...
** Bad ext2 partition or disk - mmc 0:1 ** ext2load - load binary file from
a Ext2 filesystem

Usage:
ext2load <interface> <dev[:part]> [addr] [filename] [bytes]
     - load binary file 'filename' from 'dev' on 'interface'
       to address 'addr' from ext2 filesystem Wrong Image Format for bootm
command
ERROR: can't get kernel image!
reading script.bin

27580 bytes read
reading uImage

3852400 bytes read
## Booting kernel from Legacy Image at 48000000 ...
    Image Name:   Linux-3.4.29
    Image Type:   ARM Linux Kernel Image (uncompressed)
    Data Size:    3852336 Bytes = 3.7 MiB
    Load Address: 40008000
    Entry Point:  40008000
    Verifying Checksum ... OK
    Loading Kernel Image ... OK
OK

Starting kernel ...

<6>Booting Linux on physical CPU 0
<6>Initializing cgroup subsys cpuset
<5>Linux version 3.4.29 (marine@ubuntu) (gcc version 4.6.3 (Ubuntu/Linaro
4.6.3-1ubuntu5) ) #1 PREEMPT Tue Apr 30 09:00:08 CEST 2013
CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: sun5i
<6>Memory Reserved:
<6>     SYS  : 0x43000000 - 0x4300ffff  (  64 kB)
<6>     VE   : 0x44000000 - 0x48ffffff  (  80 MB)
Memory policy: ECC disabled, Data cache writeback
<6>chip-id: Unknown (AW1625)
<7>On node 0 totalpages: 65536
<7>free_area_init_node: node 0, pgdat c074ce20, node_mem_map c0801000 <7>
Normal zone: 512 pages used for memmap <7>  Normal zone: 0 pages reserved
<7>  Normal zone: 65024 pages, LIFO batch:15
<7>pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768<c>
<7>pcpu-alloc: <c>
  • <c>0 <c>
    Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024
    <5>Kernel command line: console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait
    loglevel=8 panic=10 <6>PID hash table entries: 1024 (order: 0, 4096 bytes)
    <6>Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
    <6>Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
    <6>Memory: 256MB = 256MB total
    <5>Memory: 169668k/169668k available, 92476k reserved, 0K highmem <5>Virtual
    kernel memory layout:
         vector  : 0xffff0000 - 0xffff1000   (   4 kB)
         fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
         vmalloc : 0xd0800000 - 0xff000000   ( 744 MB)
         lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
         pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
         modules : 0xbf000000 - 0xbfe00000   (  14 MB)
           .text : 0xc0008000 - 0xc06d5000   (6964 kB)
           .init : 0xc06d5000 - 0xc06ff000   ( 168 kB)
           .data : 0xc0700000 - 0xc07525f8   ( 330 kB)
            .bss : 0xc075261c - 0xc0800fe0   ( 699 kB)
    <6>SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    <6>NR_IRQS:128
    <6>timer0: Periodic Mode
    <6>sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every
    4294967286ms
    <6>Console: colour dummy device 80x30
    <6>Calibrating delay loop... <c>1001.88 BogoMIPS (lpj=5009408)
    <6>pid_max: default: 32768 minimum: 301
    <6>Mount-cache hash table entries: 512
    <6>Initializing cgroup subsys cpuacct
    <6>Initializing cgroup subsys devices
    <6>Initializing cgroup subsys freezer
    <6>Initializing cgroup subsys blkio
    <6>CPU: Testing write buffer coherency: ok <6>hw perfevents: enabled with
    ARMv7 Cortex-A8 PMU driver, 5 counters available <6>Setting up static
    identity map for 0x404dc200 - 0x404dc258
    <6>devtmpfs: initialized
    <6>dummy:
    <6>NET: Registered protocol family 16
    <6>hw-breakpoint: debug architecture 0x4 unsupported.
    SOFTWINNER DMA Driver, (c) 2003-2004,2006 Simtec Electronics <6>Initialize
    DMAC OK
    <6>bio: create slab <bio-0> at 0
    <5>SCSI subsystem initialized
    <6>usbcore: registered new interface driver usbfs
    <6>usbcore: registered new interface driver hub
    <6>usbcore: registered new device driver usb <6>Advanced Linux Sound
    Architecture Driver Version 1.0.25.
    <6>cfg80211: Calling CRDA to update world regulatory domain <6>Init eGon pin
    module V2.0 <6>Switching to clocksource aw 64bits couter
    <5>FS-Cache: Loaded
    <6>CacheFiles: Loaded
    [usb_manager]: CONFIG_USB_SW_SUN5I_USB0_HOST_ONLY
    [sw_hcd0]: usb host driver initialize........
    [sw_hcd0]: [sw_hcd_host0]: open_usb_clock
    [hcd0]: open, 0x60(0xc141), 0xcc(0x143)
    [sw_hcd0]: host_init_state = 0
    [sw_hcd0]: platform is usb host
    [sw_hcd0]: sw_hcd_host0: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine,
    bulk split, HB-ISO Rx (X), HB-ISO Tx (X), SoftConn)
    [sw_hcd0]: sw_hcd_init_controller: sw_hcd_host0: USB Host mode controller at
    f1c13000 using PIO, IRQ 38 <6>sw_hcd_host0 sw_hcd_host0: sw_hcd host driver
    <6>sw_hcd_host0 sw_hcd_host0: new USB bus registered, assigned bus number 1
    <6>hub 1-0:1.0: USB hub found <6>hub 1-0:1.0: 1 port detected
    [sw_hcd_host0]: Set USB Power ON
    <6>NET: Registered protocol family 2
    <6>IP route cache hash table entries: 2048 (order: 1, 8192 bytes) <6>TCP
    established hash table entries: 8192 (order: 4, 65536 bytes) <6>TCP bind
    hash table entries: 8192 (order: 3, 32768 bytes)
    <6>TCP: Hash tables configured (established 8192 bind 8192)
    <6>TCP: reno registered
    <6>UDP hash table entries: 256 (order: 0, 4096 bytes) <6>UDP-Lite hash table
    entries: 256 (order: 0, 4096 bytes)
    <6>NET: Registered protocol family 1
    <6>RPC: Registered named UNIX socket transport module.
    <6>RPC: Registered udp transport module.
    <6>RPC: Registered tcp transport module.
    <6>RPC: Registered tcp NFSv4.1 backchannel transport module.
    <6>audit: initializing netlink socket (disabled) <5>type=2000
    audit(0.279:1): initialized
    <5>VFS: Disk quotas dquot_6.5.2
    Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) <6>NTFS driver
    2.1.30 [Flags: R/W].
    <6>fuse init (API version 7.18)
    <6>msgmni has been set to 331
    <6>alg: No test for stdrng (krng)
    <6>Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
    <6>io scheduler noop registered <6>io scheduler deadline registered <6>io
    scheduler cfq registered (default) <6>sunxi disp driver loaded (/dev/disp
    api 1.0)
    <6>Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
    <3>[uart]: failed to get uart2's used information
    <3>[uart]: failed to get uart3's used information
    <6>[uart]: used uart info.: 0x02
    <6>[uart]: serial probe 1 irq 2 mapbase 0x01c28400


iso9660

The board hangs. This problem happens sometimes the board boots, most of the times it boots it works fine.

I've been working with this boards for 5 months and since the beginning I've been experiencing problems
like after installing a new kernel and booting ">sudo reboot" the new kernel is not loaded as if memory
had not been cleaned at the beginning of the boot proccess (powering down and up the board makes it work),
so I think that there is something wrong with the boot process, like the places in memory related with u-boot
were only clean at the first boot.

I would like to know if there is a way to be sure the memory is clean (or at least the config.bin, uImage, etc,
addresses in memory) changing u-boot.

olimex

I'm not linux expert but looking at the logs there are lot of errors while reading from the card, may it be a broken SD card?

iso9660

#3
Olimex, we found a hardware workaround but also found that some other people have had the same issue with other Allwinner devices and they created a patch that is integrated in u-boot github repo.
https://github.com/linux-sunxi/u-boot-sunxi/commit/7ecf673239ff54c885344cc4b4b7b309f331a57d

At the current time this patch is integrated in u-boot for Allwinner devices github repo.
https://github.com/linux-sunxi/u-boot-sunxi

The problem was difficult to detect because we use FTDI interfaces to check the boot process and they are
very afected by noise, and FTDI interface sometimes stops receiving in noise conditions.

We isolated two boards in which we were able to reproduce the problem faster, and we think that the boards sometimes generate noise or receive noise that UART1-RX detects as an uart transmission and stops the booting proccess in u-boot prompt.

Soldering 3.3V to UART1-RX worked for us. For some days we will use this hardware workaround until we have enought time to check the software solution.