2010-05-28 04:46:08     BF532 crash when download file

Document created by Aaronwu Employee on Aug 21, 2013
Version 1Show Document
  • View in full screen mode

2010-05-28 04:46:08     BF532 crash when download file

roy xue (CHINA)

Message: 89955   

 

Hi,all

I'm using a bf532 custom board, it running well on uboot. But it have network problem when runing at uClinux-dist-2009R1 kernel. when using tftp to get file, the kernel crash. the crash place is random and the OOPS type is different. such as:Illegal use of supervisor resource, Data access misaligned address violation, NULL pointer access, Undefined instruction.

Here is an error.

------------------------------------------------------------------

Data access misaligned address violation

- Attempted misaligned data memory or data cache access.

Kernel OOPS in progress

Deferred Exception context

CURRENT PROCESS:

COMM=tftp PID=250

CPU = 0

TEXT = 0x02800000-0x02850494        DATA = 0x02994494-0x02997ec8

BSS = 0x02997ec8-0x029c0000  USER-STACK = 0x029dfe70

 

return address: [0x00039740]; contents of:

0x00039720:  936a  2fca  05f5  0167  6fa6  3200  3031  0037

0x00039730:  9145  9169  ac6a  09d1  1012  5e8d  6c09  b111

0x00039740: [9369] 60f8  0807  1807  e14a  0020  e10a  8a2c

0x00039750:  9110  0040  6c66  0127  05b5  0010  304d  e3ff

 

ADSP-BF532-0.6 400(MHz CCLK) 133(MHz SCLK) (mpu off)

Linux version 2.6.28.10-ADI-2009R1astfin

Built with gcc version 4.1.2 (ADI svn)

 

SEQUENCER STATUS:  Not tainted

SEQSTAT: 00002024  IPEND: 8030  SYSCFG: 0006

  EXCAUSE   : 0x24

  interrupts disabled

  physical IVG5 asserted : <0xffa08bc8> { _evt_ivhw + 0x0 }

  physical IVG15 asserted : <0xffa08d18> { _evt_system_call + 0x0 }

  logical irq   6 mapped  : <0xffa08324> { _timer_interrupt + 0x0 }

  logical irq  21 mapped  : <0x000d7f24> { _bfin_serial_dma_rx_int + 0x0 }

  logical irq  22 mapped  : <0x000d8170> { _bfin_serial_dma_tx_int + 0x0 }

  logical irq  34 mapped  : <0x00109374> { _gpio_keys_isr + 0x0 }

RETE: <0x00000000> /* Maybe null pointer? */

RETN: <0x02ac9ba4> /* kernel dynamic memory */

RETX: <0x00000480> /* Maybe fixed code section */

RETS: <0x02acce3c> { :dm9000:_init_module + 0x7201c }

PC  : <0x00039740> { _kmem_cache_free + 0x1c }

DCPLB_FAULT_ADDR: <0x02af2210> /* kernel dynamic memory */

ICPLB_FAULT_ADDR: <0x00039740> { _kmem_cache_free + 0x1c }

 

PROCESSOR STATE:

R0 : 02afdd40    R1 : 00000003    R2 : 00000002    R3 : 00000000

R4 : fffef2b7    R5 : 02ac8000    R6 : 02ac2440    R7 : 0000ffff

P0 : 02afdd40    P1 : 0000000f    P2 : 03625ba4    P3 : 002d7000

P4 : 002d7380    P5 : 02af2211    FP : 02ac2440    SP : 02ac9ac8

LB0: 000c31ac    LT0: 000c31aa    LC0: 00000000

LB1: 002257cf    LT1: 002257ce    LC1: 00000000

B0 : 00000000    L0 : 00000000    M0 : 00000001    I0 : 029dfd18

B1 : 00000000    L1 : 00000000    M1 : 00000000    I1 : 02a5a144

B2 : 00000000    L2 : 00000000    M2 : 00000000    I2 : 0291fa78

B3 : 00000000    L3 : 00000000    M3 : 00000000    I3 : 0284d5c7

A0.w: 00000003   A0.x: 00000000   A1.w: 00000003   A1.x: 00000000

USP : 029dfc98  ASTAT: 02003025

 

