AnsweredAssumed Answered

Testing BF547 based board

Question asked by dpenev on Aug 22, 2012
Latest reply on Sep 9, 2012 by Aaronwu

Hi Guys,

 

We have developed Blackfin based board using BF547-Rev04.

At the moment we face strange probably hardware issue.

Let me share few details

 

- We use toolchain 2011R1-RC4 and uClinux 2011R1-RC3

- The DDR routing due to a PCB mistake is not perfect now so we had to

reduce the SCLK to 75 MHz

- Now mtest in uboot is working OK for a very long time.

- as the uCinux boots we get 2 different kind of OOPS. The OOPS trace are

exactly the same on each try.

   Which one of the OOPS we will get depends even from the place in memory

we put uImage before 'bootm' it.

   Let me copy one of the OOPS at the end of this message.

 

The first reason for this behavior seems to be memory issue.

 

At the moment we have soldered two Micron memory chips MT46V64M8BN-5B. (On

the board we have footprints for 4 chips,

two are not soldered and their traces are hanging as a bridged taps now)

We are using Vtt active termination. The series resistors are  22 Ohm and

the Vtt pull-ups are 47 Ohm.

 

We have experimented a lot  varying the SCLK and keeping EBIU_DDRCTL[0..2]

as per the excel document

available at http://docs.blackfin.uclinux.org/doku.php?id=bfin:sdram.

The most stable behavior we have got around SCLK=75MHz. For higher and lower

frequencies we get worse results.

With SCLK=75 MHz  mtest is working stable. Can we assume that our memory is  OK for this settings then?

 

The OOPS we get looks stable as well. All the trace data are exactly repeatable each time.

 

 

Can you please point us to the way/direction so we narrow down the issue.

 

=================================================================================

...

Freeing unused kernel memory: 120k freed

Undefined instruction

<5> - May be used to emulate instructions that are not defined for

<5>   a particular processor implementation.

Kernel OOPS in progress

Deferred Exception context

CURRENT PROCESS:

COMM=mtdblock0 PID=141  CPU=0

invalid mm

return address: [0x0006a5fc]; contents of:

0x0006a5d0:  0000  0000  3044  a0ea  4ee2  e3ff  ffd5  a060

0x0006a5e0:  0c00  1809  304d  6c66  5201  0127  a0a1  0484

0x0006a5f0:  e2fe  7568  6c66  0127  3045  a0a1 [0484] e2fe

0x0006a600:  7561  0000  e14a  001f  e10a  60a0  9111  e2ff

 

ADSP-BF547-0.2(Detected 0.4) 375(MHz CCLK) 75(MHz SCLK) (mpu off)

Linux version 3.0.8-ADI-2011R1switchfin (root@Switchvoice) (gcc version

4.3.5 (ADI-2011R1-RC4) ) #2 Wed Aug 22 11:17:03 EEST 2012

 

SEQUENCER STATUS:               Not tainted

SEQSTAT: 00000021  IPEND: 8008  IMASK: 003f  SYSCFG: 0006

  Peripheral interrupts masked off

  Kernel interrupts masked off

  EXCAUSE   : 0x21

  physical IVG3 asserted : <0xffa0077c> { _trap + 0x0 }

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

  logical irq   6 mapped  : <0x00006240> { _bfin_coretmr_interrupt + 0x0 }

  logical irq  48 mapped  : <0x000d7230> { _bfin_serial_dma_rx_int + 0x0 }

  logical irq  49 mapped  : <0x000d6fb4> { _bfin_serial_dma_tx_int + 0x0 }

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

RETN: <0x0216ff18> /* kernel dynamic memory (maybe user-space) */

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

RETS: <0x000b419a> { _blk_update_request + 0x7a }

PC  : <0x0006a5fc> { _bio_free + 0x48 }

DCPLB_FAULT_ADDR: <0x0204eca8> /* kernel dynamic memory (maybe user-space)

*/

ICPLB_FAULT_ADDR: <0x0006a5fc> { _bio_free + 0x48 }

