My system originally used AutoDMA to boot our TS201 but we are switching to Link Port boot. I modified the AD provided TS201_link.asm file to the attached TS201_link_no_cache.asm. My system using Link Port 0 and I also added my custom inits for SYSCON and SDRCON.
I was able to verify that bootloader code was received in the TS as expected (address 0x10000000 to 0x1000000FF - for DSP-A via cluster bus reads). I was also able to verify that the ldr file was loaded correct up until the last (final, type=0). Actually 0x20 to 0xFF was correctly loaded it was just 0x00 to 0x1F that was all correct. In the assembly boot loader, the code saves the data into registers xR8 to 31 and yR24 to yR31. See _final_init1.
Using the emulator, I was able to see that when code copied _dma_int and _last_patch_code from current location to locations 0x00 to 0x1F so that 0x20 to 0xFF could be copied and then code replaces itself with saved registers (see above). The attached document shows before and after memory with the call to CACMDALL = CACMD_EN. The last 8 words are revered back to original. I tried adding 8 nops in case a pipeline issue. No effect. I tried using invalidate cache (CACMD_INV) using the same code used in beginning. I also tried the cache init. I tried using cache invalidate and cache init w/o running the emulator.
I am able to use with the cache disabled but I was just wondering if anyone else has see this behavior?