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
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development