[U-Boot] Blackfin BF547 board testing.

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

On Wednesday 22 August 2012 11:13:54 Dimitar Penev wrote:
- GCC assumes rev 0.2 of the CPU is this OK with the rev 0.4 which we have
on board?
err, gcc assumes nothing. this is controlled by your board config's CONFIG_BFIN_CPU setting.
The first reason for this behavior seems to be memory issue.
hardware (and certainly linux) issues are probably better diagnosed on the ADI support forums: http://ez.analog.com/community/dsp/blackfin-processors http://ez.analog.com/community/dsp/software-and-development-tools -mike
participants (2)
-
Dimitar Penev
-
Mike Frysinger