NOR Flash Program fails

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

NOR Flash Program fails

3,151 Views
Apurva
Contributor I

Hi

We are using MPC8321 freescale microprocessor in one our boards. We are using NOR Flash M29DW323DT, from Numonyx (now Micron) as the boot flash. We are using Code warrior utility to program/access the flash. We are stuck at the first step of programming flash. Flash is not getting accessed properly.

As you may be aware that most of the flashes use CFI (Common Flash Interface) commands for various processes like program, erase, etc. A command consists of a sequence of writes including one or more steps. e.g in M29DW323DT, to put the flash in CFI Query mode the command is
Write Memory XXXX0055 with 0x00000098; this includes only one step of writing.

In contrary, programming/erase processes include three successive writes to put the flash in Programming/Erase mode.

It is observed that in our board, the flash is not able to take back to back writes. So for the commands which include only one write cycle, e.g Putting it in CFI query mode, it works and gives satisfactory outputs. But for commands like Program which includes 3 successive writes, it is failing.

Please suggest what could be the reason?

We have downloaded the flash driver from its respective website and executing the program source code through Code Warrior Debug Utility.

Labels (1)
Tags (1)
0 Kudos
4 Replies

835 Views
Witztronics
Contributor IV

I'm not familar with this device, but writing does take more time, so are you checking the "busy/ready" pin before sending another write command?

0 Kudos

835 Views
Apurva
Contributor I

No, I don't check the Ready/Busy pin. This pin has differnt meaning for this device. It is asserted only when the flash is getting Programmed/Erased. This pin never gets asserted. So flash never actually enters these modes.

0 Kudos

835 Views
Fran
Contributor I

Hi Apurva,

 

We have a similiar problem with the Flash Command Sequences.

We're using a MCF53017 Freescale Microprocessor and a S29WS128P NOR Flash Spansion.

For debug, we're using Code Warrior 7.2 to program/access the flash.

 

The system desing works succesfully with the CFI Command, but it doesn't work with other command sequences like Autoselect, Program, Erase, ....

 

And example with commands and results obtained are following:

=============================================================

/* Write CFI Entry command */

*(baseaddress + 0x555) = (unsigned short)0x98;      

 

/* Get CFI Query */

query_1 = *(baseaddress + 0x10);

query_2 = *(baseaddress + 0x11);

query_3 = *(baseaddress + 0x12);        

 

/* Write CFI Exit command */

*(baseaddress) = (unsigned short)0xF0;  

 

/* setup for Get Manufactured ID and Device ID */ 

 *(baseaddress + 0x555) = (unsigned short)0xAA;   

 *(baseaddress + 0x2AA) = (unsigned short)0x55;  *(baseaddress + 0x555) = (unsigned short)0x90;

 

/* get id */

mf_id     = *(baseaddress);   

part_id   = *(baseaddress + 1);

=============================================================

RESULTS:

 

Variables   Value

 query_1    0x0051 --> 'Q' ok

 query_2    0x0052 --> 'R' ok

 query_3    0x0059 --> 'Y' ok

 mf_id        0x0011 --> Bad Result. Correct it should be 0x0001

 part_id      0xEA00 --> Bad Result. Correct it should be 0x227E

=============================================================

I've attached an image of a screenshot of CodeWarrior IDE with the result (CodeWarrior Screen1.JPG)


I don't understand why the device entry into CFI Query Mode correctly but it doesn't works with others command sequence.


Could you resolve this problem?

Thank you in advance,

 

Francisco José Arroyo

 

 

0 Kudos

835 Views
Daveoman
Contributor I

We are having the exact same problem...did either of you 2 figure this out?

 

Thanks.

 

-- Dave

0 Kudos