[ECOS] Flash detection

Jay Foster jay.foster@systech.com
Mon Nov 10 18:16:00 GMT 2003


You might want to check your configuration.  You state that you are using 2
(16-bit?) devices in parallel to form a 32-bit wide device.

You should probably define
	#define CYGNUM_FLASH_INTERLEAVE (2)    // 2 devices in parallel
	#define CYGNUM_FLASH_SERIES     (1)    // Only one series
	#define CYGNUM_FLASH_WIDTH      (16)   // Each device is 16-bits
wide

I'm not sure if CYGNUM_FLASH_DEVICES needs to be 2 or 1 in your case, as the
driver does some automatic arithmetic when the CYGNUM_FLASH_INTERLEAVE is 2.

Jay

-----Original Message-----
From: M.Eugenia G.Valdecasas [mailto:valdecasas@isar-tec.com]
Sent: Monday, November 10, 2003 9:01 AM
To: Gary Thomas
Cc: ecos-discuss@sources.redhat.com
Subject: Re: [ECOS] Flash detection


> The driver could not get your device to go into "identify" mode.
> This can happen for many reasons:
>   * FLASH is write protected (the "write" signal is not allowed)

The write signal is allowed, actually the flash enters the query mode 
and read ID mode succesfully. We have traced it with a logic state 
analyzer. we can see all this data string : 0x00890089, 0x00180018, 
0x00510051 and blah blah blah....
I can't understand why all the information is in the bus (apparently 
succesfull read query and ID process) but the driver is still saying 
that can't not recognise the device...


>   * You've configured the driver incorrectly.  You say that you have
>     2x16 FLASH - what does that mean [to you]?  Show us your
>     configuration lines from the driver include files.
> 

Sorry, I didn't express it correctly... what I meant is that we have 
two devices in parallel to form a 32 bit path 

The configuration lines are:

in altair_strataflash.inl->

#define CYGNUM_FLASH_DEVICES     (2)
#define CYGNUM_FLASH_BASE        (0x00000000u)
#define CYGNUM_FLASH_BASE_MASK   (0xFE000000u) // 2 * 16Mb devices
#define CYGNUM_FLASH_WIDTH       (16)
#define CYGNUM_FLASH_BLANK       (1)

#define FLASH_P2V(x) ((volatile flash_t *)(((unsigned)(x) < 0x1000) ? \
                             ((unsigned)(x) | 0xa0000000) : \
                             (unsigned)(x)))






> Note: the iPAQ flash is 2 devices organized in parallel to form a
> 32 bit path.  It might be a good place to look for assistance.
> 
> --
> Gary Thomas <gary@mlbassoc.com>
> MLB Associates



On 2003.11.10 16:20, Gary Thomas wrote:
> On Mon, 2003-11-10 at 07:29, M.Eugenia G.Valdecasas wrote:
> > Hi, I recompiled redboot to use in our board. It has a PXA255
> processor
> > with 2x16 Intel 28F128J3 Flash. I use the strata flash drivers from
> > intel.
> > I upload redboot to the board with the JTAG tools but on starting
> comes
> > an error message:
> >
> >
> > +Can't identify FLASH, sorry, man e, dev 1e, id [<Not a string:
> > 0xA000CAFC>] stat 0
> > A000CAEC: 0E 1E B0 AB 0E 1E C0 AB  0E 1E D0 AB 0E 1E E0 AB
> > |................|
> > A000CAFC: 0E 1E F0 AB 00 00 00 00  00 00 00 00 00 00 00 00
> > |................|
> > A000CB0C: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
> > |................|
> > A000CB1C: 00 00 00 00
> > |....            |
> > FLASH: driver init failed: Unknown error
> >
> > I tried the possible solutions named on the mailing list, like in
> > strata.c change the line  "if ( (qp->manuf_code ==
> FLASH_Intel_code)"
> > for "if(1 ", to define CYGHWR_IO_FLASH_DEVICE_NOT_IN_RAM and to
> change
> > the CNT into a higher value. But I still get the same error and it
> does
> > not go on.
> >
> > Have anybody any ideas what is it happening?. I would really
> appreciate
> > any help. Thank you in advance,
> 
> 
> 

-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss



More information about the Ecos-discuss mailing list