I'm getting ready to stab this DSP I've been working on for the past week. This has to be the most frustrating development platform I've ever worked on.
As usual, everything works just peachy in the simulator. I get back the exact results I want. That means my program logic must be correct, right? Super! Let's try it out on the physical board and see if it runs as fast as I hope it does... boy, this is slow... oh, it's in an infinite loop. But, how can that be?
I haven't yet figured it out. I think it's a cache coherency problem where one core is writing data that the others aren't seeing. Well, that would be easy enough to solve, the documentation would have you believe, by just inserting some cache write back and invalidate functions here and there. Except, that doesn't fix the problem.
Instead, that makes the card flipping lose its mind. Instead of invalidating the cache line and looking up the correct value in the SDRAM, it instead ends up jumping to code somewhere in lala land and getting stuck there.
Well, that's easy enough to fix, right? Just power cycle it... wait... no, it's a PCIe card inside the computer with no reset functionality. So, you've got to reboot the computer to reset it to try again.
So, reboot and try again. Hey, this time, just trying to step through the code after hitting a breakpoint causes it to hang a core and force a reset.
Dear Texas Instruments,
I hate you now. I've got very little time per week to work on my research, and you produce this thing and its associated software that appears to be bent on making me waste time. Could you kindly update your documentation to indicate that using the cache control CSL functions causes the processor core to instead throw a tantrum? Or, even better, tell me what I'm supposed to really do to get the other cores to see the updated value from SDRAM.
Sincerely,
Telgin