[U-Boot] Blackfin BF547 board testing.

Dimitar Penev dpn at switchfin.org
Wed Aug 22 17:13:54 CEST 2012


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


- GCC assumes rev 0.2 of the CPU is this OK with the rev 0.4 which we have 
on board?
- 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 
frequency 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.


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 at 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 



More information about the U-Boot mailing list