Hi All, 

I have run into trouble with a new board holding the SST 39VF6401B external 
flash. 

 

I am working with WinXP and the 0.3.1 installer from Mr. Chopin:

 

Trying to flash with the OPenOCD I get this error:

target state: halted

target halted in ARM state due to debug-request, current mode: Supervisor

cpsr: 0x200000d3 pc: 0xa000064c

200 kHz

core state: ARM

RCLK not supported - fallback to 2000 kHz

background polling: on

TAP: lpc2468.cpu (enabled)

target state: halted

target halted in ARM state due to debug-request, current mode: Supervisor

cpsr: 0x200000d3 pc: 0xa000064c

Info : Flash Manufacturer/Device: 0x00bf 0x236d

Error: Could not probe bank: no QRY

Try workaround w/0x555 instead of 0x55 to get QRY.

Error: Could not probe bank: no QRY

Error: auto_probe failed -900



At this point I assumed that the concerned Flash device is a NON_CFI device.

 

Then I did some reading in the source code and found the need to rebuild 
OpenOCD 0.3.1 to accept this device:

 

First of all there was no support for this flash in the non_cfi.c so I added 
this: 

 

{ 
  .mfr = CFI_MFR_SST, 
  .id = 0x236d, 
  /* SST39VF6401B */ 
  .pri_id = 0x02, 
  .dev_size = 8*MB, 
  .interface_desc = 0x2, /* x8 or x16 device with  BYTE */ 
  .max_buf_write_size = 0x0, 
  .status_poll_mask = CFI_STATUS_POLL_MASK_DQ6_DQ7, 
  .num_erase_regions = 1, 
  .erase_region_info = 
  { 
    ERASE_REGION(2048, 4*KB) 
  } 
},

 

This seems to make me capable of recognizing the flash. So far so good. 

Then I added this line to the cfi.c cfi_0002_fixups array: 

 

{CFI_MFR_SST, 0x236d, cfi_fixup_0002_unlock_addresses, 
&cfi_unlock_addresses[CFI_UNLOCK_555_2AA]},


This I did because it seemed like the proper thing to do based on what I found 
in flash spec. 

All this does not help me very much as I cannot flash anything to this flash, 
here are my observations: 
1. I can get a flash info and then all blocks are in a "protection state 
unknown" condition. This can be solved by applying a "flash protect_check 1". 
Then a "flash info 1" says that every block is protected. 
2. I can disable the "working area" and then it seems to flash but very slowly 
and pretty useless with an 8M flash. This leads me into thinking that 
chipselect and all these things are OK.?
3. The flash I am using is identified to have "CFI Query string" where " 
Primary OEM command set = 0002H @ address 13H" Whereas my Embedde Aritist board 
flash that works nicely has a "command set = 01H". 

My OpenOCD 0.3.1 is simply throwing this kind of message after me :

 

non-cfi flash: 

mfr: 0x00bf, id:0x236d 

Error: timed out while waiting for target halted 
Error: error writing to flash at address 0x80000000 at offset 0x00000000 (-902)





Here are some more observations, which might be relevant:

The SST39VF6401B and SST39VF6401 are not the same e.g. Primary OEM command set 
are 01H vs 02H

The SST39VFXX01 and SSTVFXX02 differs in working with Top vs Bottom boot 
blocks, whatever that means...

 

So now I am running out of ideas and was hoping for some help from any of you.

Q1: Does any of the things I did make sence (someone suggested that the device 
really is a CFI Flash and my effort is a waste of time - how can I know)? 
Q2: Am I missing some important bit to fully adapt a new flash? 
Q3: Does this "command set" difference mean that I am in the same kind of 
trouble as some of the other people I read about are having? 
Q4: I also read about some patches. Would there be one "hacky unsupported take 
it or leave it patch" that could safe me on this particular flash? Any 
reference. 



If you can answer any of these questions you are my hero:-) 



If you need any additional information please ask me.




Thanks Flemming

 


_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to