XIP aware file system

Konstantin Kletschke
2005-02-15T15:48:20Z

Hi people!

Since I got a reasonable burst modus of flash device running XIP is not
taking more but less time now, so third attempt to get this running...
I have to port the stuff in xip.h.

PXA:

I have a question why (ICIP & ICMR) is done. Because ICIP _is_ already
the hardware "and"ed between ICMR and ICPR so it seems bogus at this
place to "and" pending and mask by software again.
Is this done because of "ICCR[DIM]=0 & Idle mode='1'" "or"ed to ICMR?
If yes, on our i.MX it should be sufficient to do
( IMX_NIPNDH || IMX_NIPNDL ) which are the IRQ pending registers already
"and"ed between IRQ source and INT enable.

The OSCR Register is read to get some timing stuff, at what frequency is
the timer ++ed? I am sure it is 32.768kHz or 32.8kHz. Is that correct?
In this case I should also do
(signed)((IMX_TCN(IMX_TIM1_BASE) - (x)) /4).
because "our" timer runs at 32kHz. I am pretty sure though...

Further I found in funktion __xipram xip_udelay() a call to printk()
right at the beginning, "pending entry". This will never work,
becaus printk is located in flash,is that
correct (just trying to really understand)?
When I look at dissassembled vmlinux I find several calls to functions in
flash in xip_udelay:

c0013974: ebc3fa2e bl bf112234 <cond_resched>
c0013994: ebc34c31 bl bf0e6a60 <memset>
c00139dc: ebc18b27 bl bf076680 <add_wait_queue>
c00139e0: ebc3f696 bl bf111440 <schedule>
c00139ec: ebc18b45 bl bf076708 <remove_wait_queue>

and so on.
Is this correct?

Hm, our Kernel freezes right after

Creating 5 MTD partitions on "scb9328_flash":
0x00000000-0x00020000 : "U-boot"
0x00020000-0x00040000 : "U-boot_env"
0x00040000-0x00140000 : "kernel"
0x00140000-0x00540000 : "root"
0x00540000-0x00940000 : "fs"

at the moment.

Kind regards, Konsti