BF706 SPI slave boot questions

Hello,

I'm having great difficulty getting a slave BF706 (call it DSP1) to boot via its SPI2. It's receiving its boot data from a master BF706 (call it DSP0) which is transmitting via its SPI0. DSP0 boots perfectly fine, and appears to conduct the DSP1 boot process through to completion, but DSP1 remains non-functional afterwards. I'll give a detailed overview of my setup/configuration, then ask my questions at the bottom. The boot code for DSP1 has been generated by the elfloader utility with the following command arguments/flags:

  • -width 8
  • -proc ADSP-BF706
  • -b SPISLAVE
  • -bcode 3

Likewise, the following command arguments/flags have been used for the boot code for DSP0, which is booting via serial memory:

  • -width 8
  • -proc ADSP-BF706 
  • -b SPI
  • -bcode 2

DSP0 boots perfectly fine, then handles the DSP1 boot sequence. Here is that sequence of events:

- Firstly, the SPI0 of DSP0 is configured as follows:

  • CLK=99; setting baud rate = 1MHz (my SCLK0=100Mhz)
  • RXCTL=0x1; enabling receive channel (the two DSPs will be communicating after both successfully boot)
  • TXCTL=0x5; transmit enable, transfers are initiated by writing the TFIFO
  • CTL=0x3; enabled, DSP0 is master, setting word transfer size to 8-bit, MIOM is disabled, software control of slave select pin

- Then, DSP0 unresets the ~SYS_HWRST pin of DSP1

- DSP0 then waits until the SPI_RDY signal from DSP1 is asserted

- After receiving the assertion that DSP1 is ready, DSP0 begins the transmission of boot data for DSP1.

Questions

- Am I missing any key flags in my lists of elfloader arguments/switches? Or is anything incorrect about them?

- Is there anything amiss about DSP0's setup of SPI0?

- Does my sequence of events before the boot data transmission occurs look ok?

If all that seems ok, then I'll follow up with my actual transmission routine and more questions.

Any help is appreciated, thank you so much.

Regards,

Jonathan



Added a clarifying note to my baud rate bullet point
[edited by: jmichel3 at 8:57 PM (GMT 0) on 21 Jan 2019]
  • Hi Jonathan,

    Apologies for the delay. While looking into your mail, I understood that you are trying to boot the ADSP-BF706 processor via SPI slave mode. In your setup, the DSP0 is the master device which is going to send the .ldr stream to slave DSP. Please confirm that Is my understanding correct?

    You mentioned that "DSP0 boots perfectly fine, then handles the DSP1 boot sequence". Please let me know that are you flashing the Host code in the DSP0 using SPI master mode? Please elaborate more on this.

    Can you please confirm that what is the boot format you are using? Please note that for SPI slave booting, the "Boot format can be selected as 'Include' format, so that the loader stream can be stored to a buffer array easily at the Host side."

    I suggest you to check the attached SPI Slave Boot example code which works as expected on ADSP-BF707 EZ-Kit for the single mode. In the setup, the ADSP-BF609 processor is used as the Host sending the .ldr stream to ADSP-BF707 processor. Please use this as a reference and modify as per your requirement. Hope this helps.

    Regards,
    Lalitha.S

    SPI_Slave_Booting.zip

  • Hi Lalitha,

    I recently got it working. I'll still answer your questions below in case it helps anyone else. My difficulties arose from my implementation of the transmission routine -- I hadn't correctly configured hardware control of the slave select line. 

    While looking into your mail, I understood that you are trying to boot the ADSP-BF706 processor via SPI slave mode. In your setup, the DSP0 is the master device which is going to send the .ldr stream to slave DSP. Please confirm that Is my understanding correct?

    Yes, that's correct.

    You mentioned that "DSP0 boots perfectly fine, then handles the DSP1 boot sequence". Please let me know that are you flashing the Host code in the DSP0 using SPI master mode? Please elaborate more on this.

    Yes, I'm booting DSP0 in SPI master mode. I write the boot data for DSP0 to external flash, then, upon reset, DSP0 boots via SPI from the location of the boot data.

    Can you please confirm that what is the boot format you are using? Please note that for SPI slave booting, the "Boot format can be selected as 'Include' format, so that the loader stream can be stored to a buffer array easily at the Host side."

    For DSP0, I'm using SPI Master boot. For DSP1, I'm using SPI Slave boot.

    Thank you,

    Jonathan