PROCESSOR STATE:

R0 : 0204a6a0    R1 : 0204ec80    R2 : 00000000    R3 : 00000000

R4 : 00000000    R5 : 00000000    R6 : 00001000    R7 : 00001000

P0 : 001fc064    P1 : 0204a6a0    P2 : 0204a6e4    P3 : 0204a6a0

P4 : 0204eca0    P5 : 0204a6a0    FP : 0217592c    SP : 0216fe3c

LB0: 000c2cf6    LT0: 000c2cf6    LC0: 00000000

LB1: 00066470    LT1: 00066464    LC1: 00000008

B0 : 0000000c    L0 : 00000000    M0 : 0201b92c    I0 : 00000003

B1 : 0000001f    L1 : 00000000    M1 : 00000001    I1 : 0605ac00

B2 : 0018589c    L2 : 00000000    M2 : 00000019    I2 : 0204a6a0

B3 : 00000001    L3 : 00000000    M3 : 00000000    I3 : 00000000

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

USP : 00000000  ASTAT: 02003025

 

Hardware Trace:

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

     Source : <0xffa00710> { _exception_to_level5 + 0xa4 } JUMP.L

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

     Source : <0xffa00520> { _bfin_return_from_exception + 0x18 } RTX

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

     Source : <0xffa005c4> { _ex_trap_c + 0x74 } JUMP.S

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

     Source : <0xffa007d6> { _trap + 0x5a } JUMP (P4)

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

      FAULT : <0x0006a5fc> { _bio_free + 0x48 } 0x0484

     Source : <0x0006a5fa> { _bio_free + 0x46 } P1 = W[P4 + 2]

   5 Target : <0x0006a5f4> { _bio_free + 0x40 }

     Source : <0x0006a5e2> { _bio_free + 0x2e } IF CC JUMP pcrel

   6 Target : <0x0006a5de> { _bio_free + 0x2a }

     Source : <0x0006a5ce> { _bio_free + 0x1a } IF CC JUMP pcrel

   7 Target : <0x0006a5b4> { _bio_free + 0x0 }

     Source : <0x0006a60e> { _bio_fs_destructor + 0xa } CALL pcrel

   8 Target : <0x0006a604> { _bio_fs_destructor + 0x0 }

     Source : <0x000690ba> { _bio_put + 0x3a } JUMP (P2)

   9 Target : <0x000690b0> { _bio_put + 0x30 }

     Source : <0x000690ac> { _bio_put + 0x2c } IF CC JUMP pcrel

  10 Target : <0x000690aa> { _bio_put + 0x2a }

     Source : <0x0006909c> { _bio_put + 0x1c } IF CC JUMP pcrel (BP)

  11 Target : <0x00069080> { _bio_put + 0x0 }

     Source : <0x0006d48c> { _mpage_end_io + 0xa8 } CALL pcrel

  12 Target : <0x0006d484> { _mpage_end_io + 0xa0 }

     Source : <0x0006d42e> { _mpage_end_io + 0x4a } IF CC JUMP pcrel

  13 Target : <0x0006d42a> { _mpage_end_io + 0x46 }

     Source : <0x00024028> { ___wake_up_bit + 0x24 } RTS

  14 Target : <0x00024024> { ___wake_up_bit + 0x20 }

     Source : <0x0000b6ca> { ___wake_up + 0x32 } RTS

  15 Target : <0x0000b6c4> { ___wake_up + 0x2c }

     Source : <0x0000b6b6> { ___wake_up + 0x1e } IF CC JUMP pcrel (BP)

Kernel Stack

Stack info:

SP: [0x0216ff2c] <0x0216ff2c> /* kernel dynamic memory (maybe user-space)

*/

FP: (0x0216ffa0)

Memory from 0x0216ff20 to 02170000

0216ff20: 00000000  02054eb0  001fc098 [00000000] 00000200  02158990

000b4422  0217592c

0216ff40: 001fba18  00000000  00000000  00000000  02009d30  00000000

021abe00  00000000

