As far as we can tell, the parts are gone -in SO8 packages anyway. Regardless they are obsolete/EOL.
I tried several parts that are default supported. I was not able to get several of them to work. Generally DFU would write the first upgrade but would not erase - so the second write is corrupt.
I was able to get AT25DF081A to work by specifying its parameters as a custom device. So, that's what we will use in our latest upcoming product.
Normally I use xflash this way:
xflash --upgrade 1 1v0_2.xe -o dfu_1v0_2.bin
This should be enough but I have not tested any DFU functionality with 13.x tools.
You may have problems if you've re-purposed any of the SPI bus pins:
If you're using any of these pins for some other function in your application then you'll need to shut-down any code that writes to these ports when DFU starts.
Something else spooky about DFU:
If I attempt to perform DFU while running the SpdifReceive function then DFU won't work. If I have a SPDIF receiver running then, when DFU start is detected, I send a token to SpdifReceive:
soutct( c_spdif_rx, 0 );
This causes SpdifReceive to return.
I can't tell but I wonder if there's an issue of running out of cycles when DFU starts - and it chokes. You might try cutting-out some processing and see if you can get DFU to work with minimal code running. Then you can start adding things back until DFU breaks and then figure out how to shut-down enough of your application when DFU starts.
Along those lines: decouple() spends a lot of its time burning cycles - constantly checking global variable flags. You can cut this thread back quite a bit using a timerafter delay inside the while(1).
Light wrote:Similar situation here...
Flash device: AT25DF041A
xflash --boot-partition-size 0x20000 Geek_Out_1V0_1.xe
xflash --factory Geek_Out_1V0_1.xe --upgrade 1 Geek_Out_1V0_2.xe 0x20000 --boot-partition-size 0x20000