I am working on a project with a SST39VF800A flash, but unfortunately this chip is not supported by openOCD. It is rather similar to the Spansion chips, but not entirely. Most important difference is that this chip does not do anything with bit 5 during programming/erasing. Therefore I have changed the sources, and the chip is now recognized, I can erase it, program a single word, but I cannot program a block.
There was a similar post about this topic some time ago (October 2006: Program SST Flash), and the author (Volunteer) finally mentioned that he was able to program a SST39VF1601, a chip that has a higher capacity, but is otherwise the same as the one I am using. Therefore I am very interested in the changes that he made. However there is no email address specified in his posts, so if volunteer is reading this, or anybody else, I would appreciate some help.
I am stuck at the same point as where Volunteer was stuck in the October 2006 posts:
Now there’s one problem about the software while programming SST flash SST39VF1601. That’s only half word is programmed for most of the data, with a few exceptions. Here shows more details.
Binary code:
Quote:
E59FF018 E59FF018 E59FF018 E59FF018
E59FF018 B9205F80 E51FFFF0 E59FF018
80000040 800000E4 800000E8 800000EC
800000F0 00000000 800000F8 800000F4
Code read from flash using command mdw
Quote:
fffff018 fffff018 fffff018 fffff018
fffff018 b9205f80 e51fffff e59fffff
ffff0040 800000e4 8000ffff 8000ffff
8000ffff 0000ffff 8000ffff 8000ffff
I also get partially programmed words. I am using the code that was posted for the block programming, so I am using the cfi_sst_write_block() function as suggested. I have experimented with the ARM code (adding a few NOP’s for instance), but have not been able to fix the problem yet. When I do a loop here of count calls to cfi_write_word, then I can program the SST flash and my program then runs, so I assumed that the ARM code might be the problem. Programming the flash this way however is extremely slow.
Cheers,
Kees.