0216ff60: 000052d5  000b4e0c  02009d20  0217592c  000e786c  02009d20

001fba18  00000000

0216ff80: 000e787e  00000000  0217592c  000e7820  00000000  0216e008

0216e000  00208458

0216ffa0:(00000000)<00023d08> 0201bea8  000e7820  00000000  02009d20

00000000  00000000

0216ffc0: 00000000  00000000  00000000  00023cac  00000000  02009d20

00000000  0216ffdc

0216ffe0: 0216ffdc

00000000  00000000  00000000  00000000  ffffffff  00000006

Return addresses in stack:

   frame  1 : <0x00023d08> { _kthread + 0x5c }

    address : <0x00001576> { _kernel_thread_helper + 0x6 }

Modules linked in:

Kernel panic - not syncing: Kernel exception

Hardware Trace:

Stack info:

SP: [0x0216fd48] <0x0216fd48> /* kernel dynamic memory (maybe user-space)

*/

FP: (0x0216fdfc)

Memory from 0x0216fd40 to 02170000

0216fd40: 0216fd48  00000013 [001b0688] 001724ec  0216fe3c  001b0688

001ef6fb  001ef6fb

0216fd60: 001ef6fb  0216fd90  0217592c  00004464  0216fe3c  ffe02014

0204a6a0  00008008

0216fd80: 00000004  00000021  00000013  0216fe3c  0000003f  ffffffff

00000000  02009d20

0216fda0: 00030001  00000000  00000000  0216fddc  0000cd2a  0216fddc

00000000  0216fdf0

0216fdc0: 0000a6c4  02019d8c  00000000  0216fdfc  0000cd2a  0216fdfc

00000000  0216fe10

0216fde0: 0000a6c4  02019d8c  02054d60  02054d8c  0216fe10  0000a6d4

00000000 (00000000)

0216fe00:<0000c5c4> 02019d60  001fc064  001fc064  0216fe40 <0000af96>

ffa00714  001ec000

0216fe20: 00008008  00000021  00000000  00000000  00000000  002f10b8

00000480  00000480

0216fe40: 00008008  00000021  00000000  0216ff18  00000480  0006a5fc

000b419a  0204a6a0

0216fe60: 02003025  00066470  000c2cf6  00066464  000c2cf6  00000008

00000000  00000000

0216fe80: 00000000  00000000  00000000  00000001  0018589c  0000001f

0000000c  00000000

0216fea0: 00000000  00000000  00000000  00000000  00000019  00000001

0201b92c  00000000

0216fec0: 0204a6a0  0605ac00  00000003  00000000  0217592c  0204a6a0

0204eca0  0204a6a0

0216fee0: 0204a6e4  0204a6a0  001fc064  00001000  00001000  00000000

00000000  00000000

0216ff00: 00000000  0204ec80  0204a6a0  0204a6a0  001fc064  00000006

0204a6a0  001fba18

0216ff20: 00000000  02054eb0  001fc098  00000000  00000200  02158990

000b4422  0217592c

0216ff40: 001fba18  00000000  00000000  00000000  02009d30  00000000

021abe00  00000000

0216ff60: 000052d5  000b4e0c  02009d20  0217592c  000e786c  02009d20

001fba18  00000000

0216ff80: 000e787e  00000000  0217592c  000e7820  00000000  0216e008

0216e000  00208458

0216ffa0: 00000000 <00023d08> 0201bea8  000e7820  00000000  02009d20

00000000  00000000

0216ffc0: 00000000  00000000  00000000  00023cac  00000000  02009d20

00000000  0216ffdc

0216ffe0: 0216ffdc

00000000  00000000  00000000  00000000  ffffffff  00000006

Return addresses in stack:

   frame  1 : <0x0000c5c4> { _activate_task + 0x40 }

    address : <0x0000af96> { _check_preempt_curr + 0x72 }

    address : <0x00023d08> { _kthread + 0x5c }

    address : <0x00001576> { _kernel_thread_helper + 0x6 }

 

=======================================================================================

Thank you!

Dimitar

Outcomes