Hardware Trace:

   0 Target : <0x00004b5c> { _trap_c + 0x0 }

     Source : <0xffa08670> { _exception_to_level5 + 0xa4 }

   1 Target : <0xffa085cc> { _exception_to_level5 + 0x0 }

     Source : <0xffa084a2> { _bfin_return_from_exception + 0x6 }

   2 Target : <0xffa0849c> { _bfin_return_from_exception + 0x0 }

     Source : <0xffa08530> { _ex_trap_c + 0x6c }

   3 Target : <0xffa084c4> { _ex_trap_c + 0x0 }

     Source : <0xffa086fa> { _trap + 0x2a }

   4 Target : <0xffa086d0> { _trap + 0x0 }

     Source : <0x0003973e> { _kmem_cache_free + 0x1a } 0xb111

   5 Target : <0x00039724> { _kmem_cache_free + 0x0 }

     Source : <0xffa08bc6> { __common_int_entry + 0xca }

   6 Target : <0xffa08b64> { __common_int_entry + 0x68 }

     Source : <0xffa089bc> { _return_from_int + 0x58 }

   7 Target : <0xffa089bc> { _return_from_int + 0x58 }

     Source : <0xffa08992> { _return_from_int + 0x2e }

   8 Target : <0xffa08964> { _return_from_int + 0x0 }

     Source : <0xffa08b60> { __common_int_entry + 0x64 }

   9 Target : <0xffa08b5e> { __common_int_entry + 0x62 }

     Source : <0xffa082de> { _asm_do_IRQ + 0x66 }

  10 Target : <0xffa082d6> { _asm_do_IRQ + 0x5e }

     Source : <0x0001230e> { _irq_exit + 0x2e } RTS

  11 Target : <0x0001230e> { _irq_exit + 0x2e }

     Source : <0x000122fc> { _irq_exit + 0x1c } IF !CC JUMP

  12 Target : <0x000122e0> { _irq_exit + 0x0 }

     Source : <0xffa082d2> { _asm_do_IRQ + 0x5a }

  13 Target : <0xffa082d2> { _asm_do_IRQ + 0x5a }

     Source : <0xffa089da> { _evt14_softirq + 0x6 }

  14 Target : <0xffa089d4> { _evt14_softirq + 0x0 }

     Source : <0xffa089d2> { _lower_to_irq14 + 0x12 }

  15 Target : <0xffa089c0> { _lower_to_irq14 + 0x0 }

     Source : <0xffa082ce> { _asm_do_IRQ + 0x56 }

 

Kernel Stack

Stack info:

SP: [0x02ac9f24] <0x02ac9f24> /* kernel dynamic memory */

Memory from 0x02ac9f20 to 02aca000

02ac9f20: 00000010 [003aeacc] 00008000  00002000  00000000  02aca000  003aeacc  003aeacc

02ac9f40:<02808858> ffa08d7c  02002020  002257cf  00226361  002257ce  00226354  00000000

02ac9f60: 00000000  00000003  00000000  00000003  00000000  00000000  00000000  00000000

02ac9f80: 00000000  00000000  00000000  00000000  00000000  00000000  00000000  00000000

02ac9fa0: 00000001  0284d5c7  0291fa78  024d9940  029dfd18  029dfc98  029dfca4  02995950

02ac9fc0: 02995950  024d9940  024d91a4  003aeab8  00000146  00000003  00cb05cb  00000010

02ac9fe0: 024d91a8  00000000  00000004  029bf004  00000003  00000003  00000146  00000006

Return addresses in stack:

    address : <0x02808858> [ /bin/busybox + 0x8858 ]

------------------------------------------------------------------------

