I am working on booting the sharc 21375 from the blackfin 525 and have some questions about how to set it up.
I found app note ee-177, along with example code, which describes how to boot one sharc from another. Now, I am assuming I can use the code for modifying the boot kernel almost verbatim, making only minor changes.
There is also included in the code for this app note a project called "SPIloader" which shows how to boot from the other sharc. I am using this code as a reference while trying to design blackfin code for this purpose, i.e. using SPI DMA to transmit the loader file, but the setup for the 525 seems much more confusing.
The part I am confused about is the point when the blackfin needs to stop transmission of the loader file because the sharc has toggled a flag indicating that it is in a zero-init section. Now, since the FIFO on the blackfin SPI DMA is 4 deep, that means I need to re-transmit the last four words that were sent, correct? I need to halt the DMA, add four to DMAx_CURR_COUNT, and subtract four from CURR_ADDR that the index register points to, and then re-start the DMA?
Also, and this is purely a C semantics question, how do I modify the CURR_ADDR value? There is a pointer pDMAx_CURR_ADDR which is defined as (void * volatile *)DMAx_CURR_ADDR. When the DMA halts, I need to de-reference this down to what the actual address is and subtract a constant offset, but I'm not sure how to do this?