We have a custom board that uses an ADSP-21469 and the same m25p16 flash used on the comparable EZKIT. The flash loader utility provided by ADI successfully places a load module in flash, but a flash driver that we developed that uses the ADI low-level utility in m25p16.c does not work. In fact, we don't really understand what is happening with the ADI flash loader utility.
For example, the function m25p16_Read(...) in m25p16.c does a total of 6 atomic writes and reads between asserting and clearing the chip select, 4 writes and 2 reads. The screen capture in the attached file 20110211_AFP_read.png shows results for the ADI flash utility. There are only 5 groups of 8 clock cycles on the SPI between chip selects; we would have expected to see 6 groups of 8 clock cycles. What has happened to the 6th group?
Using a VDK application, we place a small file system in a flash sector that is distinct from the load module sectors. When we use the function m25p16_Read() to access the flash, as shown in file 20110211_VDK_read.png, there are 5 sets of 8 clock cycles plus one additional clock cycle between chip selects. How does the extra clock cycle emerge? The read does not work at all, as the data is always 0xff, even when we try reading from the area containing the load module.