the objdump of the kmem_cache_free function

    000006b0 <_kmem_cache_free>:

     6b0:       f5 05           [--SP] = (R7:6, P5:5);

     6b2:       67 01           [--SP] = RETS;

     6b4:       a6 6f           SP += -0xc;             /* (-12) */

     6b6:       00 32           P0 = R0;  

     6b8:       31 30           R6 = R1;

     6ba:       37 00           CLI R7;

     6bc:       45 91           P5 = [P0];     

     6be:       69 91           P1 = [P5];

     6c0:       6a ac           P2 = [P5 + 0x4];

     6c2:       d1 09           CC = P1 < P2 (IU);

     6c4:       12 10           IF !CC JUMP 0x6e8 <_kmem_cache_free+0x38>;

     6c6:       8d 5e           P2 = P5 + (P1 << 0x2);

     6c8:       09 6c           P1 += 0x1;              /* (  1) */

     6ca:       11 b1           [P2 + 0x10] = R1;       

     6cc:       69 93           [P5] = P1;                   ////////[02af2211] = 0000000f

     6ce:       f8 60           R0 = 0x1f (X);          /*              R0=0x1f( 31) */

     6d0:       07 08           CC = R7 == R0;

     6d2:       07 18           IF CC JUMP 0x6e0 <_kmem_cache_free+0x30>;

     6d4:       4a e1 00 00     P2.H = 0x0;             /* (  0)        P2=0x0 <_kmem_list3_init> */

     6d8:       0a e1 00 00     P2.L = 0x0;             /* (  0)        P2=0x0 <_kmem_list3_init> */

     6dc:       10 91           R0 = [P2];

     6de:       40 00           STI R0;

     6e0:       66 6c           SP += 0xc;              /* ( 12) */

     6e2:       27 01           RETS = [SP++];

     6e4:       b5 05           (R7:6, P5:5) = [SP++];

     6e6:       10 00           RTS;

     6e8:       4d 30           R1 = P5;

     6ea:       ff e3 4d ff     CALL 0x584 <_cache_flusharray>;

     6ee:       6a 91           P2 = [P5];

     6f0:       55 5e           P1 = P5 + (P2 << 0x2);

     6f2:       0a 6c           P2 += 0x1;              /* (  1) */

     6f4:       0e b1           [P1 + 0x10] = R6;

     6f6:       6a 93           [P5] = P2;

     6f8:       eb 2f           JUMP.S 0x6ce <_kmem_cache_free+0x1e>;  

   

I think the P5 is 02af2211 when run to { _kmem_cache_free + 0x1c } so g0t that oops.

But  at the '6be: P1 = [P5];' the P5 should be align , And the function doesn't change the P5 since than.

Why the P5 change. I'm not sure wether a hardware problem.

 

Regards

Roy

QuoteReplyEditDelete

 

 

2010-05-28 11:20:03     Re: BF532 crash when download file

Robin Getz (UNITED STATES)

Message: 89961   

 

Roy:

 

Sounds like it is a hardware issue. In U-Boot there is a memtest - does it work/pass?

 

Thanks

 

-Robin

QuoteReplyEditDelete

 

 

2010-05-31 02:42:42     Re: BF532 crash when download file

roy xue (CHINA)

Message: 90009   

 

Hi  Robin,

 

I have been use mtest that does not ebable CFG_ALT_MEMTEST to test the board for a long time, It is fine.  But if enable CFG_ALT_MEMTEST . there are many data line errors.

 

-------------------------------------------------------------------------------------

uboot>mtest

Testing 00000000 ... 03f7ffff:

FAILURE (data line): expected 00000001, actual fffffffe

FAILURE (data line): Is 00000001, should be fffffffe

FAILURE (data line): expected 00000002, actual fffffffd

FAILURE (data line): Is 00000002, should be fffffffd

-------------------------------------------------------------------------------------

 

Is it mean that the board have SDRAM problem ? If so how to fix it?

 

Thanks,

 

Roy

QuoteReplyEditDelete

 

 

2010-05-31 21:55:32     Re: BF532 crash when download file

roy xue (CHINA)

Message: 90029   

 

Hi, Robin

 

I have enable CFG_ALT_MEMTEST for mtest and test a bf537 board. It have data line errors too. But the board which is running well at uClinux and uboot, So i guest the  CFG_ALT_MEMTEST option is not suitable for both bf532 and bf537 boards.

 

The bf532 board is using DM9000 for network, the interrupt of dm9000 driver  is  zero at /proc/interrupts  some times.  The network is no work then.  Reinstall the driver module would be ok. Wether the crash problem is relate to the interrupt ? Is it possible to test reliability  of the interrupt ?

 

Regards,

 

Roy

Attachments

    Outcomes