FAQ: [#5958] Kernel xip failed on bf527-ezkit with FDPIC format(2010)

Document created by Aaronwu Employee on Sep 10, 2013Last modified by Aaronwu Employee on Sep 10, 2013
Version 2Show Document
  • View in full screen mode

[#5958] Kernel xip failed on bf527-ezkit with FDPIC format

Submitted By: Vivi Li

Open Date

2010-03-11 01:34:44     Close Date

2010-05-21 03:18:40

Priority:

Medium     Assignee:

Barry Song

Status:

Closed     Fixed In Release:

N/A

Found In Release:

2010R1     Release:

Category:

N/A     Board:

N/A

Processor:

BF527     Silicon Revision:

Is this bug repeatable?:

Yes     Resolution:

Postponed

Uboot version or rev.:

    Toolchain version or rev.:

gcc4.3-2010_Jan_22

App binary format:

N/A     

Summary: Kernel xip failed on bf527-ezkit with FDPIC format

Details:

 

Kernel xip failed on bf527-ezkit with FDPIC format. Shared-flat format is OK.

 

--

U-Boot 2009.11.1-svn2233 (ADI-2010R1-pre) (Feb 08 2010 - 08:29:37)

 

CPU:   ADSP bf527-0.0 (Detected Rev: 0.2) (parallel flash boot)

Board: ADI BF527 EZ-Kit board

       Support: http://blackfin.uclinux.org/

Clock: VCO: 525 MHz, Core: 525 MHz, System: 131.250 MHz

RAM:   64 MB

Flash:  4 MB

In:    serial

Out:   serial

Err:   serial

KGDB:  [on serial] ready

Net:   Blackfin EMAC

Hit any key to stop autoboot:  5 ^H^H^H 0

bfin> tftpboot 0x1000000 vmImage

Using Blackfin EMAC device

TFTP from server 10.100.4.174; our IP address is 10.100.4.50

Filename 'vmImage'.

Load address: 0x1000000

Loading: *^H#################################################################

         #####################

done

Bytes transferred = 1258120 (133288 hex)

bfin> protect off 20040000 201fffff

............................ done

Un-Protected 28 sectors

bfin> erase 20040000 201fffff

 

............................ done

Erased 28 sectors

bfin> cp.b 0x1000000 20040000 0x133288

Copy to Flash... done

bfin> tftpboot 0x1000000 rootfs.romfs

Using Blackfin EMAC device

TFTP from server 10.100.4.174; our IP address is 10.100.4.50

Filename 'rootfs.romfs'.

Load address: 0x1000000

Loading: *^H#################################################################

         #################################################################

         ########

done

Bytes transferred = 2019328 (1ed000 hex)

bfin> protect off 20200000 203fffff

................................ done

Un-Protected 32 sectors

bfin> erase 20200000 203fffff

 

................................ done

Erased 32 sectors

bfin> cp.b 0x1000000 20200000 0x1ed000

Copy to Flash... done

bfin> set bootargs root=/dev/mtdblock2 rootfstype=romfs ro console=ttyBF1,57600

bfin> bootm 20040000

## Booting kernel from Legacy Image at 20040000 ...

   Image Name:   bf527-2.6.33-ADI-2010R1-pre-svn8

   Created:      2010-03-11   3:55:59 UTC

   Image Type:   Blackfin Linux Kernel Image (uncompressed)

   Data Size:    1258056 Bytes =  1.2 MB

   Load Address: 20040040

   Entry Point:  2010a714

   Verifying Checksum ... OK

   Loading Kernel Image ... OK

OK

Starting Kernel at = 2010a714

console [ttyBF1] enabled, bootconsole disabled

Calibrating delay loop... 1013.76 BogoMIPS (lpj=2027520)

Security Framework initialized

Mount-cache hash table entries: 512

Blackfin Scratchpad data SRAM: 4 KB

Blackfin L1 Data A SRAM: 16 KB (16 KB free)

Blackfin L1 Data B SRAM: 16 KB (16 KB free)

Blackfin L1 Instruction SRAM: 48 KB (42 KB free)

Blackfin DMA Controller

ezkit_init(): registering device resources

bio: create slab <bio-0> at 0

Switching to clocksource jiffies

ROMFS MTD (C) 2007 Red Hat, Inc.

msgmni has been set to 124

io scheduler noop registered

io scheduler cfq registered (default)

bfin-otp: initialized

bfin-uart: Blackfin serial driver

bfin-uart.1: ttyBF1 at MMIO 0xffc02000 (irq = 31) is a BFIN-UART

brd: module loaded

physmap platform flash device: 00400000 at 20000000

cmdlinepart partition parsing not available

RedBoot partition parsing not available

Using physmap partition information

Creating 3 MTD partitions on "physmap-flash.0":

0x000000000000-0x000000040000 : "bootloader(nor)"

0x000000040000-0x000000200000 : "linux kernel(nor)"

0x000000200000-0x000000400000 : "file system(nor)"

VFS: Mounted root (romfs filesystem) readonly on device 31:2.

dma_alloc_init: dma_page @ 0x020e6000 - 256 pages at 0x03f00000

--

 

Follow-ups

 

--- Barry Song                                               2010-03-22 06:02:49

The kernel doesn't die, but seems deadlock. use jtag to debug, CTRL + C in gdb

imply hrtimer frequently:

(gdb) c

Continuing.

 

^C

Program received signal SIGINT, Interrupt.

alarm_setitimer (seconds=1) at kernel/itimer.c:259

259             if (seconds > INT_MAX)

(gdb) c

Continuing.

^C

Program received signal SIGINT, Interrupt.

alarm_setitimer (seconds=18) at kernel/itimer.c:255

255     {

(gdb) c

Continuing.

^C

Program received signal SIGINT, Interrupt.

hrtimer_try_to_cancel (timer=0x201ee80) at kernel/hrtimer.c:938

938             if (hrtimer_is_queued(timer)) {

(gdb) c

Continuing.

^C

Program received signal SIGINT, Interrupt.

0x2006399e in hrtimer_run_queues () at kernel/hrtimer.c:1455

1455                    if (gettime) {

(gdb) bt

 

Let me check what causes deadlock.

 

 

--- Barry Song                                               2010-03-24 05:55:37

It is due to the rootfs image attained on PC.

10.99.29.74:

genromfs on any partition, image works

 

10.99.29.52/56:

genromfs on any partition, image doesn't work

 

10.99.29.60:

genromfs on home partition, image doesn't work; genromfs on / partition, image

works.

 

genromfs on my PC, image works.

 

--- Mike Frysinger                                           2010-03-24 18:28:40

are they all using user/genromfs/ for the genromfs utility ?

 

--- Barry Song                                               2010-03-24 22:39:59

yes. I will use other filesystem to boot the linux at first and mount romfs

partition to debug. Direct romfs stops me to find the problem.

 

 

--- Barry Song                                               2010-03-26 02:02:35

For those romfs who fail to run, the init will enter deadloop then it looks like

program hang. in fact, it fails to open existing file even in RAM like

/etc/inittab, example:

if (!(f = fopen(initfile, "r")))

     return 1;

function will return;

 

run init in NOR as a subprocess of any process like: gdbserver, time, strace,

the init can run normally.

cp init from NOR to ram and run, it can run normally.

 

And we tried to disable i/d cache in kernel, compile init statically, with

long-call, adjust async timing, all get same result.

 

Looks like there is instruction pre-fetch anomaly in async area. If running

init by gdb, it run completely right.

 

--- Barry Song                                               2010-03-26 02:12:11

It should be a hardware anomaly in async bank4 instruction pre-fetch. Adjust the

partition and move same romfs image 1MB ahead, all work completely right.

 

--- Vivi Li                                                  2010-05-19 04:24:21

XIP test case is modified according to this bug. And it can work on bf527-ezkit.

 

--- Vivi Li                                                  2010-05-21 03:16:26

Close it.

 

 

 

    Files

    Changes

    Commits

    Dependencies

    Duplicates

    Associations

    Tags

 

File Name     File Type     File Size     Posted By

config.config.xip.fdpic    application/octet-stream    45380    Vivi Li

config.linux.xip.fdpic    application/octet-stream    25219    Vivi Li

Outcomes